ROS2机器人数据采集与诊断工程 - 第2节

2. ROS2开发环境搭建

第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开发环境搭建 - 知识体系 1. 系统层:Ubuntu 22.04 LTS 磁盘分区 | 软件源配置 | 系统更新 | 依赖安装 2. ROS2层:Humble Hawksbill 添加软件源 | 安装桌面版 | 配置环境变量 | 验证安装 3. 工作空间层:colcon编译系统 创建src目录 | colcon build | source环境 | 依赖管理 4. 工具层:命令行工具 ros2 run | ros2 node | ros2 topic | ros2 service | ros2 param

从下往上看,每一层都依赖下一层。系统层没配好,ROS2装不上;ROS2没装好,工作空间编译不了;工作空间没配好,命令行工具也用不了。所以,别跳步,一步步来。

验证环境是否搭建成功:

ros2 --version
# 输出类似:ros2 humble
ros2 run demo_nodes_cpp talker
# 另一个终端运行:
ros2 run demo_nodes_py listener
# 如果能看到"Hello World"消息,说明环境OK

好了,环境搭好了,下一章咱们就开始写第一个ROS2节点。到时候你会发现,前面这些配置工作,花得值。