Skip to content

第二章:ROS2能干什么——了解它的实际用途

2.1 ROS2 主要解决什么问题

机器人是个复杂的系统,有:

  • 眼睛(摄像头)
  • 耳朵(麦克风)
  • 脚(轮子/腿)
  • 大脑(计算机)
  • ……

这些东西要协调工作,ROS2 主要帮你解决三个问题:


问题一:通信问题

举个例子:

实际场景

机器人的摄像头看到前面有堵墙,

它得告诉控制轮子的程序:

"哥们儿,前面有东西,别往前走了!"

这个"告诉"的过程,就是 通信


ROS2 提供了好几种通信方式:

1. 话题(Topic)—— 像广播电台

工作原理

  • 一个节点不停地"广播"数据
  • 其他想听的节点就"收听"
  • 发的人不管谁在听
  • 听的人也不管谁在发

适用场景: 传感器数据这种持续产生的数据流

举例:

  • 摄像头节点不停地发图像
  • 图像处理节点订阅这些图像来处理
  • 显示节点订阅来显示给你看

大家各干各的,互不干扰。


2. 服务(Service)—— 像打电话

工作原理

  • 你发一个请求
  • 对方处理完了给你回复
  • 你得等着对方回复才能继续

适用场景: "问一下"的场景

举例: 问问机器人现在电量多少


3. 动作(Action)—— 像网购

工作原理

  • 你下单(发送目标)
  • 然后物流一直告诉你到哪了(反馈)
  • 最后收到货(结果)
  • 中间你还能取消订单

适用场景: 需要较长时间的任务

举例: 让机器人走到某个地方


问题二:硬件抽象

不同厂家的摄像头、雷达、电机,底层接口都不一样。

没有 ROS2 的情况

如果你要直接跟硬件打交道,

每换一个设备就得重新学一遍,烦死了。


ROS2 的解决方案

统一接口

  • 不管你用什么牌子的摄像头,图像数据都是同一种格式
  • 不管什么牌子的激光雷达,数据格式也是统一的

好处:

你写的程序换个设备也能用,不用改代码。


问题三:工具支持

ROS2 自带很多实用工具:

RViz2

  • 可以 3D 显示机器人的状态
  • 显示传感器数据
  • 显示规划的路径

用途: 调试的时候特别有用


Gazebo

  • 是个仿真器
  • 可以在虚拟环境里测试机器人

为什么需要仿真

真机器人贵啊,撞坏了心疼,

在仿真里随便撞。


ros2 bag

  • 可以把机器人运行时的数据录下来
  • 之后回放分析

rqt 系列图形化工具

  • 画图
  • 看日志
  • 查看节点关系

都挺方便的。


2.2 ROS2 都用在哪些地方

说几个常见的:

1. 移动机器人

应用实例

  • 扫地机器人
  • 送餐机器人
  • 仓库搬运机器人

主要功能:

  • SLAM 建图
  • 导航避障

ROS2 都有现成的包。


2. 机械臂

应用实例

  • 工厂里焊接的
  • 喷漆的
  • 现在挺火的协作机器人

核心框架:

ROS2 有个叫 MoveIt2 的框架,专门做运动规划的,挺好用的。


3. 无人机

应用实例

  • 航拍的
  • 农业喷药的
  • 送快递的

4. 自动驾驶

很多自动驾驶公司的原型系统就是基于 ROS 开发的。

实际情况

当然真正上路的产品可能会换成自己的系统,

但研发阶段用 ROS 很普遍。


2.3 举个具体例子

场景设定

假设我们要做一个能在室内自己走的机器人,它需要:

  1. 建立地图
  2. 知道自己在哪
  3. 规划路径
  4. 控制轮子
  5. 遇到障碍物要躲开

在 ROS2 里的软件架构

最底层:传感器层

  • 激光雷达节点
  • 摄像头节点
  • IMU(惯性测量单元)节点

各自有个节点,不停地往外发数据。


中间层:感知层

  • SLAM 节点 → 处理雷达数据建地图
  • 定位节点 → 算机器人在哪
  • 目标检测节点 → 处理图像

上层:决策层

  • 导航决策节点
  • 综合这些信息
  • 决定往哪走、怎么躲障碍物

底层:执行层

  • 底盘控制节点
  • 把决策转化成轮子的转速

架构优势

每个框都是一个独立的节点,它们通过话题交换数据。

这样设计的好处

  • 换个雷达? 只改雷达节点就行,其他不用动
  • 想加个摄像头? 加个摄像头节点就行,不影响原来的
  • 某个节点崩了? 其他节点还能继续跑

2.4 ROS2 的典型工作流程

步骤一:感知

传感器采集环境信息:

  • 摄像头拍图像
  • 雷达扫描周围
  • IMU 测量姿态

步骤二:处理

处理节点分析数据:

  • 图像识别出了什么
  • 雷达建出了地图
  • 定位算出了位置

步骤三:决策

决策节点综合信息:

  • 分析当前状态
  • 规划下一步动作

步骤四:执行

控制节点执行命令:

  • 给电机发指令
  • 控制机器人运动

步骤五:反馈

  • 执行结果反馈给感知层
  • 形成闭环

闭环控制

这个循环不断进行,机器人就能自主工作了。


2.5 实际应用案例分享

案例一:仓库搬运机器人

需求:

  • 在仓库里自动搬运货物
  • 能自主导航
  • 能避开障碍物和人

ROS2 方案:

传感器节点(激光雷达) 
    ↓
SLAM 节点(建图定位)
    ↓
导航节点(路径规划)
    ↓
控制节点(执行运动)

案例二:服务机器人

需求:

  • 在餐厅送餐
  • 能认人
  • 能语音交互

ROS2 方案:

摄像头节点 → 人脸识别节点
麦克风节点 → 语音识别节点
    ↓
决策节点
    ↓
导航节点 + 语音合成节点

案例三:巡检机器人

需求:

  • 在工厂巡检
  • 检测设备异常
  • 自动充电

ROS2 方案:

热成像摄像头 → 异常检测节点
GPS + 雷达 → 定位导航节点
电池监控 → 充电管理节点

本章小结

通过这一章,你应该已经了解到:

  1. ROS2 主要解决的问题:
  2. 通信问题(话题、服务、动作)
  3. 硬件抽象(统一接口)
  4. 工具支持(仿真、可视化、调试)

  5. ROS2 的应用领域:

  6. 移动机器人
  7. 机械臂
  8. 无人机
  9. 自动驾驶

  10. ROS2 的软件架构:

  11. 模块化设计
  12. 节点通信
  13. 数据流动

下一章预告

下一章我们会讲:

ROS2 的前身 ROS1——知道它从哪来

了解 ROS1 和 ROS2 的区别,为什么要学 ROS2。


评论区