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包结构并提供代码补全