跳转至

🎯 MoveIt 教程

MoveIt 运动规划教程,包含仿真、真机、重力补偿以及 MIT/CSP 控制模式切换。


📋 前提条件

项目 要求
🔧 ROS2 Humble 已安装
📁 工作空间 openarmx_ws 已编译
🤖 硬件 可选(仿真模式不需要)

首次使用或更新源码后,建议确保相关包均已编译:

cd ~/openarmx_ws
colcon build --packages-select openarmx_gravity_comp openarmx_bringup openarmx_bimanual_moveit_config
source install/setup.bash

仿真模式

仿真模式无需连接真实硬件,适合用于学习、调试和算法验证。

启动仿真

cd ~/openarmx_ws
source install/setup.bash
ros2 launch openarmx_bimanual_moveit_config demo_sim.launch.py

⏱️ 等待 3-5 秒,RViz 窗口自动打开。

启动成功界面:

RViz启动成功

仿真操作示例

Hands_up: 在 Planning_Group 中选择 left_arm,然后在 Goal State 中选择 hands_up,点击 Execute。

仿真操作1

Open_gripper: 在 Planning_Group 中选择 left_gripper,然后在 Goal State 中选择 open,点击 Execute。关闭 gripper 可在 Goal State 中选择 closed,再点击 Execute。

仿真操作2

Home: 在 Planning_Group 中选择 left_arm,然后在 Goal State 中选择 home,点击 Execute。

仿真操作3


真机模式

🚨 运动前确认:

  • 急停按钮就位,随时可按下
  • 工作区域无人员和障碍物
  • 已完成电机测试

启动真机

真机 MoveIt 默认推荐 MIT + 重力补偿。重力补偿节点根据实时关节姿态计算前馈力矩,并通过 effort controller 注入 MIT 控制回路,可显著减小静态下垂误差。

cd ~/openarmx_ws
source install/setup.bash
ros2 launch openarmx_bimanual_moveit_config demo.launch.py \
  control_mode:=mit \
  enable_forward_effort:=true

启动前请确认 can0(右臂)和 can1(左臂)已配置为 1 Mbps、机器人已上电且各关节接近零位(偏差不超过 30°)。

MIT / CSP 模式切换

两种模式都由 control_mode 启动参数选择;切换模式前应停止当前 launch,再重新启动,不能在运行中直接切换。

模式 控制方式 优点 局限与适用建议
mit(推荐) 发送位置、速度、KP、KD 和前馈力矩的运动控制帧 支持力矩前馈和重力补偿;柔顺性好,适合 MoveIt、力控、遥操作和示教 需要合理设置 KP/KD;未启用补偿时会有约 6° 的重力稳态误差,参数不匹配时可能出现抖动
csp CiA402 周期同步位置模式,发送目标位置 位置刚性和定位精度较高,接口简单 负载能力很低,不建议在末端增加负载;负载或堵转时容易导致电机过流、过热甚至烧毁。CSP 路径不使用 effort/τ_ff,因此不提供本节的重力补偿效果

切换到 CSP(仅建议空载、低速、短时测试):

ros2 launch openarmx_bimanual_moveit_config demo.launch.py \
  control_mode:=csp

不要在 CSP 模式下依赖 enable_forward_effort:=true;重力补偿面向 MIT 控制链路,CSP 下 effort 指令不会转换为电机前馈力矩。若需要重力补偿,请使用 MIT:

ros2 launch openarmx_bimanual_moveit_config demo.launch.py \
  control_mode:=mit enable_forward_effort:=true

⏱️ 等待 3-5 秒,RViz 窗口自动打开。

启动成功界面:

RViz启动成功{ width="100%" }

第一次运动

步骤 1:选择控制对象

在左侧 Planning 面板的 Planning Group 下拉菜单中选择 right_arm 或 left_arm。

Planning Group

步骤 2:设置目标位置

  • 💡 推荐新手:点击 "Select Random Valid Goal" 按钮
  • 🎨 进阶用户:拖动 3D 视图中的彩色交互标记

Select Random Valid Goal

步骤 3:规划并执行

  1. 点击 "Plan" 按钮(等待规划完成)
  2. 检查橙色轨迹是否合理
  3. 点击 "Execute" 按钮开始运动

Plan Execute

真机操作视频

常用操作

操作 步骤
调整速度 Planning 面板 → Velocity Scaling Factor(建议 0.1-0.3)
回零位 Goal State → home → Update → Plan & Execute
手动控制 拖动 3D 视图中的彩色交互标记

重力补偿检查

确认补偿控制器已启动:

ros2 control list_controllers | grep effort
ros2 topic echo /left_forward_effort_controller/commands
ros2 topic echo /right_forward_effort_controller/commands

正常情况下应能看到 effort controller 处于 active,并持续输出随姿态变化的前馈力矩。g_scale 默认值为 1.05,可运行时调整:

ros2 param set /gravity_comp_node g_scale 1.05