2、环境搭建:Ubuntu 22.04 + ROS2 Humble安装、Nav2源码编译与二进制安装、工作空间配置与验证
说实话,做机器人导航这几年,我见过太多人卡在环境搭建这一步了。明明算法逻辑都懂,结果装个系统折腾了两三天,热情直接凉了一半。所以这一章,我带你稳扎稳打,把地基打牢。
我个人习惯把环境搭建分成三个层次:操作系统层、ROS2框架层、Nav2导航栈层。每一层都有坑,咱们一个一个填。
2.1 操作系统:Ubuntu 22.04 LTS
为什么选22.04?说白了,ROS2 Humble就是为它量身定做的。你想想看,用20.04装Humble也能跑,但总有些依赖包版本对不上,折腾起来很烦。我去年帮一个学员排查问题,搞了半天发现是他用的Ubuntu 20.04里某个库版本太老,导致Nav2的behavior tree节点一直崩溃。换回22.04,一次过。
2.2 ROS2 Humble 安装
ROS2的安装其实就几条命令,但顺序很重要。我见过有人先装了一堆Python包,结果和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
export LANG=en_US.UTF-8
# 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 $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 3. 安装ROS2 Humble桌面版(包含rqt、rviz2等工具)
sudo apt update
sudo apt install ros-humble-desktop
# 4. 安装开发工具(编译、测试用)
sudo apt install ros-dev-tools python3-colcon-common-extensions
装完之后,别忘了配置环境变量。我个人习惯把下面这行加到 ~/.bashrc 里:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证一下:
ros2 run demo_nodes_cpp talker
# 另开终端
ros2 run demo_nodes_py listener
如果能看到talker在发消息,listener在收消息,恭喜你,ROS2装好了。
2.3 Nav2 安装:二进制 vs 源码
Nav2的安装有两种方式,我分别说说它们的适用场景。
| 安装方式 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 二进制安装 | 一条命令搞定,省时省力 | 版本固定,不能修改源码 | 快速上手、生产部署 |
| 源码编译 | 可以调试、修改、定制 | 编译耗时,依赖复杂 | 学习研究、二次开发 |
二进制安装(推荐新手)
sudo apt install ros-humble-nav2-bringup
就这一条命令,Nav2的核心包就装好了。你可以直接跑官方示例:
ros2 launch nav2_bringup tb3_simulation_launch.py
嗯,这里要注意,第一次启动会下载Gazebo模型,可能有点慢。耐心等一会儿,看到TurtleBot3在仿真环境里出现,就说明成功了。
源码编译(进阶推荐)
如果你想深入理解Nav2的内部机制,或者想改代码加功能,那就得源码编译。我在做项目时经常需要修改Nav2的规划器逻辑,所以源码编译是我的标配。
步骤:
# 1. 创建工作空间
mkdir -p ~/nav2_ws/src
cd ~/nav2_ws
# 2. 克隆Nav2源码(建议用humble分支)
git clone https://github.com/ros-planning/navigation2.git src/navigation2 --branch humble
# 3. 安装依赖
sudo apt install python3-pip
pip3 install -r src/navigation2/tools/requirements.txt
rosdep install -y --from-paths src --ignore-src --rosdistro humble
# 4. 编译(第一次编译大概20-30分钟)
colcon build --symlink-install
# 5. 配置环境
echo "source ~/nav2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
rosdep update 更新一下依赖数据库,再重新 rosdep install。我曾经因为网络问题导致rosdep没下载全,卡了整整一个下午。
2.4 工作空间配置与验证
工作空间说白了就是你的项目文件夹。我习惯把不同项目放在不同的工作空间里,比如 nav2_ws 专门放Nav2相关代码,robot_ws 放机器人驱动,互不干扰。
验证工作空间是否配置正确,可以这样做:
# 检查环境变量
echo $ROS_DISTRO
# 应该输出 humble
# 检查Nav2包是否可用
ros2 pkg list | grep nav2
# 应该看到 nav2_bringup, nav2_planner, nav2_controller 等
# 运行一个简单的测试
ros2 run nav2_planner demo
如果以上命令都能正常执行,说明你的环境搭建已经完成了。嗯,这一步虽然看起来简单,但它是后续所有工作的基础。我见过太多人跳过验证直接写代码,结果跑起来才发现环境有问题,排查起来比重新装一遍还费劲。
ros2 topic list,如果能正常输出,说明环境没问题。如果报错,大概率是 setup.bash 没source上。
好了,环境搭好了,下一章我们正式开始写代码。记住,基础打得牢,后面才能飞得高。