跳转至

ROS2 消息定义

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

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

接口说明

采用ROS2订阅或发布话题。话题信息存储在由 IDL 定义的结构体中,常用结构体有:

结构体名称 说明
_BatteryData_.py 电池状态(电压、电流、电量等)
_HandCmd_.py 灵巧手期望位置控制
_HandState_.py 灵巧手实际状态反馈
_IMUState_.py Adam IMU 姿态及加速度数据
_LowCmd_.py Adam 底层全身控制命令
_LowState_.py Adam 底层全身状态汇总
_MotorCmd_.py 单个电机控制参数(位置、速度、力矩及增益)
_MotorState_.py 单个电机状态反馈

DDS消息定义

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

字段 类型 维度 含义
mode_pr uint8 1 模式控制
motor_cmd MotorCmd_ * 变长[1]
reserve uint32 1 保留字段

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

  • Adam U :19 维度执行器数据

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

字段 类型 维度 含义
mode_pr uint8 1 当前模式状态
tick uint32 1 系统时间戳/滴答数
imu_state IMUState_ 9 IMU 姿态数据
motor_state MotorState_ * 变长[1]
wireless_remote short 40 遥控器手柄数据[2]
battery_data BatteryData_ 1 电池电量与状态信息
reserve uint32 1 保留字段

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

  • Adam U :19 维度执行器数据

[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"

辅助结构体定义

电池状态类型:BatteryData_

字段 类型 含义
timestamp_ms int64 毫秒级时间戳
voltage float32 电压 (V)
current float32 电流 (A)
power float32 功率 (W)
wh_accumulated float32 累计功耗 (Wh)
status string 电池状态描述

IMU数据类型:IMUState_

字段 类型 维度 含义
quaternion float32 4 四元数 [w,x,y,z]
gyroscope float32 3 角速度 [x,y,z]
accelerometer float32 3 加速度 [x,y,z]
ypr float32 3 姿态角 [yaw,pitch,roll]
temperature int16 1 传感器温度

单个关节数据类型:MotorCmd_

字段 类型 含义
mode uint8 模式(默认0)
q float32 期望位置 (rad)
dq float32 期望速度 (rad/s)
tau float32 期望力矩 (Nm)
kp float32 比例增益(刚度)
kd float32 微分增益(阻尼)
ki float32 积分增益
reserve uint32 保留字段

单个关节数据类型:MotorState_

字段 类型 含义
mode uint8 当前模式
q float32 实际位置 (rad)
dq float32 实际速度 (rad/s)
ddq float32 实际加速度 (\(\text{rad/s}^2\))
tau_est float32 估计力矩 (Nm)
state uint32 电机运行状态码
reserve uint32 保留字段

灵巧手接口

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

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

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

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