Moveit2 快速入门

规划Kinova机械臂

bash 复制代码
ros2 launch moveit2_tutorials demo.launch.py

启动后会打开:

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

1. MoveIt 的规划本质

MoveIt 的核心任务:

text 复制代码
给定:

起始状态
↓
目标状态

求解:

一条无碰撞运动轨迹

MoveIt 内部主要流程:

text 复制代码
当前关节状态
↓
目标状态 / 目标位姿
↓
逆运动学 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执行

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 IK IK 求解时同时检查碰撞,避免生成自碰撞或环境碰撞姿态
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 插件会同时显示当前机器人状态、目标状态以及规划生成的轨迹,便于观察运动过程与碰撞情况。

相关推荐
清风lsq10 小时前
大模型-解析vllm lora 模块
人工智能·vllm·大模型推理
alajl10 小时前
Hermes 源码阅读1
人工智能
碳基硅坊10 小时前
Mac Studio 部署 Qwen3.6-27B omlx & dflash 深度评测
人工智能·大模型部署·qwen3.6-27b
cci10 小时前
Moveit2 安装
人工智能
俊哥V10 小时前
每日 AI 研究简报 · 2026-05-28
人工智能·ai
wabs66610 小时前
本科毕业设计项目——基于RAG与大语言模型的408问答系统设计与实现【检索与生成功能的第三步答案生成是怎么实现的?】
人工智能·语言模型·自然语言处理
geneculture10 小时前
从“巴别塔”到“耶路撒冷”:融智学应对AI时代治理困境的系统方案
大数据·人工智能·融智学的重要应用·哲学与科学统一性·融智时代(杂志)·人际间性·人机间性
Engineer邓祥浩10 小时前
宏观认知(1):AI 是什么——吴恩达《AI for Everyone》Week1 学习笔记
人工智能·笔记·学习
小程故事多_8010 小时前
深入解析FlashAttention,大模型长序列训练的底层优化核心技术
人工智能·transformer