DDS Interface
The underlying communication provides data exchange between the user PC and the robot.
- Subscribe topic
rt/lowstate(type:pnd_adam.msg.dds_.LowState_) to get Adam's current body state. - Subscribe topic
rt/handstate(type:pnd_adam.msg.dds_.HandState_) to get finger states. - Publish topic
rt/lowcmd(type:pnd_adam.msg.dds_.LowCmd_) to control full-body actuators (excluding dexterous hands), battery, etc. - Publish topic
rt/handcmd(type:pnd_adam.msg.dds_.Handcmd_) to control finger actuators.
API Description
Use the DDS API methods to subscribe or publish topics. Topic information is stored in structures defined by IDL. Common structures include:
| Structure | Description |
|---|---|
_HandCmd_.py |
Dexterous hand control |
_HandState_.py |
Dexterous hand state |
_IMUState_.py |
Adam IMU state |
_LowCmd_.py |
Adam low-level control |
_LowState_.py |
Adam low-level state |
_MotorCmd_.py |
Adam motor command |
_MotorState_.py |
Adam motor state |
DDS Message Definitions
Outgoing message: rt/lowcmd (desired body positions)
| Field | Type | Dimension | Description |
|---|---|---|---|
motor_cmd |
MotorCmd_ |
* | Variable length[1] |
reserve |
unsigned long |
1 | Reserved |
[1] motor_cmd details: Length depends on robot model
- Adam Pro: 31 actuator dimensions
- Adam Standard: 29 actuator dimensions
- Adam Lite: 23 actuator dimensions
Subscribed message: rt/lowstate (actual body state)
| Field | Type | Dimension | Description |
|---|---|---|---|
imu_state |
IMUState_ |
9 | IMU data |
motor_state |
MotorState_ |
* | Variable length[1] |
wireless_remote |
short |
40 | Fixed length[2] |
reserve |
unsigned long |
1 | Reserved |
[1] motor_state details: Length depends on robot model
- Adam Pro: 31 actuator dimensions
- Adam Standard: 29 actuator dimensions
- Adam Lite: 23 actuator dimensions
[2] wireless_remote details: Index 20–40 unused; 0–19 correspond to controller buttons: "lx", "ly", "rx", "ry", "lt", "rt", "xx", "yy", "a", "b", "x", "y", "lb", "rb", "back", "start", "home", "lo", "ro"
Outgoing message: rt/handcmd (desired finger positions)
| Field | Type | Dimension | Description |
|---|---|---|---|
position |
unsigned long |
12 | Desired hand positions |
reserve |
unsigned long |
1 | Reserved |
Subscribed message: rt/handstate (actual finger positions)
| Field | Type | Dimension | Description |
|---|---|---|---|
position |
unsigned long |
12 | Actual hand positions |
reserve |
unsigned long |
1 | Reserved |
IMU Data Type: IMUState_
| Field | Type | Dimension | Description |
|---|---|---|---|
quaternion |
float |
4 | Quaternion |
gyroscope |
float |
3 | Angular velocity |
accelerometer |
float |
3 | Acceleration |
ypr |
float |
3 | Yaw-Pitch-Roll |
temperature |
short |
3 | Temperature |
Single motor data type: MotorCmd_
| Field | Type | Description |
|---|---|---|
mode |
octet |
Mode (0) |
q |
float |
Position |
dq |
float |
Velocity |
tau |
float |
Torque |
kp |
float |
Stiffness |
kd |
float |
Damping |
reserve |
unsigned long |
Reserved |
Single motor data type: MotorState_
| Field | Type | Description |
|---|---|---|
mode |
octet |
Mode (0) |
q |
float |
Position |
dq |
float |
Velocity |
ddq |
float |
Acceleration |
tau_est |
float |
Estimated torque |
state |
unsigned long |
Current state |
reserve |
unsigned long |
Reserved |