规划Kinova机械臂

ros2 launch moveit2_tutorials demo.launch.py

启动后会打开:

  • RViz 可视化界面
  • MoveGroup 规划节点
  • PlanningScene 场景
  • 虚拟控制器

1. MoveIt 的规划本质

MoveIt 的核心任务:

给定:

起始状态
↓
目标状态

求解:

一条无碰撞运动轨迹

MoveIt 内部主要流程:

当前关节状态
↓
目标状态 / 目标位姿
↓
逆运动学 IK
↓
碰撞检测
↓
OMPL 路径搜索
↓
轨迹时间参数化
↓
发送控制器执行

2. 规划夹爪

  1. 选择Planning Group为 gripper,Planning Group 决定哪些关节参与规划
  2. 选择Start State为Colse或者current为规划起点,Goal State为Open,Open、Close、Home等状态来源于SRDF predefined pose
  3. 点击Plan规划查看轨迹
  4. 点击Execute执行 image.png

3. 规划机械臂

  1. 选择Planning Group为 manipulator,Planning Group 决定哪些关节参与规划
  2. 选择Start State为current为规划起点,Goal State通过拖动交互 Marker(Rviz小球)设置末端目标位姿
  3. 点击Plan规划查看轨迹
  4. 点击Execute执行

点击 Plan 后MoveIt 会:

  1. 获取当前状态
  2. 求解目标 IK
  3. 检查碰撞
  4. 使用 OMPL 搜索路径
  5. 生成轨迹
  6. 在 RViz 显示轨迹

点击Execute 后会: 将轨迹发送给 ros2_control 控制器,demo使用 fake controller

  • 不会驱动真实机器人
  • 只是更新 RViz 中的机器人状态

4. MoveIt 的规划对象

名词本质
Joint State关节角
Pose末端位姿
Planning Group可运动关节集合
Planning Scene世界状态
Collision Object碰撞物体
Trajectory时间轨迹

5. 关节空间 vs 笛卡尔空间

Joint Space Planning:规划关节角变化

  • 稳定
  • 默认模式

Cartesian Planning:末端走直线

  • 适合抓取
  • 更容易失败
  • 计算更复杂

6. 规划失败原因

原因说明
IK 无解目标不可达
自碰撞手臂撞自己
环境碰撞撞桌子
时间不足Planning Time 太短
Goal 与 Start 相同无需规划

7. Commands 命令区

按钮作用典型使用场景
Plan仅执行运动规划,不控制机器人运动调试轨迹是否可达
Execute执行最近一次成功规划的轨迹已完成规划后执行
Plan & Execute自动完成规划并立即执行最常用
Stop停止当前轨迹执行紧急停止
Clear Octomap清除三维占据栅格地图中的障碍物数据深度相机误检测后恢复规划

初次启动时,由于尚未生成轨迹,ExecuteStop 按钮通常为灰色。

8. Query 查询区

  • Planning Group: gripper
    • 选择规划组,当前选中的是 gripper(夹爪)
    • 规划组是在 SRDF 里定义的关节集合,比如 manipulatorgripper
    • 这里选择 gripper,意味着规划器只会为夹爪的关节生成轨迹
  • Start State: current
    • 规划的起点状态,current 表示使用机器人当前的实际关节位置作为起点
    • 也可以下拉选择保存的姿态(比如 openclose
  • Goal State: current
    • 在 RViz 中拖动末端交互 Marker 后,MoveIt 会自动更新目标状态
    • Goal State 下拉框主要用于选择预定义命名姿态(Named State)

9. Options 选项区

基础规划参数

参数作用
Planning Time (s): 5.0规划器最多用 5 秒找路径,超时就返回失败
Planning Attempts: 10规划器独立运行的次数,MoveIt 会从多个候选轨迹中选择结果
Velocity Scaling: 0.10轨迹速度缩放比例,不改变路径形状,仅影响执行速度
Accel. Scaling: 0.10轨迹加速度缩放比例,使运动更平滑

高级选项(复选框)

选项作用
Use Cartesian Path使用笛卡尔插值生成末端直线轨迹,适用于抓取、插入、放置等任务
Collision-aware IKIK 求解时同时检查碰撞,避免生成自碰撞或环境碰撞姿态
Approx IK Solutions允许使用近似逆运动学解,提高求解成功率,但末端位姿可能存在误差
External Comm.外部通信,用于连接外部规划器或控制器,将PlanExecuteselect_planning_group等等接口以topic的形式提供
Replanning轨迹执行过程中重新规划(比如动态避障),会增加计算量
Sensor Positioning可以通过接入 3D 的 LiDAR 或者深度相为机械臂构建基于“Octomap”的周围环境

10. 可视化内容

可视化内容显示形式控制选项默认状态
场景机器人本体正常机器人模型Scene Robot → Show Robot Visual✅ 显示
规划轨迹轨迹动画 / 多帧机器人模型Planned Path → Show Robot Visual✅ 显示
起点状态半透明机器人模型Planning Request → Query Start State❌ 隐藏
目标状态半透明目标机器人模型Planning Request → Query Goal State✅ 显示

MoveIt RViz 插件会同时显示当前机器人状态、目标状态以及规划生成的轨迹,便于观察运动过程与碰撞情况。