🧠 第十章 交通与智驾:构建安全高效出行解决方案
📄 一句话概括

摄像头噪声 0.45 米、雷达 0.12 米(但 6% 是多径离群)。 只用雷达 RMSE 0.715 米,比只用摄像头的 0.452 还差。 逆方差加权算出来 0.668 米,比等权平均的 0.420 更差——因为噪声模型被那 6% 破坏了。 加一道门限回退到预测,降到 0.156 米。

📝 本节和前面几节的关系

10.2 讲的是交通管理,这一节进到车本身。智驾的第一层是感知:先得知道旁边有什么、在哪儿。

一、融合不是求平均

车上装多种传感器:摄像头看得懂颜色和形状,雷达测得准距离和速度。 两者的误差结构完全不同,所以「合起来用」比「用一个」准。 最直觉的融合是平均:(摄像头 + 雷达) ÷ 2。再进一步是按精度加权: 准的那个权重大,粗糙的那个权重小。 这个权重用噪声方差的倒数,是理论上最优的(逆方差加权)。 但「理论上最优」有个前提:每路的噪声都是零均值高斯。 这个前提一旦破了,最优公式会变成最差方案之一。这一节就是看这件事怎么发生的。 还有一个常被忽略的第三路:上一帧的预测。它不属于任何传感器, 但在两路打架的时候,它是最有判断力的那个。

二、单雷达为什么输给摄像头

方案 参数 RMSE
只用摄像头 σ=0.45 0.452 米
只用雷达 σ=0.12,6% 离群 0.715 米
只用上一帧预测 σ=0.25 0.252 米
等权平均 — 0.420 米
逆方差加权 — 0.668 米
加权 + 门限回退 — 0.156 米
只用雷达 0.715 米,比只用摄像头的 0.452 米还差。
可是雷达的噪声只有 0.12 米——问题出在那 6% 的多径离群值上。
一个偏 3 米的点,平方之后是 9。均方误差里,一个离群值要几十个精确点才平得回来。
这就是 RMSE 的脾气:它对极端值极其敏感。
只用上一帧预测 0.252 米,居然比两个传感器都好。这听起来反常,但它说明一件事:
当传感器都有问题时,「什么都没测、只靠惯性推」反而是个不差的基线。

三、逆方差加权为什么翻车

等权平均 0.420 米,逆方差加权 0.668 米。 加权公式把 93% 的权重给了雷达,于是离群值也按 93% 的力度被吃进来。 加权公式没错,是噪声模型错了。公式假设「雷达的误差是 0.12 米的高斯噪声」, 而实际还叠了 6% 的、偏 3 米的粗差。 这一条在工程上非常常见:任何「按理论最优配权」的方案,在噪声分布有重尾的时候都会翻车。 重尾来自多径、反光、遮挡、故障——它们不是高斯。 所以「最优」这个词必须带前提。不知道噪声分布的时候, 等权平均反而更稳——它至少不会被某一路的粗差带跑。

四、门限 + 回退到预测

修法不是在权重上下功夫,是先判断这一帧的两路能不能一起用。规则很土: 两路相差超过 1 米,就不要任何一路,改用上一帧预测。 结果 0.156 米,比所有方案都好,而且比雷达单独的 0.715 好了一个数量级。 为什么回退到预测,而不是「选一路」?因为两路打架时,你并不知道谁错。选一路有一半概率选错, 而预测值是独立的第三意见,不偏向任何一方。 这也是跟踪器真正的作用。很多人以为卡尔曼滤波是用来「平滑轨迹」的, 其实它最关键的贡献是这个:在两路矛盾的瞬间,还有第三个参考。 工程上的完整顺序就是:先剔除粗差,再融合,最后平滑。 顺序反了,剔粗差那一步就没法做——因为平滑后的值已经混进了粗差。

五、落地:四层

① 每路都要有健康度。 不是「通/断」二值,而是实时的噪声估计(用连续帧的残差算)。 健康度掉了就自动降权,不用等人发现。 ② 粗差要单独处理,不要混进融合。门限、鲁棒损失(Huber)、RANSAC,任选一种。 关键是「先判后融」,不要「边融边判」。 ③ 融合之后要有一致性检查。融合值离预测值太远时,宁可不信融合结果。 这一条能挡住「所有传感器一起错」的共模故障。 ④ 记录原始数据。 出了事故要能回放每一路的原始输出,而不是只有融合后的结果。 这是责任划分的唯一依据。 最后一句:融合的上限由「最差的那一路」决定,不是由最好的那一路决定。所以多装一个传感器之前, 先想清楚它的失效模式。

六、动手 Demo:感知融合:加权后 0.67 米,反而比等权 0.42 米更差;加门限才到 0.16 米

造 3000 个目标真值,摄像头加 σ=0.45 米的高斯噪声,雷达加 σ=0.12 米噪声、 并随机让其中 6% 再叠一次 σ=3 米的多径误差;另造一个 σ=0.25 米的「上一帧预测」值。 比较只用单路、等权平均、逆方差加权、以及「两路相差超 1 米就回退预测」的 RMSE。

