第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
启动后,你会看到一个图形界面。操作步骤是这样的:
- 加载URDF文件——你的机械臂模型文件
- 定义规划组——比如「手臂组」、「夹爪组」
- 设置自碰撞矩阵——告诉系统哪些关节不会互相碰到
- 添加虚拟关节——如果机械臂装在移动平台上
- 配置末端执行器——比如夹爪、吸盘
- 生成配置文件——一键搞定
避坑指南:我曾经在定义规划组时,把关节顺序搞反了。结果逆解出来的角度全是错的。建议你定义完规划组后,先在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 知识体系总览
为了让你更直观地理解本章内容,我画了一张图:
这张图把整个流程串起来了。从URDF模型开始,经过Setup Assistant配置,生成配置文件包,最后交给MoveIt2做运动规划。每一步都环环相扣。
1.6 本章小结
这一章我们走了一遍MoveIt2的安装和配置流程。你想想看,其实核心就三件事:
- 装好MoveIt2
- 用Setup Assistant配好机械臂
- 生成SRDF和配置文件
配置这块,我建议你多试几次。第一次配错了没关系,删掉配置包重新来就行。我自己当年也是配了三四次才完全搞明白每个参数的含义。
下一章,我们会用配置好的机械臂,真正跑一次运动规划。到时候你就知道,前面这些配置工作有多重要了。
课后练习:找一个开源的机械臂URDF模型(比如panda或ur5),用Setup Assistant配置一遍,生成配置文件包。然后手动检查每个yaml文件的内容,看看能不能看懂。