2、ROS2开发环境搭建:Ubuntu系统安装、ROS2 Humble安装、colcon构建工具、工作空间创建、第一个ROS2节点

说实话,很多初学者在ROS2上栽跟头,不是代码写不对,而是环境没搭好。我见过太多人花了一整天装系统,结果卡在依赖冲突上,最后心态崩了。

这一章,咱们就把地基打牢。我会把每个步骤拆开揉碎,告诉你哪些坑可以绕过去。

2.1 为什么选Ubuntu 22.04 + ROS2 Humble?

ROS2的版本和Ubuntu是绑定的。Humble Hawksbill( humble 意为谦逊)是2022年的LTS版本,支持到2027年。我个人习惯用LTS版本,稳定,社区支持好,遇到问题搜一搜基本都有答案。

ROS2 版本 对应 Ubuntu 支持周期 推荐场景
Humble 22.04 LTS 至 2027年 教学、工业、长期项目
Iron Irwini 22.04 / 24.04 至 2025年 尝鲜、新特性验证
Rolling 滚动更新 持续滚动 开发版,不推荐新手

核心结论: 咱们这门课全程使用 Ubuntu 22.04 + ROS2 Humble。如果你用虚拟机,记得给至少4GB内存和40GB硬盘。

2.2 Ubuntu 22.04 安装要点

安装过程我就不逐页截图了,网上教程一大堆。我只说几个关键点——这些是我踩过的坑。

  • 语言选英文。 中文路径在终端里经常出幺蛾子,尤其是后面编译源码时,空格和中文目录会让colcon直接报错。
  • 分区建议。 / 分区给30GB以上,/home 给剩余空间。如果你打算后面玩仿真或SLAM,建议总硬盘不低于80GB。
  • 安装时联网。 勾选“安装第三方驱动”和“更新”,省得后面手动装显卡驱动。

⚠ 我曾经犯过的错: 装系统时选了中文,结果后面在.bashrc里写路径时,中文字符导致source命令死活不生效。折腾了两小时才发现是编码问题。所以,老老实实用英文系统。

2.3 安装ROS2 Humble

ROS2的安装方式有两种:apt安装(二进制包) 和 源码编译。咱们用apt,省时省力。

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

# 1. 设置编码
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 $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 3. 安装ROS2 Humble桌面版(包含GUI工具)
sudo apt update
sudo apt install ros-humble-desktop

# 4. 安装开发工具(编译、测试等)
sudo apt install ros-dev-tools

💡 小提示: 安装过程可能持续10-20分钟,取决于网速。如果中途断网,重新执行 sudo apt install ros-humble-desktop 即可,它会继续下载未完成的部分。

安装完成后,验证一下:

# 打开一个新终端,先source环境
source /opt/ros/humble/setup.bash
# 运行一个C++ talker节点
ros2 run demo_nodes_cpp talker

如果看到类似 [INFO] [xxx] [talker]: Publishing: 'Hello World: 1' 的输出,说明安装成功。

🔑 关键操作: 每次打开新终端都要 source /opt/ros/humble/setup.bash。嫌麻烦?往下看,我教你一劳永逸的方法。

2.4 配置环境变量(一劳永逸)

把source命令加到 .bashrc 里,这样每次打开终端自动加载ROS2环境。

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

验证一下:

# 打印ROS2环境变量
printenv | grep ROS

你应该能看到 ROS_DISTRO=humble 之类的输出。嗯,到这里,ROS2环境就常住你的终端了。

2.5 colcon:ROS2的构建工具

在ROS1时代,我们用catkin_make。ROS2时代,官方推荐 colcon。说白了,colcon就是catkin的升级版,支持并行编译、混合语言包、更好的错误提示。

安装colcon(如果前面装了ros-dev-tools,这一步可以跳过):

sudo apt install python3-colcon-common-extensions

colcon的核心命令就几个,我列个表:

命令 作用 常用参数
colcon build 编译工作空间所有包 --packages-select 只编译指定包
colcon test 运行测试 --packages-select
colcon list 列出工作空间中的包 无
colcon clean 清理编译产物 --packages-select

💡 我的习惯: 每次编译前先 colcon clean 一下,避免旧文件干扰。虽然会多花几秒,但能避免很多莫名其妙的编译错误。

2.6 创建工作空间

工作空间(workspace)就是你存放ROS2项目的根目录。我习惯叫它 ros2_ws。

# 创建目录结构
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
# 编译空工作空间(验证colcon是否正常)
colcon build

编译完成后,你会看到三个新目录:

  • build:编译中间文件,不用管。
  • install:编译产物,相当于ROS1的devel。
  • log:日志文件,出错时来这里查。

别忘了source工作空间的环境:

echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

⚠ 注意顺序: .bashrc 里先source ROS2系统环境,再source工作空间环境。如果顺序反了,系统会优先使用工作空间里的包,可能导致版本冲突。

2.7 第一个ROS2节点:Hello World

理论讲完了,咱们写个真正的节点。用Python,简单直观。

先创建功能包:

cd ~/ros2_ws/src
ros2 pkg create my_first_pkg --build-type ament_python --dependencies rclpy

这个命令会生成一个Python包,依赖 rclpy(ROS2的Python客户端库)。

编辑节点文件:

# 进入包目录
cd ~/ros2_ws/src/my_first_pkg/my_first_pkg
# 创建节点文件
touch hello_node.py

用你喜欢的编辑器打开 hello_node.py,写入以下代码:

import rclpy
from rclpy.node import Node

class HelloNode(Node):
    def __init__(self):
        super().__init__('hello_node')
        self.get_logger().info('Hello, ROS2! 我的第一个节点启动啦!')

def main(args=None):
    rclpy.init(args=args)
    node = HelloNode()
    rclpy.spin(node)  # 保持节点运行
    node.destroy_node()
    rclpy.shutdown()

if __name__ == '__main__':
    main()

然后修改 setup.py,把入口点加进去:

# 在 setup.py 中找到 entry_points,修改为:
entry_points={
    'console_scripts': [
        'hello_node = my_first_pkg.hello_node:main',
    ],
},

编译并运行:

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

你应该看到:

[INFO] [xxx] [hello_node]: Hello, ROS2! 我的第一个节点启动啦!

🎉 恭喜! 你写完了第一个ROS2节点。虽然它只是打印了一行日志,但背后的流程——创建包、写节点、编译、运行——是后面所有复杂项目的基础。

2.8 本章知识体系总览

下面这张图,把本章的核心逻辑串起来了。你可以把它当作一个检查清单:

ROS2开发环境搭建知识体系 ROS2 开发环境搭建 · 知识体系 Ubuntu 22.04 ROS2 Humble colcon 构建工具 创建 ROS2 工作空间 (ros2_ws) 创建功能包 (my_first_pkg) 编写并运行第一个 ROS2 节点 每一层都依赖上一层,顺序不能乱。先有系统,再有ROS2,然后工作空间,最后才是你的节点代码。

这张图从左到右、从上到下,就是咱们搭建环境的完整路径。你跟着走一遍,后面写代码就不会再被环境问题卡住了。

💡 最后说一句: 环境搭建是最枯燥的部分,但也是最重要的。我当年第一次搭ROS1环境,折腾了整整两天。现在有了colcon和apt,已经简单太多了。别急,慢慢来,后面的话题通信才是真正有意思的部分。