跳到主要内容

Marvin Pro ROS Topic 列表

本文是当前 Marvin Pro 客户可见 ROS 2 Topic 的集中速查表,对应 Apex Humble v1.0.7.74o / Jazzy v1.0.7.74t(2026-08-17)及之后采用相同接口契约的版本。详细的控制源、安全要求和 Service 用法参见 Marvin Pro 客户二次开发接口。

使用边界
  • 客户输入:可由客户程序发布,但必须满足对应模式、仲裁源和安全要求。
  • 只读:只允许订阅、记录和诊断,不应由客户程序发布。
  • 可选:只在对应 Tool、Camera、Recorder、Playback、VLA 或手套模块启动后出现。
  • 目标设备中 ros2 topic list -t 的结果始终优先于本文。

1. 命名空间​

Marvin Pro 核心接口默认使用 /tj。旧路径 /control/...、/info/... 和 /joint_states 不等价于当前 /tj/... 接口。

source /etc/apex/apex_ros_env.sh
ros2 topic list -t | grep -E '^/tj/|^/hand_|^/quad_tile/|^/info/apex_package_info' | sort

2. 机器人状态与反馈​

Topic类型权限说明
/tj/joint_statessensor_msgs/msg/JointState只读标准关节状态
/tj/info/joint_feedbackmarvin_msgs/msg/Jointfeedback只读高频关节位置、速度和力矩反馈
/tj/info/arm_statestd_msgs/msg/Int16MultiArray只读双臂状态码
/tj/info/robot_statestd_msgs/msg/Int16MultiArray只读整机控制状态
/tj/info/robot_infomarvin_msgs/msg/RobotInfo只读机器人型号和控制器版本
/tj/info/eef_leftgeometry_msgs/msg/PoseStamped只读左末端实际位姿
/tj/info/eef_rightgeometry_msgs/msg/PoseStamped只读右末端实际位姿
/tj/info/wrench_leftgeometry_msgs/msg/WrenchStamped只读左末端力/力矩
/tj/info/wrench_rightgeometry_msgs/msg/WrenchStamped只读右末端力/力矩
/tj/info/go_home_statusstd_msgs/msg/String只读Planner / Home 状态
/info/apex_package_infostd_msgs/msg/String只读,全局Apex 软件包版本信息

3. 头显与遥操输入​

Topic类型权限说明
/tj/control/target_poseLgeometry_msgs/msg/PoseStamped只读VR 左手目标位姿
/tj/control/target_poseRgeometry_msgs/msg/PoseStamped只读VR 右手目标位姿
/tj/control/enableLstd_msgs/msg/Bool只读左臂遥操使能
/tj/control/enableRstd_msgs/msg/Bool只读右臂遥操使能
/tj/control/vr_joy_Lsensor_msgs/msg/Joy只读左手柄摇杆和按键
/tj/control/vr_joy_Rsensor_msgs/msg/Joy只读右手柄摇杆和按键
/tj/control/Elbow_leftgeometry_msgs/msg/PoseStamped只读左肘目标/跟踪位姿
/tj/control/Elbow_rightgeometry_msgs/msg/PoseStamped只读右肘目标/跟踪位姿
/tj/info/vr_connectedstd_msgs/msg/Bool只读头显链路连接状态
/tj/control/footkeystd_msgs/msg/Bool客户输入,可选手套模式脚踏门控

4. 客户控制输入​

Topic类型权限启用条件
/tj/control/user/joint_cmd_Amarvin_msgs/msg/JointcmdArm客户输入Joint Input = 3
/tj/control/user/joint_cmd_Bmarvin_msgs/msg/JointcmdArm客户输入Joint Input = 3
/tj/control/ik_request/vlamarvin_msgs/msg/IKRequest客户输入IK Input = 2,Joint Input = 1
/tj/control/gripperValueLstd_msgs/msg/Float32客户输入左 Tool 已启动
/tj/control/gripperValueRstd_msgs/msg/Float32客户输入右 Tool 已启动

5. Teleop、IK 与 QP 链路​

