第二章 激光雷达原理与选型:机械式、固态、混合固态雷达原理,关键参数(线数、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里:

  1. 添加一个PointCloud2显示
  2. Topic选择 /rslidar_points
  3. Fixed Frame选择 rslidar

这时候你就能看到彩色的点云了。默认颜色是按高度(Z轴)映射的,红色高、蓝色低。

我的技巧: 调试时,我习惯把点云大小调成2,颜色按强度显示。这样能快速看出哪些区域反射强(比如路牌、反光条),对后续特征提取有帮助。

2.3.4 常见问题排查

如果你看不到点云,别慌。按这个顺序排查:

  • 第一步: 检查网络连接。雷达和电脑要在同一个网段。
  • 第二步: 检查驱动配置。IP、端口、数据包格式对不对。
  • 第三步: 检查话题。用rostopic hz /rslidar_points看帧率。
  • 第四步: 检查RViz的Fixed Frame。一定要设置成雷达的frame_id。

避坑指南: 我曾经折腾了一下午,发现点云就是不出来。最后发现是网线松了...所以,先检查物理连接,别一上来就怀疑代码。

2.4 本章小结

这一章我们聊了:

  • 三种激光雷达的原理和优缺点
  • 关键参数:线数、FOV、精度、帧率
  • ROS驱动的安装、启动和可视化

下一章,我们会把这些点云数据用起来——做激光SLAM的前端里程计。到时候你会发现,选对雷达,SLAM就成功了一半。

好,今天就到这里。有问题欢迎交流。