第二章 激光雷达原理与选型:机械式、固态、混合固态雷达原理,关键参数(线数、FOV、精度、帧率),ROS驱动与数据可视化
大家好,欢迎来到第二章。
这一章我们聊聊激光雷达本身。说实话,很多做SLAM的朋友,上来就调算法,结果雷达选型就踩了坑。我见过有人用16线雷达做室内小场景,点云稀疏得连墙都看不清,定位自然就崩了。所以,搞懂雷达原理和参数,是做好SLAM的第一步。
2.1 三种主流激光雷达:原理与对比
目前市面上主流的激光雷达,按扫描方式分三类:机械式、固态、混合固态。嗯,这里要注意,混合固态其实是个过渡产物,但应用最广。
2.1.1 机械式激光雷达
机械式雷达,说白了就是「电机带着激光头转」。它内部有一个旋转的机械结构,激光发射器和接收器固定在转子上,360度旋转扫描周围环境。
优点:
- 360°水平FOV,视野无死角
- 技术成熟,可靠性高
- 线数可做到很高(64线、128线)
缺点:
- 有机械旋转部件,寿命受限
- 体积大、重量重
- 成本高(尤其是多线数)
我的经验: 我在做园区无人车项目时,用过Velodyne的16线机械雷达。那家伙转起来嗡嗡响,但点云质量确实稳。不过用了半年,电机轴承就开始有异响——机械磨损是硬伤。
2.1.2 固态激光雷达
固态雷达没有旋转部件。它用光学相控阵(OPA)或闪光(Flash)方式实现扫描。OPA通过调节光波的相位来改变光束方向,Flash则是一次性照亮整个视场。
优点:
- 无机械运动,寿命长
- 体积小,可嵌入车身
- 成本潜力低
缺点:
- FOV通常较小(一般90°-120°)
- 技术还不够成熟,信噪比偏低
- 远距离探测能力弱于机械式
避坑指南: 我曾经在一个AGV项目里试过某国产固态雷达,标称30米探测距离,结果在阳光下实际只能测到15米。所以选固态雷达时,一定要看「实测性能」,别只看参数表。
2.1.3 混合固态激光雷达
混合固态,也叫「转镜式」或「MEMS微振镜」方案。它内部有一个很小的镜片在摆动,通过镜片反射激光来实现扫描。电机不转,但镜片动。
这是目前最主流的方案。为什么?因为它兼顾了机械式的性能和固态的可靠性。
代表产品: 禾赛AT128、速腾M1、Livox HAP等。
我的建议: 如果你做量产产品,优先考虑混合固态。我最近做的机器人项目就用的速腾M1,性价比很高,点云质量也够用。
2.2 关键参数解读
选雷达时,你会看到一堆参数。我挑几个最重要的讲,其他的看看就行。
2.2.1 线数
线数就是激光雷达内部有多少对激光发射-接收器。16线就是16对,128线就是128对。
线数越高,点云越密,能看到的细节越多。但代价是价格和功耗也上去了。
| 线数 | 典型应用 | 点云密度(10m处) |
|---|---|---|
| 16线 | 低速AGV、扫地机器人 | 稀疏,约0.2°垂直分辨率 |
| 32线 | 室内机器人、小场景 | 中等,约0.1°垂直分辨率 |
| 64线 | 自动驾驶、室外大场景 | 密集,约0.05°垂直分辨率 |
| 128线 | 高端自动驾驶 | 极密,约0.025°垂直分辨率 |
我的经验: 做室内SLAM,16线其实够用。但如果你要做室外大场景,至少32线起步。我有个朋友用16线做园区导航,结果远处树丛全糊成一团,定位经常丢。
2.2.2 FOV(视场角)
FOV分水平和垂直两个方向。
- 水平FOV: 机械式通常360°,固态/混合固态一般90°-120°
- 垂直FOV: 一般在25°-45°之间,决定了你能看到多高多低
垂直FOV很重要。你想想看,如果垂直FOV只有20°,那雷达只能看到前方一小条区域,地面和天花板都看不到。做SLAM时,缺少地面点云会影响建图精度。
避坑指南: 我曾经选了一款垂直FOV只有20°的雷达,结果建图时地面点太少,导致Z轴漂移严重。后来换了垂直FOV 40°的雷达,问题才解决。
2.2.3 精度
精度通常指测距误差,单位是厘米。一般激光雷达的精度在±1cm到±3cm之间。
精度越高,建图越准。但要注意,精度和探测距离是矛盾的——远距离时精度会下降。
我个人习惯:做室内SLAM,精度±2cm以内就够用。做高精度地图,需要±1cm以内。
2.2.4 帧率
帧率就是雷达每秒扫描多少次,单位是Hz。常见的有10Hz、20Hz。
帧率越高,对动态物体的捕捉能力越强。但帧率高了,点云数据量也大,对计算资源要求更高。
做SLAM时,10Hz是底线。我建议用20Hz,这样运动畸变更小,建图更平滑。
2.3 ROS驱动与数据可视化
好了,理论讲完了。咱们来点实操——怎么在ROS里把雷达用起来。
2.3.1 安装驱动
不同品牌的雷达驱动不一样。以速腾M1为例:
# 安装依赖
sudo apt install ros-noetic-rslidar-msgs
# 克隆驱动
cd ~/catkin_ws/src
git clone https://github.com/RoboSense-LiDAR/rslidar_sdk.git
# 编译
cd ~/catkin_ws
catkin_make
嗯,这里要注意:编译前要修改配置文件,设置雷达的IP地址和端口号。具体看官方文档。
2.3.2 启动雷达
# 启动驱动节点
roslaunch rslidar_sdk start.launch
# 查看话题
rostopic list
# 应该能看到 /rslidar_points 这个话题
启动后,用rostopic echo /rslidar_points可以查看原始点云数据。但别这么干——数据量太大,终端会卡死。
2.3.3 数据可视化
用RViz看点云是最直观的:
rosrun rviz rviz
在RViz里:
- 添加一个PointCloud2显示
- Topic选择
/rslidar_points - Fixed Frame选择
rslidar
这时候你就能看到彩色的点云了。默认颜色是按高度(Z轴)映射的,红色高、蓝色低。
我的技巧: 调试时,我习惯把点云大小调成2,颜色按强度显示。这样能快速看出哪些区域反射强(比如路牌、反光条),对后续特征提取有帮助。
2.3.4 常见问题排查
如果你看不到点云,别慌。按这个顺序排查:
- 第一步: 检查网络连接。雷达和电脑要在同一个网段。
- 第二步: 检查驱动配置。IP、端口、数据包格式对不对。
- 第三步: 检查话题。用
rostopic hz /rslidar_points看帧率。 - 第四步: 检查RViz的Fixed Frame。一定要设置成雷达的frame_id。
避坑指南: 我曾经折腾了一下午,发现点云就是不出来。最后发现是网线松了...所以,先检查物理连接,别一上来就怀疑代码。
2.4 本章小结
这一章我们聊了:
- 三种激光雷达的原理和优缺点
- 关键参数:线数、FOV、精度、帧率
- ROS驱动的安装、启动和可视化
下一章,我们会把这些点云数据用起来——做激光SLAM的前端里程计。到时候你会发现,选对雷达,SLAM就成功了一半。
好,今天就到这里。有问题欢迎交流。