1. 外参标定概述

大家好,我是你们这门课的主讲。今天咱们聊聊外参标定——这个在BEV感知里绕不开的话题。

说实话,我刚开始做自动驾驶感知那会儿,对外参标定这事儿并不上心。总觉得算法调好了,模型训好了,车就能跑。结果呢?第一次路测,BEV空间里的障碍物位置全飘了,跟实际偏差了快半米。排查了半天,最后发现是摄像头松了,外参变了。嗯,从那以后,我再也不敢小看标定这件事了。

1.1 为什么BEV感知需要外参标定?

先问大家一个问题:BEV感知的核心是什么?

说白了,就是把多个摄像头看到的2D图像,统一映射到一个俯视的鸟瞰图里。这个映射过程,依赖的就是每个摄像头的外参。

外参是什么?它描述了摄像头在车身上的位置和朝向。包括旋转(roll、pitch、yaw)和平移(x、y、z)。

你想想看,如果外参不准,会发生什么?

  • 同一个物体,在相邻两个摄像头画面里,映射到BEV空间后位置对不上
  • 车道线拼接处出现断裂或错位
  • 障碍物的朝向、距离估计全乱套

我在项目中遇到过最典型的一个案例:某次夜间测试,车辆明明在车道正中间,BEV显示却偏了30厘米。查了两天,最后发现是后视摄像头因为颠簸,yaw角偏了0.5度。0.5度啊兄弟们,在50米外就是将近半米的误差。

核心结论:外参标定是BEV感知的"地基"。地基不稳,上层算法再强也白搭。

1.2 外参标定的核心目标

外参标定要解决什么问题?我总结为三个层次:

  1. 精确性:让每个摄像头的投影误差尽可能小。通常要求重投影误差小于1个像素。
  2. 一致性:多个摄像头之间的相对关系要自洽。不能出现A和B重叠区域里,同一个物体在两个视角下位置差很多。
  3. 鲁棒性:标定结果能应对车辆振动、温度变化等实际工况。说白了,不能今天标好了,明天开一圈又偏了。

我个人习惯把这三个目标记成"三性法则"。每次做标定,我都会问自己:精度够不够?一致性好不好?鲁棒性强不强?

1.3 评价指标:怎么才算标得好?

光说"标得好"太虚了。咱们得用数字说话。我常用的评价指标有这几个:

指标名称 含义 经验阈值
重投影误差 3D点投影到2D图像后,与真实2D点的像素距离 < 1.0 pixel
BEV拼接误差 相邻摄像头在BEV空间重叠区域内的位置偏差 < 10 cm @ 30m
标定残差 优化后的外参与初始值的差异 旋转 < 0.1°,平移 < 1 cm
重复性 多次标定结果之间的标准差 旋转 < 0.05°,平移 < 0.5 cm

我的经验:重投影误差是最直观的指标,但别只看它。我见过重投影误差0.8像素,但BEV拼接误差却到了15厘米的情况。为什么?因为重投影误差只衡量单相机内部一致性,不衡量多相机之间的相对关系。所以,一定要综合看。

1.4 外参标定的知识体系

为了让大家有个整体认知,我画了一张图。这张图展示了外参标定的核心逻辑和知识结构。

外参标定知识体系 外参标定 精确性 一致性 鲁棒性 重投影误差 BEV拼接误差 标定残差 重复性 在线标定 离线标定 量产车下线标定 售后维修标定 OTA在线自标定 传感器更换标定 外参标定 = 精确性 + 一致性 + 鲁棒性

避坑指南:我曾经犯过一个低级错误——标定完只看重投影误差,觉得0.6像素很完美。结果上路测试,BEV拼接处车道线错位严重。后来才发现,我用的标定板太小,覆盖不了整个视场角。边缘区域的外参其实没标好。所以,标定板的尺寸和位置一定要覆盖实际使用场景。

1.5 一个小例子:外参不准的影响

咱们用代码模拟一下。假设前视摄像头外参的yaw角偏了0.3度,看看50米外的物体位置会偏多少:

import numpy as np

# 假设摄像头高度1.5m,俯仰角0度
camera_height = 1.5  # 米
yaw_error = np.deg2rad(0.3)  # 0.3度偏角
distance = 50.0  # 米

# 横向偏移量
lateral_error = distance * np.sin(yaw_error)
print(f"50米外横向偏移: {lateral_error:.3f} 米")
# 输出: 50米外横向偏移: 0.262 米

# 如果距离100米
lateral_error_100 = 100.0 * np.sin(yaw_error)
print(f"100米外横向偏移: {lateral_error_100:.3f} 米")
# 输出: 100米外横向偏移: 0.524 米

看到了吗?0.3度的yaw误差,在50米外就偏了26厘米。这要是做车道保持,车早就压线了。

所以,外参标定这件事,精度要求比你想象的高得多。

我的建议:做BEV感知的同学,一定要把外参标定当成一个持续迭代的过程。不是标一次就完事了。车辆使用过程中,振动、温度变化、甚至洗车时的高压水枪,都可能让外参发生微小变化。我现在的习惯是:每次路测前,先跑一遍在线标定检查,确认外参没问题再开始测算法。

好了,这一章咱们把外参标定的"为什么"和"是什么"讲清楚了。下一章,我会带大家深入外参标定的数学原理,包括坐标系变换、旋转矩阵、李代数这些硬核内容。到时候咱们再聊。

可可精品资料库