传感器基础与坐标系:从原理到实战

大家好,我是你们的老朋友。今天我们来聊聊多传感器标定里最基础、也最绕不开的一块——传感器本身和坐标系。

说实话,我刚入行那会儿,觉得标定就是调参数。后来踩了无数坑才明白:不懂传感器原理,你连数据噪声从哪来的都不知道;不懂坐标系,你连数据对齐都做不到。 这一章,咱们就把这两块硬骨头啃下来。

一、常见传感器:它们到底在“看”什么?

先说说我们最常用的四位“兄弟”:LiDAR、Camera、IMU、Radar。每个都有自己的脾气。

1. LiDAR(激光雷达)

LiDAR 的原理很简单——发射激光,测量反射时间,算出距离。它输出的是点云,也就是一堆三维坐标点 (x, y, z)。

我个人习惯把 LiDAR 比作“盲人摸象”:它摸到的每个点都是精确的,但整体形状要靠点云拼接。我在项目中遇到过一个问题:LiDAR 在雨天会打出大量噪点,因为雨滴也会反射激光。嗯,这时候就得靠滤波算法了。

关键参数: 线数(16线、32线、64线)、测距范围、精度(通常±2cm)、视场角(FOV)。

2. Camera(相机)

Camera 是“眼睛”,但它看到的只是二维像素。它靠的是光敏元件把光信号转成电信号。输出是图像,每个像素有 RGB 值。

说白了,Camera 没有深度信息。你想想看,一张照片里,远处的山和近处的树,在像素上都是平的。所以 Camera 做标定时,必须依赖内参(焦距、畸变系数)和外参(位置姿态)。

避坑指南: 我曾经因为相机畸变参数没标准,导致融合后的点云和图像对不上。后来老老实实拍了20张棋盘格,才把这事搞定。

3. IMU(惯性测量单元)

IMU 是“内耳”,它感知自身的加速度和角速度。输出是六轴数据:三轴加速度 (ax, ay, az) 和三轴角速度 (gx, gy, gz)。

IMU 有个致命缺点:漂移。你把它放桌上不动,它也会慢慢积累误差。为什么?因为加速度计和陀螺仪都有零偏,积分一次就变成速度误差,再积分一次就是位置误差。

我建议:IMU 一定要和 LiDAR 或 Camera 做紧耦合,用其他传感器来修正它的漂移。单独用 IMU 做定位?那是找死。

4. Radar(毫米波雷达)

Radar 发射电磁波,测量反射信号的多普勒频移来算速度。它输出的是目标列表,每个目标有距离、速度、角度。

Radar 不怕雨雪雾,这是它最大的优势。但它的角度分辨率很差,通常只有几度。所以 Radar 看到的物体,位置是模糊的。

我在项目中遇到过:Radar 把路边的金属护栏误判成静止车辆。后来加了速度阈值过滤,才解决。

传感器 输出数据 优点 缺点
LiDAR 点云 (x,y,z) 精度高,有深度 受天气影响大
Camera 图像 (RGB) 纹理丰富 无深度信息
IMU 加速度、角速度 高频、无漂移(短期) 长期漂移严重
Radar 目标列表 全天候 角度分辨率低

二、坐标系定义:数据对齐的“语言”

传感器数据要融合,首先得让它们“说同一种语言”。这个语言就是坐标系

1. 世界坐标系 (World Frame)

世界坐标系是全局的参考系。通常我们选东北天 (ENU)北东地 (NED)。在自动驾驶里,常用 ENU:X 轴指向东,Y 轴指向北,Z 轴指向天。

为什么要有世界坐标系?因为车在动,传感器在动,但世界是静止的。所有轨迹、地图,最终都要映射到世界坐标系里。

2. 车体坐标系 (Body Frame / Vehicle Frame)

车体坐标系是固定在车上的。通常:X 轴指向车头,Y 轴指向左侧,Z 轴指向车顶(右手系)。

注意: 不同车厂的定义可能不同。有的把 Y 轴指向右侧。标定前一定要确认好。我曾经因为坐标系定义不一致,导致融合结果差了半米。

3. 传感器坐标系 (Sensor Frame)

每个传感器都有自己的坐标系。比如 LiDAR 的坐标系原点在激光发射中心,Camera 的坐标系原点在光心。

传感器坐标系是局部的。标定的本质,就是求出传感器坐标系到车体坐标系的变换关系。

小技巧: 我习惯把所有传感器坐标系都统一成右手系。如果遇到左手系的传感器(比如某些深度相机),我会在代码里手动翻转一个轴。

三、坐标变换基础:旋转和平移

坐标变换说白了就是两件事:旋转平移

1. 旋转矩阵

旋转矩阵 R 是一个 3x3 的正交矩阵。它描述了一个坐标系相对于另一个坐标系的朝向。

比如,把点 p 从传感器坐标系转到车体坐标系:

p_body = R * p_sensor + t

其中 t 是平移向量。

2. 欧拉角 vs 四元数

旋转矩阵有 9 个参数,但自由度只有 3。所以实际中常用欧拉角(roll, pitch, yaw)或四元数(w, x, y, z)。

我个人习惯用四元数。为什么?因为欧拉角有万向锁问题。你想想看,当 pitch 接近 90° 时,roll 和 yaw 就分不清了。四元数没有这个问题。

3. 齐次变换矩阵

为了把旋转和平移写在一起,我们引入齐次坐标:

[p_body]   = [R  t] * [p_sensor]
[  1   ]     [0  1]   [   1    ]

这个 4x4 的矩阵就是齐次变换矩阵 T。标定就是求这个 T。

警告: 齐次变换矩阵的逆矩阵不是简单的转置!逆矩阵是 [R^T -R^T * t; 0 1]。我见过有人直接用转置当逆矩阵,结果标定全错了。

四、知识体系总览

下面这张图,是我自己总结的本章知识结构。你可以把它当作一个“地图”,随时回来对照。

多传感器时空标定知识体系 传感器原理 LiDAR Camera IMU Radar 坐标系定义 世界坐标系 车体坐标系 传感器坐标系 坐标变换基础 旋转矩阵 欧拉角/四元数 齐次变换矩阵 核心目标:求传感器→车体的齐次变换矩阵 T ⚠️ 常见坑点 1. 坐标系定义不一致(左右手系、轴方向) 2. 齐次变换矩阵求逆时用了转置 3. 欧拉角万向锁导致标定失败

五、实战中的一点体会

讲完理论,我想分享一点实战经验。

标定不是一次性的。 传感器会随着时间、温度、振动发生微小的形变。我建议每次上线前,都跑一遍在线标定,检查外参是否还准。

另外,数据同步也很关键。如果 LiDAR 和 Camera 的时间戳没对齐,你标出来的外参就是错的。嗯,这个我们下一章会详细讲。

我的习惯: 每次标定完,我都会把外参矩阵打印出来,看一眼旋转矩阵的行列式是不是接近1(正交性检查)。如果偏离太多,说明标定有问题。

好了,这一章的内容就到这里。传感器原理和坐标系是标定的地基,地基不稳,上层建筑全是白搭。希望你能把这些基础打牢,后面我们才能玩更高级的。


专注资料整理