第1章:传感器基础——激光雷达与相机,到底是怎么“看”世界的?
各位同学,欢迎来到《激光雷达点云与视觉图像融合方法》的第一课。
我是你们这趟旅程的向导。在自动驾驶这个行当里摸爬滚打了快十年,我踩过不少坑,也积累了一些心得。今天咱们聊点最基础的——传感器本身。
你想想看,要让车自己开,首先得让它“看见”世界。怎么看见?靠的就是激光雷达和相机。但这两兄弟的“眼神”完全不一样。一个靠发射激光,一个靠捕捉光线。搞懂它们各自的工作原理,是融合的第一步,也是最重要的一步。
1.1 激光雷达:用光丈量世界的“尺子”
激光雷达,英文叫LiDAR。说白了,它就是一把高精度的“光尺子”。它向目标发射一束激光,然后等着反射回来。通过计算光从发射到返回的时间,就能知道目标有多远。
目前主流的测距原理有两种:TOF和FMCW。我个人的习惯是,把TOF比作“秒表”,把FMCW比作“调频收音机”。
1.1.1 TOF(飞行时间法):简单粗暴的“秒表”
TOF的原理非常直观。激光器发射一个极短的脉冲,同时启动一个计时器。当反射回来的光被探测器接收,计时器停止。时间差Δt乘以光速c,再除以2(因为光走了个来回),就是距离d。
d = (c * Δt) / 2
嗯,这里要注意。光速是3×10⁸ m/s,所以时间测量必须极其精确。1纳秒的误差,对应15厘米的距离偏差。我在项目里遇到过,早期的一些TOF雷达,测距精度受限于计时芯片的精度,远距离目标(比如100米外的车)测出来会抖得厉害。
核心特点:
- 优点:技术成熟,成本相对低,目前市面上90%的车规级激光雷达都是TOF方案。
- 缺点:容易受环境光干扰(太阳光直射时信噪比下降),多台雷达同时工作可能互相串扰。
避坑指南:我曾经在测试高速场景时,发现TOF雷达对黑色车辆的反射率极低,经常“漏检”。后来我们调整了接收器的增益算法,才解决了这个问题。所以,做融合时,千万别只看距离,反射率信息也很关键。
1.1.2 FMCW(调频连续波):自带“速度滤镜”的雷达
FMCW的原理要稍微绕一点。它不发射脉冲,而是发射一束频率随时间线性变化的连续波。这就像你对着山谷喊一声,但你的声音频率在“呜——呜——”地变化。
当这束波碰到目标反射回来,它的频率和当前发射的频率之间会有一个差值,这个差值叫做“拍频”。通过测量拍频,就能同时解算出距离和速度。为什么会这样?因为多普勒效应。目标运动会导致反射波的频率发生偏移。
距离 d = (c * Δf * T) / (2 * B)
速度 v = (λ * f_d) / 2
(其中Δf是拍频,T是调制周期,B是带宽,λ是波长,f_d是多普勒频移)
我个人非常看好FMCW。它最大的优势是“抗干扰”和“自带速度信息”。你想想看,在复杂的城市道路,如果所有车都用TOF雷达,大家互相发射脉冲,很容易“打架”。但FMCW不同,每台雷达可以有自己的“频率指纹”,互不干扰。而且,它能直接测出目标的瞬时速度,这对预测行人或车辆的轨迹太重要了。
注意:FMCW目前成本较高,技术门槛也更高。但我觉得,未来3-5年,它会逐渐成为高端自动驾驶的主流选择。做融合算法时,如果你能拿到FMCW雷达的原始“拍频”数据,那能做的事情就太多了。
1.2 相机:用“小孔成像”复刻人眼
相机的工作原理,其实几百年前就定下来了——小孔成像。但现代相机要复杂得多,它涉及到如何把三维世界投影到二维平面上,以及如何解决镜头带来的“失真”问题。
1.2.1 针孔模型:理想化的“透视眼”
针孔模型是相机成像的数学基础。它假设光线通过一个无限小的孔(光心),在后面的成像平面上形成倒立的像。这个模型虽然简单,但非常有用。它定义了四个坐标系之间的转换关系:世界坐标系 → 相机坐标系 → 图像坐标系 → 像素坐标系。
核心公式就是那个经典的投影矩阵:
s * [u, v, 1]^T = K * [R | t] * [X, Y, Z, 1]^T
其中,K是内参矩阵(焦距、主点坐标),[R|t]是外参矩阵(旋转和平移)。
我记得刚入行时,为了标定这个内参矩阵,我拿着棋盘格在车前摆了上百个姿势。那时候觉得枯燥,后来才发现,内参标定不准,后面的所有融合都是空中楼阁。你想想看,如果相机把直线拍成了曲线,那激光雷达的点云怎么跟它对齐?
关键点:针孔模型是“理想”的。它假设镜头没有畸变,成像平面完全垂直于光轴。但现实中的镜头,尤其是广角镜头,不可能这么完美。
1.2.2 畸变:镜头带来的“哈哈镜”效应
现实中的镜头,为了让更多光线进入,或者为了获得更宽的视野,会引入畸变。主要有两种:
- 径向畸变:光线在镜头边缘弯曲得更厉害。表现为“桶形畸变”(图像向外凸)或“枕形畸变”(图像向内凹)。
- 切向畸变:镜头与成像平面不平行导致的。表现为图像像被“拧”了一下。
畸变矫正的数学模型通常用多项式来表示:
x_corrected = x * (1 + k1*r^2 + k2*r^4 + k3*r^6) + [2*p1*x*y + p2*(r^2 + 2*x^2)]
y_corrected = y * (1 + k1*r^2 + k2*r^4 + k3*r^6) + [p1*(r^2 + 2*y^2) + 2*p2*x*y]
(其中k1, k2, k3是径向畸变系数,p1, p2是切向畸变系数,r是点到图像中心的距离)
实战经验:我曾经在一个项目中,直接用OpenCV的默认参数去畸变,结果发现图像边缘的物体位置偏差了十几个像素。后来我仔细检查,发现是畸变系数标定得不够准。我的建议是:标定相机时,一定要覆盖整个视场角,尤其是边缘区域。多拍几张不同角度的棋盘格照片,别偷懒。
1.3 小结:两种传感器,两种“世界观”
好了,我们来总结一下。激光雷达和相机,一个像“盲人摸象”里的盲人,用触觉(激光)感知距离;一个像明眼人,用视觉感知纹理和颜色。
| 特性 | 激光雷达(TOF/FMCW) | 相机(针孔模型) |
|---|---|---|
| 核心数据 | 3D点云(x, y, z, 反射率) | 2D图像(R, G, B) |
| 优势 | 精确测距,不受光照影响 | 丰富的语义信息(颜色、纹理) |
| 劣势 | 稀疏,无颜色信息,受天气影响 | 缺乏深度,受光照影响大 |
| 融合价值 | 提供“骨架”和“深度” | 提供“血肉”和“语义” |
搞懂了这些基础,你才能理解为什么我们要做融合。说白了,就是让激光雷达的“骨架”穿上相机的“衣服”,让车既能知道“前面3米有个人”,也能知道“那个人穿的是红色衣服”。
下一章,我们会深入聊聊这两种数据在空间上如何对齐——也就是联合标定。那是融合的“地基”,打不好,楼就盖不高。咱们下节课见。
公众号:蓝海资料掘金营,微信deep3321