Skip to content

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