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 本章知识体系

下面这张图是我自己画的,把本章的核心逻辑串起来了。你可以把它当作一个检查清单:

Gazebo与ROS2环境搭建知识体系 Ubuntu 22.04 ROS2 Humble Gazebo Fortress 安装要点 • 双系统安装,避免虚拟机 • 勾选第三方驱动选项 • 磁盘分区:/boot 1GB • / 50GB, /home 剩余 安装步骤 • 设置locale • 添加ROS2源(国内镜像) • 安装ros-humble-desktop • 安装ros-dev-tools 安装验证 • sudo apt install ignition-fortress • ign gazebo --version • 启动empty.sdf测试 • 检查GPU渲染 环境变量配置(~/.bashrc) source /opt/ros/humble/setup.bash + source /usr/share/ignition/ignition-fortress/setup.sh 最终验证:三终端测试(Gazebo + ROS2话题 + 通信)

这张图把整个流程分成了三层:底层是操作系统,中间是ROS2和Gazebo两个核心组件,上层是环境配置和验证。你按照这个顺序来,基本不会出问题。

好了,环境搭好之后,下一章咱们就开始写第一个仿真程序。到时候你会发现,前面这些折腾都是值得的。


可可精品资料库