第一课:课程导论与环境准备

大家好,我是你们的讲师。做机器人仿真这行当也有七八年了,踩过的坑比吃过的盐还多。今天咱们开始《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
注意:我曾经遇到过安装到一半网络断掉的情况,结果包没装全,后面编译MoveIt2时各种报错。建议用稳定的网络环境,或者提前把deb包下载到本地。

安装完成后,别忘了配置环境变量:

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
小技巧:第一次编译大概要30-60分钟。你可以去泡杯咖啡。如果编译到一半报错,别慌,看看是不是缺了某个依赖。用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 MoveIt2 + Gazebo 仿真联调知识体系 基础环境 ROS2 Humble + Gazebo Fortress 核心组件 MoveIt2 源码编译 通信桥梁 ros_gz_bridge 运动学求解器 碰撞检测 轨迹规划 仿真控制 应用场景 机械臂抓取 | 移动操作 | 多机器人协同 | 传感器仿真 验证:Rviz2 + Gazebo 联调

验证清单

环境配好了,怎么确认没问题?我列了个清单,你照着检查一遍:

检查项 命令 预期结果
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环境已加载",这样一眼就能确认环境对不对。

好了,第一课就到这里。环境配好了,后面咱们就能专心搞运动规划和控制了。记住,遇到问题别硬扛,多看看终端报错信息——那里面藏着答案。

可可精品资料库