Skip to content

actuators

ActuatorBase #

Bases: BaseModel

Base model for actuators

Source code in cogip/models/actuators.py
19
20
21
22
23
24
25
26
class ActuatorBase(BaseModel):
    """Base model for actuators"""

    enabled: bool = Field(
        False,
        title="Enabled",
        description="An actuator is enabled if it has been initialized with its current value",
    )

ActuatorsKindEnum #

Bases: IntEnum

Enum defining actuators kind

Source code in cogip/models/actuators.py
11
12
13
14
15
16
class ActuatorsKindEnum(IntEnum):
    """Enum defining actuators kind"""

    servo = 0
    positional_actuator = 1
    bool_sensor = 2

BoolSensor #

Bases: BaseModel

Model defining bool sensor state

Source code in cogip/models/actuators.py
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
class BoolSensor(BaseModel):
    """Model defining bool sensor state"""

    kind: Literal[ActuatorsKindEnum.bool_sensor] = ActuatorsKindEnum.bool_sensor
    id: Annotated[
        BoolSensorEnum,
        Field(
            title="Id",
            description="Bool sensor identifier",
        ),
    ]
    state: Annotated[
        bool,
        Field(
            title="State",
            description="Bool sensor state",
        ),
    ] = False

BoolSensorEnum #

Bases: IntEnum

Enum defining bool sensors IDs

Source code in cogip/models/actuators.py
91
92
93
94
class BoolSensorEnum(IntEnum):
    """Enum defining bool sensors IDs"""

    UNDEFINED = 0

PositionalActuator #

Bases: ActuatorBase, PositionalActuatorCommand

Full model for positional actuators

Source code in cogip/models/actuators.py
82
83
84
85
class PositionalActuator(ActuatorBase, PositionalActuatorCommand):
    "Full model for positional actuators"

    pass

PositionalActuatorCommand #

Bases: BaseModel

Model defining a command to send to positional actuators

Source code in cogip/models/actuators.py
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
class PositionalActuatorCommand(BaseModel):
    """Model defining a command to send to positional actuators"""

    kind: Literal[ActuatorsKindEnum.positional_actuator] = ActuatorsKindEnum.positional_actuator
    id: PositionalActuatorEnum = Field(..., title="Id", description="Positional Actuator identifier")
    command: int = Field(
        0,
        ge=-100,
        le=999,
        title="Position Command",
        description="Current positional actuator position command",
    )

    @field_validator("kind", mode="before")
    @classmethod
    def validate_kind(cls, v: str) -> ActuatorsKindEnum:
        try:
            value = ActuatorsKindEnum[v]
        except KeyError:
            try:
                value = ActuatorsKindEnum(v)
            except Exception:
                raise ValueError("Not a ActuatorsKindEnum")
        if value != ActuatorsKindEnum.positional_actuator:
            raise ValueError("Not ActuatorsKindEnum.positional_actuator value")
        return value

    @field_validator("id", mode="before")
    @classmethod
    def validate_id(cls, v: str) -> PositionalActuatorEnum:
        try:
            return PositionalActuatorEnum[v]
        except KeyError:
            try:
                return PositionalActuatorEnum(v)
            except Exception:
                raise ValueError("Not a PositionalActuatorEnum")

    def pb_copy(self, message: PB_PositionalActuatorCommand) -> None:
        """Copy values to Protobuf message"""
        message.id = self.id
        message.command = self.command

pb_copy(message) #

Copy values to Protobuf message

Source code in cogip/models/actuators.py
76
77
78
79
def pb_copy(self, message: PB_PositionalActuatorCommand) -> None:
    """Copy values to Protobuf message"""
    message.id = self.id
    message.command = self.command

PositionalActuatorEnum #

Bases: IntEnum

Enum defining positional actuators IDs

Source code in cogip/models/actuators.py
32
33
34
35
class PositionalActuatorEnum(IntEnum):
    """Enum defining positional actuators IDs"""

    UNDEFINED = 0