第2章 ROS2与开发环境搭建

说实话,每次带新人入门,我最怕的就是环境搭建这一步。明明代码逻辑都懂,结果卡在安装配置上,一折腾就是半天。我自己刚接触ROS2那会儿也踩过不少坑——版本选错、依赖冲突、Gazebo死活打不开……所以这一章,我打算把那些容易翻车的地方都给你点出来。

ROS2 Humble 开发环境 ROS2 Humble 安装 工作空间创建 常用命令行工具 Gazebo + Rviz2 apt 安装 / 源码编译 ros2 run / topic / service 仿真环境验证 本章知识体系:从安装到验证,一气呵成

2.1 ROS2 Humble 安装

ROS2 的版本很多,但咱们这门课选的是 Humble Hawksbill。为什么是它?因为 Humble 是长期支持版(LTS),到 2027 年都有人维护。我个人的习惯是:做项目能用 LTS 就别追新,稳定压倒一切。

安装前先确认你的 Ubuntu 版本——Humble 官方推荐 Ubuntu 22.04 (Jammy)。如果你还在用 20.04,那得装 Galactic 或者干脆升级系统。别问我怎么知道的,我曾经在一台 20.04 上硬装 Humble,结果依赖打到怀疑人生。

核心步骤(一句话版): 设置源 → 安装 → 配置环境变量 → 验证。

打开终端,逐条执行以下命令:

# 1. 设置 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

# 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 $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 3. 安装 ROS2 Humble 桌面版(推荐)
sudo apt update
sudo apt install ros-humble-desktop

# 4. 配置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

# 5. 验证安装
ros2 --version
安装桌面版会包含 rviz2、Gazebo 等常用工具,省得后面一个个补。如果你硬盘吃紧,可以装 ros-humble-ros-base,但后续很多功能得自己加。
安装过程中如果遇到「无法定位软件包」之类的错误,八成是源没配好。检查一下 /etc/apt/sources.list.d/ros2.list 里的内容,我遇到过好几次因为网络问题导致 key 没导入成功。

2.2 工作空间创建

工作空间(workspace)说白了就是你放代码、编译代码的文件夹。ROS2 里最常用的是 colcon 工作空间。我第一次用 catkin 转 colcon 时还不太习惯,但用顺手之后发现 colcon 的编译输出清晰多了。

创建一个标准的工作空间:

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

编译完成后,你会看到 build、install、log 三个文件夹。每次编译完别忘了 source 一下:

source ~/ros2_ws/install/setup.bash

我个人习惯把这条命令也加到 ~/.bashrc 里,这样每次打开终端就不用重复 source 了。但要注意——如果你同时有多个工作空间,source 的顺序会影响包查找优先级,容易出幺蛾子。

小技巧: 用 echo $COLCON_PREFIX_PATH 可以查看当前 source 了哪些工作空间。如果发现路径不对,检查一下 .bashrc 里有没有重复 source。

2.3 常用命令行工具

ROS2 的命令行工具比 ROS1 统一了不少,都是以 ros2 开头。我整理了一张速查表,平时记不住就翻出来看:

命令 作用 示例
ros2 run 运行一个节点 ros2 run turtlesim turtlesim_node
ros2 node list 列出当前所有节点 ros2 node list
ros2 topic list 列出所有话题 ros2 topic list
ros2 topic echo 打印话题数据 ros2 topic echo /turtle1/pose
ros2 service list 列出所有服务 ros2 service list
ros2 param list 列出节点参数 ros2 param list /turtlesim
colcon build 编译工作空间 colcon build --packages-select my_pkg

这些命令看着简单,但调试的时候特别管用。我记得有一次导航跑起来后机器人不动,我用 ros2 topic echo /cmd_vel 一看,发现速度指令全是零——原来是路径规划节点没启动。这种问题,光看代码很难发现,但命令行一查就露馅了。

2.4 Gazebo 与 Rviz2 安装

Gazebo 和 Rviz2 是咱们这门课的左膀右臂。Gazebo 负责仿真物理世界,Rviz2 负责可视化数据。如果你装的是 ros-humble-desktop,这两个工具已经包含在内了。验证一下:

# 启动 Gazebo(可能需要等一会儿)
gazebo --version

# 启动 Rviz2
rviz2

如果 Gazebo 启动后一片空白或者闪退,大概率是显卡驱动的问题。我自己的笔记本是 NVIDIA 卡,曾经被双显卡切换坑过——Gazebo 默认用集成显卡跑,卡成 PPT。解决办法是在启动命令前加 __GLX_VENDOR_LIBRARY_NAME=nvidia,或者直接在 NVIDIA 设置里把 Gazebo 设为高性能模式。

Gazebo 启动时如果报错 [Err] [Server.cc:105] Unable to open /usr/share/gazebo-11/worlds/empty.world,说明 Gazebo 数据路径没配好。执行 export GAZEBO_MODEL_PATH=/usr/share/gazebo-11/models 可以临时解决,永久解决就加到 ~/.bashrc 里。

Rviz2 相对省心一些,基本开箱即用。第一次打开时界面是空的,别慌——在左下角「Add」按钮里添加你需要的显示插件,比如 RobotModel、LaserScan、Map 等等。后面几章我们会一步步把它喂饱。

建议装一个 ros-humble-gazebo-ros-pkgs,这是 Gazebo 和 ROS2 之间的桥梁。没有它,Gazebo 里的传感器数据就发不到 ROS2 话题上。安装命令:sudo apt install ros-humble-gazebo-ros-pkgs

好了,环境搭到这步,你已经有了一个能跑 ROS2、能仿真、能可视化的基础平台。