2. 开发环境搭建:Ubuntu系统安装、ROS2 Humble安装、Gazebo与Rviz2安装、VS Code配置

说实话,搭建开发环境这件事,看着简单,但坑是真不少。我带过不少新人,十有八九第一周都卡在环境上。不是版本对不上,就是依赖装不全。所以这一章,我把自己踩过的坑和总结出来的稳妥流程,一次性给你讲清楚。

本章核心目标:在一台干净的机器上,从零搭建一套能跑起来的机器人仿真开发环境。包括操作系统、ROS2中间件、仿真器、可视化工具和代码编辑器。

2.1 操作系统选型:为什么是Ubuntu 22.04?

ROS2 Humble的官方推荐系统是Ubuntu 22.04 LTS。我个人习惯用LTS版本,稳定,社区支持时间长。你想想看,如果选了个非LTS版本,半年后系统要升级,所有依赖都得重来一遍,那得多折腾。

我在项目中遇到过有人用Ubuntu 20.04硬装Humble,结果一堆依赖冲突,最后不得不重装系统。所以,别在这上面省事。

组件 推荐版本 说明
操作系统 Ubuntu 22.04 LTS ROS2 Humble官方支持
ROS2 Humble Hawksbill 2024年长期维护版本
Gazebo Gazebo Fortress (11.x) 与Humble兼容性最好
Rviz2 随ROS2 Humble安装 无需单独下载
VS Code 最新稳定版 配合ROS扩展使用

注意:不要使用Ubuntu 24.04或Debian 12等非官方支持系统安装Humble。虽然能装上,但后续遇到奇怪的问题,官方论坛基本不会管你。

2.2 Ubuntu 22.04 安装要点

安装过程我就不一步步截图了,网上教程一大堆。我只说几个关键点,这些是我反复踩坑后总结出来的。

  • 磁盘分区:建议给根目录/至少50GB,/home单独分区给100GB以上。仿真模型和编译产物很占空间。
  • 软件源:安装时选择中国境内的镜像源(阿里云、清华、中科大),不然下载速度会让你怀疑人生。
  • 显卡驱动:如果你有NVIDIA显卡,安装后第一件事就是装驱动。Gazebo的3D渲染没有硬件加速会卡得没法用。
  • 系统更新:装完系统先跑一遍sudo apt update && sudo apt upgrade -y,把内核和基础库更新到最新。

我的习惯:装完系统后,我会立刻安装build-essential、git、curl、vim这几个基础工具。后面装ROS2的时候会省很多事。

2.3 ROS2 Humble 安装

ROS2的安装流程其实很标准,但有几个细节容易出错。我建议严格按照官方文档的步骤来,不要自己发挥。

2.3.1 设置语言环境和软件源

# 设置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
sudo apt update

我曾经踩过的坑:如果这一步报错说密钥过期或无法下载,多半是网络问题。可以试试把raw.githubusercontent.com换成国内的镜像地址,或者手动下载密钥文件放到指定目录。

2.3.2 安装ROS2 Humble桌面版

桌面版包含了Rviz2、demo节点和常用工具。我建议新手直接装桌面版,别省那点空间。

sudo apt install ros-humble-desktop -y

这一步会下载大约1.5GB的包,取决于你的网速,可能需要10到30分钟。趁这个时间,你可以去泡杯咖啡。

2.3.3 配置环境变量

装完只是第一步,还得让系统知道ROS2在哪。每次打开终端都要执行一次source,太麻烦了。我习惯直接写进.bashrc。

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

验证一下是否安装成功:

ros2 run demo_nodes_cpp talker

如果能看到[INFO] [xxx] [talker]: Publishing: 'Hello World: xxx'这样的输出,说明ROS2已经跑起来了。

2.4 Gazebo与Rviz2安装

Gazebo和Rviz2是仿真联调的两大核心工具。一个负责物理仿真,一个负责数据可视化。两者配合使用,才能看到机器人在虚拟世界里的完整状态。

2.4.1 安装Gazebo Fortress

ROS2 Humble官方推荐的是Gazebo Fortress(版本11.x)。注意,不要装Gazebo Classic(版本9.x),那已经是老古董了,API完全不兼容。

sudo apt install ros-humble-ros-gz -y

这个包会自动把Gazebo Fortress和ROS2的桥接库一起装好。装完之后,你可以试试能不能启动:

gz sim -v 4

如果看到一个空荡荡的仿真窗口,说明安装成功。我第一次看到这个窗口的时候,心里还挺激动的——虽然里面什么都没有,但意味着我可以开始往里面放机器人了。

