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学习硬件架构,你可以把它当作选型时的参考地图。

激光雷达SLAM学习硬件架构 激光雷达 主控板(STM32 / 树莓派) 电机驱动板 电源管理模块 直流减速电机 / 编码器 供电与通信总线 说明: ① 激光雷达通过串口/USB连接主控,发布LaserScan消息 ② 主控运行ROS2节点,处理SLAM算法并下发速度指令 ③ 电机驱动板接收PWM/速度指令,驱动电机并反馈编码器数据

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,用于调试和连接激光雷达