dexcontrol 0.2.12__py3-none-any.whl → 0.3.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dexcontrol might be problematic. Click here for more details.

Files changed (59) hide show
  1. dexcontrol/__init__.py +18 -8
  2. dexcontrol/apps/dualsense_teleop_base.py +1 -1
  3. dexcontrol/comm/__init__.py +51 -0
  4. dexcontrol/comm/base.py +421 -0
  5. dexcontrol/comm/rtc.py +400 -0
  6. dexcontrol/comm/subscribers.py +329 -0
  7. dexcontrol/config/core/chassis.py +9 -4
  8. dexcontrol/config/core/hand.py +1 -0
  9. dexcontrol/config/sensors/cameras/__init__.py +1 -2
  10. dexcontrol/config/sensors/cameras/zed_camera.py +2 -2
  11. dexcontrol/config/sensors/vega_sensors.py +12 -18
  12. dexcontrol/config/vega.py +4 -1
  13. dexcontrol/core/arm.py +61 -37
  14. dexcontrol/core/chassis.py +141 -119
  15. dexcontrol/core/component.py +110 -59
  16. dexcontrol/core/hand.py +118 -85
  17. dexcontrol/core/head.py +18 -29
  18. dexcontrol/core/misc.py +327 -155
  19. dexcontrol/core/robot_query_interface.py +463 -0
  20. dexcontrol/core/torso.py +4 -8
  21. dexcontrol/proto/dexcontrol_msg_pb2.py +27 -39
  22. dexcontrol/proto/dexcontrol_msg_pb2.pyi +75 -118
  23. dexcontrol/proto/dexcontrol_query_pb2.py +39 -39
  24. dexcontrol/proto/dexcontrol_query_pb2.pyi +17 -4
  25. dexcontrol/robot.py +245 -574
  26. dexcontrol/sensors/__init__.py +1 -2
  27. dexcontrol/sensors/camera/__init__.py +0 -2
  28. dexcontrol/sensors/camera/base_camera.py +144 -0
  29. dexcontrol/sensors/camera/rgb_camera.py +67 -63
  30. dexcontrol/sensors/camera/zed_camera.py +89 -147
  31. dexcontrol/sensors/imu/chassis_imu.py +76 -56
  32. dexcontrol/sensors/imu/zed_imu.py +54 -43
  33. dexcontrol/sensors/lidar/rplidar.py +16 -20
  34. dexcontrol/sensors/manager.py +4 -11
  35. dexcontrol/sensors/ultrasonic.py +14 -27
  36. dexcontrol/utils/__init__.py +0 -11
  37. dexcontrol/utils/comm_helper.py +111 -0
  38. dexcontrol/utils/constants.py +1 -1
  39. dexcontrol/utils/os_utils.py +169 -1
  40. dexcontrol/utils/pb_utils.py +0 -22
  41. {dexcontrol-0.2.12.dist-info → dexcontrol-0.3.1.dist-info}/METADATA +13 -1
  42. dexcontrol-0.3.1.dist-info/RECORD +68 -0
  43. dexcontrol/config/sensors/cameras/luxonis_camera.py +0 -51
  44. dexcontrol/sensors/camera/luxonis_camera.py +0 -169
  45. dexcontrol/utils/rate_limiter.py +0 -172
  46. dexcontrol/utils/rtc_utils.py +0 -144
  47. dexcontrol/utils/subscribers/__init__.py +0 -52
  48. dexcontrol/utils/subscribers/base.py +0 -281
  49. dexcontrol/utils/subscribers/camera.py +0 -332
  50. dexcontrol/utils/subscribers/decoders.py +0 -88
  51. dexcontrol/utils/subscribers/generic.py +0 -110
  52. dexcontrol/utils/subscribers/imu.py +0 -175
  53. dexcontrol/utils/subscribers/lidar.py +0 -172
  54. dexcontrol/utils/subscribers/protobuf.py +0 -111
  55. dexcontrol/utils/subscribers/rtc.py +0 -316
  56. dexcontrol/utils/zenoh_utils.py +0 -122
  57. dexcontrol-0.2.12.dist-info/RECORD +0 -75
  58. {dexcontrol-0.2.12.dist-info → dexcontrol-0.3.1.dist-info}/WHEEL +0 -0
  59. {dexcontrol-0.2.12.dist-info → dexcontrol-0.3.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,83 +1,86 @@
1
1
  from collections.abc import Iterable as _Iterable
2
- from collections.abc import Mapping as _Mapping
3
2
  from typing import ClassVar as _ClassVar
4
3
  from typing import Optional as _Optional
5
- from typing import Union as _Union
6
4
 
7
5
  from google.protobuf import descriptor as _descriptor
8
6
  from google.protobuf import message as _message
9
7
  from google.protobuf.internal import containers as _containers
10
- from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
11
8
 
12
9
  DESCRIPTOR: _descriptor.FileDescriptor
13
10
 
14
- class ArmState(_message.Message):
15
- __slots__ = ("joint_pos", "joint_vel", "joint_cur", "joint_err", "timestamp_ns")
16
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
17
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
18
- JOINT_CUR_FIELD_NUMBER: _ClassVar[int]
19
- JOINT_ERR_FIELD_NUMBER: _ClassVar[int]
11
+ class MotorStateWithTorque(_message.Message):
12
+ __slots__ = ("pos", "vel", "torque", "error", "timestamp_ns")
13
+ POS_FIELD_NUMBER: _ClassVar[int]
14
+ VEL_FIELD_NUMBER: _ClassVar[int]
15
+ TORQUE_FIELD_NUMBER: _ClassVar[int]
16
+ ERROR_FIELD_NUMBER: _ClassVar[int]
20
17
  TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
21
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
22
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
23
- joint_cur: _containers.RepeatedScalarFieldContainer[float]
24
- joint_err: _containers.RepeatedScalarFieldContainer[int]
18
+ pos: _containers.RepeatedScalarFieldContainer[float]
19
+ vel: _containers.RepeatedScalarFieldContainer[float]
20
+ torque: _containers.RepeatedScalarFieldContainer[float]
21
+ error: _containers.RepeatedScalarFieldContainer[int]
25
22
  timestamp_ns: int
26
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ..., joint_cur: _Optional[_Iterable[float]] = ..., joint_err: _Optional[_Iterable[int]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
23
+ def __init__(self, pos: _Optional[_Iterable[float]] = ..., vel: _Optional[_Iterable[float]] = ..., torque: _Optional[_Iterable[float]] = ..., error: _Optional[_Iterable[int]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
27
24
 
28
- class HandState(_message.Message):
29
- __slots__ = ("joint_pos", "joint_vel", "joint_statu", "timestamp_ns")
30
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
31
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
32
- JOINT_STATU_FIELD_NUMBER: _ClassVar[int]
25
+ class MotorStateWithCurrent(_message.Message):
26
+ __slots__ = ("pos", "vel", "cur", "error", "timestamp_ns")
27
+ POS_FIELD_NUMBER: _ClassVar[int]
28
+ VEL_FIELD_NUMBER: _ClassVar[int]
29
+ CUR_FIELD_NUMBER: _ClassVar[int]
30
+ ERROR_FIELD_NUMBER: _ClassVar[int]
33
31
  TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
34
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
35
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
36
- joint_statu: _containers.RepeatedScalarFieldContainer[int]
32
+ pos: _containers.RepeatedScalarFieldContainer[float]
33
+ vel: _containers.RepeatedScalarFieldContainer[float]
34
+ cur: _containers.RepeatedScalarFieldContainer[float]
35
+ error: _containers.RepeatedScalarFieldContainer[int]
37
36
  timestamp_ns: int
38
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ..., joint_statu: _Optional[_Iterable[int]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
37
+ def __init__(self, pos: _Optional[_Iterable[float]] = ..., vel: _Optional[_Iterable[float]] = ..., cur: _Optional[_Iterable[float]] = ..., error: _Optional[_Iterable[int]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
39
38
 
40
- class HeadState(_message.Message):
41
- __slots__ = ("joint_pos", "joint_vel", "timestamp_ns")
42
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
43
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
39
+ class MotorPosCommand(_message.Message):
40
+ __slots__ = ("pos", "timestamp_ns")
41
+ POS_FIELD_NUMBER: _ClassVar[int]
44
42
  TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
45
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
46
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
43
+ pos: _containers.RepeatedScalarFieldContainer[float]
47
44
  timestamp_ns: int
48
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
45
+ def __init__(self, pos: _Optional[_Iterable[float]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
49
46
 
50
- class TorsoState(_message.Message):
51
- __slots__ = ("joint_pos", "joint_vel", "timestamp_ns")
52
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
53
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
47
+ class MotorVelCommand(_message.Message):
48
+ __slots__ = ("vel", "timestamp_ns")
49
+ VEL_FIELD_NUMBER: _ClassVar[int]
54
50
  TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
55
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
56
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
51
+ vel: _containers.RepeatedScalarFieldContainer[float]
57
52
  timestamp_ns: int
58
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
53
+ def __init__(self, vel: _Optional[_Iterable[float]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
59
54
 
60
- class SingleWheelState(_message.Message):
61
- __slots__ = ("steering_pos", "wheel_pos", "wheel_vel", "wheel_cur")
62
- STEERING_POS_FIELD_NUMBER: _ClassVar[int]
63
- WHEEL_POS_FIELD_NUMBER: _ClassVar[int]
64
- WHEEL_VEL_FIELD_NUMBER: _ClassVar[int]
65
- WHEEL_CUR_FIELD_NUMBER: _ClassVar[int]
66
- steering_pos: float
67
- wheel_pos: float
68
- wheel_vel: float
69
- wheel_cur: float
70
- def __init__(self, steering_pos: _Optional[float] = ..., wheel_pos: _Optional[float] = ..., wheel_vel: _Optional[float] = ..., wheel_cur: _Optional[float] = ...) -> None: ...
55
+ class MotorPosVelCommand(_message.Message):
56
+ __slots__ = ("pos", "vel", "timestamp_ns")
57
+ POS_FIELD_NUMBER: _ClassVar[int]
58
+ VEL_FIELD_NUMBER: _ClassVar[int]
59
+ TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
60
+ pos: _containers.RepeatedScalarFieldContainer[float]
61
+ vel: _containers.RepeatedScalarFieldContainer[float]
62
+ timestamp_ns: int
63
+ def __init__(self, pos: _Optional[_Iterable[float]] = ..., vel: _Optional[_Iterable[float]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
71
64
 
72
- class ChassisState(_message.Message):
73
- __slots__ = ("left", "right", "timestamp_ns")
74
- LEFT_FIELD_NUMBER: _ClassVar[int]
75
- RIGHT_FIELD_NUMBER: _ClassVar[int]
65
+ class MotorPosVelCurrentCommand(_message.Message):
66
+ __slots__ = ("pos", "vel", "cur", "timestamp_ns")
67
+ POS_FIELD_NUMBER: _ClassVar[int]
68
+ VEL_FIELD_NUMBER: _ClassVar[int]
69
+ CUR_FIELD_NUMBER: _ClassVar[int]
76
70
  TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
77
- left: SingleWheelState
78
- right: SingleWheelState
71
+ pos: _containers.RepeatedScalarFieldContainer[float]
72
+ vel: _containers.RepeatedScalarFieldContainer[float]
73
+ cur: _containers.RepeatedScalarFieldContainer[float]
79
74
  timestamp_ns: int
80
- def __init__(self, left: _Optional[_Union[SingleWheelState, _Mapping]] = ..., right: _Optional[_Union[SingleWheelState, _Mapping]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
75
+ def __init__(self, pos: _Optional[_Iterable[float]] = ..., vel: _Optional[_Iterable[float]] = ..., cur: _Optional[_Iterable[float]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
76
+
77
+ class EndEffectorPassThroughCommand(_message.Message):
78
+ __slots__ = ("data", "timestamp_ns")
79
+ DATA_FIELD_NUMBER: _ClassVar[int]
80
+ TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
81
+ data: bytes
82
+ timestamp_ns: int
83
+ def __init__(self, data: _Optional[bytes] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
81
84
 
82
85
  class BMSState(_message.Message):
83
86
  __slots__ = ("voltage", "current", "temperature", "percentage", "is_charging", "error", "timestamp_ns")
@@ -110,14 +113,20 @@ class WrenchState(_message.Message):
110
113
  def __init__(self, wrench: _Optional[_Iterable[float]] = ..., blue_button: bool = ..., green_button: bool = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
111
114
 
112
115
  class EStopState(_message.Message):
113
- __slots__ = ("button_pressed", "software_estop_enabled", "timestamp_ns")
114
- BUTTON_PRESSED_FIELD_NUMBER: _ClassVar[int]
116
+ __slots__ = ("software_estop_enabled", "left_button_pressed", "right_button_pressed", "waist_button_pressed", "wireless_button_pressed", "timestamp_ns")
115
117
  SOFTWARE_ESTOP_ENABLED_FIELD_NUMBER: _ClassVar[int]
118
+ LEFT_BUTTON_PRESSED_FIELD_NUMBER: _ClassVar[int]
119
+ RIGHT_BUTTON_PRESSED_FIELD_NUMBER: _ClassVar[int]
120
+ WAIST_BUTTON_PRESSED_FIELD_NUMBER: _ClassVar[int]
121
+ WIRELESS_BUTTON_PRESSED_FIELD_NUMBER: _ClassVar[int]
116
122
  TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
117
- button_pressed: bool
118
123
  software_estop_enabled: bool
124
+ left_button_pressed: bool
125
+ right_button_pressed: bool
126
+ waist_button_pressed: bool
127
+ wireless_button_pressed: bool
119
128
  timestamp_ns: int
120
- def __init__(self, button_pressed: bool = ..., software_estop_enabled: bool = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
129
+ def __init__(self, software_estop_enabled: bool = ..., left_button_pressed: bool = ..., right_button_pressed: bool = ..., waist_button_pressed: bool = ..., wireless_button_pressed: bool = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
121
130
 
122
131
  class UltrasonicState(_message.Message):
123
132
  __slots__ = ("front_left", "front_right", "back_left", "back_right", "timestamp_ns")
@@ -159,62 +168,10 @@ class IMUState(_message.Message):
159
168
  timestamp_ns: int
160
169
  def __init__(self, acc_x: _Optional[float] = ..., acc_y: _Optional[float] = ..., acc_z: _Optional[float] = ..., gyro_x: _Optional[float] = ..., gyro_y: _Optional[float] = ..., gyro_z: _Optional[float] = ..., quat_w: _Optional[float] = ..., quat_x: _Optional[float] = ..., quat_y: _Optional[float] = ..., quat_z: _Optional[float] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
161
170
 
162
- class ArmCommand(_message.Message):
163
- __slots__ = ("command_type", "joint_pos", "joint_vel")
164
- class CommandType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
165
- __slots__ = ()
166
- POSITION: _ClassVar[ArmCommand.CommandType]
167
- VELOCITY_FEEDFORWARD: _ClassVar[ArmCommand.CommandType]
168
- POSITION: ArmCommand.CommandType
169
- VELOCITY_FEEDFORWARD: ArmCommand.CommandType
170
- COMMAND_TYPE_FIELD_NUMBER: _ClassVar[int]
171
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
172
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
173
- command_type: ArmCommand.CommandType
174
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
175
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
176
- def __init__(self, command_type: _Optional[_Union[ArmCommand.CommandType, str]] = ..., joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ...) -> None: ...
177
-
178
- class HandCommand(_message.Message):
179
- __slots__ = ("joint_pos",)
180
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
181
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
182
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ...) -> None: ...
183
-
184
- class HeadCommand(_message.Message):
185
- __slots__ = ("joint_pos", "joint_vel")
186
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
187
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
188
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
189
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
190
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ...) -> None: ...
191
-
192
- class TorsoCommand(_message.Message):
193
- __slots__ = ("joint_pos", "joint_vel")
194
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
195
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
196
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
197
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
198
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ...) -> None: ...
199
-
200
- class SingleWheelCommand(_message.Message):
201
- __slots__ = ("steering_pos", "wheel_vel")
202
- STEERING_POS_FIELD_NUMBER: _ClassVar[int]
203
- WHEEL_VEL_FIELD_NUMBER: _ClassVar[int]
204
- steering_pos: float
205
- wheel_vel: float
206
- def __init__(self, steering_pos: _Optional[float] = ..., wheel_vel: _Optional[float] = ...) -> None: ...
207
-
208
- class ChassisCommand(_message.Message):
209
- __slots__ = ("left", "right")
210
- LEFT_FIELD_NUMBER: _ClassVar[int]
211
- RIGHT_FIELD_NUMBER: _ClassVar[int]
212
- left: SingleWheelCommand
213
- right: SingleWheelCommand
214
- def __init__(self, left: _Optional[_Union[SingleWheelCommand, _Mapping]] = ..., right: _Optional[_Union[SingleWheelCommand, _Mapping]] = ...) -> None: ...
215
-
216
- class EndEffectorPassThroughCommand(_message.Message):
217
- __slots__ = ("data",)
218
- DATA_FIELD_NUMBER: _ClassVar[int]
219
- data: bytes
220
- def __init__(self, data: _Optional[bytes] = ...) -> None: ...
171
+ class HandTouchSensorState(_message.Message):
172
+ __slots__ = ("force", "timestamp_ns")
173
+ FORCE_FIELD_NUMBER: _ClassVar[int]
174
+ TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
175
+ force: _containers.RepeatedScalarFieldContainer[float]
176
+ timestamp_ns: int
177
+ def __init__(self, force: _Optional[_Iterable[float]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
@@ -25,7 +25,7 @@ _sym_db = _symbol_database.Default()
25
25
 
26
26
 
27
27
 
28
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x64\x65xcontrol_query.proto\x12\ndexcontrol\"Z\n\nSetArmMode\x12)\n\x04mode\x18\x01 \x01(\x0e\x32\x1b.dexcontrol.SetArmMode.Mode\"!\n\x04Mode\x12\x0c\n\x08POSITION\x10\x00\x12\x0b\n\x07\x44ISABLE\x10\x01\"Z\n\x0bSetHeadMode\x12*\n\x04mode\x18\x01 \x01(\x0e\x32\x1c.dexcontrol.SetHeadMode.Mode\"\x1f\n\x04Mode\x12\n\n\x06\x45NABLE\x10\x00\x12\x0b\n\x07\x44ISABLE\x10\x01\"\x1a\n\x08SetEstop\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"\x18\n\x06SetLed\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"\x82\x01\n\nClearError\x12\x33\n\tcomponent\x18\x01 \x01(\x0e\x32 .dexcontrol.ClearError.Component\"?\n\tComponent\x12\x0c\n\x08LEFT_ARM\x10\x00\x12\r\n\tRIGHT_ARM\x10\x01\x12\x08\n\x04HEAD\x10\x02\x12\x0b\n\x07\x43HASSIS\x10\x03\"y\n\x0fRebootComponent\x12\x38\n\tcomponent\x18\x01 \x01(\x0e\x32%.dexcontrol.RebootComponent.Component\",\n\tComponent\x12\x07\n\x03\x41RM\x10\x00\x12\t\n\x05TORSO\x10\x01\x12\x0b\n\x07\x43HASSIS\x10\x02\"\x80\x01\n\x0f\x46irmwareVersion\x12\x18\n\x10hardware_version\x18\x01 \x01(\x05\x12\x18\n\x10software_version\x18\x02 \x01(\x05\x12\x14\n\x0c\x63ompile_time\x18\x03 \x01(\x05\x12\x11\n\tmain_hash\x18\x04 \x01(\t\x12\x10\n\x08sub_hash\x18\x05 \x01(\t\"\xb2\x01\n\x0fSoftwareVersion\x12J\n\x10\x66irmware_version\x18\x01 \x03(\x0b\x32\x30.dexcontrol.SoftwareVersion.FirmwareVersionEntry\x1aS\n\x14\x46irmwareVersionEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x1b.dexcontrol.FirmwareVersion:\x02\x38\x01\"\x9d\x01\n\x14SingleComponentState\x12\x11\n\tconnected\x18\x01 \x01(\x08\x12,\n\x07\x65nabled\x18\x02 \x01(\x0e\x32\x1b.dexcontrol.ComponentStatus\x12\x30\n\x0b\x65rror_state\x18\x03 \x01(\x0e\x32\x1b.dexcontrol.ComponentStatus\x12\x12\n\nerror_code\x18\x04 \x01(\t\"\x9b\x01\n\x0f\x43omponentStates\x12\x37\n\x06states\x18\x01 \x03(\x0b\x32\'.dexcontrol.ComponentStates.StatesEntry\x1aO\n\x0bStatesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12/\n\x05value\x18\x02 \x01(\x0b\x32 .dexcontrol.SingleComponentState:\x02\x38\x01\"U\n\nNTPRequest\x12\x1b\n\x13\x63lient_send_time_ns\x18\x01 \x01(\x04\x12\x14\n\x0csample_count\x18\x02 \x01(\r\x12\x14\n\x0csample_index\x18\x03 \x01(\r\"\x94\x01\n\x0bNTPResponse\x12\x1b\n\x13\x63lient_send_time_ns\x18\x01 \x01(\x04\x12\x1e\n\x16server_receive_time_ns\x18\x02 \x01(\x04\x12\x1b\n\x13server_send_time_ns\x18\x03 \x01(\x04\x12\x14\n\x0csample_index\x18\x04 \x01(\r\x12\x15\n\rtotal_samples\x18\x05 \x01(\r*0\n\x0f\x43omponentStatus\x12\n\n\x06NORMAL\x10\x00\x12\x06\n\x02NA\x10\x01\x12\t\n\x05\x45RROR\x10\x02\x62\x06proto3')
28
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x64\x65xcontrol_query.proto\x12\ndexcontrol\"\xbe\x01\n\nSetArmMode\x12)\n\x04mode\x18\x01 \x01(\x0e\x32\x1b.dexcontrol.SetArmMode.Mode\x12*\n\x05modes\x18\x02 \x03(\x0e\x32\x1b.dexcontrol.SetArmMode.Mode\"Y\n\x04Mode\x12\x0c\n\x08POSITION\x10\x00\x12\x0b\n\x07\x44ISABLE\x10\x01\x12\x0b\n\x07\x43URRENT\x10\x02\x12\x0c\n\x08VELOCITY\x10\x03\x12\n\n\x06\x45NABLE\x10\x04\x12\x0f\n\x0b\x43\x41LIBRATION\x10\x05\"\x87\x01\n\x0bSetHeadMode\x12*\n\x04mode\x18\x01 \x01(\x0e\x32\x1c.dexcontrol.SetHeadMode.Mode\x12+\n\x05modes\x18\x02 \x03(\x0e\x32\x1c.dexcontrol.SetHeadMode.Mode\"\x1f\n\x04Mode\x12\n\n\x06\x45NABLE\x10\x00\x12\x0b\n\x07\x44ISABLE\x10\x01\"\x1a\n\x08SetEstop\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"\x18\n\x06SetLed\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"\x82\x01\n\nClearError\x12\x33\n\tcomponent\x18\x01 \x01(\x0e\x32 .dexcontrol.ClearError.Component\"?\n\tComponent\x12\x0c\n\x08LEFT_ARM\x10\x00\x12\r\n\tRIGHT_ARM\x10\x01\x12\x08\n\x04HEAD\x10\x02\x12\x0b\n\x07\x43HASSIS\x10\x03\"y\n\x0fRebootComponent\x12\x38\n\tcomponent\x18\x01 \x01(\x0e\x32%.dexcontrol.RebootComponent.Component\",\n\tComponent\x12\x07\n\x03\x41RM\x10\x00\x12\t\n\x05TORSO\x10\x01\x12\x0b\n\x07\x43HASSIS\x10\x02\"\x80\x01\n\x0f\x46irmwareVersion\x12\x18\n\x10hardware_version\x18\x01 \x01(\x05\x12\x18\n\x10software_version\x18\x02 \x01(\x05\x12\x14\n\x0c\x63ompile_time\x18\x03 \x01(\x05\x12\x11\n\tmain_hash\x18\x04 \x01(\t\x12\x10\n\x08sub_hash\x18\x05 \x01(\t\"\xb2\x01\n\x0fSoftwareVersion\x12J\n\x10\x66irmware_version\x18\x01 \x03(\x0b\x32\x30.dexcontrol.SoftwareVersion.FirmwareVersionEntry\x1aS\n\x14\x46irmwareVersionEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x1b.dexcontrol.FirmwareVersion:\x02\x38\x01\"\x9d\x01\n\x14SingleComponentState\x12\x11\n\tconnected\x18\x01 \x01(\x08\x12,\n\x07\x65nabled\x18\x02 \x01(\x0e\x32\x1b.dexcontrol.ComponentStatus\x12\x30\n\x0b\x65rror_state\x18\x03 \x01(\x0e\x32\x1b.dexcontrol.ComponentStatus\x12\x12\n\nerror_code\x18\x04 \x01(\t\"\x9b\x01\n\x0f\x43omponentStates\x12\x37\n\x06states\x18\x01 \x03(\x0b\x32\'.dexcontrol.ComponentStates.StatesEntry\x1aO\n\x0bStatesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12/\n\x05value\x18\x02 \x01(\x0b\x32 .dexcontrol.SingleComponentState:\x02\x38\x01\"U\n\nNTPRequest\x12\x1b\n\x13\x63lient_send_time_ns\x18\x01 \x01(\x04\x12\x14\n\x0csample_count\x18\x02 \x01(\r\x12\x14\n\x0csample_index\x18\x03 \x01(\r\"\x94\x01\n\x0bNTPResponse\x12\x1b\n\x13\x63lient_send_time_ns\x18\x01 \x01(\x04\x12\x1e\n\x16server_receive_time_ns\x18\x02 \x01(\x04\x12\x1b\n\x13server_send_time_ns\x18\x03 \x01(\x04\x12\x14\n\x0csample_index\x18\x04 \x01(\r\x12\x15\n\rtotal_samples\x18\x05 \x01(\r*0\n\x0f\x43omponentStatus\x12\n\n\x06NORMAL\x10\x00\x12\x06\n\x02NA\x10\x01\x12\t\n\x05\x45RROR\x10\x02\x62\x06proto3')
29
29
 
30
30
  _globals = globals()
31
31
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -36,42 +36,42 @@ if not _descriptor._USE_C_DESCRIPTORS:
36
36
  _globals['_SOFTWAREVERSION_FIRMWAREVERSIONENTRY']._serialized_options = b'8\001'
37
37
  _globals['_COMPONENTSTATES_STATESENTRY']._loaded_options = None
38
38
  _globals['_COMPONENTSTATES_STATESENTRY']._serialized_options = b'8\001'
39
- _globals['_COMPONENTSTATUS']._serialized_start=1400
40
- _globals['_COMPONENTSTATUS']._serialized_end=1448
41
- _globals['_SETARMMODE']._serialized_start=38
42
- _globals['_SETARMMODE']._serialized_end=128
43
- _globals['_SETARMMODE_MODE']._serialized_start=95
44
- _globals['_SETARMMODE_MODE']._serialized_end=128
45
- _globals['_SETHEADMODE']._serialized_start=130
46
- _globals['_SETHEADMODE']._serialized_end=220
47
- _globals['_SETHEADMODE_MODE']._serialized_start=189
48
- _globals['_SETHEADMODE_MODE']._serialized_end=220
49
- _globals['_SETESTOP']._serialized_start=222
50
- _globals['_SETESTOP']._serialized_end=248
51
- _globals['_SETLED']._serialized_start=250
52
- _globals['_SETLED']._serialized_end=274
53
- _globals['_CLEARERROR']._serialized_start=277
54
- _globals['_CLEARERROR']._serialized_end=407
55
- _globals['_CLEARERROR_COMPONENT']._serialized_start=344
56
- _globals['_CLEARERROR_COMPONENT']._serialized_end=407
57
- _globals['_REBOOTCOMPONENT']._serialized_start=409
58
- _globals['_REBOOTCOMPONENT']._serialized_end=530
59
- _globals['_REBOOTCOMPONENT_COMPONENT']._serialized_start=486
60
- _globals['_REBOOTCOMPONENT_COMPONENT']._serialized_end=530
61
- _globals['_FIRMWAREVERSION']._serialized_start=533
62
- _globals['_FIRMWAREVERSION']._serialized_end=661
63
- _globals['_SOFTWAREVERSION']._serialized_start=664
64
- _globals['_SOFTWAREVERSION']._serialized_end=842
65
- _globals['_SOFTWAREVERSION_FIRMWAREVERSIONENTRY']._serialized_start=759
66
- _globals['_SOFTWAREVERSION_FIRMWAREVERSIONENTRY']._serialized_end=842
67
- _globals['_SINGLECOMPONENTSTATE']._serialized_start=845
68
- _globals['_SINGLECOMPONENTSTATE']._serialized_end=1002
69
- _globals['_COMPONENTSTATES']._serialized_start=1005
70
- _globals['_COMPONENTSTATES']._serialized_end=1160
71
- _globals['_COMPONENTSTATES_STATESENTRY']._serialized_start=1081
72
- _globals['_COMPONENTSTATES_STATESENTRY']._serialized_end=1160
73
- _globals['_NTPREQUEST']._serialized_start=1162
74
- _globals['_NTPREQUEST']._serialized_end=1247
75
- _globals['_NTPRESPONSE']._serialized_start=1250
76
- _globals['_NTPRESPONSE']._serialized_end=1398
39
+ _globals['_COMPONENTSTATUS']._serialized_start=1547
40
+ _globals['_COMPONENTSTATUS']._serialized_end=1595
41
+ _globals['_SETARMMODE']._serialized_start=39
42
+ _globals['_SETARMMODE']._serialized_end=229
43
+ _globals['_SETARMMODE_MODE']._serialized_start=140
44
+ _globals['_SETARMMODE_MODE']._serialized_end=229
45
+ _globals['_SETHEADMODE']._serialized_start=232
46
+ _globals['_SETHEADMODE']._serialized_end=367
47
+ _globals['_SETHEADMODE_MODE']._serialized_start=336
48
+ _globals['_SETHEADMODE_MODE']._serialized_end=367
49
+ _globals['_SETESTOP']._serialized_start=369
50
+ _globals['_SETESTOP']._serialized_end=395
51
+ _globals['_SETLED']._serialized_start=397
52
+ _globals['_SETLED']._serialized_end=421
53
+ _globals['_CLEARERROR']._serialized_start=424
54
+ _globals['_CLEARERROR']._serialized_end=554
55
+ _globals['_CLEARERROR_COMPONENT']._serialized_start=491
56
+ _globals['_CLEARERROR_COMPONENT']._serialized_end=554
57
+ _globals['_REBOOTCOMPONENT']._serialized_start=556
58
+ _globals['_REBOOTCOMPONENT']._serialized_end=677
59
+ _globals['_REBOOTCOMPONENT_COMPONENT']._serialized_start=633
60
+ _globals['_REBOOTCOMPONENT_COMPONENT']._serialized_end=677
61
+ _globals['_FIRMWAREVERSION']._serialized_start=680
62
+ _globals['_FIRMWAREVERSION']._serialized_end=808
63
+ _globals['_SOFTWAREVERSION']._serialized_start=811
64
+ _globals['_SOFTWAREVERSION']._serialized_end=989
65
+ _globals['_SOFTWAREVERSION_FIRMWAREVERSIONENTRY']._serialized_start=906
66
+ _globals['_SOFTWAREVERSION_FIRMWAREVERSIONENTRY']._serialized_end=989
67
+ _globals['_SINGLECOMPONENTSTATE']._serialized_start=992
68
+ _globals['_SINGLECOMPONENTSTATE']._serialized_end=1149
69
+ _globals['_COMPONENTSTATES']._serialized_start=1152
70
+ _globals['_COMPONENTSTATES']._serialized_end=1307
71
+ _globals['_COMPONENTSTATES_STATESENTRY']._serialized_start=1228
72
+ _globals['_COMPONENTSTATES_STATESENTRY']._serialized_end=1307
73
+ _globals['_NTPREQUEST']._serialized_start=1309
74
+ _globals['_NTPREQUEST']._serialized_end=1394
75
+ _globals['_NTPRESPONSE']._serialized_start=1397
76
+ _globals['_NTPRESPONSE']._serialized_end=1545
77
77
  # @@protoc_insertion_point(module_scope)
@@ -1,3 +1,4 @@
1
+ from collections.abc import Iterable as _Iterable
1
2
  from collections.abc import Mapping as _Mapping
2
3
  from typing import ClassVar as _ClassVar
3
4
  from typing import Optional as _Optional
@@ -20,19 +21,29 @@ NA: ComponentStatus
20
21
  ERROR: ComponentStatus
21
22
 
22
23
  class SetArmMode(_message.Message):
23
- __slots__ = ("mode",)
24
+ __slots__ = ("mode", "modes")
24
25
  class Mode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
25
26
  __slots__ = ()
26
27
  POSITION: _ClassVar[SetArmMode.Mode]
27
28
  DISABLE: _ClassVar[SetArmMode.Mode]
29
+ CURRENT: _ClassVar[SetArmMode.Mode]
30
+ VELOCITY: _ClassVar[SetArmMode.Mode]
31
+ ENABLE: _ClassVar[SetArmMode.Mode]
32
+ CALIBRATION: _ClassVar[SetArmMode.Mode]
28
33
  POSITION: SetArmMode.Mode
29
34
  DISABLE: SetArmMode.Mode
35
+ CURRENT: SetArmMode.Mode
36
+ VELOCITY: SetArmMode.Mode
37
+ ENABLE: SetArmMode.Mode
38
+ CALIBRATION: SetArmMode.Mode
30
39
  MODE_FIELD_NUMBER: _ClassVar[int]
40
+ MODES_FIELD_NUMBER: _ClassVar[int]
31
41
  mode: SetArmMode.Mode
32
- def __init__(self, mode: _Optional[_Union[SetArmMode.Mode, str]] = ...) -> None: ...
42
+ modes: _containers.RepeatedScalarFieldContainer[SetArmMode.Mode]
43
+ def __init__(self, mode: _Optional[_Union[SetArmMode.Mode, str]] = ..., modes: _Optional[_Iterable[_Union[SetArmMode.Mode, str]]] = ...) -> None: ...
33
44
 
34
45
  class SetHeadMode(_message.Message):
35
- __slots__ = ("mode",)
46
+ __slots__ = ("mode", "modes")
36
47
  class Mode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
37
48
  __slots__ = ()
38
49
  ENABLE: _ClassVar[SetHeadMode.Mode]
@@ -40,8 +51,10 @@ class SetHeadMode(_message.Message):
40
51
  ENABLE: SetHeadMode.Mode
41
52
  DISABLE: SetHeadMode.Mode
42
53
  MODE_FIELD_NUMBER: _ClassVar[int]
54
+ MODES_FIELD_NUMBER: _ClassVar[int]
43
55
  mode: SetHeadMode.Mode
44
- def __init__(self, mode: _Optional[_Union[SetHeadMode.Mode, str]] = ...) -> None: ...
56
+ modes: _containers.RepeatedScalarFieldContainer[SetHeadMode.Mode]
57
+ def __init__(self, mode: _Optional[_Union[SetHeadMode.Mode, str]] = ..., modes: _Optional[_Iterable[_Union[SetHeadMode.Mode, str]]] = ...) -> None: ...
45
58
 
46
59
  class SetEstop(_message.Message):
47
60
  __slots__ = ("enable",)