环境搭建:ROS2 Humble安装、Gazebo Fortress安装、Nav2源码编译与安装

说实话,做机器人导航这几年,我踩过最多的坑就是环境搭建。明明代码逻辑没问题,结果卡在依赖版本不对、库文件找不到这种破事上。所以这一章,咱们把地基打牢。

我会带着你,一步步把ROS2 Humble、Gazebo Fortress和Nav2源码装好。嗯,都是实战经验,少走弯路。

1. ROS2 Humble 安装

ROS2 Humble 是目前最稳定的长期支持版本。我个人习惯用 Ubuntu 22.04,搭配起来最省心。

核心要点:ROS2 Humble 只支持 Ubuntu 22.04 (Jammy)。别用 20.04 硬装,会出各种奇怪问题。

1.1 设置语言环境

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
export LANG=en_US.UTF-8

1.2 添加 ROS2 源

sudo apt install software-properties-common
sudo add-apt-repository universe
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 $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

1.3 安装桌面版(推荐)

sudo apt update
sudo apt install ros-humble-desktop

这里有个小技巧:千万别装 ros-humble-base,那个不带 rviz2、tf2 这些常用工具。我刚开始就吃过这个亏,后来还得一个个补装,烦得很。

1.4 配置环境变量

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

验证安装:打开终端,输入 ros2 --version,如果显示 ros-humble 相关版本号,就说明装好了。

2. Gazebo Fortress 安装

Gazebo Fortress 是 Gazebo 的 Ignition 系列版本,和 ROS2 Humble 是官方推荐的搭档。你想想看,如果版本不匹配,仿真跑起来各种报错,那多闹心。

2.1 安装 Gazebo Fortress

sudo apt update
sudo apt install ignition-fortress

2.2 安装 ROS2-Gazebo 桥接包

sudo apt install ros-humble-ros-ign-bridge
sudo apt install ros-humble-ros-ign-gazebo-demos

这个桥接包特别重要。我记得有一次,我直接在 Gazebo 里启动模型,结果 ROS2 完全收不到数据。后来才发现是忘了装 ros-ign-bridge。说白了,没有它,ROS2 和 Gazebo 就是两个世界。

2.3 验证安装

ign gazebo --version

如果显示 Ignition Fortress 版本号,就说明装好了。你也可以跑一个 demo 试试:

ros2 launch ros_ign_gazebo_demos ign_gazebo_demo.launch.py

注意:Gazebo Fortress 和 Gazebo Classic 是两套系统。不要混装,否则环境变量会打架。我曾经在同一个系统里装了 Classic 和 Fortress,结果启动时总是加载错库文件,折腾了一下午才排查出来。

3. Nav2 源码编译与安装

Nav2 官方推荐用源码编译。为什么?因为二进制包版本往往滞后,而且有些新功能还没打包进去。我个人习惯用源码,调试起来也方便。

3.1 创建工作空间

mkdir -p ~/nav2_ws/src
cd ~/nav2_ws/src

3.2 克隆 Nav2 源码

git clone https://github.com/ros-planning/navigation2.git --branch humble

注意分支名是 humble,不是 main。我见过有人直接 clone main 分支,结果编译时一堆 API 不兼容,白忙活一场。

3.3 安装依赖

cd ~/nav2_ws
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro humble

如果 rosdep 没装,先装一下:

sudo apt install python3-rosdep
sudo rosdep init
rosdep update

3.4 编译 Nav2

cd ~/nav2_ws
colcon build --symlink-install

这里我建议加上 --symlink-install 参数。这样你修改 Python 脚本后不用重新编译,直接就能生效。调试效率高很多。

3.5 配置环境

echo "source ~/nav2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

编译加速:如果你的电脑性能不错,可以用 colcon build --symlink-install --parallel-workers 4 来并行编译。我一般设成 CPU 核心数的一半,既快又不卡。

4. 环境验证与常见问题

装完之后,最好跑一个简单的测试,确保所有组件能协同工作。

4.1 启动 Gazebo 并加载 Nav2 示例

ros2 launch nav2_bringup tb3_simulation_launch.py

如果一切正常,你会看到 Gazebo 里出现一个 TurtleBot3 小车,同时 rviz2 里显示地图和导航界面。

4.2 常见问题排查

问题 原因 解决方法
Gazebo 启动后黑屏 显卡驱动问题或资源路径错误 检查 echo $GAZEBO_MODEL_PATH,确保包含模型路径
ROS2 收不到 Gazebo 数据 桥接包未安装或版本不匹配 重新安装 ros-humble-ros-ign-bridge
Nav2 编译报错 依赖缺失或分支错误 运行 rosdep install 检查依赖,确认分支为 humble

避坑指南:我曾经在编译 Nav2 时遇到 Could not find a package configuration file 的错误。排查了半天,发现是 rosdep 没有正确初始化。重新执行 sudo rosdep init && rosdep update 就好了。所以,遇到依赖问题,先检查 rosdep。

5. 知识体系总览

下面这张图,帮你理清本章的核心逻辑:

环境搭建核心逻辑 ROS2 Humble 通信框架 Gazebo Fortress 仿真引擎 Nav2 源码 导航框架 ros-ign-bridge 桥接层 仿真导航系统 三个组件通过桥接层协同工作,构成完整的仿真导航环境

说白了,ROS2 是大脑,Gazebo 是身体,Nav2 是导航系统。桥接层就是神经,把指令和感知数据传起来。缺一个,整个系统就动不了。

好了,环境搭建就到这里。记住,装完一定要跑一遍测试,别等到写代码时才发现问题。那样排查起来,真的会让人崩溃。

可可精品资料库