1. 课程导入:ROS2简介、学习目标、课程大纲、环境准备

1.1 ROS2是什么?为什么机器人开发需要它?

ROS2(Robot Operating System 2)是一套面向机器人开发的开源中间件框架。它并非传统意义上的操作系统,而是运行在 Linux、Windows 或 macOS 之上,为开发者提供进程间通信、硬件抽象、设备驱动、功能包管理、可视化工具等一整套服务。如果把机器人比作人体,ROS2 就像神经系统——它负责把“大脑”(算法节点)、“眼睛”(激光雷达)、“手脚”(电机驱动)连接起来,让各部分协同工作。

与 ROS1 相比,ROS2 引入了 DDS(Data Distribution Service) 作为底层通信中间件,解决了 ROS1 在实时性、多机通信、安全性方面的不足。ROS2 支持节点动态发现、QoS(服务质量)策略控制、进程内/进程间通信无缝切换,并且天然适配现代机器人系统中常见的多机协作场景。

核心要点:ROS2 的通信模型基于“节点(Node)”和“话题(Topic)/服务(Service)/动作(Action)”三大抽象。节点是独立运行的计算单元,话题用于异步数据流传输,服务用于同步请求-响应,动作用于长时间任务的目标-反馈-结果模式。
ROS2 核心通信模型 DDS 通信中间件 (发现、路由、QoS策略) 话题 Topic 异步数据流(传感器/状态) 服务 Service 同步请求-响应(指令/查询) 动作 Action 长任务:目标/反馈/结果 传感器节点 激光雷达 / 相机 / IMU 控制节点 电机驱动 / 底盘控制器 决策节点 导航 / 路径规划 / 感知 可视化节点 RViz2 / 网页端监控 日志/调试节点 ros2 topic echo / rqt 其他机器人 多机协同 / 云端 话题(发布/订阅) 服务(请求/响应) 动作(目标/反馈/结果)

1.2 学习目标:学完本章你能做什么?

本课程聚焦于 ROS2 的常用命令行工具,目标是让你在真实机器人或仿真环境中,能够熟练地通过终端命令完成以下任务:

  • 节点管理:使用 ros2 node list 查看当前运行的节点,用 ros2 node info 查看节点详情。
  • 话题操作:用 ros2 topic list 列出话题,用 ros2 topic echo 实时查看消息流,用 ros2 topic pub 手动发布消息。
  • 服务调用:通过 ros2 service list 和 ros2 service call 实现请求-响应式通信。
  • 参数管理:使用 ros2 param get/set 在运行时动态调整节点参数。
  • 启动与调试:用 ros2 launch 一键启动多节点系统,用 ros2 doctor 检查环境健康状态。
学习建议:每学一个命令,立刻在终端中实际操作一遍。ROS2 命令的规律性很强——大多数命令都遵循 ros2 <功能模块> <动词> [参数] 的结构,掌握规律后可以举一反三。

1.3 课程大纲:30章内容全景图

本课程共 30 章,从基础操作到高级调试,循序渐进地覆盖 ROS2 命令行的核心场景。下表列出了主要章节模块及其对应的命令主题:

模块 章节范围 核心命令主题
基础入门 第1-5章 环境准备、节点管理、话题操作、工作空间配置
通信进阶 第6-12章 服务调用、参数操作、动作通信、QoS策略
工程实践 第13-20章 功能包创建、launch文件、tf坐标变换、bag录制
调试与优化 第21-26章 日志分析、rqt工具、性能监控、多机通信
综合实战 第27-30章 仿真环境、机器人导航、视觉处理、综合项目

1.4 环境准备:从零搭建ROS2开发环境

在开始命令行学习之前,需要准备一个可用的 ROS2 环境。推荐使用 Ubuntu 22.04 + ROS2 Humble(LTS 版本,支持到 2027 年)。以下是标准安装流程:

# 1. 设置软件源
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

# 2. 添加ROS2软件源
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

# 3. 安装ROS2 Humble桌面版(包含可视化工具)
sudo apt update
sudo apt install ros-humble-desktop python3-argcomplete -y

# 4. 配置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

# 5. 验证安装
ros2 --version

安装完成后,建议安装 colcon 构建工具和 turtlesim 仿真包(用于后续章节的实操练习):

sudo apt install python3-colcon-common-extensions ros-humble-turtlesim -y
常见坑提醒:如果终端提示 command not found: ros2,通常是因为没有执行 source /opt/ros/humble/setup.bash。请检查 ~/.bashrc 中是否已添加该行,并重新打开终端。另外,不要同时 source ROS1 和 ROS2 的环境,否则会产生冲突。

1.5 环境验证与常见误区

完成安装后,通过以下三步快速验证环境是否正常:

  1. 版本检查:运行 ros2 --version,应输出类似 ros2 0.xx.x 的版本号。
  2. 节点列表:运行 ros2 node list,此时应无输出(因为没有启动任何节点),但不会报错。
  3. 小乌龟测试:在终端 A 运行 ros2 run turtlesim turtlesim_node,终端 B 运行 ros2 run turtlesim turtle_teleop_key,如果出现小乌龟窗口且能用方向键控制,说明环境完全正常。
误区复盘:初学者常犯的错误包括——(1)忘记 source 环境变量导致命令找不到;(2)在错误的 Python 虚拟环境中运行 ros2 命令;(3)同时安装 ROS1 和 ROS2 导致环境变量互相覆盖。建议使用 echo $ROS_DISTRO 检查当前激活的 ROS 发行版,确保输出为 humble。