一、传感器校准基础原理
(一)校准核心目标
自动驾驶系统依赖激光雷达(LiDAR)和摄像头的协同感知环境,校准的核心是建立两者之间的空间坐标转换关系,确保同一物理目标在两种传感器数据中的坐标统一。具体包括:
- 外参校准:求解激光雷达与摄像头之间的旋转矩阵(R)和平移向量(T),实现三维点云与二维图像的坐标映射。
- 内参校准:针对摄像头,确定焦距、主点坐标、畸变系数等参数;针对激光雷达,修正测距误差、角度偏移等硬件特性。
- 时间同步:消除传感器数据采集的时间差(通常要求误差 < 1ms),避免运动状态下的时空错位。
(二)坐标系定义
- 激光雷达坐标系:以激光雷达中心为原点,X 轴向前,Y 轴向左,Z 轴向上(右手坐标系)。
- 摄像头坐标系:以镜头光学中心为原点,X 轴向右,Y 轴向下,Z 轴向前(遵循图像坐标系惯例)。
- 世界坐标系:以校准板中心或车辆后轴中心为基准,用于统一多传感器坐标。
二、激光雷达校准技术
(一)内参校准
- 测距误差校准:
- 使用高精度测距仪(如激光跟踪仪)在不同距离(5m、10m、50m)测量标准靶标的实际距离,对比激光雷达输出值,建立误差补偿模型(如线性修正:d_corrected = k*d_measured + b)。
- 环境补偿:记录不同温度(-20℃~60℃)和湿度下的测距偏差,加入温度传感器实现动态校准。
- 角度偏差校准:
- 利用多面体校准靶(如正十二面体),通过激光雷达扫描靶面法线方向,计算水平角和垂直角的偏移量,生成角度修正表。
- 配置示例(激光雷达内参文件):
{ "angle_correction": { "horizontal": [0.01, 0.02, ..., -0.01], // 水平角修正值(每线) "vertical": [-0.03, -0.02, ..., 0.02] // 垂直角修正值(每线) }, "distance_correction": {"k": 1.002, "b": -0.05}}
(二)外参校准(与车身坐标系)
- 校准工具:平面校准板(带棋盘格或二维码)、高精度全站仪。
- 流程:
- 将校准板固定在已知坐标的位置(如(5m, 0, 0)),激光雷达扫描获取点云。
- 提取校准板平面方程,计算其在激光雷达坐标系中的位置。
- 通过 3 组以上不同位置的校准数据,求解激光雷达到车身坐标系的转换矩阵。
三、摄像头校准技术
(一)内参校准
- 棋盘格校准法:
- 使用打印的棋盘格模板(如 8×6 格,方格边长 20mm),在不同角度(至少 10 组)拍摄图像。
- 通过 OpenCV 的calibrateCamera函数计算内参矩阵(K)和畸变系数(k1, k2, p1, p2, k3):
import cv2import numpy as npobjpoints = [] # 三维世界坐标imgpoints = [] # 二维图像坐标# 读取棋盘格图像并检测角点(省略)ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera( objpoints, imgpoints, img_size, None, None)# 内参矩阵mtx: [[fx, 0, cx], [0, fy, cy], [0, 0, 1]]
- 畸变矫正:使用校准得到的畸变系数对图像进行矫正,消除鱼眼效应或透视变形:
h, w = img.shape[:2]newcameramtx, roi = cv2.getOptimalNewCameraMatrix(mtx, dist, (w, h), 1, (w, h))dst = cv2.undistort(img, mtx, dist, None, newcameramtx)
(二)外参校准(与激光雷达)
- 基于校准板的联合校准:
- 将带反光标记的棋盘格置于传感器前方,确保激光雷达可扫描到反光点,摄像头可拍摄到棋盘格。
- 提取激光雷达坐标系下的反光点三维坐标(P_lidar)和摄像头坐标系下的棋盘格角点二维坐标(P_img)。
- 通过 PNP(Perspective-n-Point)算法求解转换矩阵:
# 已知3D点和对应2D点,求解旋转和平移retval, rvec, tvec = cv2.solvePnP( objectPoints=P_lidar, # 激光雷达3D点 imagePoints=P_img, # 摄像头2D点 cameraMatrix=mtx, # 摄像头内参 distCoeffs=dist # 畸变系数)R, _ = cv2.Rodrigues(rvec) # 旋转向量转矩阵
- 动态校准优化:在车辆行驶过程中,通过匹配路面特征(如车道线、路灯),使用 ICP(迭代最近点)算法优化外参,减少静态校准误差。
四、联合校准与验证
(一)联合校准流程
- 硬件准备:确保传感器固定牢固(振动导致的位移需 < 0.1mm),连接时间同步装置(如 PTP 时钟)。
- 数据采集:
- 静态场景:采集至少 5 组不同位置的校准板数据。
- 动态场景:在结构化道路(如停车场)采集包含丰富特征的数据(墙体、柱子、地面标线)。
- 参数求解:融合静态校准的初始值和动态优化结果,得到最终外参矩阵。
- 结果验证:计算点云投影到图像的重投影误差(需 < 1 像素),误差过大则重新校准。
(二)校准验证方法
- 可视化验证:将激光雷达点云通过外参投影到摄像头图像,检查点云是否与对应物体边缘对齐(如车辆轮廓、行人轮廓)。
- 定量指标:
- 重投影误差:error = mean(sqrt((u_proj - u_gt)^2 + (v_proj - v_gt)^2)) < 1.5px
- 距离一致性:同一目标的激光雷达测距与摄像头三角测距偏差 < 5cm。
五、常见问题与解决方案
(一)校准误差过大
- 原因:传感器松动、校准板精度不足、特征点提取错误。
- 解决:
- 使用机械臂固定传感器,确保无位移;
- 采用工业级校准板(平面度 < 0.1mm);
- 优化特征点检测算法(如加入亚像素角点 refinement)。
(二)时间同步问题
- 现象:运动状态下点云与图像不匹配(如车辆行驶中,点云超前图像)。
- 解决:
- 采用硬件 PTP 同步(精度可达 100ns);
- 软件补偿:通过时间戳计算延迟Δt,根据车辆速度v修正坐标:x_corrected = x + v*Δt。
(三)温度漂移
- 现象:校准后随环境温度变化,误差逐渐增大。
- 解决:在高低温箱中进行多温度点校准,建立温度 - 误差模型,实时补偿。
六、校准周期与维护
(一)校准周期
- 首次安装:必须进行全参数校准,保存基准参数。
- 定期校准:每 3 个月或行驶 1 万公里后进行一次验证,误差超限时重新校准。
- 触发式校准:发生碰撞、传感器拆装、剧烈振动后,强制重新校准。
(二)数据管理
- 建立校准档案,记录每次校准的参数、环境温度、误差值。
- 使用版本控制工具管理校准文件,支持参数回溯(如发现新参数异常,可恢复历史有效参数)。
通过严格遵循校准流程、选用高精度工具并定期验证,可确保激光雷达与摄像头的数据一致性,为自动驾驶的环境感知、目标检测和路径规划提供可靠的基础数据支撑。