跳转至

🦾 KER 外骨骼遥操作教程

本教程使用 openarmx_teleop_ker ROS 2 包,将 KER 的 16 路角度映射到 OpenArm 1.0、OpenArm 2.0 或 OpenArmX。首次联调必须先使用仿真硬件;确认方向、范围、夹爪和失联行为后,再切换真实机器人。

🧰 环境和编译

需要 Ubuntu 22.04、ROS 2 Humble、Python 3、NumPy、PyYAML 和 pyusb。在 ROS 2 工作区执行:

cd ~/openarmx_ws
colcon build --packages-select openarmx_teleop_ker --symlink-install
source install/setup.bash

USB 数据接口需要权限时,将用户加入 dialout 组并重新登录:

sudo usermod -a -G dialout $USER

🚀 启动顺序

建议打开三个终端:

  1. 启动机器人控制器(先用 fake hardware)。
  2. 启动 KER 遥操作节点。
  3. 观察话题、关节状态和日志,逐步增加动作幅度。
ros2 launch openarmx_bringup openarmx.bimanual.launch.py \
  control_mode:=mit robot_controller:=forward_position_controller \
  use_fake_hardware:=true
ros2 launch openarm_bringup openarm.bimanual.launch.py \
  arm_type:=openarm_v2.0 robot_controller:=forward_position_controller \
  use_fake_hardware:=true
ros2 launch openarm_bringup openarm.bimanual.launch.py \
  arm_type:=openarm_v1.0 robot_controller:=forward_position_controller \
  use_fake_hardware:=true

🔌 连接 KER

根据上一步启动的机器人选择 robot:OpenArmX 为 openarmx,OpenArm 2.0 为 openarm_2.0,OpenArm 1.0 为 openarm_1.0。以下命令默认使用 OpenArmX,其他机器人请替换 robot 参数。

使用 USB 数据线连接 KER 与电脑,然后执行:

ros2 launch openarmx_teleop_ker teleop_ker.launch.py \
  robot:=openarmx connection:=usb

节点通过 USB Vendor 接口读取姿态,KER Manager 通过 USB CDC 接口管理设备。不要让两个遥操作节点同时占用同一个 USB Vendor 接口。

在 KER Manager 中配置 Wi‑Fi 并切换数据通道,确认电脑与 KER 在同一网络中。将示例 IP 替换为设备实际地址:

ros2 launch openarmx_teleop_ker teleop_ker.launch.py \
  robot:=openarmx connection:=wifi \
  wifi_host:=192.168.3.112 wifi_port:=19090

支持 mDNS 时,wifi_host 也可以填写 openarm-ker.local。Wi‑Fi 使用 UDP,只保留最新姿态,每秒发送心跳维持设备会话;设备重启或网络恢复后会重新握手。

节点会读取设备 schema,并以默认 500 Hz 发布控制命令。

🔍 检查数据和控制器

ros2 topic list | grep -E 'forward_position|joint_trajectory'
ros2 topic echo /left_forward_position_controller/commands
ros2 topic echo /joint_states

OpenArmX 默认发布到左右两个 forward_position_controller 话题,每个话题包含 7 个关节和 1 个夹爪。控制器的关节数量、名称和顺序必须与 YAML 完全一致。

🛡️ 安全验证清单

  • 仿真中每个关节方向正确,左右臂没有对调。
  • 中立姿态启动不会跳变;必要时增大 startup.ramp_sec。
  • 夹爪开合方向和行程正确。
  • USB 拔出、Wi‑Fi 中断或 KER 停止发送时,机器人不会继续执行危险动作。
  • 真机运行时急停可用,操作者和安全员保持可立即释放控制的位置。

❓ 故障排查

  • 无数据:检查 USB 权限、接口是否被占用,或检查 Wi‑Fi 地址、端口和同网段设置。
  • 控制器 update error:检查输出类型、话题/action、关节数量和顺序。
  • 方向错误:在 YAML 中交换该关节的 output_range。
  • 夹爪不动:检查 trigger 索引、输入范围、output_unit 和控制器接口。
  • 启动跳动:确认 /joint_states 已发布,增大 startup.ramp_sec。
  • 动作卡顿:优先使用合理的 jump_reject 和 max_step;不要在正常快速动作上盲目启用 Hampel。