1. Gazebo与ROS2环境搭建:Ubuntu系统安装、ROS2 Humble安装、Gazebo Ignition Fortress安装、环境变量配置与验证
做机器人仿真,第一步就是搭环境。说实话,这一步劝退了很多人。我见过不少同学,代码写得挺好,结果卡在环境配置上,一卡就是好几天。今天咱们就把这事彻底搞定。
1.1 为什么选择这套组合?
你可能要问:ROS2版本那么多,为啥偏偏选Humble?Gazebo也有新旧之分,为啥用Ignition Fortress?
我个人习惯是:选稳定版,别追新。ROS2 Humble是2022年的LTS版本,支持到2027年。Gazebo Ignition Fortress也是LTS版。这两个搭配,我在项目里跑了两年多,没出过兼容性问题。
核心组合:
- Ubuntu 22.04 LTS(Jammy Jellyfish)
- ROS2 Humble Hawksbill
- Gazebo Ignition Fortress
1.2 Ubuntu 22.04 安装要点
嗯,这里要注意:千万别用虚拟机跑仿真。Gazebo的渲染和物理引擎对GPU有要求,虚拟机里跑起来卡得你怀疑人生。我建议直接双系统,或者用一台闲置的电脑。
安装时记得勾选「为图形和WiFi硬件安装第三方软件」。这个选项能帮你省掉不少驱动折腾的时间。我曾经因为没勾这个,装完系统发现网卡驱动不对,折腾了一下午。
磁盘分区建议:
- /boot:1GB(够用)
- /:50GB(系统+软件)
- /home:剩余全部(你的代码、模型、数据集都放这)
交换分区可以不要,现在内存都16GB起步了,用swap文件更灵活。
1.3 ROS2 Humble 安装
装ROS2其实就几条命令的事。但很多人栽在源的选择上。国内用户一定要换清华或中科大的源,不然下载速度会让你崩溃。
# 1. 设置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
# 2. 添加ROS2源
sudo apt install software-properties-common
sudo add-apt-repository universe
# 3. 添加ROS2 GPG key
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
# 4. 添加源到sources.list
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
# 5. 安装ROS2 Humble桌面版
sudo apt update
sudo apt install ros-humble-desktop
# 6. 安装开发工具
sudo apt install ros-dev-tools
避坑指南:我曾经遇到过安装到一半报错「无法定位软件包」。原因是系统源和ROS2源冲突。解决办法:先执行 sudo apt update,确认没有报错再继续。
1.4 Gazebo Ignition Fortress 安装
Gazebo Ignition Fortress的安装比ROS2还简单。但要注意:别装成Gazebo Classic。Classic版本已经停止维护了,新功能都在Ignition上。
# 安装Gazebo Ignition Fortress
sudo apt update
sudo apt install ignition-fortress
# 验证安装
ign gazebo --version
如果看到版本号输出,说明装好了。我习惯再跑一个空世界测试一下:
ign gazebo empty.sdf
能弹出Gazebo窗口,看到地面和天空,就算成功。
1.5 环境变量配置
这一步很多人会忘。装完ROS2和Gazebo,如果不配环境变量,每次打开终端都要手动source,烦得很。
我个人习惯是把配置写到 ~/.bashrc 里:
# 编辑bashrc
nano ~/.bashrc
# 在文件末尾添加以下内容
source /opt/ros/humble/setup.bash
source /usr/share/ignition/ignition-fortress/setup.sh
# 设置Gazebo与ROS2的通信桥
export IGNITION_VERSION=fortress
保存退出后,执行 source ~/.bashrc 让配置生效。
小技巧:如果你同时装了多个ROS版本,可以用别名来切换:
alias ros2h='source /opt/ros/humble/setup.bash'
alias ros2f='source /opt/ros/foxy/setup.bash'
这样想用哪个版本就敲哪个命令,互不干扰。
1.6 验证环境是否正常
装完别急着走,咱们做个快速验证。我一般用三个终端来测试:
终端1:启动Gazebo
ign gazebo shapes.sdf
终端2:启动ROS2话题监听
ros2 topic list
如果看到 /clock、/world 等话题,说明ROS2和Gazebo已经连上了。
终端3:发布一个话题测试
ros2 topic pub /test std_msgs/msg/String "data: 'Hello Gazebo'"
在Gazebo的日志窗口能看到消息输出,就说明整个链路通了。
验证清单:
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| ROS2版本 | ros2 --version |
显示 ros-humble |
| Gazebo版本 | ign gazebo --version |
显示 Ignition Fortress |
| 环境变量 | echo $ROS_DISTRO |
显示 humble |
| 通信测试 | ros2 topic list |
能看到Gazebo发布的话题 |
1.7 常见问题与解决
我整理了几个高频问题,都是我在项目里踩过的坑:
- Gazebo启动黑屏:多半是显卡驱动问题。试试
export LIBGL_ALWAYS_SOFTWARE=1强制使用软件渲染。 - ROS2找不到Gazebo话题:检查
ros-ign-bridge装了没。没装的话sudo apt install ros-humble-ros-ign-bridge。 - source命令报错:看看路径对不对。我遇到过有人把
/opt/ros/humble写成了/opt/ros/humble/,多了一个斜杠。
重要提醒:如果你用的是NVIDIA显卡,记得装驱动。命令是 sudo ubuntu-drivers autoinstall,然后重启。不装驱动的话,Gazebo的渲染性能会差很多。
1.8 本章知识体系
下面这张图是我自己画的,把本章的核心逻辑串起来了。你可以把它当作一个检查清单:
这张图把整个流程分成了三层:底层是操作系统,中间是ROS2和Gazebo两个核心组件,上层是环境配置和验证。你按照这个顺序来,基本不会出问题。
好了,环境搭好之后,下一章咱们就开始写第一个仿真程序。到时候你会发现,前面这些折腾都是值得的。
可可精品资料库