1. 课程导论与硬件准备
各位同学,欢迎来到《激光雷达与ROS2机器人开发实战》的第一章。
我是这门课的主讲,做了快十年的机器人系统集成。说实话,每次带新人入门,最头疼的不是代码,而是——硬件选错了,后面全白干。所以这一章,咱们先把底子打好。
1.1 激光雷达工作原理:TOF vs 三角法
激光雷达,说白了就是“用光测距”。但具体怎么测,市面上主流就两派:TOF(飞行时间法)和三角法。我当年刚入行时也搞混过,后来踩了坑才分清楚。
| 对比项 | TOF 法 | 三角法 |
|---|---|---|
| 原理 | 发射激光脉冲,测量反射光往返时间 | 发射激光,通过成像传感器上光斑偏移计算距离 |
| 典型测距范围 | 10m ~ 100m+ | 0.1m ~ 6m(室内常见) |
| 精度 | 厘米级,远距离衰减较小 | 近距离(<1m)精度很高,远距离误差大 |
| 抗环境光干扰 | 较强 | 较弱,强光下容易丢数据 |
| 成本 | 较高 | 较低 |
| 典型代表 | RPLIDAR A2(部分型号)、Velodyne | RPLIDAR A1、Slamtec S系列 |
我的建议:做室内扫地机器人或小范围建图,选三角法就够了,便宜且近距离精度好。要做园区无人车或大空间SLAM,老老实实上TOF。
为什么会这样?你想想看,三角法本质上是几何相似三角形计算,物体越远,光斑偏移量越小,传感器分辨率跟不上,误差就爆炸了。TOF直接测光速飞行时间,物理上限高得多。
1.2 ROS2与机器人操作系统概述
ROS2不是操作系统,它是一个分布式通信框架。我习惯把它理解成“机器人的神经系统”——各个传感器、算法模块、执行器通过话题(Topic)、服务(Service)、动作(Action)互相收发数据。
相比ROS1,ROS2最大的变化是去掉了Master节点,改用DDS(数据分发服务)做底层通信。这意味着:
- 去中心化:任何一个节点挂了,不影响其他节点继续跑
- 实时性更好:支持QoS策略,可以控制消息的可靠性和延迟
- 跨平台:Windows、Linux、RTOS都能跑
我记得第一次用ROS2做多机器人协同,三台机器人各自发布里程计,ROS1时代还得配个Master做转发,ROS2直接DDS自动发现,省了不少事。
避坑指南:如果你之前用过ROS1,别急着把所有launch文件直接搬过来。ROS2的启动系统从roslaunch换成了Python-based的launch系统,参数传递方式也变了。我曾经花了一下午调试一个参数没传进去的问题,最后发现是ROS2的命名空间规则不一样。
1.3 课程硬件清单与选型建议
下面这张图,是我个人总结的激光雷达SLAM学习硬件架构,你可以把它当作选型时的参考地图。
1.3.1 激光雷达选型
| 型号 | 测距原理 | 测距范围 | 采样频率 | 适用场景 |
|---|---|---|---|---|
| RPLIDAR A1 | 三角法 | 0.15m ~ 6m | 5.5 Hz | 入门学习、小房间建图 |
| RPLIDAR A2 | TOF | 0.15m ~ 12m | 10 Hz | 进阶SLAM、中等空间 |
| RPLIDAR A3 | TOF | 0.15m ~ 25m | 16 Hz | 大空间、户外弱光 |
注意:RPLIDAR A1在强光直射下(比如阳光照进窗户)会出现大量噪点。如果你要在白天窗边测试,建议加遮光罩或换A2。
1.3.2 主控板选型
- STM32系列:适合做底层电机控制、编码器读取、传感器数据采集。实时性好,但跑不了ROS2(资源不够)。我一般用STM32F407做运动学解算,然后通过串口把里程计发给树莓派。
- 树莓派4B/5:跑ROS2主节点、SLAM算法、可视化。建议至少4GB内存,8GB更稳。树莓派5的PCIe接口可以外接AI加速器,做视觉+激光融合。
我的组合建议:STM32做底层实时控制 + 树莓派做上层ROS2运算。两者通过UART或CAN通信。这样既保证了电机控制的实时性,又让SLAM算法有足够的算力。
1.3.3 电机驱动板
驱动板的选择取决于你的电机类型和功率需求:
- L298N:经典双H桥,便宜但效率低,适合小功率电机(<1A)
- TB6612FNG:效率高,体积小,支持1.2A连续电流,我常用它做小型差分底盘
- BTS7960:大电流(43A),适合重型底盘或越野车
嗯,这里要注意:驱动板的逻辑电压和电机电压要分开供电。我曾经偷懒共用一个电源,结果电机启动瞬间把树莓派电压拉低,直接重启了。从那以后,我都是独立供电。
1.3.4 其他必备硬件
- 编码器电机:至少每圈脉冲数(PPR)在500以上,才能做准确的里程计
- IMU(惯性测量单元):MPU6050或ICM-20948,用于辅助SLAM中的姿态估计
- 电源模块:12V锂电池组(5000mAh以上)+ 降压模块(给树莓派供5V)
- USB转串口模块:CP2102或CH340,用于调试和连接激光雷达