第一课:课程导论与环境准备
大家好,我是你们的讲师。做机器人仿真这行当也有七八年了,踩过的坑比吃过的盐还多。今天咱们开始《ROS2 MoveIt与Gazebo仿真联调实战》的第一课。
说实话,环境配置往往是整个课程里最磨人的环节。我见过太多人卡在这一步,还没开始写代码就放弃了。所以这节课,我会把每个细节都掰开揉碎了讲清楚。
为什么选ROS2 Humble + Gazebo Fortress?
你可能要问:为什么不是ROS1?为什么不是Gazebo Classic?
嗯,这里有个背景。ROS1的维护期已经进入倒计时了,而ROS2是未来。Gazebo Fortress是新一代的仿真器,和ROS2的集成度更高,性能也更好。我在去年做的一个仓储机器人项目里,就吃过Gazebo Classic和ROS2不兼容的亏——折腾了两天才发现是版本匹配问题。
所以,咱们直接上最新的稳定组合:
- ROS2 Humble Hawksbill:长期支持版,2024年5月前都有官方维护
- Gazebo Fortress:和Humble是官方推荐的搭档
- MoveIt2:从源码编译,保证最新特性
第一步:安装ROS2 Humble
我个人习惯用Ubuntu 22.04 LTS。如果你用的是其他版本,建议先重装系统——别嫌麻烦,后面省心。
安装命令其实很简单,但有几个坑要注意:
# 设置locale
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
# 添加ROS2源
sudo apt install software-properties-common
sudo add-apt-repository universe
# 添加GPG密钥
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
# 添加仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 安装桌面版(推荐)
sudo apt update
sudo apt install ros-humble-desktop
安装完成后,别忘了配置环境变量:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证一下:
ros2 run demo_nodes_cpp talker
如果看到"Hello World"在刷屏,恭喜你,ROS2装好了。
第二步:安装Gazebo Fortress
Gazebo Fortress的安装比ROS2还简单。但有个细节:它和ROS2的通信靠的是ros_gz_bridge,这个后面会用到。
sudo apt install ros-humble-ros-gz-bridge
sudo apt install gz-fortress
装完后跑个测试:
gz sim -v 4 -r shapes.sdf
你应该能看到一个带球体和立方体的仿真窗口。如果窗口闪退,八成是显卡驱动问题。我遇到过这种情况,后来更新了NVIDIA驱动就好了。
第三步:MoveIt2源码编译
这是最折腾的一步。为什么非要源码编译?因为apt源里的MoveIt2版本太旧,有些新功能没有。我建议用二进制安装作为备选,但主力用源码。
先装依赖:
sudo apt install python3-vcstool python3-colcon-common-extensions
创建工作空间:
mkdir -p ~/moveit2_ws/src
cd ~/moveit2_ws
wget https://raw.githubusercontent.com/ros-planning/moveit2/main/moveit2.repos
vcs import src < moveit2.repos
这里有个坑:vcs import可能会因为网络问题失败。我建议用代理,或者多试几次。实在不行,可以手动下载每个仓库的zip包。
编译:
cd ~/moveit2_ws
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
rosdep install --from-paths src --ignore-src -r -y补装一下。
第四步:工作空间配置与验证
编译完成后,配置环境变量:
echo "source ~/moveit2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证MoveIt2是否正常工作:
ros2 launch moveit2_tutorials demo.launch.py
如果看到Rviz2界面加载了Panda机械臂,说明一切正常。
知识体系总览
下面这张图,是我自己总结的整个课程的知识结构。你可以把它当作地图,随时回来看看自己走到哪了。
验证清单
环境配好了,怎么确认没问题?我列了个清单,你照着检查一遍:
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| ROS2节点通信 | ros2 run demo_nodes_cpp talker |
终端持续输出"Hello World" |
| Gazebo启动 | gz sim -v 4 -r shapes.sdf |
弹出仿真窗口,显示球体和立方体 |
| MoveIt2加载 | ros2 launch moveit2_tutorials demo.launch.py |
Rviz2显示Panda机械臂模型 |
| 桥接通信 | ros2 topic list | grep gz |
看到/gz相关话题 |
source ~/.bashrc。我习惯在.bashrc里加一行echo "ROS2环境已加载",这样一眼就能确认环境对不对。
好了,第一课就到这里。环境配好了,后面咱们就能专心搞运动规划和控制了。记住,遇到问题别硬扛,多看看终端报错信息——那里面藏着答案。
可可精品资料库