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 小时前
透明化地铁线视频孪生综合监控项目技术
大数据·人工智能·virtualenv
鼎艺创新科技4 小时前
不依赖 UE/Unity:我们如何从零搭建一套国产三维 GIS 渲染引擎
人工智能·算法·unity·游戏引擎·三维电子沙盘
十三画者4 小时前
【文献分享】ConfRetro:融合3D构象信息的逆合成预测Transformer框架
人工智能·深度学习·数据挖掘·数据分析·transformer·数据可视化
前沿在线4 小时前
百度文心助手推出任务引擎 2.0,日活用户同比增长 83%,日均对话轮次增长超 2 倍
人工智能·ai·大模型
zandy10114 小时前
AI办公工具选哪个?千问办公、百度搭子、WorkBuddy三款高阶智能体深度拆解
人工智能·ai办公工具
mengpp_1234564 小时前
AIoT平台 vs 普通IoT平台 核心区别
人工智能
canonical_entropy4 小时前
可逆不是逆向运行:DeepSeek Harness 架构的数学本质
人工智能·架构·agent
别动我齐刘海5 小时前
机器人运动控制学习2——基础进阶
c++·人工智能·神经网络·学习·目标检测·机器学习·机器人
冬奇Lab6 小时前
Code Agent 解剖(05):模型怎么知道有哪些工具可以用?Function Calling 如何实现?
人工智能·开源·agent
ZGIAI6 小时前
ZGI Workflow:让知识检索进入业务流程
人工智能·架构