3、传感器模型:激光雷达原理、声呐模型、深度相机模型、传感器噪声特性

各位同学,欢迎来到第三讲。今天咱们聊聊占用网格的「眼睛」——传感器模型。

做机器人感知这些年,我最大的体会是:算法再漂亮,传感器数据一塌糊涂,结果就是白搭。说白了,占用网格的精度上限,其实是由传感器决定的。你想想看,如果激光雷达扫出来的点都是歪的,那网格再精细也没用。

这一章,我会把三种主流传感器——激光雷达、声呐、深度相机——的原理和噪声特性掰开揉碎了讲。嗯,都是我在项目里踩过的坑,希望能帮你少走弯路。

3.1 激光雷达原理:从TOF到三角测距

激光雷达,目前占用网格里用得最多的传感器。它的核心任务就一个:测距。怎么测?主流有两种方法。

3.1.1 TOF(飞行时间法)

原理很简单:发射一束激光,打到物体上反射回来,记录时间差。距离 = 光速 × 时间差 / 2。

我个人习惯用TOF雷达做室外项目。为什么?因为它抗干扰能力强,测距远。我在做园区无人车时,用的就是16线TOF雷达,最远能测100米。

关键参数:

  • 测距精度:通常 ±2cm ~ ±5cm
  • 最大测距:几十米到上百米
  • 更新频率:10Hz ~ 20Hz

3.1.2 三角测距法

另一种是三角测距。激光发射器和接收器之间有固定基线,通过光斑在成像传感器上的偏移量,用三角几何算出距离。

这种方案成本低,但精度随距离增加急剧下降。我曾经在室内扫地机器人上用过,近距离(<1米)精度不错,超过3米就开始飘了。

避坑指南: 我曾经在项目中混用TOF和三角测距雷达做融合,结果发现远距离时三角测距的噪声方差比TOF大一个数量级。后来统一用了TOF,数据一致性才好起来。

3.2 声呐模型:超声波的那些事儿

声呐,说白了就是超声波传感器。它发射声波,等回声回来,算时间差。原理和TOF激光雷达类似,但声速比光速慢得多,所以精度也差得多。

为什么还要用声呐?两个原因:便宜不怕透明物体。激光打在玻璃上直接穿透,声呐能反射回来。我在做水下机器人时,声呐是唯一的选择。

3.2.1 声呐的锥形模型

声呐不是一条线,而是一个锥形波束。通常开角在30°~60°之间。这意味着:你只知道某个距离上有物体,但不知道具体在锥形里的哪个位置

在占用网格里,我们通常用「反演模型」来处理:

  • 锥形中心方向:高概率占用
  • 锥形边缘:低概率占用
  • 锥形内部但距离更近:空闲

我的经验: 声呐数据做占用网格时,千万别用「点」模型。一定要用「区域」模型。否则你会得到一堆假障碍物。

3.2.2 声呐的噪声特性

噪声类型 典型值 影响
距离噪声 ±1cm ~ ±5cm 近距离还行,远距离飘
角度噪声 ±5° ~ ±15° 方向不确定,网格模糊
多径反射 随机 产生假回波,最头疼

为什么会这样?因为声波波长长,容易衍射,也容易在墙角、桌腿之间来回弹。我曾经在实验室里用声呐建图,结果墙角处总是多出一块「虚拟障碍物」,后来发现是声波在两面墙之间弹了三次才回来。

3.3 深度相机模型:RGB-D的利与弊

深度相机,比如Kinect、RealSense、Intel D435,这几年很火。它同时输出彩色图和深度图,每个像素对应一个距离值。

3.3.1 结构光 vs ToF

深度相机也分两种:

  • 结构光:投射红外光斑,通过变形计算深度。室内效果好,室外见光死。
  • ToF深度相机:和激光雷达类似,但用面阵接收。室外勉强能用,但精度不如结构光。

我个人习惯:室内用结构光,室外用ToF。但要注意,深度相机普遍有「空洞」问题——黑色物体、反光表面、远距离,都会导致深度值缺失。

3.3.2 深度相机的噪声模型

深度相机的噪声不是均匀的。它和距离的平方成正比。也就是说:

噪声方差 ∝ 距离²

举个例子:1米处噪声±1cm,3米处噪声可能就±9cm了。所以深度相机通常只适合3米以内的场景。

重要结论: 在占用网格中,深度相机的远距离数据置信度很低。我建议只保留2米以内的深度数据用于建图,超过2米的直接丢弃。

3.4 传感器噪声特性:统一建模思路

好了,三种传感器都讲完了。现在问题来了:怎么把这些噪声统一到占用网格里?

我的做法是:用概率模型描述每个传感器的测量不确定性

3.4.1 通用噪声模型

对于任意传感器,我们可以把测量值建模为:

z = z_true + ε

其中 ε 是噪声,通常假设为高斯分布:

ε ~ N(0, σ²)

但实际中,噪声往往不是纯高斯。比如激光雷达有「混叠噪声」,声呐有「多径噪声」,深度相机有「空洞噪声」。这些都需要单独处理。

3.4.2 传感器融合时的权重分配

在占用网格更新时,不同传感器的数据权重应该不同。我常用的经验公式:

传感器 权重系数 适用场景
激光雷达(TOF) 1.0 室外、远距离
激光雷达(三角) 0.5 室内、近距离
声呐 0.3 水下、透明物体
深度相机 0.7 室内、近距离

一个小技巧: 我通常在代码里把权重做成可配置参数。不同场景调一调,比死记硬背公式管用多了。

3.5 实战:传感器噪声标定

最后,分享一个我常用的标定方法。说白了,就是拿传感器去测已知距离的平面,然后统计误差分布。

步骤很简单:

  1. 把传感器固定,正对一面白墙
  2. 从0.5米到5米,每隔0.5米记录100次测量值
  3. 计算每个距离下的均值和方差
  4. 拟合出噪声模型参数

我曾经用这个方法标定过一个国产激光雷达,发现它在2米处的噪声方差比标称值大了3倍。嗯,后来果断换了供应商。

注意: 标定环境要干净。别在杂乱的房间里标定,否则你测出来的噪声里混了真实物体的反射,数据就废了。

好了,这一章就到这里。传感器模型是占用网格的基石,理解透了,后面的建图、定位、规划才能稳。下一章我们讲「贝叶斯更新与占用网格的数学推导」,嗯,有点硬核,但我会尽量讲得接地气。

有什么问题,欢迎在评论区留言。咱们下期见。