2. ROS2 环境搭建

说实话,环境搭建是学 ROS2 的第一道坎。我见过太多人卡在这一步,装到一半放弃,或者装完了跑不起来。其实没那么玄乎,只要把 Ubuntu、ROS2 Humble、工作空间这三件事理清楚,后面就顺了。

这一章,我会带你一步步搭好环境。我自己的习惯是尽量用 LTS 版本,省心。好,咱们开始。

ROS2 环境搭建 Ubuntu 22.04 LTS ROS2 Humble 安装 环境配置 & 工作空间 双系统 / 虚拟机 apt 安装 + 源码 colcon 构建

2.1 Ubuntu 系统安装 —— 选对版本就成功了一半

ROS2 Humble 官方推荐 Ubuntu 22.04 (Jammy)。我个人建议直接用这个版本,别折腾其他发行版。你想想看,官方测试最多的就是 22.04,遇到问题社区也最容易帮你。

安装方式有两种:

  • 双系统:如果你需要高性能,比如跑 Gazebo 仿真或者控制真实机器人,我推荐双系统。我在项目里用过虚拟机跑导航,延迟很明显,后来换了双系统,流畅度完全不一样。
  • 虚拟机:只是学习语法、写节点、测试通信,VMware 或 VirtualBox 完全够用。分配 4GB 内存、2 核 CPU 就行。
💡 我的小习惯:安装 Ubuntu 时,分区建议把 /home 单独分出来,以后重装系统不会丢代码。我曾经因为没分 /home,重装后 workspace 全没了…… 血的教训。

2.2 ROS2 Humble 安装 —— 一条命令搞定?没那么简单

官方给了一键安装脚本,但我还是建议你手动走一遍,知道每一步在干什么。以后出问题才知道怎么修。

核心步骤就这几行:

# 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

# 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 python3-colcon-common-extensions

嗯,这里要注意:ros-humble-desktop 包含了 rviz2、demo 节点、各种工具,大概 1.5GB。如果你空间紧张,可以装 ros-humble-base,但后面很多可视化工具得自己补。

⚠️ 我曾经踩过的坑:安装时网络不稳定,ros.key 没下载成功,结果 apt update 一直报错。解决办法是手动把 key 文件复制进去,或者换个网络环境。另外,千万别用 root 用户装,后面 source 会出权限问题。

2.3 ROS2 环境配置 —— 每次都要 source?不,让它自动加载

装完 ROS2 后,你会发现每个新终端都要执行 source /opt/ros/humble/setup.bash。说实话,太烦了。我习惯把它写到 ~/.bashrc 里:

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

这样每次打开终端,ROS2 环境就自动加载了。验证一下:

ros2 run demo_nodes_cpp talker
# 再开一个终端,运行 listener,能看到 "I heard" 就说明环境没问题。

如果你用 zsh,记得把 ~/.bashrc 换成 ~/.zshrc。我团队里有个同事用 fish,折腾了半天…… 所以,老老实实用 bash 吧,兼容性最好。

2.4 ROS2 工作空间创建 —— colcon 是新时代的 catkin

工作空间就是你写代码的文件夹。ROS2 用 colcon 来编译,比 ROS1 的 catkin 快不少。创建一个工作空间只需要三步:

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

第一次 build 会生成 build、install、log 三个文件夹。别忘了 source 一下:

source install/setup.bash

你也可以把它加到 ~/.bashrc 里,但我不建议这么做。因为不同工作空间可能会冲突。我个人的做法是:每个项目单独开一个终端,手动 source 对应的工作空间,这样干净。

📌 快速检查工作空间是否生效:运行 echo $COLCON_PREFIX_PATH,如果显示你的工作空间路径,就说明 source 成功了。

2.5 验证整个环境 —— 跑一个简单的 C++ 节点

我们来写一个最简单的发布节点,确保从系统到工作空间全部通畅。

cd ~/ros2_ws/src
ros2 pkg create my_first_pkg --build-type ament_cmake --dependencies rclcpp std_msgs
cd my_first_pkg/src
# 用你喜欢的编辑器创建 talker.cpp,内容如下:

代码示例(talker.cpp):

#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"

int main(int argc, char **argv) {
    rclcpp::init(argc, argv);
    auto node = std::make_shared<rclcpp::Node>("talker");
    auto pub = node->create_publisher<std_msgs::msg::String>("chatter", 10);
    rclcpp::WallRate rate(1);
    while (rclcpp::ok()) {
        auto msg = std_msgs::msg::String();
        msg.data = "Hello ROS2 Humble!";
        pub->publish(msg);
        rclcpp::spin_some(node);
        rate.sleep();
    }
    rclcpp::shutdown();
    return 0;
}

然后编译运行:

cd ~/ros2_ws
colcon build --packages-select my_first_pkg
source install/setup.bash
ros2 run my_first_pkg talker

如果终端每秒打印一条 "Hello ROS2 Humble!",恭喜你,环境搭建圆满成功!

🔧 避坑指南:编译时如果报错找不到 rclcpp,八成是没 source ROS2 环境。检查 echo $ROS_DISTRO,如果是空,赶紧去 source 一下。

2.6 常用命令速查表

操作命令
安装 ROS2 Humble 桌面版sudo apt install ros-humble-desktop
source 环境source /opt/ros/humble/setup.bash
创建工作空间mkdir -p ~/ros2_ws/src && cd ~/ros2_ws && colcon build
编译单个包colcon build --packages-select <pkg_name>
运行节点ros2 run <pkg> <executable>
查看节点列表ros2 node list

好了,环境搭好,后面就可以放心写代码了。记住,环境问题占了 ROS2 入门阶段 60% 的报错,把这一步走稳,后面会轻松很多。