第一课:课程导论与环境准备
大家好,我是你们这趟仿真之旅的向导。
说实话,每次带新人入门,我总爱先问一个问题:「你为什么要学 MoveIt 和 Gazebo 联调?」 答案五花八门,但核心就一个——省钱、省命、省时间。你想想看,真机调试一次撞坏一个关节,几万块就没了。而在仿真里,你随便撞,随便炸,重启一下就好。
我个人习惯把这一章叫做「地基课」。地基打不牢,后面全是空中楼阁。所以,咱们今天不急着跑代码,先把环境整明白。
1.1 什么是 MoveIt 与 Gazebo 联调?
简单说,MoveIt 是大脑,Gazebo 是身体。
- MoveIt:负责运动规划、碰撞检测、逆解算。它告诉你「手臂该怎么动」。
- Gazebo:负责物理仿真、传感器模拟、环境交互。它告诉你「动起来会怎样」。
联调,就是把这两个东西连起来。MoveIt 算好轨迹,发给 Gazebo 里的虚拟机器人去执行。Gazebo 再把执行结果反馈回来,形成一个闭环。
核心逻辑图:
我在项目中遇到过不少新手,以为装好 MoveIt 就能直接控制 Gazebo 里的机器人。结果一运行,机器人要么不动,要么乱抖。为什么?因为中间缺了一个「桥梁」——ros_control。这个我们后面会细讲,今天先有个概念。
1.2 Ubuntu + ROS 环境搭建
嗯,这里要注意:版本匹配是最大的坑。
我个人推荐使用 Ubuntu 20.04 + ROS Noetic 的组合。为什么?因为 MoveIt 和 Gazebo 在这个版本上最稳定,社区支持也最活跃。你非要装 Ubuntu 22.04 + ROS Humble 也行,但很多老包会报错,你得自己修。
1.2.1 安装 Ubuntu 20.04
- 去官网下载 Ubuntu 20.04.6 LTS 镜像
- 用 Rufus 或 balenaEtcher 制作启动盘
- 安装时选择「最小安装」,省得一堆用不上的软件
- 分区建议:
/给 50GB,/home给剩余空间
我曾经在分区上吃过亏。给根目录只分了 20GB,结果装完 ROS 和 Gazebo 就满了。后来每次编译都要清理缓存,烦得很。建议至少 50GB。
1.2.2 安装 ROS Noetic
打开终端,一行一行来:
# 设置 sources.list
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
# 设置密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# 更新
sudo apt update
# 安装完整桌面版(推荐)
sudo apt install ros-noetic-desktop-full
# 初始化 rosdep
sudo rosdep init
rosdep update
# 设置环境变量
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 安装构建工具
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
装完后,运行 roscore 测试一下。如果看到一堆日志输出,说明 ROS 核心跑起来了。
小技巧:我习惯在 ~/.bashrc 里加一行 export ROS_HOSTNAME=localhost,这样在多机通信时不会出幺蛾子。
1.3 MoveIt 与 Gazebo 安装验证
环境搭好了,接下来装主角。
1.3.1 安装 MoveIt
sudo apt install ros-noetic-moveit
就这么简单。但注意,这个命令会安装 MoveIt 的核心包,不包括所有插件。如果你需要特定功能(比如 MoveIt Task Constructor),得单独装。
1.3.2 安装 Gazebo
sudo apt install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control
Gazebo 本身会作为依赖自动装上。装完后,运行 gazebo 看看——你应该能看到一个空荡荡的世界。
1.3.3 验证联调环境
我们来跑一个官方示例,验证所有东西是否正常工作:
# 安装示例包
sudo apt install ros-noetic-moveit-resources-panda-moveit-config
# 启动 Gazebo 仿真
roslaunch panda_moveit_config demo_gazebo.launch
如果一切顺利,你会看到:
- Gazebo 窗口里出现一个 Franka Emika Panda 机械臂
- MoveIt 的 RViz 界面自动打开
- 你可以用「拖拽」方式给机械臂设置目标位姿
- 点击「Plan & Execute」,机械臂会在 Gazebo 里动起来
验证清单:
| 检查项 | 预期结果 | 常见问题 |
|---|---|---|
| roscore 启动 | 终端输出日志,无报错 | 端口被占用,用 killall roscore 解决 |
| Gazebo 启动 | 窗口出现,无黑屏 | 显卡驱动问题,尝试 export LIBGL_ALWAYS_SOFTWARE=1 |
| MoveIt 规划 | 能拖拽,能规划出轨迹 | 碰撞检测参数未配置,检查 SRDF 文件 |
| Gazebo 执行 | 机械臂按规划轨迹运动 | ros_control 未配置,检查 controller.yaml |
我记得第一次跑通这个示例时,心里还挺激动的。虽然只是让一个虚拟机械臂动了一下,但那种「大脑指挥身体」的感觉,真的很棒。
1.4 避坑指南
最后,分享几个我踩过的坑:
- Python 版本冲突:ROS Noetic 默认用 Python 3,但有些旧包还依赖 Python 2。遇到
ImportError时,检查一下是不是用了python而不是python3。 - Gazebo 启动慢:第一次启动 Gazebo 要下载模型文件,可能卡在
Downloading model...。解决办法:提前下载好模型库,或者设置GAZEBO_MODEL_PATH指向本地路径。 - 权限问题:如果你用
sudo启动了 roscore,后面所有节点都得用sudo。我建议永远不要用 sudo 运行 ROS 节点,除非你清楚自己在做什么。
好了,环境准备就到这儿。记住,仿真环境就像你的工具箱——工具不齐,活就干不好。花点时间把这一步走稳,后面你会感谢自己的。
我的习惯:每次搭建新环境,我都会在笔记本上记下所有安装命令和遇到的错误。三个月后你再看,这些笔记比任何教程都管用。
可可精品资料库