Skip to content

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