第2章:环境搭建:Ubuntu 22.04 + ROS2 Humble安装、Nav2源码编译与安装、依赖检查与常见问题
说实话,环境搭建这一步,劝退了太多想入门Nav2的朋友。
我见过不少同学,兴致勃勃地下载了源码,结果编译报错一整天,最后直接放弃了。其实说白了,只要把几个关键点卡住,整个过程也就半小时的事。
这一章,我就带你一步步把环境搭好。嗯,踩过的坑我都替你踩过了。
2.1 操作系统与ROS2版本选择
先定个基调:Ubuntu 22.04 + ROS2 Humble 是目前最稳的组合。
为什么选这个?
- Ubuntu 22.04 LTS 支持到2027年,长期维护,省心。
- ROS2 Humble 是专门为Ubuntu 22.04定制的长期支持版本。
- Nav2 的最新稳定版对Humble支持最好。
2.2 安装ROS2 Humble
我个人习惯用 apt 安装,干净利落。别从源码编译ROS2,那是给自己找麻烦。
打开终端,一行一行执行:
# 设置编码
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
# 添加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
# 安装ROS2 Humble桌面版(包含可视化工具)
sudo apt update
sudo apt install ros-humble-desktop
# 安装开发工具
sudo apt install ros-dev-tools
安装完成后,记得把环境变量加到 .bashrc 里:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
.bashrc 里再加一行 export RMW_IMPLEMENTATION=rmw_fastrtps_cpp,这样后续通信更稳定。
验证一下:
ros2 run demo_nodes_cpp talker
如果能看到节点在发布消息,恭喜你,ROS2装好了。
2.3 Nav2源码编译与安装
为什么要源码编译?因为apt安装的Nav2版本通常落后半年,而且缺少一些调试工具。我个人强烈建议用源码。
先创建工作空间:
mkdir -p ~/nav2_ws/src
cd ~/nav2_ws/src
git clone https://github.com/ros-planning/navigation2.git --branch humble
安装依赖——这一步最容易出问题:
cd ~/nav2_ws
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro humble
如果 rosdep 报错,别慌。我遇到过好几次,基本都是网络问题。可以试试:
sudo apt update
sudo apt install python3-rosdep2
sudo rosdep init
rosdep update
然后编译:
cd ~/nav2_ws
colcon build --symlink-install
编译时间取决于你的电脑配置。我笔记本上大概15分钟。如果中途报错,看下一节。
echo "source ~/nav2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
2.4 依赖检查与常见问题
编译过程中最常见的几个坑,我一个个说。
2.4.1 缺少 libqt5 相关依赖
报错信息里会出现 Could not find a package configuration file provided by "Qt5"。
解决办法:
sudo apt install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
sudo apt install libqt5svg5-dev
2.4.2 colcon build 卡在某个包
我曾经遇到过 nav2_behavior_tree 编译到一半就卡死。后来发现是内存不够。
解决办法:限制并行编译数。
colcon build --symlink-install --parallel-workers 2
把 2 改成你CPU核心数的一半,效果最好。
2.4.3 rosdep install 报错 timeout
说白了就是网络问题。可以试试:
export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
rosdep update
或者直接手动安装缺失的包:
sudo apt install ros-humble-<包名>
2.4.4 编译时提示 Python3 版本不对
Ubuntu 22.04 默认Python3是3.10,完全够用。如果系统里装了多个Python版本,记得设置默认:
sudo update-alternatives --config python3
2.5 验证Nav2是否安装成功
跑一个最简单的测试:
ros2 launch nav2_bringup tb3_simulation_launch.py
如果能看到Gazebo里出现一个TurtleBot3,并且Rviz2里显示了地图和机器人模型,那就成了。
export LIBGL_ALWAYS_SOFTWARE=1
虽然性能差点,但至少能跑起来。
2.6 总结
环境搭建这件事,说白了就是三个步骤:装系统、装ROS2、编译Nav2。每一步都有固定的套路,按部就班来就行。
我个人建议,把上面这些命令存成一个shell脚本,下次重装系统时直接跑一遍,省时省力。
嗯,环境搭好了,下一章我们正式开始玩Nav2的核心功能。