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

1. ROS2与传感器概述

1. ROS2与传感器概述

大家好,欢迎来到《ROS2传感器接入与数据处理实战》的第一章。

我是你们这门课的老朋友。做了十几年机器人,从ROS1一路折腾到ROS2,踩过的坑比走过的路还多。今天咱们先不急着写代码,先把地基打牢。

你想想看,一个机器人要感知世界,靠的是什么?说白了就是传感器。而ROS2,就是把这些传感器数据串起来、用起来的那根“线”。

1.1 ROS2发展史:从实验室到工业级

ROS最早是2007年斯坦福大学和Willow Garage搞出来的。那时候大家觉得,机器人软件太封闭了,得有个开源框架。

ROS1确实火了一把。但用久了问题就出来了——实时性差、通信不稳定、多机器人支持弱。我记得2018年做一个AGV项目,ROS1的节点一多,Master就崩,那叫一个头疼。

所以2017年,ROS2正式立项。它基于DDS(数据分发服务)重写了底层通信,解决了ROS1的三大痛点:

  • 去中心化:没有Master节点,不会单点故障
  • 实时性:支持硬实时系统
  • 安全性:支持加密和认证

到2024年,ROS2已经发布了Humble、Iron、Jazzy等多个长期支持版本。我个人建议,新项目直接上Humble或Jazzy,稳定。

核心观点:ROS2不是ROS1的简单升级,而是面向工业级机器人场景的彻底重构。

1.2 ROS2核心概念:节点、话题、服务、动作

这四个概念,是ROS2的“四梁八柱”。我一个个说。

1.2.1 节点(Node)

节点就是机器人系统里的一个“小工人”。比如一个激光雷达驱动是一个节点,一个路径规划器也是一个节点。每个节点只干一件事,但合起来就能干大事。

嗯,这里要注意:ROS2里节点是可执行进程,不是线程。我刚开始学的时候老搞混。

1.2.2 话题(Topic)

话题是异步通信的通道。一个节点发布数据,其他节点订阅。比如激光雷达节点发布/scan话题,导航节点订阅它。

说白了,话题就是“广播”——谁爱听谁听,发布者不管。

1.2.3 服务(Service)

服务是同步通信。客户端发请求,服务端回响应。比如“给我一个地图”这种一问一答的场景。

我曾经在项目里用服务做参数查询,结果并发一高就超时。后来改成话题+回调,问题就解决了。所以记住:服务适合低频、短时的交互。

1.2.4 动作(Action)

动作是带反馈的异步任务。比如让机械臂“移动到A点”,过程中要不断反馈进度,还能随时取消。

动作 = 话题 + 服务 + 可取消。ROS2里用actionlib实现,非常实用。

我的习惯:传感器数据用话题,参数查询用服务,长时间任务用动作。别混用,否则代码会变得很难维护。

1.3 传感器在机器人系统中的作用

传感器是机器人的“五官”。没有传感器,机器人就是个瞎子。

常见的传感器类型:

传感器类型 典型设备 作用
距离传感器 激光雷达、超声波 测距、建图、避障
视觉传感器 摄像头、深度相机 目标检测、SLAM
惯性传感器 IMU(加速度计+陀螺仪) 姿态估计、导航
力/触觉传感器 力矩传感器、触觉阵列 力控、抓取

在ROS2里,传感器数据通常以标准消息类型发布。比如激光雷达用sensor_msgs/LaserScan,摄像头用sensor_msgs/Image。这样做的好处是——换传感器不用改上层代码。

避坑指南:我曾经买过一个非标激光雷达,厂家给的驱动不兼容ROS2。结果花了三天自己写驱动。所以选传感器时,一定确认它有没有ROS2官方驱动。

1.4 课程项目概览

这门课不是光讲理论。我们会做一个完整的项目:基于ROS2的多传感器融合小车。

项目会用到:

  • 激光雷达(2D/3D)
  • IMU
  • 摄像头
  • 里程计

最终实现小车的自主导航+避障+目标跟随。每一章都会有一个可运行的Demo,代码全部开源。

为什么选这个项目?因为我在实际项目中遇到过太多传感器数据打架的情况——激光雷达说前面有墙,摄像头说没有,IMU又说车在转。怎么融合?怎么取舍?这些坑,我会在课程里一一拆解。

一句话总结本章:ROS2是机器人开发的“操作系统”,传感器是机器人的“感官”,而我们要学的,就是如何让它们高效协作。

ROS2传感器接入知识体系 ROS2核心 节点 (Node) 话题 (Topic) 服务 (Service) 动作 (Action) 激光雷达 (LaserScan) 摄像头 (Image) IMU (Imu) 数据处理与融合 自主导航 · 避障 · 目标跟随 核心 通信 传感器 处理 应用

这张图就是咱们这门课的整体脉络。从ROS2核心出发,连接各类传感器,经过数据处理,最终落地到实际应用。每一章都会围绕这个框架展开。

好,第一章就到这里。记住这四个核心概念,后面我们会反复用到它们。