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的工作流程其实很简单:
- 创建workspace:一个文件夹,里面放你的代码
- 构建:colcon会自动识别并编译所有包
- 安装:编译后的文件会放到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 本章知识体系
下面这张图帮你理清本章的核心逻辑:
这张图展示了本章的四个核心模块:从底层的Ubuntu系统,到ROS2框架,再到构建工具colcon,最后通过环境验证把整个链路串起来。每一步都是下一步的基础,缺一不可。
2.7 小结
到这一步,你的开发环境应该已经跑起来了。Ubuntu 22.04是地基,ROS2 Humble是框架,colcon是工具,环境验证是体检。这四个环节都过了,咱们就可以正式开始写代码了。
嗯,我记得第一次搭好环境跑通talker-listener时,那种成就感还挺强的。虽然只是两个节点在发消息,但你知道,这背后是整个机器人开发世界的入口。