Topic类型权限说明
/tj/control/eef_cmd_Ageometry_msgs/msg/PoseStamped只读映射后的左末端目标
/tj/control/eef_cmd_Bgeometry_msgs/msg/PoseStamped只读映射后的右末端目标
/tj/control/ik_request/vrmarvin_msgs/msg/IKRequest只读VR 来源 IK 请求
/tj/control/ik_requestmarvin_msgs/msg/IKRequest只读仲裁后的 QP IK 请求
/tj/control/ik_cmd_Amarvin_msgs/msg/Jointcmd只读左臂兼容 IK 调试输出,不是当前主控制链
/tj/control/ik_cmd_Bmarvin_msgs/msg/Jointcmd只读右臂兼容 IK 调试输出,不是当前主控制链
/tj/info/ik_request_mux/active_sourcestd_msgs/msg/Int32只读IK 来源:0=idle, 1=VR, 2=VLA
/tj/control/ik_resultmarvin_msgs/msg/IKResult只读IK 求解结果
/tj/joint_state_cmdsensor_msgs/msg/JointState只读QP 全模型关节目标
/tj/control/qp_controller/joint_cmd_Amarvin_msgs/msg/JointcmdArm只读QP 左臂输出
/tj/control/qp_controller/joint_cmd_Bmarvin_msgs/msg/JointcmdArm只读QP 右臂输出

6. Planner、回放与最终命令​

Topic类型权限说明
/tj/control/joint_cmd_plan_Amarvin_msgs/msg/Jointcmd只读Planner 左臂输出
/tj/control/joint_cmd_plan_Bmarvin_msgs/msg/Jointcmd只读Planner 右臂输出
/tj/control/replay/joint_cmd_Amarvin_msgs/msg/JointcmdArm只读Playback 左臂输出
/tj/control/replay/joint_cmd_Bmarvin_msgs/msg/JointcmdArm只读Playback 右臂输出
/tj/control/joint_cmd_Amarvin_msgs/msg/JointcmdArm只读仲裁后的左臂最终命令
/tj/control/joint_cmd_Bmarvin_msgs/msg/JointcmdArm只读仲裁后的右臂最终命令
/tj/control/input_modestd_msgs/msg/Int32只读Joint 来源:0=idle, 1=teleop, 2=planner, 3=user, 4=replay

7. DM / ZY 夹爪​

Topic类型权限说明
/tj/control/gripperValueLstd_msgs/msg/Float32客户输入,可选左夹爪目标
/tj/control/gripperValueRstd_msgs/msg/Float32客户输入,可选右夹爪目标
/tj/info/gripper_feedback_Lstd_msgs/msg/Float32MultiArray只读,可选左夹爪状态反馈
/tj/info/gripper_feedback_Rstd_msgs/msg/Float32MultiArray只读,可选右夹爪状态反馈
/tj/info/gripper_feedback_L_errstd_msgs/msg/Int32MultiArray只读,可选左夹爪错误码
/tj/info/gripper_feedback_R_errstd_msgs/msg/Int32MultiArray只读,可选右夹爪错误码

8. Wuji 灵巧手​

Wuji Topic 保持全局路径,不添加 /tj。

Topic类型权限说明
/hand_left/joint_commandssensor_msgs/msg/JointState客户输入,可选左手控制命令
/hand_left/joint_statessensor_msgs/msg/JointState只读,可选左手状态
/hand_right/joint_commandssensor_msgs/msg/JointState客户输入,可选右手控制命令
/hand_right/joint_statessensor_msgs/msg/JointState只读,可选右手状态
/hand_left/joint_commands_playbacksensor_msgs/msg/JointState只读,可选回放左手命令
/hand_right/joint_commands_playbacksensor_msgs/msg/JointState只读,可选回放右手命令

9. Recorder、Playback 与相机​

Topic类型权限说明
/tj/recorder/statusstd_msgs/msg/Int32只读,可选录制状态
/tj/control/playback_controlstd_msgs/msg/String兼容输入,可选JSON 回放控制;优先使用 Service
/tj/playback_statusstd_msgs/msg/String只读,可选回放状态
/tj/playback_keystd_msgs/msg/Bool只读,可选回放按键/状态
/quad_tile/compressedsensor_msgs/msg/CompressedImage只读,可选,全局原始四宫格 H.264 图像,按订阅启停
/quad_tile/compressed_undistortedsensor_msgs/msg/CompressedImage只读,可选,全局按标定处理的四宫格 H.264 图像,按订阅启停
/quad_tile/jpeg/compressedsensor_msgs/msg/CompressedImage只读,可选,全局四宫格 JPEG 图像

