跳转至

DDS 接口

底层通信提供了用户端PC与机器人之间的数据交互功能。

  • 订阅话题 rt/lowstate(类型: pnd_adam.msg.dds_.LowState_) 获取 Adam 当前状态。
  • 订阅话题 rt/handstate(类型:pnd_adam.msg.dds_.HandState_)获取手指当前状态。
  • 发布话题 rt/lowcmd(类型:pnd_adam.msg.dds_.LowCmd_) 控制全身关节电机(不含灵巧手)、电池等设备。
  • 发布话题 rt/handcmd(类型:pnd_adam.msg.dds_.Handcmd_) 控制手指关节电机。

接口说明

采用DDS API里介绍的方法订阅或发布话题。话题信息存储在由 IDL 定义的结构体中,常用结构体有:

结构体名称 说明
_HandCmd_.py 灵巧手控制
_HandState_.py 灵巧手状态
_IMUState_.py Adam IMU状态
_LowCmd_.py Adam 底层控制
_LowState_.py Adam 底层状态
_MotorCmd_.py Adam 电机控制
_MotorState_.py Adam 电机状态

DDS消息定义

下发消息:rt/lowcmd(身体期望位置)

字段 类型 维度 含义
motor_cmd MotorCmd_ * 变长[1]
reserve unsigned long 1 保留字段

[1]motor_cmd 说明:其长度根据本机型号而定

  • Adam Pro :31 维度执行器数据
  • Adam Standard :29 维度执行器数据
  • Adam Lite :23 维度执行器数据

订阅消息:rt/lowstate(身体实际状态)

字段 类型 维度 含义
imu_state IMUState_ 9 IMU数据
motor_state MotorState_ * 变长[1]
wireless_remote short 40 定长[2]
reserve unsigned long 1 保留字段

[1]motor_state 说明:其长度根据本机型号而定

  • Adam Pro :31 维度执行器数据
  • Adam Standard :29 维度执行器数据
  • Adam Lite :23 维度执行器数据

[2]wireless_remote 说明:索引20-40为空,0-19分别对应手柄遥控器按键:"lx", "ly", "rx", "ry", "lt", "rt", "xx", "yy", "a", "b", "x", "y", "lb", "rb", "back", "start", "home", "lo", "ro"

下发消息:rt/handcmd(手指期望位置)

字段 类型 维度 含义
position unsigned long 12 手部期望位置
reserve unsigned long 1 保留字段

订阅消息:rt/handstate(手指实际状态)

字段 类型 维度 含义
position unsigned long 12 手部实际位置
reserve unsigned long 1 保留字段

IMU数据类型:IMUState_

字段 类型 维度 含义
quaternion float 4 四元数
gyroscope float 3 角速度
accelerometer float 3 加速度
ypr float 3 姿态角
temperature short 3 温度

单个关节数据类型:MotorCmd_

字段 类型 含义
mode octet 模式(0)
q float 位置
dq float 速度
tau float 力矩
kp float 刚度
kd float 阻尼
reserve unsigned long 保留字段

单个关节数据类型:MotorState_

字段 类型 含义
mode octet 模式(0)
q float 位置
dq float 速度
ddq float 加速度
tau_est float 力矩估计
state unsigned long 当前状态
reserve unsigned long 保留字段