cam = x + rg.normal(0.0, 0.45, n)
radar = x + rg.normal(0.0, 0.12, n)
idx = rg.random(n) < 0.06                      # 6% 多径
radar[idx] += rg.normal(0.0, 3.0, idx.sum())
pred = x + rg.normal(0.0, 0.25, n)

w1, w2 = 1.0 / 0.45 ** 2, 1.0 / 0.12 ** 2
wavg = (w1 * cam + w2 * radar) / (w1 + w2)     # 逆方差加权

gap = np.abs(cam - radar)
mix = np.where(gap > 1.0, pred, wavg)          # 门限 + 回退

实跑输出:

--------------------------------------------------------------------
感知融合:加权后 0.67 米,反而比等权 0.42 米更差;加门限才到 0.16 米
--------------------------------------------------------------------
  目标数                   3000
  摄像头噪声               σ = 0.45 米
  雷达噪声                 σ = 0.12 米,另加 6% 多径离群
  门限                     两路相差超 1.0 米就改用上一帧预测

  方案                         参数   RMSE(米)
  -------------------------------------------
  只用摄像头                   0.45      0.452
  只用雷达          0.12(6% 离群)      0.715
  只用上一帧预测               0.25      0.252
  等权平均                        —      0.420
  逆方差加权                      —      0.668
  加权 + 门限回退                 —      0.156

  **只用雷达 0.71 米,比只用摄像头 0.45 米还差。**
  **雷达本身准得多(0.12 对 0.45),是那 6% 的离群值把整体拖垮了。**
  **一个偏 3 米的点,平方之后是 9;要几十个精确的点才平得回来。**
  等权平均 **0.42 米**——比两路单独用都好,**因为误差方向不同,平均时互相抵消了。**
  **逆方差加权反而更差(0.67 米)**,这是本节最反直觉的一行。
  **加权公式假设「每路噪声都是零均值高斯」——而这个前提被那 6% 破坏了。**
  **权重给了雷达 0.93,等于把离群值按 93% 的力度吃进来。**
  **公式没错,是噪声模型错了。这是「按理论最优配权」最典型的翻车方式。**
  加一道门限:两路差超过 1 米就**不用任何一路**,改用上一帧预测(0.25 米)→
  **掉到 0.16 米,比所有方案都好。**
  为什么回退到预测而不是选一路?**因为两路打架时,你并不知道谁错。**预测值是独立的第二意见。
  **这也是跟踪器真正的作用:不是「平滑」,是「在两路矛盾的瞬间还有第三个参考」。**
  要说明:这里的离群是「加 3 米高斯噪声」模拟的多径,
  **真实多径成片出现(隧道、金属护栏旁),不是独立随机。**实际要按路段统计,不能假设 6% 均匀分布。

表里有两行反直觉:单雷达比单摄像头差,加权比等权差。 两个「反直觉」来自同一个原因:那 6% 的粗差。 等权平均 0.420 米这件事值得单独说一句——它比两路单独用都好, 因为误差方向不同,平均时互相抵消了。 这就是多传感器的原始价值:不需要任何模型,平均就有效。 加权 0.668 米是这一节的核心。 它证明「理论最优」在噪声模型错的时候会变成次优。 所以不要一上来就调权重,先看看噪声是不是高斯的。 门限回退 0.156 米——比雷达单独的 0.715 好了一个数量级。 关键在于「两路打架就都不信」,而不是「挑一个信」。 要说明:真值、噪声、离群比例都是我设的, 而且离群是独立随机的;真实多径成片出现(隧道、金属护栏旁),不是均匀分布。 所以实际标定要按路段统计,不能直接套这里的 6%。

30 秒实验

  1. 把离群比例从 6% 降到 1%,看逆方差加权那一行。 会降到 0.15 米左右——粗差少了,理论上最优就真的最优了。
  2. 把门限从 1.0 米改成 0.3 米(更严),看回退那一行。 会变差:太多正常帧被误判成「打架」,全都回退到预测。
  3. 把预测的噪声从 0.25 米加到 0.5 米,看重算的回退结果。 会变差到 0.3 米上下——回退的兜底也是有质量要求的。

常见误区

  1. 「多传感器一定比单个准」。雷达被 6% 粗差拖到 0.715 米,比摄像头单用还差。
  2. 「按噪声方差加权是理论最优」。前提是高斯,有粗差时它反而最差。
  3. 「两路不一致就选更可靠的那一路」。你并不知道谁错,回退到独立的预测值更稳。
自测三问(点开对答案) 1. 为什么噪声更小的雷达反而比摄像头差? —— 因为 6% 的样本叠加了 3 米量级的多径粗差。RMSE 对极端值敏感,少数粗差就能主导整体误差。 2. 逆方差加权为什么在这组数据上翻车? —— 它假设每路噪声是零均值高斯。粗差破坏了这个前提,而它把 93% 的权重给了雷达,等于把粗差放大。 3. 为什么门限触发后回退到预测,而不是选一路? —— 两路冲突时无法判断谁错,选一路有一半概率选错。预测值是独立的第三意见,不偏袒任何一方。

感知给出「周围有什么」,接下来是「那我该怎么办」。下一节看跟车这一个动作背后有多少取舍。

相关笔记