完整相机接口参见 相机配置与 ROS 接口。

10. ROS 系统 Topic​

Topic类型权限说明
/tftf2_msgs/msg/TFMessage只读动态坐标变换
/tf_statictf2_msgs/msg/TFMessage只读静态坐标变换
/rosoutrcl_interfaces/msg/Log只读ROS 日志
/parameter_eventsrcl_interfaces/msg/ParameterEvent只读参数变更事件

11. 快速核对​

source /etc/apex/apex_ros_env.sh

echo '=== /tj topics ==='
ros2 topic list -t | grep '^/tj/' | sort

echo '=== global product topics ==='
ros2 topic list -t | grep -E '^/hand_|^/quad_tile/|^/info/apex_package_info$' | sort

echo '=== customer input endpoints ==='
ros2 topic info /tj/control/user/joint_cmd_A -v
ros2 topic info /tj/control/ik_request/vla -v
ros2 topic info /tj/control/gripperValueL -v

Topic 只在对应模块启动后出现。列表存在但没有消息时,应继续检查 Publisher、QoS、ROS_DOMAIN_ID、APEX_ROS_NAMESPACE 和模块运行状态。

12. Topic 频率参考​

下表是当前 Marvin Pro 源码与默认参数中的设计值。定时器、SDK/CAN 控制循环、ROS Topic 和前端 WebSocket 的频率不是同一个概念;这些数值也不是 Linux、DDS 和网络环境下的硬实时承诺。

Topic / 链路设计或预期频率生效条件
/tj/info/eef_left/right1000 HzTeleop 正常运行;实际值受计算负载影响
/tj/control/ik_request/vr1000 HzTeleop 正常运行且 VR 来源有效
/tj/control/qp_controller/joint_cmd_A/B最高 500 HzRobot Ready、目标有效、QP 正常
/tj/control/joint_cmd_A/BTeleop 时通常 500 HzJoint 来源为 Teleop;该 Topic 跟随当前来源
/tj/info/joint_feedback200 HzRobot 与 MarvinSDK 正常连接
/tj/info/arm_state、/tj/info/robot_state200 HzRobot 正常连接
/tj/joint_states100 HzRobot 正常连接
/tj/info/gripper_feedback_L/R 及错误码200 HzDM/ZY Tool 正常运行
/tj/recorder/status1 HzRecorder 已启动
/tj/playback_status10 HzPlayback 已启动
/tj/info/robot_info0.2 Hz默认每 5 秒发布,启动时立即发布一次
/quad_tile/compressed、/quad_tile/compressed_undistorted、/quad_tile/jpeg/compressed默认上限 30 Hz,按订阅启停实际频率取决于有效输入、Mosaic 配置和订阅状态

头显目标、使能和夹爪控制 Topic 跟随实际 UDP 数据包或上游客户程序,不具有统一固定频率。Planner、Replay、事件状态和静态 TF 也不应套用持续发布频率。

现场测量前先确认发布者数量,避免把多个发布者的合并流量误判为单节点频率:

source /etc/apex/apex_ros_env.sh

ros2 topic info -v /tj/info/joint_feedback --no-daemon
ros2 topic info -v /tj/joint_states --no-daemon
ros2 topic info -v /tj/info/gripper_feedback_L --no-daemon

ros2 topic hz /tj/info/eef_left
ros2 topic hz /tj/control/qp_controller/joint_cmd_A
ros2 topic hz /tj/control/joint_cmd_A
ros2 topic hz /tj/info/joint_feedback
ros2 topic hz /tj/joint_states
ros2 topic hz /tj/info/gripper_feedback_L

正式稳定性测试建议在机械臂、夹爪、相机和录包同时运行时持续至少 120 秒,并记录平均 Hz、周期标准差、P95/P99、最大间隔、断流次数、Publisher 数量和 CPU 负载。