第二章 环境准备:Ubuntu 22.04系统安装、ROS2 Humble安装、Gazebo与TurtleBot3仿真环境搭建
说实话,搭建机器人导航系统,最怕的就是环境没配好。
我见过太多新手,代码写得很漂亮,结果一编译报错,查半天发现是系统版本不对。嗯,咱们先把地基打牢。
2.1 为什么选择Ubuntu 22.04 + ROS2 Humble?
你可能要问:为什么非得是Ubuntu 22.04?我用20.04不行吗?
我个人习惯是跟着官方长期支持版走。ROS2 Humble是2022年发布的,专门适配Ubuntu 22.04。这两个版本搭配,就像齿轮咬合一样紧密。你如果硬要用20.04装Humble,也能装,但会踩不少坑——我当年就干过这事,折腾了两天才搞定依赖冲突。
核心原则:ROS2版本和Ubuntu版本是绑定的。Humble只支持Ubuntu 22.04 (Jammy)。别想着混搭。
| ROS2 版本 | Ubuntu 版本 | 我的建议 |
|---|---|---|
| Humble Hawksbill | 22.04 (Jammy) | ✅ 推荐,稳定 |
| Galactic | 20.04 (Focal) | ❌ 已停止维护 |
| Foxy | 20.04 (Focal) | ❌ 太老了 |
2.2 Ubuntu 22.04 系统安装
安装系统这事,说简单也简单,说复杂也复杂。我直接给你最稳的步骤。
- 下载镜像:去Ubuntu官网下载22.04 LTS桌面版。别下服务器版,咱们做仿真需要图形界面。
- 制作启动盘:用Rufus(Windows)或者balenaEtcher(Mac/Linux)。我个人偏爱balenaEtcher,傻瓜式操作。
- 磁盘分区:如果你打算双系统,记得给Ubuntu至少留80GB空间。我建议100GB以上,因为后面装Gazebo模型、ROS2包,空间很快就吃掉了。
- 安装过程:一路默认就行。唯一要注意的是,选择「为图形或无线硬件安装第三方软件」——这个勾上,能省掉你装显卡驱动的麻烦。
⚠️ 避坑指南:我曾经在安装时选了「最小安装」,结果后面编译ROS2包时缺了一堆基础库,一个个手动补,烦得很。所以请选「正常安装」。
2.3 ROS2 Humble 安装
系统装好了,接下来装ROS2。别怕,就几条命令的事。
先设置语言环境。ROS2对UTF-8有要求,咱们检查一下:
locale # 检查是否支持UTF-8
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 $(. /etc/os-release && echo $UBUNTU_CODENAME) 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-humble-rmw-fastrtps-cpp # 推荐安装这个中间件
💡 我的小技巧:安装完成后,记得把source命令加到.bashrc里,这样每次打开终端就不用手动source了。
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证一下是否装成功:
ros2 run demo_nodes_cpp talker
如果看到「Publishing: 'Hello World'」不断输出,恭喜你,ROS2跑起来了。
2.4 Gazebo 与 TurtleBot3 仿真环境搭建
Gazebo是机器人仿真的标配。说白了,就是让你在电脑里跑一个虚拟机器人,不用真机也能调试导航算法。
安装Gazebo很简单:
sudo apt install ros-humble-gazebo-ros-pkgs
然后安装TurtleBot3相关的包:
sudo apt install ros-humble-turtlebot3*
sudo apt install ros-humble-cartographer
sudo apt install ros-humble-navigation2
sudo apt install ros-humble-nav2-bringup
这里有个关键点——设置TurtleBot3的型号。我习惯用burger,因为它小巧,适合在室内仿真:
echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
source ~/.bashrc
启动仿真环境试试:
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
如果看到Gazebo窗口弹出来,里面有一只小机器人,说明环境搭建成功了。
⚠️ 注意:第一次启动Gazebo时,它会下载很多模型文件(比如家具、墙壁)。这个过程可能比较慢,取决于你的网速。我曾经等过20分钟,别急,让它慢慢下。
2.5 知识体系总览
为了让你对整个环境搭建有个全局认识,我画了一张图。你看看就明白了:
这张图很直白:Ubuntu是地基,ROS2是中间层,Gazebo和TurtleBot3是工具,最后咱们的目标是跑起Nav2导航系统。每一步都依赖上一步,所以别跳步。
2.6 验证环境是否完整
装完所有东西后,我建议你跑一个完整的测试,确保所有组件都能协同工作:
# 终端1:启动仿真世界
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
# 终端2:启动键盘控制
ros2 run turtlebot3_teleop teleop_keyboard
用键盘控制小机器人前后左右移动。如果能动,说明Gazebo和TurtleBot3通信正常。如果动不了,检查一下环境变量TURTLEBOT3_MODEL有没有设置对。
💡 排错小经验:如果Gazebo启动后一片空白,没有地面和墙壁,十有八九是模型下载没完成。看看终端输出,有没有「Downloading model...」的字样。等它下载完,重启Gazebo就好了。
好了,环境准备就到这里。记住,这一步虽然枯燥,但值得你花时间认真对待。后面所有章节的代码,都跑在这个环境上。地基稳了,楼才能盖得高。