2. 激光雷达基础

各位同学好,我是你们的机器人导航课讲师。今天我们来聊聊激光雷达——这个在机器人感知系统中堪称「眼睛」的关键传感器。

说实话,我最早接触激光雷达是在2018年做AGV项目的时候。那时候市面上能选的国产雷达还不多,价格也贵。现在不一样了,几百块钱就能买到不错的入门款。嗯,技术发展确实快。

2.1 激光雷达工作原理

激光雷达的核心任务就一个:测距。但怎么测,这里头有讲究。目前主流的有两种方法:TOF法和三角法。

2.1.1 TOF(飞行时间法)

TOF的原理特别直白——发射一束激光,等它打到物体上反射回来,记录这段时间差。光速是已知的,距离 = 光速 × 时间 / 2。

我打个比方:你对着山谷喊一声,听回声的时间就能估算距离。TOF就是干这个的,只不过用的是激光。

TOF的优势:

  • 测量距离远,室内外都能用
  • 精度高,误差通常在厘米级
  • 受物体颜色影响小

但TOF也有短板。它需要精密的计时电路,成本相对高。另外,在强光环境下,太阳光里的红外成分会干扰测量。我去年做一个户外巡检项目时就吃过这个亏——大中午的,雷达数据直接飘了。

2.1.2 三角法

三角法的思路不一样。它用摄像头接收反射回来的激光光斑,通过光斑在成像平面上的位置偏移,结合激光器和摄像头的几何关系,用三角公式算出距离。

说白了,就是利用「视差」来测距。你想想看,物体离得近,光斑偏移就大;离得远,偏移就小。

个人经验:三角法雷达在短距离(0.1-6米)内精度很高,甚至能做到毫米级。但超过8米,精度就断崖式下降。所以它特别适合室内扫地机器人这类场景。

我曾经帮朋友调试一台三角法雷达,发现它测白色墙壁和黑色地毯的结果差了将近2厘米。原因很简单——黑色物体吸光,反射回来的光斑太弱,算法算不准。嗯,这是三角法的先天局限。

2.1.3 两种方法对比

对比项 TOF法 三角法
测距范围 0.1-40米+ 0.1-8米
精度 厘米级 毫米级(短距)
抗环境光 一般 较弱
成本 较高 较低
典型应用 自动驾驶、户外导航 室内扫地机、服务机器人

2.2 常见型号与选型建议

市面上消费级激光雷达,绕不开两个品牌:思岚(RPLIDAR)和镭神(YDLIDAR)。我两个都用过,说说我的感受。

2.2.1 RPLIDAR系列

思岚的A系列是经典款。A1是入门,A2是主力,A3是高端。我个人最常用的是A2M8,性价比确实不错。

  • RPLIDAR A1:三角法,6米范围,8000次/秒采样。适合预算有限的入门项目
  • RPLIDAR A2M8:三角法,8米范围,16000次/秒。我目前的主力雷达
  • RPLIDAR A3:TOF,25米范围,户外可用。适合需要室外导航的场景

避坑指南:我曾经在一个项目中选了A1做AGV导航,结果发现6米范围根本不够用——AGV速度稍快,转弯时雷达扫不到前方障碍物。后来换了A2M8才解决问题。选型时一定要留足余量。

2.2.2 YDLIDAR系列

镭神的产品线也很丰富。G系列主打性价比,X系列主打高性能。

  • YDLIDAR G4:三角法,10米范围,采样率可调。价格比RPLIDAR A2便宜
  • YDLIDAR X4:三角法,8米范围,360度扫描。适合做教学平台
  • YDLIDAR TG15:TOF,15米范围,抗光能力强

我个人觉得,如果预算有限,YDLIDAR G4是个不错的选择。它的采样率虽然不如A2,但胜在便宜,做原型验证完全够用。

2.2.3 选型决策树

我一般按这个逻辑选雷达:

  1. 先看场景:室内还是室外?室外必须上TOF
  2. 再看距离:机器人最大速度 × 2 作为最小测距要求
  3. 最后看预算:500以内选三角法,1000以上考虑TOF

2.3 ROS2驱动安装与测试

好,理论说完了,咱们来点实际的。怎么让激光雷达在ROS2里跑起来?

2.3.1 安装驱动

以RPLIDAR为例,官方提供了ROS2驱动包。安装很简单:

# 创建工作空间
mkdir -p ~/lidar_ws/src
cd ~/lidar_ws/src

# 克隆驱动
git clone https://github.com/Slamtec/rplidar_ros.git

# 编译
cd ~/lidar_ws
colcon build --packages-select rplidar_ros

# 配置环境
source install/setup.bash

YDLIDAR的驱动也类似:

git clone https://github.com/YDLIDAR/ydlidar_ros2_driver.git
colcon build --packages-select ydlidar_ros2_driver

小技巧:我习惯把雷达的USB设备权限提前配好,不然每次都要sudo。执行 sudo chmod 666 /dev/ttyUSB0 或者写个udev规则,一劳永逸。

2.3.2 启动雷达

驱动装好后,启动雷达节点:

# RPLIDAR A2
ros2 launch rplidar_ros rplidar_a2m8_launch.py

# YDLIDAR G4
ros2 launch ydlidar_ros2_driver ydlidar_launch.py

启动后,用 ros2 topic list 应该能看到 /scan 话题。这就是雷达数据。

2.3.3 可视化测试

光看数据不够直观,咱们用RViz2看看:

ros2 run rviz2 rviz2

在RViz2里添加一个 LaserScan 显示,Topic选 /scan。如果一切正常,你会看到一圈红色的点云——那就是雷达扫出来的环境轮廓。

我第一次看到这个画面时还挺激动的。你想想看,一个旋转的小东西,就能把整个房间的轮廓画出来,确实神奇。

常见问题:如果RViz2里看不到点云,先检查雷达的USB线是否插牢。我遇到过好几次,线松了导致数据断断续续。另外,确认一下雷达的波特率设置——RPLIDAR A2默认是115200,YDLIDAR G4是512000,别搞混了。

2.4 本章知识体系

下面这张图总结了本章的核心逻辑,我画成了SVG,方便你理解:

激光雷达知识体系 激光雷达 TOF飞行时间法 三角法 选型:RPLIDAR / YDLIDAR ROS2驱动安装 RViz2可视化测试 从原理到选型,再到驱动测试,三步掌握激光雷达

这张图把本章内容串起来了。你从「激光雷达」出发,先理解两种工作原理,再根据场景选型,最后动手装驱动做测试。每一步都有坑,但每一步也都有方法。

好了,这一章就到这里。记住:雷达是机器人的眼睛,选对了、配好了,导航就成功了一半。

可可精品资料库