第2章:ROS2开发环境搭建
说实话,很多初学者一上来就急着写代码,结果卡在环境配置上大半天。我见过太多人因为Ubuntu版本不对、ROS2安装源选错,折腾一整天连个节点都跑不起来。这一章,咱们就把地基打牢。
本章核心目标:从零搭建一套能稳定运行ROS2 Humble的开发环境。包括系统安装、ROS2配置、工作空间创建,以及几个最常用的命令行工具。
2.1 Ubuntu系统安装与配置
ROS2 Humble官方推荐的是Ubuntu 22.04 LTS。我个人习惯用LTS版本,稳定,社区支持好,遇到问题搜起来也方便。
安装要点:
- 建议分配至少40GB磁盘空间,20GB勉强够用但会很挤
- 内存推荐8GB以上,4GB跑图形界面+编译会卡
- 安装时选择「中文(简体)」作为系统语言,但键盘布局建议保留美式英语
注意:千万别用Ubuntu 20.04装ROS2 Humble!虽然能强行装上,但依赖关系会乱成一团。我曾经为了省事这么干过,结果编译时各种符号找不到,最后乖乖重装了系统。
系统配置清单:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 磁盘分区 | / 30GB + /home 20GB | 分开分区方便重装系统保留数据 |
| swap分区 | 8GB | 编译大型包时swap能救命 |
| 软件源 | 阿里云/清华镜像 | apt update速度提升10倍 |
2.2 ROS2 Humble安装
安装ROS2其实就三步:加源、装包、配环境。但每一步都有坑,我一个个说。
第一步:添加ROS2软件源
sudo apt update
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
sudo apt update
小技巧:如果ros.key下载慢,可以手动从GitHub下载后放到对应目录。我经常这么干,省得等半天。
第二步:安装ROS2 Humble桌面版
sudo apt install ros-humble-desktop
这个包大概1.5GB,包含所有常用工具和库。如果你磁盘紧张,可以装ros-humble-ros-base,但后面很多功能需要自己补包。
第三步:配置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
嗯,这里要注意:如果你用zsh,记得改成~/.zshrc。我有个学生折腾了半天发现是shell不对,哭笑不得。
2.3 工作空间创建与编译
工作空间说白了就是你的项目文件夹。ROS2用colcon来编译,比ROS1的catkin快不少。
创建工作空间:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
colcon build
第一次编译会生成build、install、log三个文件夹。你想想看,这就像盖房子时的脚手架、成品和施工日志,各司其职。
关键配置:每次打开新终端,记得source工作空间的环境:
source ~/ros2_ws/install/setup.bash
也可以直接写进~/.bashrc,省得每次都敲。
编译常见问题:
- 缺少依赖:运行
rosdep install --from-paths src --ignore-src -r -y自动安装 - 编译卡死:加
--parallel-workers 2限制并行任务数,我4GB内存的老笔记本就这么干的 - 符号冲突:检查是否同时source了ROS1和ROS2的环境,这俩不能共存
2.4 ROS2命令行工具初探
ROS2的命令行工具设计得很直观。我刚开始用的时候,基本靠--help走天下。
最常用的几个命令:
| 命令 | 作用 | 示例 |
|---|---|---|
ros2 run | 运行一个节点 | ros2 run turtlesim turtlesim_node |
ros2 node list | 列出所有节点 | ros2 node list |
ros2 topic echo | 查看话题数据 | ros2 topic echo /turtle1/pose |
ros2 service call | 调用服务 | ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2}" |
举个例子,打开终端运行ros2 run turtlesim turtlesim_node,你会看到一个小乌龟窗口。再开一个终端,运行ros2 run turtlesim turtle_teleop_key,就能用键盘控制乌龟移动了。这就是ROS2最基本的节点通信。
避坑指南:我曾经在虚拟机里跑turtlesim,结果图形界面卡得不行。后来发现是3D加速没开。如果你也遇到类似问题,检查一下虚拟机的显示设置。
2.5 本章知识体系
下面这张图概括了本章的核心内容,从系统层到应用层,每一步都是环环相扣的。
从下往上看,每一层都依赖下一层。系统层没配好,ROS2装不上;ROS2没装好,工作空间编译不了;工作空间没配好,命令行工具也用不了。所以,别跳步,一步步来。
验证环境是否搭建成功:
ros2 --version
# 输出类似:ros2 humble
ros2 run demo_nodes_cpp talker
# 另一个终端运行:
ros2 run demo_nodes_py listener
# 如果能看到"Hello World"消息,说明环境OK
好了,环境搭好了,下一章咱们就开始写第一个ROS2节点。到时候你会发现,前面这些配置工作,花得值。