2、开发环境准备:安装ROS2 Humble、创建ROS2工作空间、配置环境变量

好,咱们正式开始动手。这一章我会带你把开发环境搭起来。别小看这一步,我见过太多同学卡在环境配置上,代码写好了却跑不起来,最后发现是ROS2版本装错了或者工作空间没配好。嗯,咱们一次搞定。

2.1 安装ROS2 Humble

为什么选Humble?因为它是目前最稳定的LTS版本,支持到2027年。我在项目里从Foxy一路用到Humble,说实话,Humble的包管理成熟很多,坑也少。

注意: 请确保你的Ubuntu版本是22.04。ROS2 Humble只支持这个版本。如果你用的是20.04,请装Galactic或者升级系统。

安装步骤其实很简单,我习惯分三步走:

  1. 设置语言环境——确保系统支持UTF-8
  2. 添加ROS2软件源——把官方源加到apt里
  3. 安装核心包——选桌面版还是基础版

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

# 第一步:设置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
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

# 第三步:安装ROS2 Humble桌面版
sudo apt update
sudo apt install ros-humble-desktop

这里我建议装桌面版,它包含了Rviz2、Gazebo这些可视化工具。你想想看,调试自定义消息的时候,能可视化看到数据流,效率高很多。如果硬盘空间紧张,可以装ros-humble-ros-base,但我不推荐。

我的习惯: 装完后立刻安装python3-colcon-common-extensions,这是编译工具链的一部分。很多新手漏掉这个,导致后面colcon build报错。
sudo apt install python3-colcon-common-extensions

2.2 验证安装是否成功

装完了别急着走,先跑个demo验证一下。我在项目中遇到过好几次,装的时候没报错,但实际用起来缺依赖。所以验证这步不能省。

打开两个终端:

终端1: 启动talker节点

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker

终端2: 启动listener节点

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener

如果你看到talker在发"Hello World",listener在收,那就说明安装成功了。如果没反应,检查一下网络或者重新执行sudo apt update

重要: 每次打开新终端都要source /opt/ros/humble/setup.bash,否则ROS2命令找不到。后面我们会配置环境变量自动加载。

2.3 创建ROS2工作空间

工作空间就是你的项目文件夹。ROS2里叫colcon workspace。我个人习惯把工作空间放在~/ros2_ws下,结构清晰。

创建命令如下:

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

等等,第一次colcon build会生成三个文件夹:

  • build —— 编译中间文件,不用管它
  • install —— 编译产物,后面要source这个目录
  • log —— 编译日志,出问题时查这里

你想想看,这跟ROS1的catkin workspace很像,但colcon更快,而且支持增量编译。我在一个大型项目里,第一次编译要5分钟,后面改代码只需要几十秒,因为colcon只重新编译改过的包。

避坑指南: 我曾经在colcon build时忘记先创建src目录,结果编译报错说找不到包。记住,src目录必须存在,哪怕里面是空的。

2.4 配置环境变量

每次source太麻烦了,对吧?咱们把它写进.bashrc里,一劳永逸。

打开~/.bashrc文件:

gedit ~/.bashrc

在文件末尾添加以下内容:

# ROS2 Humble 环境配置
source /opt/ros/humble/setup.bash
source ~/ros2_ws/install/local_setup.bash

# 设置ROS Domain ID(多机通信时有用)
export ROS_DOMAIN_ID=0

# 设置别名,方便编译
alias cb='cd ~/ros2_ws && colcon build'
alias cbs='cd ~/ros2_ws && colcon build --symlink-install'

保存后执行:

source ~/.bashrc

这里我解释一下:

  • setup.bash 是ROS2系统级的环境变量
  • local_setup.bash 是你工作空间的环境变量
  • ROS_DOMAIN_ID 默认是0,如果你在实验室多台机器上跑,记得改成不同ID,防止消息串扰
我的小技巧:--symlink-install编译Python包时,修改代码后不用重新编译,因为install目录里是符号链接。这对开发自定义消息的Python接口特别方便。

2.5 验证工作空间配置

配置完了,怎么知道对不对?跑个命令看看:

echo $ROS_DISTRO

如果输出humble,说明ROS2环境变量生效了。

再试试:

ros2 pkg list | grep example

应该能看到demo_nodes_cppdemo_nodes_py这些包。如果看不到,说明setup.bash没source成功。

总结一下: 到这一步,你的开发环境已经准备好了。ROS2 Humble装好了,工作空间建好了,环境变量也配好了。下一章咱们就开始写第一个自定义消息。

嗯,说实话,环境配置是最枯燥的部分,但也是最重要的。我当年刚学ROS2时,花了一整天装环境,最后发现是Ubuntu版本不对。所以别急,一步步来,有问题随时查官方文档或者问我。

准备好了吗?咱们下一章见。