ROS2机器人项目架构与组件化开发 - 第2节

2. 开发环境搭建

2、开发环境搭建:Ubuntu 22.04安装与配置、ROS2 Humble安装、colcon构建工具、开发环境验证

说实话,做机器人开发这么多年,我见过太多人在环境搭建这一步就卡住了。不是装错版本,就是依赖冲突,最后连个节点都跑不起来。这一章,咱们就把这些坑一个个填平。

2.1 为什么选择Ubuntu 22.04 + ROS2 Humble?

你可能要问:为什么非得是Ubuntu 22.04?我用20.04不行吗?

嗯,这里有个关键点。ROS2 Humble Hawksbill是2022年的LTS版本,它和Ubuntu 22.04是官方配对。说白了,就像齿轮一样,这两个版本咬合得最紧。我在项目中试过用Ubuntu 20.04装Humble,结果一堆依赖问题,折腾了两天才搞定。

核心原则:ROS2版本和Ubuntu版本必须严格对应。Humble只支持Ubuntu 22.04(Jammy)。

ROS2 Humble的生命周期到2027年,这意味着未来几年你都不用担心版本过时。我个人习惯是:能用LTS就用LTS,省心。

2.2 Ubuntu 22.04安装与基础配置

2.2.1 系统安装要点

安装过程我就不赘述了,网上教程一大堆。但有几个关键点我得提醒你:

  • 磁盘分区:建议给根目录至少50GB,如果你要做SLAM或视觉处理,100GB更稳妥。我曾经因为分区太小,编译到一半磁盘满了,那叫一个尴尬。
  • 用户名:不要用中文用户名!ROS2对中文路径支持不好,你会遇到各种奇怪的问题。
  • 网络:安装时确保网络畅通,最好能访问GitHub和ROS官方源。

2.2.2 系统基础配置

装完系统后,第一件事就是换源。国内用户建议换成清华或中科大的源,速度能快10倍。

# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 替换为清华源(Ubuntu 22.04)
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

# 更新
sudo apt update && sudo apt upgrade -y

小技巧:装完系统后,先装个curl和git,后面会频繁用到。

2.3 ROS2 Humble安装

ROS2的安装方式有两种:Debian包和源码编译。我强烈建议你用Debian包方式,省时省力。除非你要修改ROS2核心代码,否则别折腾源码编译。

2.3.1 设置软件源

# 添加ROS2 GPG密钥
sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

# 添加ROS2源
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

sudo apt update

2.3.2 安装ROS2 Humble

这里有个选择:装桌面版还是基础版?如果你需要可视化工具(如RViz、Gazebo),就装桌面版。如果只是做纯算法开发,基础版就够了。

# 桌面版安装(推荐)
sudo apt install ros-humble-desktop

# 或者基础版
sudo apt install ros-humble-ros-base

安装过程大概10-20分钟,取决于你的网速。我记得第一次装的时候,看到几百个包在下载,心里还挺震撼的——ROS2的生态确实庞大。

2.3.3 配置环境变量

装完后,每次打开终端都要source一下,很烦。我建议直接写进.bashrc里:

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

注意:如果你同时装了ROS1和ROS2,千万别把两个source写在一起,会冲突。我一般用别名来切换:alias ros1='source /opt/ros/noetic/setup.bash'。

2.4 colcon构建工具

colcon是ROS2的官方构建工具,取代了ROS1时代的catkin。说实话,我第一次用colcon时觉得它比catkin复杂,但用久了发现,它确实更灵活、更强大。

2.4.1 安装colcon

sudo apt install python3-colcon-common-extensions

2.4.2 colcon的核心概念

colcon的工作流程其实很简单:

  1. 创建workspace:一个文件夹,里面放你的代码
  2. 构建:colcon会自动识别并编译所有包
  3. 安装:编译后的文件会放到install目录

你想想看,如果你有10个包,手动编译得累死。colcon一键搞定。

2.4.3 常用colcon命令

命令 说明 我的经验
colcon build 编译所有包 第一次编译会慢一些,后面增量编译很快
colcon build --packages-select 包名 只编译指定包 调试时常用,省时间
colcon build --symlink-install 使用符号链接安装 强烈推荐!修改Python文件后不用重新编译
colcon test 运行测试 写单元测试时必备

我的习惯:每次都用colcon build --symlink-install,这样改Python代码直接生效,不用等编译。

2.5 开发环境验证

环境搭好了,怎么知道对不对?咱们来跑个简单的测试。

2.5.1 验证ROS2安装

# 检查ROS2版本
ros2 --version

# 启动一个talker节点
ros2 run demo_nodes_cpp talker

# 新开一个终端,启动listener节点
ros2 run demo_nodes_py listener

如果你看到talker在发消息,listener在收消息,恭喜你,环境没问题!

2.5.2 验证colcon

# 创建工作空间
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws

# 编译空工作空间
colcon build

# 如果看到"Summary: 0 packages finished",说明colcon正常工作

2.5.3 常见问题排查

我遇到过不少同学在这步卡住,这里列几个常见问题:

  • 找不到ros2命令:检查.bashrc里有没有source,或者手动source一下
  • 编译报错:多半是依赖没装全,用rosdep检查一下
  • 节点通信失败:检查防火墙,或者试试export ROS_DOMAIN_ID=0

避坑指南:我曾经在虚拟机里装ROS2,结果节点之间死活通信不了。折腾了半天才发现,虚拟机的网络模式要改成"桥接模式",NAT模式会有问题。

2.6 本章知识体系

下面这张图帮你理清本章的核心逻辑:

ROS2开发环境搭建知识体系 Ubuntu 22.04 ROS2 Humble colcon构建工具 环境验证 系统安装与基础配置 换源与依赖安装 软件源配置 桌面版/基础版安装 环境变量配置 colcon安装 工作空间管理 编译与测试命令 节点通信测试 colcon编译验证

这张图展示了本章的四个核心模块:从底层的Ubuntu系统,到ROS2框架,再到构建工具colcon,最后通过环境验证把整个链路串起来。每一步都是下一步的基础,缺一不可。

2.7 小结

到这一步,你的开发环境应该已经跑起来了。Ubuntu 22.04是地基,ROS2 Humble是框架,colcon是工具,环境验证是体检。这四个环节都过了,咱们就可以正式开始写代码了。

嗯,我记得第一次搭好环境跑通talker-listener时,那种成就感还挺强的。虽然只是两个节点在发消息,但你知道,这背后是整个机器人开发世界的入口。