第2章:激光雷达模型(Lidar)

2.1 激光雷达工作原理

激光雷达这东西,说白了就是「用光来测距」。我刚开始接触时也觉得挺玄乎,后来拆开一个Velodyne的激光雷达才明白——原理其实不复杂。

核心思路就三步:

  • 发射激光脉冲:激光器发出一个极短的光脉冲
  • 接收反射信号:光打到物体表面后反射回来
  • 计算飞行时间:用光速乘以时间差,距离就出来了

公式很简单:距离 = (光速 × 飞行时间) / 2。除以2是因为光走了个来回。

我在项目中遇到过一个问题:激光雷达在雨雾天气下性能下降特别明显。为什么?因为水滴会散射激光,导致回波信号变弱甚至丢失。嗯,这个后面讲噪声模型时会细说。

关键参数速查表

参数典型值说明
波长905nm / 1550nm905nm便宜但人眼安全受限,1550nm功率更高
线数16 / 32 / 64 / 128线数越多,点云越密
水平视场角360°机械式旋转扫描
垂直视场角30°~45°不同型号差异大
测距精度±2cm~±5cm受温度和反射率影响

2.2 Apollo中的激光雷达模型配置

Apollo的激光雷达模型配置,我建议你重点关注两个文件:lidar_params.pb.txt 和 lidar_model_params.pb.txt。前者定义硬件参数,后者定义仿真模型参数。

举个例子,一个64线激光雷达的配置大概长这样:

# lidar_params.pb.txt
lidar_name: "velodyne_hdl64"
channel: 64
horizontal_resolution: 0.17  # 度
vertical_fov_min: -24.8      # 度
vertical_fov_max: 2.0        # 度
max_range: 120.0             # 米
min_range: 0.5               # 米
rotation_frequency: 10.0     # Hz

你想想看,为什么垂直视场角不对称?因为激光雷达通常安装在车顶,需要更多向下看的线束来检测近处地面和障碍物。我曾经调过一辆车的参数,发现垂直角度偏移了0.5度,结果地面点云全飘了——后来发现是安装支架变形了。

避坑指南:我曾经把水平分辨率设得太高(0.1度),结果点云数据量爆炸,CPU直接跑满。后来我学乖了——仿真时用0.2度,实际部署时根据算力调整。

2.3 光束模型与射线模型

这两个模型是激光雷达仿真的核心。我简单解释一下:

  • 光束模型(Beam Model):把激光看作一束有宽度的光锥。它更接近物理真实,但计算量大。
  • 射线模型(Ray Model):把激光看作一条无限细的射线。计算快,但精度稍差。

Apollo里默认用的是射线模型。为什么?说白了就是快。你想想看,一帧点云可能有几十万个点,每个点都做光束模型的光锥计算,那CPU得冒烟。

但射线模型有个坑:它容易漏掉小物体。比如一根细电线杆,射线可能刚好从旁边擦过,而光束模型因为有一定宽度,反而能检测到。我在做高速公路场景测试时就遇到过——射线模型死活检测不到路边的细杆,换成光束模型就好了。

模型对比

特性光束模型射线模型
物理真实度高中
计算开销高低
小物体检测好差
Apollo默认否是

2.4 噪声模型与遮挡模拟

激光雷达的噪声,我归纳为三类:

  1. 高斯噪声:测距时的随机误差,服从正态分布。典型标准差2~5cm。
  2. 反射率噪声:低反射率物体(如黑色轮胎)回波弱,测距精度下降。
  3. 运动畸变:车辆运动导致点云变形。这个在Apollo里通过运动补偿解决。

遮挡模拟就更有意思了。激光雷达是直线传播的,所以物体后面必然有盲区。Apollo的遮挡模拟算法很简单:

# 伪代码示意
for each laser_ray:
    hit_point = raycast(scene, ray)
    if hit_point exists:
        mark hit_point as visible
        # 从hit_point往后,所有点都标记为遮挡
        mark_occluded_points(hit_point, ray.direction)

我曾经在停车场场景里吃过亏——一辆SUV后面藏着个小孩,激光雷达完全没扫到。后来我在仿真里专门加了遮挡测试用例,确保感知算法能处理这种「突然冒出来」的情况。

注意:遮挡模拟不是简单的「看不见就完事」。实际中,激光可能会从物体边缘「漏」过去,形成部分遮挡。Apollo的模型目前还做不到这么精细,但已经够用了。

知识体系总览

下面这张图是我自己画的,帮你理清本章的核心逻辑:

激光雷达模型 工作原理 模型配置 光束模型 vs 射线模型 激光发射 回波接收 TOF计算 硬件参数 仿真参数 物理真实度 vs 计算效率 噪声模型 + 遮挡模拟 工作原理 模型配置 模型对比与噪声

这张图把本章内容串起来了。你从中心节点出发,沿着三条分支走一遍,基本就能把握住激光雷达模型的整体脉络。

个人建议:刚开始做激光雷达仿真时,别急着调噪声参数。先把射线模型跑通,确认点云能正确生成,再一步步加噪声和遮挡。我见过太多人一上来就调高斯噪声,结果点云都飘到天上去了还不知道为什么。

好了,这一章就到这里。激光雷达模型说复杂也复杂,说简单也简单——核心就是「发射-接收-计算」这三板斧。你只要把光束模型和射线模型的取舍想清楚,噪声和遮挡的坑踩一遍,后面做传感器融合就轻松多了。

可可精品资料库