避坑指南:如果你在虚拟机里跑Gazebo,记得给虚拟机分配至少4GB内存和2个CPU核心。否则Gazebo会卡到让你怀疑电脑是不是坏了。

2.4.2 Rviz2安装

Rviz2是随ros-humble-desktop一起安装的,不需要单独装。验证方法很简单:

rviz2

启动后应该能看到一个3D视图窗口,左侧是显示面板,右侧是3D场景。如果一切正常,你会看到一个空白的坐标系。

我个人习惯把Rviz2的配置文件保存下来,这样每次打开不用重新配置。后面讲到机器人模型显示的时候,我会详细说怎么配置。

2.5 VS Code配置

编辑器这块,我推荐VS Code。不是因为它最强大,而是因为它的ROS生态最完善。你想想看,代码补全、调试、语法高亮、Git集成,这些功能在ROS开发中缺一不可。

2.5.1 安装VS Code

从官网下载.deb包安装,或者用Snap安装。我习惯用.deb,因为Snap的启动速度慢一点。

sudo dpkg -i code_*.deb
sudo apt install -f  # 修复依赖

2.5.2 必装扩展

装完VS Code后,我建议立刻安装以下几个扩展。这些是我在项目中反复验证过的,能极大提升开发效率。

扩展名称 作用 安装方式
ROS (by Microsoft) ROS2代码补全、构建任务、调试配置 扩展市场搜索"ROS"
C/C++ (by Microsoft) C++语法高亮、IntelliSense、调试 扩展市场搜索"C/C++"
Python (by Microsoft) Python语法高亮、代码补全、调试 扩展市场搜索"Python"
CMake Tools CMake语法高亮、构建配置 扩展市场搜索"CMake"
XML Tools URDF/SDFormat文件语法高亮 扩展市场搜索"XML"

注意:ROS扩展需要Python环境。确保你的系统已经安装了python3和python3-pip。如果没有,用sudo apt install python3 python3-pip安装。

2.5.3 配置工作区

我习惯为每个ROS2项目单独创建一个工作区。这样不同项目的依赖不会互相干扰。

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build

然后在VS Code中打开~/ros2_ws文件夹。VS Code会自动识别src目录下的ROS2包结构。

嗯,这里有个小技巧:在.vscode文件夹下创建settings.json,把ROS2的环境变量加进去,这样VS Code的终端和调试器都能自动识别ROS2命令。

{
    "terminal.integrated.env.linux": {
        "ROS_DISTRO": "humble",
        "AMENT_PREFIX_PATH": "/opt/ros/humble",
        "CMAKE_PREFIX_PATH": "/opt/ros/humble"
    }
}

2.6 环境验证:跑一个完整的仿真联调

所有东西都装好了,怎么知道它们能不能协同工作?我建议跑一个最简单的测试:启动Gazebo,在里面放一个机器人模型,然后用Rviz2看它的传感器数据。

这里我用的是ROS2官方提供的turtlebot3示例包。虽然简单,但能验证整个链路是否通畅。

# 安装turtlebot3仿真包
sudo apt install ros-humble-turtlebot3-gazebo -y

# 设置机器人型号
export TURTLEBOT3_MODEL=burger

# 启动Gazebo仿真环境
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

如果一切正常,你会看到Gazebo窗口中有一个小机器人出现在一个迷宫里。这时候再开一个新终端,启动Rviz2:

rviz2

在Rviz2中添加RobotModel显示,选择/robot_description话题。你应该能看到机器人的3D模型出现在Rviz2中,和Gazebo里的位置完全对应。

看到这个画面,说明你的开发环境已经搭建成功了。说实话,我第一次看到两个窗口里的机器人同步运动时,那种成就感还是很强的。

验证清单:

  • ✅ ROS2 Humble能正常启动talker/listener节点
  • ✅ Gazebo Fortress能启动并显示3D场景
  • ✅ Rviz2能订阅并显示机器人模型
  • ✅ VS Code能识别ROS2包结构并提供代码补全
开发环境搭建知识体系 机器人仿真开发环境 Ubuntu 22.04 LTS ROS2 Humble Gazebo + Rviz2 VS Code 磁盘分区 显卡驱动 软件源配置 环境变量 桥接库 显示配置 ROS扩展 工作区配置 核心原则:版本匹配 + 依赖完整 + 环境隔离 所有组件必须使用与ROS2 Humble兼容的版本,避免混合不同发行版