ROS 2 适配¶
ROS 2 适配器只订阅信息中枢的 status 帧,消费其中的统一 MocapState;它不监听 IMU
UDP 端口,也不复制校准、共同时间轴或 claw 解算。
启动¶
先启动信息中枢。若要以约 50 Hz 发布 IMU 和骨架,应把状态帧频率也设置为 50 Hz:
python3 SOFTWARE/信息中枢/mocap_ws_hub.py --status-hz 50
在已 source ROS 2 环境的终端运行:
source /opt/ros/<distro>/setup.bash
python3 -m pip install -r SOFTWARE/信息中枢/requirements.txt
python3 adapters/ros2/mocap_ros2_node.py
输出¶
/motion_tracker/state_json(std_msgs/String):完整MocapStateJSON。/motion_tracker/control_json(std_msgs/String):yaw、roll、pitch、distance、z、claw、校准状态和同步质量。/motion_tracker/imu/<node_id>(sensor_msgs/Imu):节点原始四元数;离线节点不发布。/motion_tracker/skeleton/{shoulder,elbow,wrist,palm,fingertip}(geometry_msgs/PoseStamped):骨架点位。tf2:body_rh -> shoulder -> elbow -> wrist -> palm -> fingertip。
所有 Imu、PoseStamped 与 tf 的 header.stamp 都严格使用 frame_time_ns。当共同时间轴
无效、frame_time_ns=null 时,适配器只发布 JSON 状态和控制,不会使用 WebSocket 接收时刻或
solved_time_ns 伪造 ROS 时间戳。
body_rh 的轴语义保持不变:X 前、Y 左、Z 上;ROS 适配器不做坐标轴翻转。
ROS 1 边界¶
当前仓库没有必须兼容的 ROS 1 系统,因此不提供第二套 ROS 1 动捕核心。未来如确有 ROS 1
需求,应由 ROS 1 bridge 订阅本信息中枢的 JSON 状态,或桥接本 ROS 2 节点;不得重新监听
IMU UDP、复制人体校准或修改 MocapState 数值语义。