Files
acRealman_xr/README.md
T
2026-08-11 12:48:14 +08:00

5.5 KiB
Executable File
Raw Blame History

XR-RM75 双臂遥操作

基于 Ubuntu 22.04、ROS2 Humble、PICO 4 Ultra 和睿尔曼 RM75 的双臂 XR 遥操作 工作空间,支持单臂/双臂 Mock 与真机控制,以及 MuJoCo 运动学显示。

Warning

真机命令会连接并控制机械臂。首次运行必须从 Mock 和单臂低速验证开始,确保急停 可用且工作区无人。当前项目没有双臂碰撞检测或避障。

当前能力

  • PICO/XR 双手柄 UDP 输入,相对位姿目标与 Placo QP 七关节控制。
  • 单臂/双臂 Mock 与真机、手柄/话题夹爪控制,以及只读 MuJoCo 双臂显示。
  • 工作空间/圆柱限位、速度限制、指令超时和安全慢停。
  • 统一 launch、Tkinter 启动面板、调试话题和 Mock 输入工具。

尚未完成:D405/D435 视频流、数据记录、相机标定、目标检测、双臂碰撞避障、任务级状态机,以及 PICO 与 ROS 的完整时间同步和状态回传。

系统架构

PICO / XRoboToolkit
  -> UDP JSON
  -> xr_rm_input/udp_controller_receiver
  -> /xr/left_controller、/xr/right_controller
  -> xr_rm_teleop/single_arm_velocity_teleop
  -> 相对 TCP 目标 + Placo QP
  -> Mock 或 RM75 rm_movej_canfd
  -> joint_states / 调试话题
       -> 可选 xr_rm_mujoco/dual_arm_simulator

工作空间包含五个 ROS2 包:xr_rm_input 负责手柄输入,xr_rm_interfaces 定义消息, xr_rm_teleop 实现遥操作与真机适配,xr_rm_bringup 提供启动和配置, xr_rm_mujoco 负责只读运动学显示。

single_arm_velocity_teleop 每个实例只控制一台机械臂;双臂模式分别启动 left_arm_teleopright_arm_teleop

环境与构建

在工作空间根目录执行:

cd /home/robot/WS_xr
source /opt/ros/humble/setup.bash
rosdep update
rosdep install --from-paths src -y --ignore-src
colcon build --symlink-install
source install/setup.bash

遥操作和 MuJoCo 节点固定使用 /home/robot/miniconda3/envs/xr/bin/python 其中固定 Placo 0.9.4、Pinocchio 3.7.0、NumPy 2.2.6 和 MuJoCo 3.10.0;不要从 用户或系统 Python 覆盖这些版本。

真机模式另需睿尔曼 Python API2;Mock 模式不依赖厂商 SDK。

快速开始

以下命令均在 /home/robot/WS_xr 执行,并先 source ROS2 与 install/setup.bash

Mock

ros2 launch xr_rm_bringup arm_debug.launch.py arm:=both use_mock:=true

另开终端发送模拟手柄数据:

ros2 run xr_rm_input sample_udp_sender \
  --hand both --host 127.0.0.1 --port 15000 \
  --pattern axis_sweep --seconds 30

单臂调试时将 arm 改为 leftright。推荐先分别完成左右单臂 Mock,再进入双臂或真机验证。

MuJoCo

ros2 launch xr_rm_bringup arm_debug.launch.py \
  arm:=both use_mock:=true use_mujoco:=true

MuJoCo 只订阅关节状态,不参与控制。真机显示可将 use_mock 改为 false 但该命令会同时连接两台 RM75。

PICO 输入

只保留一个 UDP 输入源,然后启动 XRoboToolkit bridge

ros2 run xr_rm_input xrobotoolkit_to_udp_bridge \
  --host 127.0.0.1 --port 15000 --hz 90

确认左右 topic 持续接收数据:

ros2 topic hz /xr/left_controller
ros2 topic hz /xr/right_controller

图形启动面板可运行 python3 src/xr_rm_bringup/tools/launcher_ui.py,提供 Simulation、MuJoCo、Real Hardware 和 Diagnostics 模式。

真机

确认对应 YAML 中 move_to_initial_pose_on_connect: false,再从单臂开始:

ros2 launch xr_rm_bringup arm_debug.launch.py arm:=left use_mock:=false
ros2 launch xr_rm_bringup arm_debug.launch.py arm:=right use_mock:=false

单臂方向、限位、急停、超时停止和夹爪均验证后,才能启动双臂:

ros2 launch xr_rm_bringup arm_debug.launch.py arm:=both use_mock:=false

按住 grip 控制对应机械臂;松开后停止。点击 trigger 切换对应夹爪开/关。 左手 X、右手 A 会请求对应机械臂回到配置的初始位姿;真机使用前必须清空安全区。

Launch 参数

统一入口为 xr_rm_bringup/launch/arm_debug.launch.py

参数 默认值 说明
arm right leftrightboth
use_mock true false 会连接真机
use_mujoco false 仅支持 arm:=both
udp_host 0.0.0.0 UDP 监听地址
udp_port 15000 UDP 监听端口
udp_timer_hz 200.0 UDP receiver 轮询频率

配置

文件 用途
dual_arm_rm75.yaml 双臂节点、网络、控制与安全参数
left_arm_rm75.yaml 左臂单独调试
right_arm_rm75.yaml 右臂单独调试
peripherals_rm75.yaml 工具坐标、负载和末端执行器
dual_arm_mujoco.yaml MuJoCo 刷新频率

修改某一侧控制参数时,同时检查单臂和双臂 YAML 是否需要同步。必须保留工作空间/ 圆柱限位、线速度与角速度限制、关节速度/加速度限制、指令超时和安全停止逻辑。

configure_safety_limits 不得默认关闭; move_to_initial_pose_on_connect 必须保持默认 false

测试

在工作空间根目录执行:

source /opt/ros/humble/setup.bash
colcon build --symlink-install
colcon test --event-handlers console_direct+
colcon test-result --verbose

涉及遥操作姿态控制时,额外运行:

pytest src/xr_rm_teleop/test/test_orientation_control.py

真机验证不属于自动测试。默认使用 use_mock:=true,未经现场安全确认不要连接或 移动机械臂。