1、Gazebo与ROS2环境搭建:安装Gazebo与ROS2 Humble,配置工作环境,验证安装
大家好,我是你们的SLAM课程讲师。今天咱们正式开干第一件事——搭环境。
说实话,我见过太多同学卡在环境搭建这一步。明明代码逻辑没问题,结果跑起来全是报错。嗯,这很正常。我自己刚入行那会儿,光装ROS就折腾了两天。所以这一章,咱们把基础打牢。
1.1 为什么选ROS2 Humble + Gazebo?
先说说选型。ROS2 Humble是2022年的长期支持版本,支持到2027年。Gazebo呢,是机器人仿真领域的老牌选手。两者配合,基本是SLAM入门的标准配置。
你可能会问:为啥不用ROS1?我的建议是——直接上ROS2。ROS1虽然生态成熟,但官方已经宣布停止维护了。你想想看,学一个即将被淘汰的东西,多亏啊。
1.2 系统要求
我个人习惯用Ubuntu 22.04 LTS。为什么?因为ROS2 Humble就是为它量身定做的。其他版本也能装,但坑会多一些。
| 项目 | 推荐配置 | 最低配置 |
|---|---|---|
| 操作系统 | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS |
| CPU | 4核以上 | 2核 |
| 内存 | 8GB以上 | 4GB |
| 显卡 | 独立显卡(NVIDIA优先) | 集成显卡 |
| 硬盘 | 50GB空闲 | 20GB空闲 |
1.3 安装ROS2 Humble
好,咱们开始动手。先装ROS2 Humble。整个过程分三步走。
1.3.1 设置软件源
打开终端,一行一行敲。别复制一大段,容易出问题。
sudo apt update
sudo apt install curl gnupg lsb-release
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 $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
1.3.2 安装ROS2 Humble
这里我建议装完整版。虽然占空间,但省心。你想想看,后面用到某个包发现没装,再回头补,多麻烦。
sudo apt install ros-humble-desktop
这个过程大概10-20分钟,取决于你的网速。去泡杯咖啡吧。
1.3.3 配置环境变量
装完以后,需要把ROS2加到环境变量里。不然每次打开终端都要source一遍,烦不烦?
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
ros2 --version,如果显示 ros-humble 相关版本信息,说明装好了。
1.4 安装Gazebo
Gazebo的安装相对简单。ROS2 Humble默认搭配的是Gazebo 11(现在叫Ignition Fortress)。但咱们课程里用Gazebo Classic,也就是Gazebo 11。
sudo apt install gazebo11
sudo apt install ros-humble-gazebo-ros-pkgs
这里要注意:gazebo-ros-pkgs 是ROS2和Gazebo之间的桥梁。没有它,ROS2就控制不了Gazebo里的机器人。我在项目里吃过这个亏,装完Gazebo就以为完事了,结果跑demo时发现话题都连不上。
1.5 配置工作环境
环境装好了,咱们得建个工作空间。以后所有的代码、模型、配置文件都放这里。
1.5.1 创建工作空间
mkdir -p ~/slam_ws/src
cd ~/slam_ws
colcon build
colcon build 是ROS2的编译工具。第一次运行会创建 build、install、log 三个文件夹。别慌,这是正常的。
1.5.2 配置工作空间环境变量
echo "source ~/slam_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
~/slam_ws/src 里建一个 README.md,记录每个包的作用和依赖。时间久了,你一定会感谢这个习惯。
1.6 验证安装
光说不练假把式。咱们来验证一下环境是否真的搭好了。
1.6.1 验证ROS2
ros2 run demo_nodes_cpp talker
再开一个新终端:
ros2 run demo_nodes_py listener
如果listener能收到talker发的消息,说明ROS2通信正常。
1.6.2 验证Gazebo
gazebo --verbose
Gazebo界面应该能正常打开。如果报错说缺少显卡驱动,那就装一下:
sudo apt install nvidia-driver-535
重启后再试。
1.6.3 验证ROS2 + Gazebo联动
ros2 launch gazebo_ros gazebo.launch.py
如果Gazebo启动后,你用 ros2 topic list 能看到 /clock、/gazebo/link_states 等话题,说明联动成功。
1.7 常见问题与避坑
我整理了几个常见问题,都是我在项目里踩过的坑。
- 问题1:colcon build报错 —— 多半是依赖没装全。试试
rosdep install --from-paths src --ignore-src -r -y - 问题2:Gazebo启动黑屏 —— 显卡驱动问题。检查
nvidia-smi是否正常输出 - 问题3:ros2 topic list看不到Gazebo话题 —— 确认
ros-humble-gazebo-ros-pkgs已安装
1.8 本章小结
好,咱们捋一捋今天干了啥:
- 装了ROS2 Humble
- 装了Gazebo 11
- 建了工作空间
slam_ws - 验证了ROS2和Gazebo的联动
环境搭好了,后面的事就顺了。下一章咱们开始往Gazebo里放机器人,让它动起来。
可可精品资料库