ROS2 Message Definitions
The underlying communication provides data interaction between the client PC and the robot.
- Subscribe to topic
lowstate(Type:pnd_adam.msg.dds_.LowState_) to get the current state of Adam. - Subscribe to topic
handstate(Type:pnd_adam.msg.dds_.HandState_) to get the current state of the fingers. - Publish to topic
lowcmd(Type:pnd_adam.msg.dds_.LowCmd_) to control whole-body joint motors (excluding dexterous hands), batteries, and other equipment. - Publish to topic
handcmd(Type:pnd_adam.msg.dds_.Handcmd_) to control finger joint motors.
Interface Description
Use ROS2 to subscribe to or publish topics. Topic information is stored in structures defined by IDL. Common structures include:
| Structure Name | Description |
|---|---|
_BatteryData_.py |
Battery status (voltage, current, power, etc.) |
_HandCmd_.py |
Dexterous hand desired position control |
_HandState_.py |
Dexterous hand actual status feedback |
_IMUState_.py |
Adam IMU attitude and acceleration data |
_LowCmd_.py |
Adam low-level whole-body control commands |
_LowState_.py |
Adam low-level whole-body status summary |
_MotorCmd_.py |
Single motor control parameters (position, velocity, torque, and gains) |
_MotorState_.py |
Single motor status feedback |
DDS Message Definitions
Published Message: lowcmd (Desired Body Position)
| Field | Type | Dimension | Meaning |
|---|---|---|---|
mode_pr |
uint8 |
1 | Mode control |
motor_cmd |
MotorCmd_ |
* | Variable length[1] |
reserve |
uint32 |
1 | Reserved field |
[1] motor_cmd description: The length depends on the robot model:
- Adam U: 19-dimensional actuator data
Subscribed Message: lowstate (Actual Body State)
| Field | Type | Dimension | Meaning |
|---|---|---|---|
mode_pr |
uint8 |
1 | Current mode state |
tick |
uint32 |
1 | System timestamp/ticks |
imu_state |
IMUState_ |
9 | IMU attitude data |
motor_state |
MotorState_ |
* | Variable length[1] |
wireless_remote |
short |
40 | Wireless controller data[2] |
battery_data |
BatteryData_ |
1 | Battery level and status information |
reserve |
uint32 |
1 | Reserved field |
[1] motor_state description: The length depends on the robot model:
- Adam U: 19-dimensional actuator data
[2] wireless_remote description: Indices 20-40 are empty. 0-19 correspond to the controller buttons: "lx", "ly", "rx", "ry", "lt", "rt", "xx", "yy", "a", "b", "x", "y", "lb", "rb", "back", "start", "home", "lo", "ro".
Auxiliary Structure Definitions
Battery Status Type: BatteryData_
| Field | Type | Meaning |
|---|---|---|
timestamp_ms |
int64 |
Millisecond timestamp |
voltage |
float32 |
Voltage (V) |
current |
float32 |
Current (A) |
power |
float32 |
Power (W) |
wh_accumulated |
float32 |
Accumulated power consumption (Wh) |
status |
string |
Battery status description |
IMU Data Type: IMUState_
| Field | Type | Dimension | Meaning |
|---|---|---|---|
quaternion |
float32 |
4 | Quaternion [w, x, y, z] |
gyroscope |
float32 |
3 | Angular velocity [x, y, z] |
accelerometer |
float32 |
3 | Acceleration [x, y, z] |
ypr |
float32 |
3 | Attitude angles [yaw, pitch, roll] |
temperature |
int16 |
1 | Sensor temperature |
Single Joint Control Type: MotorCmd_
| Field | Type | Meaning |
|---|---|---|
mode |
uint8 |
Mode (default is 0) |
q |
float32 |
Desired position (rad) |
dq |
float32 |
Desired velocity (rad/s) |
tau |
float32 |
Desired torque (Nm) |
kp |
float32 |
Proportional gain (Stiffness) |
kd |
float32 |
Derivative gain (Damping) |
ki |
float32 |
Integral gain |
reserve |
uint32 |
Reserved field |
Single Joint State Type: MotorState_
| Field | Type | Meaning |
|---|---|---|
mode |
uint8 |
Current mode |
q |
float32 |
Actual position (rad) |
dq |
float32 |
Actual velocity (rad/s) |
ddq |
float32 |
Actual acceleration (\(\text{rad/s}^2\)) |
tau_est |
float32 |
Estimated torque (Nm) |
state |
uint32 |
Motor operation status code |
reserve |
uint32 |
Reserved field |
Dexterous Hand Interface
Published Message: handcmd (Desired Finger Position)
| Field | Type | Dimension | Meaning |
|---|---|---|---|
position |
uint32 |
12 | Desired hand position |
reserve |
uint32 |
1 | Reserved field |
Subscribed Message: handstate (Actual Finger State)
| Field | Type | Dimension | Meaning |
|---|---|---|---|
position |
uint32 |
12 | Actual hand position |
reserve |
uint32 |
1 | Reserved field |