1. ROS2与导航概述:从历史到系统架构

大家好,我是你们这门课的老朋友。今天咱们聊聊ROS2和导航的那些事儿。

说实话,我第一次接触ROS还是2012年。那时候ROS1刚火起来,实验室里大家都在折腾PR2机器人。一晃十多年过去了,ROS2已经成了主流。这中间踩过的坑、趟过的雷,我慢慢讲给你们听。

1.1 ROS发展史:从实验室到工业现场

ROS的诞生其实挺有意思的。2007年,斯坦福大学和Willow Garage公司联合搞了个项目,想给机器人研究做个通用软件框架。那时候做机器人,每家都得从零开始写驱动、写通信、写算法,太累了。

ROS1时代(2007-2017)

  • 2007年:ROS原型诞生,代号「Mango Tango」
  • 2010年:ROS 1.0正式发布,支持Ubuntu
  • 2013年:Hydro版本,开始支持导航功能包
  • 2017年:最后一个ROS1版本Kinetic发布

ROS2时代(2017至今)

  • 2017年:ROS2 Ardent Apalone发布,基于DDS
  • 2019年:Dashing Diademata,第一个LTS版本
  • 2022年:Humble Hawksbill,当前主流LTS
  • 2024年:Jazzy Jalisco,最新LTS版本

我的经验:ROS1和ROS2的切换期,我吃过不少亏。2019年有个项目,客户要求用ROS2,我硬是把ROS1的代码移植过去,结果通信部分全重写了。所以现在做新项目,我直接上ROS2,省得以后折腾。

1.2 ROS2应用场景:不只是科研

很多人觉得ROS就是实验室里玩玩的东西。其实不然。我这些年接触过的ROS2项目,覆盖的领域相当广。

领域 典型应用 我参与过的案例
仓储物流 AGV调度、货架搬运 某电商仓库的200台AGV集群
服务机器人 送餐、清洁、导览 商场导览机器人,每天跑10公里
工业巡检 管道检测、设备巡检 化工厂防爆巡检机器人
自动驾驶 园区物流车、低速无人车 校园快递无人车项目
农业 植保、采摘、巡检 大棚巡检机器人,用ROS2控制

说白了,只要是需要移动、感知、决策的机器人,ROS2都能派上用场。尤其是导航这块,ROS2的生态已经相当成熟了。

1.3 ROS2与ROS1对比:到底强在哪?

这个问题我经常被问到。很多老工程师觉得ROS1用得好好的,干嘛要换?我给你们列个表,一看就明白。

对比项 ROS1 ROS2
通信机制 自定义TCPROS/UDPROS DDS(数据分发服务)
实时性 不支持 支持硬实时(需RT内核)
多机器人 需要额外配置 原生支持DDS发现
跨平台 主要Linux Linux/Windows/macOS/RTOS
安全性 无内置安全 支持DDS安全插件
生命周期 无 有节点生命周期管理
参数系统 参数服务器 分布式参数

我的建议:如果你从零开始学,直接学ROS2。ROS1已经停止更新了,新功能都在ROS2上。但如果你维护的是老项目,可以继续用ROS1,毕竟稳定。

为什么会这样?核心原因就是DDS。ROS1的通信是自己搞的,虽然够用,但扩展性差。ROS2直接用了工业级的DDS标准,实时性、安全性、跨平台能力都上了一个台阶。

1.4 导航机器人系统架构:一张图看懂

导航机器人听起来高大上,其实拆开来看,就几个核心模块。我画了张图,你们感受一下。

导航机器人系统架构 感知层(Perception) 激光雷达 深度相机 IMU 里程计 点云/激光数据 位姿/速度 导航层(Navigation) 地图构建 定位(AMCL) 路径规划 运动控制 SLAM/栅格地图 全局/局部路径 控制层(Control) PID控制器 电机驱动 底盘反馈 硬件层(Hardware) 数据流方向:传感器 → 感知 → 导航 → 控制 → 执行器

这张图我画了好几次才满意。你看,整个系统分四层:

  1. 感知层:负责收集环境数据。激光雷达、深度相机、IMU这些传感器,把物理世界变成数字信号。
  2. 导航层:核心决策模块。建图、定位、规划路径,说白了就是「我在哪、要去哪、怎么去」。
  3. 控制层:把导航指令变成电机信号。PID控制、速度调节,让机器人走起来。
  4. 硬件层:电机、轮子、底盘,真正干活的。

注意:我曾经犯过一个错误——把导航层和控制层混在一起写代码。结果调试的时候,改个路径参数还得重启整个系统。后来我学乖了,严格分层,每层独立测试,省心多了。

1.5 为什么选择ROS2做导航?

你想想看,导航机器人最怕什么?

  • 通信延迟导致撞墙
  • 多传感器数据不同步
  • 系统崩溃后无法恢复

ROS2的DDS机制正好解决这些问题。它支持QoS(服务质量)配置,你可以给导航数据设高优先级,给日志数据设低优先级。这样即使系统负载高,导航指令也能准时到达。

我记得有个项目,机器人在仓库里跑,WiFi信号不稳定。ROS1的通信经常断,机器人直接「失联」。换成ROS2后,DDS的自动发现和重连机制,让机器人即使断网也能继续执行本地任务,网络恢复后自动同步状态。

核心结论:ROS2不是ROS1的简单升级,而是面向工业级机器人应用的重构。导航作为机器人最核心的能力之一,在ROS2上得到了质的提升。