Skip to content

数据与消息定义

自定义消息索引

类型主要用途关键字段单位与限制
Encoderstate底盘编码器left_encoder, right_encoderuint16 原始计数 0~5600;不等于米
RobotPower电池与分路电源total_voltage, current, remain_capacity, remain_percent, *_voltage电压 0.01 V;电流见 电压、电流与百分比;容量的实际换算要求现场协议
Camerastate各相机频率汇总camera_color_fps, camera_depth_fpsuint8[],单位 fps;数组索引不可凭空对应相机
BodyData腰与颈部高频数据header, joint_state, pose, neck_joint_state, neck_poseJointState.position rad,位置 m,姿态四元数
ArmMasterData主臂数采header, joint_staterad / rad/s;以消息定义与实机 schema 为准
ArmSlaveData从臂、位姿、力/触觉joint_state, pose, wrench_stamped, gripper_pos, rps_*rad、m、N/N·m;gripper_pos 0~1;rps_* 缩放不在当前发布版本内推断
Rmplusbase / Rmplusstate末端执行器配置/状态自由度、上下限、sys_statedof_err、触觉数组angle_* 0.01°,force_* 0.001 N;操作协议仍为参考信息
Webdatacollect数采元数据type, sence_id, task_id, operator_id, device_id原始字段名为 sence_id。sence_id、task_id、operator_id 和 device_id 均不能为空,长度为 1~128 个字符,仅允许使用英文字母、数字、点(.)、下划线(_)和连字符(-);不得使用空格、中文、路径分隔符、控制字符或 Shell 特殊字符。
StringCmdJSON/文本请求响应请求 data,响应 data只是字符串容器;必须再做 JSON schema、大小、超时和业务错误校验

关节编号与单位

数组均以 J1...Jn 顺序解析,左/右臂 7 个、腰 5 个、头 2 个。严格校验数组长度,不自动补零或截断。

数据源原始单位转为度转为 rad
/robot_slave/states 的 position / REST moveJ.joint0.001°degree = raw / 1000rad = raw / 1000 × π / 180
sensor_msgs/msg/JointState.positionraddegree = rad × 180 / π原值
Rmplusbase.angle_up/angle_low0.01°degree = raw / 100rad = raw / 100 × π / 180

例:5000 在 0.001° 编码中是 5°,不是 5000°,也不是 5 rad。转换后仍要同时校验实机驱动器限位、软限位和本次相对变化量。

状态与错误码

/robot_slave/states 的臂、腰、头分段通常包含 positionjoint_enjoint_errsys_err

  • joint_err 任一非 0:当前部位不允许继续自动运动;保留整个数组、时间戳和目标。
  • sys_err 非 0:发停止,停止本次任务,交由厂商错误码表或支持人员解码。
  • joint_en 不满足预期:不自动使能;先检查急停、模式、控制权和故障原因。
  • 字段缺失、JSON 无法解析、NaN/Inf 或自由度数不对:当作无效状态,不用上次值继续下发。

电压、电流与百分比

RobotPower.*_voltage 按基线旧证据用 0.01 V(即 10 mV);例如 2773 表示 27.73 V

currentuint16 容器内的有符号百分一安培编码(0.01 A,即 10 mA):值大于 32767 时先减 65536,再乘 0.01 A;例如 65018 表示 -5.18 A

该换算仅适用基线,新版本须先复核消息协议。

remain_percent 作 0~100 的百分数校验,超界则报数据异常。

时间戳、TF 与标定

ROS Header.stamp 是设备发布时间,平台还应记录本机接收时间和时钟偏差;不用文件拷贝时间代替消息时间。时长计算必须使用同一时间域的起止值。

/tf_static 的订阅者必须用 TRANSIENT_LOCAL

当臂/头/腰无关节 TF,或相机子树与 base_link 断开时,应停止依赖统一 TF lookup:

  • 机器人运动学改用版本匹配的 URDF + 关节角;
  • 相机几何改用经校验的外参;
  • CameraInfo 只解决相机内参,不能替代相机到本体的外参。

标定写入属高风险,需写前快照、校验数据集和已验证回滚。

MCAP 数据格式

MCAP 是容器,不会自动统一里面的 ROS2 schema。

每次交付至少保存:

  • 唯一 run ID
  • 软硬件版本
  • Topic 名
  • 消息类型
  • schema/序列化格式
  • 起止时间戳
  • 消息数
  • 文件 SHA-256

相机平均帧率用 count / duration,其中 duration > 0;不用单帧间隔代表整段。

解析失败时保留原始文件,不触发自动远程清理。