第1章:MoveIt2基础与配置

大家好,我是你们的讲师。今天咱们来聊聊MoveIt2——这个在机器人运动规划领域绕不开的框架。

说实话,我第一次接触MoveIt还是ROS1时代的事。那时候配置一个机械臂,光是URDF文件就得折腾好几天。现在MoveIt2出来了,配合ROS2,整个流程顺滑了不少。但话说回来,该踩的坑一个都没少,哈哈。

1.1 什么是MoveIt2?

MoveIt2,说白了就是ROS2生态里专门做运动规划的软件框架。它帮你搞定三件事:

  • 运动学求解——正解、逆解,它都管
  • 碰撞检测——别让机械臂打到周围的东西
  • 轨迹规划——从A点到B点,怎么走最安全

我个人习惯把MoveIt2比作「机械臂的导航系统」。就像Nav2帮机器人找路一样,MoveIt2帮机械臂找关节角度。

核心要点:MoveIt2不是单独的工具,它是一整套工具链。包括配置工具、规划器、可视化界面等等。

1.2 安装MoveIt2

安装这块,我建议直接用二进制包。源码编译虽然能学到东西,但太费时间了。咱们做项目讲究效率。

# 安装MoveIt2(ROS2 Humble版本)
sudo apt install ros-humble-moveit

# 验证安装
ros2 pkg list | grep moveit

嗯,这里要注意:不同ROS2版本对应的MoveIt2版本不一样。我用的是Humble,如果你用Galactic或者Rolling,包名要改一下。

小提示:安装完成后,建议跑一下demo。运行 ros2 launch moveit2_tutorials demo.launch.py,如果能看到Rviz里出现机械臂,说明装好了。

1.3 使用Setup Assistant配置机械臂

配置机械臂,是MoveIt2里最核心的一步。我记得第一次做这个,光看文档就看了两小时,结果还是配错了。后来发现,其实流程很固定。

Setup Assistant是MoveIt2自带的图形化配置工具。你给它一个URDF文件,它帮你生成所有运动规划需要的配置文件。

# 启动Setup Assistant
ros2 launch moveit_setup_assistant setup_assistant.launch.py

启动后,你会看到一个图形界面。操作步骤是这样的:

  1. 加载URDF文件——你的机械臂模型文件
  2. 定义规划组——比如「手臂组」、「夹爪组」
  3. 设置自碰撞矩阵——告诉系统哪些关节不会互相碰到
  4. 添加虚拟关节——如果机械臂装在移动平台上
  5. 配置末端执行器——比如夹爪、吸盘
  6. 生成配置文件——一键搞定

避坑指南:我曾经在定义规划组时,把关节顺序搞反了。结果逆解出来的角度全是错的。建议你定义完规划组后,先在Rviz里手动拖一下,看看运动方向对不对。

1.4 生成SRDF与配置文件

SRDF(Semantic Robot Description Format)是MoveIt2的灵魂文件。它描述了机械臂的语义信息,比如:

  • 哪些关节属于哪个规划组
  • 哪些连杆是固定的
  • 默认的规划参数是什么

Setup Assistant配置完成后,会生成一个配置包。里面包含这些文件:

文件名 作用
config/robot.srdf 语义描述文件,定义规划组、碰撞矩阵等
config/kinematics.yaml 运动学求解器配置
config/ompl_planning.yaml OMPL规划器参数
config/joint_limits.yaml 关节限位配置
launch/ 启动文件,用于加载配置并启动MoveIt2

我个人习惯,生成完配置包后,会手动检查一下joint_limits.yaml。因为有时候URDF里的关节限位和实际机械臂的限位不一样。比如我遇到过URDF里写的是±180度,但实际机械臂只能转到±170度。不改的话,规划出来的轨迹会撞到硬限位。

1.5 知识体系总览

为了让你更直观地理解本章内容,我画了一张图:

MoveIt2基础与配置知识体系 URDF 机械臂模型 MoveIt2 Setup Assistant 配置工具 生成配置文件包 robot.srdf kinematics.yaml ompl_planning.yaml joint_limits.yaml launch/ 启动文件 MoveIt2 运动规划与执行

这张图把整个流程串起来了。从URDF模型开始,经过Setup Assistant配置,生成配置文件包,最后交给MoveIt2做运动规划。每一步都环环相扣。

1.6 本章小结

这一章我们走了一遍MoveIt2的安装和配置流程。你想想看,其实核心就三件事:

  • 装好MoveIt2
  • 用Setup Assistant配好机械臂
  • 生成SRDF和配置文件

配置这块,我建议你多试几次。第一次配错了没关系,删掉配置包重新来就行。我自己当年也是配了三四次才完全搞明白每个参数的含义。

下一章,我们会用配置好的机械臂,真正跑一次运动规划。到时候你就知道,前面这些配置工作有多重要了。

课后练习:找一个开源的机械臂URDF模型(比如panda或ur5),用Setup Assistant配置一遍,生成配置文件包。然后手动检查每个yaml文件的内容,看看能不能看懂。

可可精品资料库