遥操模式与输入源
本页说明 Input Mode、IK 输入源和遥操动作范围之间的关系,并给出全身遥操、双臂遥操和带底盘遥操的标准操作顺序。不同交付版本显示的控件可能略有差异;界面没有对应选项时,先确认目标设备是否提供本文列出的 Service。
1. 操作前提
切换任何输入源前,应先完成以下操作:
- 清空机器人工作空间并保持急停可触及 。
- 在 Apex 中启动 Robot 和 Teleop,确认机器人已经 Ready。
- 首次开箱时,先用拖动模式把机械臂移到标准零位,再进入 Impedance Mode 并执行 Home。
- 松开头显左右手柄的遥操使能键,再切换遥操动作范围。
终端命令执行前加载环境:
source /etc/apex/apex_ros_env.sh
2. Input Mode
Input Mode 决定最终采用哪一路关节命令。仅发布 Topic、但没有选择对应 Input Mode 时,机器人不会执行该路命令。
| 界面选项 | 数值 | 用途 |
|---|---|---|
| None | 0 | 不转发外部关节命令;切换来源、结束测试或排查时使用 |
| Teleop | 1 | 使用 Teleop/QP 输出;头显遥操和 VLA 末端位姿控制均使用此项 |
| Custom | 3 | 使用客户程序发布的关节目标,不用于 VLA 末端位姿控制 |
Planner=2 和 Replay=4 由规划、Home 或回放流程使用,当前上位机通常不提供普通手动按钮。
可通过 Service 切换,并通过状态 Topic 确认实际结果:
# None
ros2 service call /tj/control/set_input marvin_msgs/srv/Int "{data: 0}"
# Teleop / QP
ros2 service call /tj/control/set_input marvin_msgs/srv/Int "{data: 1}"
# Custom / User joint command
ros2 service call /tj/control/set_input marvin_msgs/srv/Int "{data: 3}"
ros2 topic echo /tj/control/input_mode --once
None 不是急停
None 只停止转发外部运动输入,不会关闭 Robot 服务,也不能替代物理急停。
3. IK 输入源
IK 输入源决定 Teleop/QP 使用哪一路末端位姿请求。/tj/info/ik_request_mux/active_source 是只读状态 Topic,不能通过向该 Topic 发布消息来切换来源。
当前 Marvin Pro 通过 /tj/control/set_ik_input Service 切换:
| 数值 | IK 来源 | 用途 |
|---|---|---|
0 | Idle | 不转发 IK 请求 |
1 | VR | 头显末端位姿 |
2 | VLA | VLA 或客户末端位姿请求 |
3 | Replay | IKRequest 数据回放,通常由 Playback 自动切换和恢复 |
# 查看设备是否支持该接口
ros2 service type /tj/control/set_ik_input
# 切换 IK 来源,例如 VR
ros2 service call /tj/control/set_ik_input marvin_msgs/srv/Int "{data: 1}"
# 核对实际生效来源
ros2 topic echo /tj/info/ik_request_mux/active_source --once
来源切换必须遵循以下顺序,以免短暂转发旧的 IK 输出:
| 场景 | 操作顺序 |
|---|---|
| 头显遥操 | 先 set_ik_input=1,再 set_input=1 |
| VLA/客户末端位姿 | 先 set_ik_input=2,再 set_input=1 |
| 客户关节目标 | 先 set_input=3,再 set_ik_input=0 |
| 停止外部控制 | 先 set_input=0,再 set_ik_input=0 |
产品差异
set_ik_input 是当前 Marvin Pro 对外接口。Skye/Luna 或历史交付版本若查询不到该 Service,应使用配套上位机和交付流程,不要自行调用内部 mux 接口。
4. 遥操动作范围
支持该功能的 Skye/Luna 版本可选择遥操动作范围:
| 模式 | 数值 | 跟随范围 |
|---|---|---|
full_body | 0 | 双臂、头部和身体 |
arms_only | 1 | 仅双臂,锁定身体和头部 |
arms_head | 2 | 双臂和头部,锁定身体 |
# 全身遥操
ros2 service call /tj/control/set_teleop_motion_mode \
marvin_msgs/srv/Int "{data: 0}"
# 仅双臂遥操
ros2 service call /tj/control/set_teleop_motion_mode \
marvin_msgs/srv/Int "{data: 1}"
# 双臂加头部
ros2 service call /tj/control/set_teleop_motion_mode \
marvin_msgs/srv/Int "{data: 2}"
ros2 topic echo /tj/info/teleop_motion_mode --once
只有左右手柄的遥操使能键都松开时才允许切换。任一使能键按下时,请求会被拒绝且原模式保持不变。Marvin Pro 为双臂产品,按双臂流程使用,不需要选择 Gento 的全身动作范围。
5. 三种遥操流程
5.1 Skye/Luna 全身遥操
- 启动 Robot、Teleop 和头显网络模块,完成 Ready、Impedance Mode 和 Home。
- 松开左右手柄使能键,将遥操动作范围切换为
full_body=0。 - 不使用底盘时确认底盘模式为
no_base=0。 - 在配套 Apex 界面中将 Input Mode 切换为 Teleop。不要在 Skye/Luna 上照抄 Marvin Pro 的
set_ik_input=1命令;两条产品线的原生 IK 来源编号不同。 - 连接 Pico、腰部和腿部追踪组件,确认 VR 状态正常。
- 先测试小幅双臂动作,再依次检查头部、躯干、升降或腿部映射。