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

相关推荐
私人珍藏库3 小时前
[Android] PeakFinder AR v4.8.89 (山峰全景识别+增强现实山峰查看器)
android·人工智能·智能手机·ar·工具·软件
CS创新实验室4 小时前
算法、齿轮与硅基大脑:数值计算发展简史
人工智能·算法·数值计算
能有时光4 小时前
PyTorch KernelAgent 源码解读 ---(4)--- ExtractorAgent
人工智能·pytorch·python
fthux4 小时前
GitZip Pro 源码解析:一个 GitHub 文件/文件夹下载扩展是如何工作的(一)整体架构与扩展入口
人工智能·ai·开源·github·open source
aqi005 小时前
15天学会AI应用开发(十七)使用LangGraph实现会话记忆功能
人工智能·python·大模型·ai编程·ai应用
xixixi777775 小时前
三大 AI 安全里程碑:Akamai 高危风险预警、智能体水印强制落地、PQC 量子安全全产业链统一
大数据·人工智能·安全·ai·大模型·智能体·政策
AI小码5 小时前
LLM 应用的缓存工程:当每次 API 调用都在燃烧成本
java·人工智能·spring·计算机·llm·编程·api
code 小楊5 小时前
AI函数调用:Function Calling从理论到实战全解析
人工智能
delishcomcn5 小时前
智切未来:AI算法如何重塑不干胶标签分切机的精度与效率边界
人工智能·神经网络·计算机视觉
观远数据6 小时前
ChatBI选型对比:从意图识别到SQL修复,六个维度打分决定是否值得投产
数据库·人工智能·sql