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 导航机器人系统架构:一张图看懂
导航机器人听起来高大上,其实拆开来看,就几个核心模块。我画了张图,你们感受一下。
这张图我画了好几次才满意。你看,整个系统分四层:
- 感知层:负责收集环境数据。激光雷达、深度相机、IMU这些传感器,把物理世界变成数字信号。
- 导航层:核心决策模块。建图、定位、规划路径,说白了就是「我在哪、要去哪、怎么去」。
- 控制层:把导航指令变成电机信号。PID控制、速度调节,让机器人走起来。
- 硬件层:电机、轮子、底盘,真正干活的。
注意:我曾经犯过一个错误——把导航层和控制层混在一起写代码。结果调试的时候,改个路径参数还得重启整个系统。后来我学乖了,严格分层,每层独立测试,省心多了。
1.5 为什么选择ROS2做导航?
你想想看,导航机器人最怕什么?
- 通信延迟导致撞墙
- 多传感器数据不同步
- 系统崩溃后无法恢复
ROS2的DDS机制正好解决这些问题。它支持QoS(服务质量)配置,你可以给导航数据设高优先级,给日志数据设低优先级。这样即使系统负载高,导航指令也能准时到达。
我记得有个项目,机器人在仓库里跑,WiFi信号不稳定。ROS1的通信经常断,机器人直接「失联」。换成ROS2后,DDS的自动发现和重连机制,让机器人即使断网也能继续执行本地任务,网络恢复后自动同步状态。
核心结论:ROS2不是ROS1的简单升级,而是面向工业级机器人应用的重构。导航作为机器人最核心的能力之一,在ROS2上得到了质的提升。