
1. 多传感器融合的基石为什么标定是绕不开的“硬骨头”在自动驾驶、机器人导航这些领域混久了你肯定听过一个词叫“多传感器融合”。听起来很高大上仿佛把激光雷达、摄像头、毫米波雷达、IMU这些“眼睛”和“耳朵”的数据一锅炖就能得到对世界更精准、更鲁棒的感知。但现实往往是当你兴冲冲地把这些昂贵的传感器装上车或者机器人准备大干一场时第一盆冷水就浇下来了数据对不上。摄像头说前面有个行人激光雷达的点云里却显示那是个稀疏的柱子IMU告诉你车身正在剧烈颠簸但激光雷达和摄像头的数据却稳如泰山仿佛在另一个平行宇宙。这感觉就像一支交响乐团每个乐手都技艺高超但各自看不同的乐谱演奏不同的调子结果只能是灾难性的噪音。而“标定”就是给这支乐团一个统一的指挥和乐谱确保每个“乐手”传感器都知道自己相对于“舞台中心”车体坐标系的确切位置和朝向并且它们的“节拍”时间戳是同步的。这绝对是个“硬骨头”。它不像调参有个大概范围可以试也不像写算法逻辑通了就行。标定是物理世界的几何与时间对齐差之毫厘谬以千里。一个没标定好的系统后续无论用多牛的融合算法都是在错误的基础上做精致的数学游戏结果必然是脆弱的。我见过太多团队在算法层卷生卷死却忽略了底层标定这个“脏活累活”最后项目卡在感知精度上不去回头一查根子都在标定误差上。所以今天我们不聊那些飘在空中的融合理论就扎扎实实地聊聊地面上这20种你必须知道的标定方案。从最经典的棋盘格到新兴的无目标方法从单传感器内参到多传感器外参再到要命的时间同步。这些方案没有绝对的“银弹”每一种都有其适用的场景、精度极限和实操中的坑。掌握它们就像是拥有了一个工具箱知道在什么情况下该用哪把扳手以及怎么用才能不把螺丝拧花。2. 标定的核心维度拆解从“我在哪”到“现在几点”在深入具体方案之前我们必须把标定这件事拆解清楚。它不是一个单一的操作而是由几个相互关联但又彼此独立的维度构成的。理解这些维度是选择合适标定方案的前提。2.1 内参标定传感器的“自我认知”每个传感器在出厂时都不是完美的。镜头有畸变雷达天线有安装偏差IMU的零偏和尺度因子会漂移。内参标定就是确定传感器自身的这些内部参数。相机内参这是最经典的内参标定。核心参数包括焦距(fx, fy)、主点(cx, cy)和畸变系数(k1, k2, p1, p2, k3...)。你可以把它理解为给相机做“验光”建立从3D世界点到2D像素点的精确映射模型。不标定内参的相机图像边缘的直线会变成曲线直接影响后续的视觉里程计、目标检测和深度估计的精度。激光雷达内参对于机械式激光雷达主要指每个激光发射器的垂直角(vertical angle)和水平角偏移(horizontal offset)以及距离测量偏差。虽然出厂会标但在长期使用或受到冲击后可能需要重新标定。对于固态激光雷达内参可能更复杂涉及内部光学系统的校准。毫米波雷达内参包括天线的相位中心位置、波束指向角等。这部分通常由雷达制造商在出厂时完成并固化用户一般无法也不需操作。但了解其存在很重要因为它是雷达测量精度的基础。IMU内参这是内参标定里的“重头戏”也是最容易出问题的地方。主要包括零偏 (Bias)陀螺仪和加速度计在静止状态下不应该有输出但实际上会有个常值偏移这就是零偏。它会随时间缓慢变化温漂、时漂。尺度因子 (Scale Factor)传感器输出值与真实物理量角速度、加速度之间的比例系数。理想是1实际会有微小偏差。非正交误差 (Non-orthogonality)和交叉轴灵敏度 (Cross-axis Sensitivity)理论上三个轴应该完全正交且只感应本轴方向的运动实际上轴间会存在不正交和耦合。 IMU内参不准直接导致积分得到的位姿特别是角度快速发散是融合系统的主要误差源之一。2.2 外参标定传感器间的“空间关系”外参标定回答的问题是传感器B的坐标系原点在传感器A的坐标系下位置(x, y, z)和朝向(roll, pitch, yaw)是多少通常用一个4x4的齐次变换矩阵T_A_B表示。刚体变换假设我们通常假设传感器之间是刚性连接的即外参矩阵在车辆/机器人本体不变形的情况下是固定不变的。这是所有外参标定方法的基础。树状坐标系通常我们会定义一个“主体坐标系”如车辆后轴中心然后将所有传感器的外参都标定到这个主体坐标系上。这样任何两个传感器之间的变换都可以通过主体坐标系中转计算得到(T_lidar_camera T_body_camera^{-1} * T_body_lidar)。2.3 时间标定传感器间的“时钟同步”这是最容易忽视但同样致命的一环。即使空间标定完美如果激光雷达在t时刻扫描相机在t0.05秒曝光IMU在t0.02秒采样那么你拿这些数据做融合本质上是在融合不同时刻的世界状态。对于高速运动的平台这会导致严重的“鬼影”或配准错误。时间标定的核心是确定各传感器数据时间戳之间的固定延迟(latency)和时钟漂移(clock drift)。理想情况是使用统一的硬件触发信号或高精度时间源如PTP协议进行同步。但在很多低成本或改造系统中只能进行软件层面的时间戳对齐和延迟估计。3. 经典标定方案实战从工具到步骤的深度解析理论说再多不如上手干。下面我们挑几种最常用、最具代表性的方案拆解其原理、工具链和实操中的每一个细节。3.1 相机内参标定张正友标定法的现代实践提到相机标定无人不知张正友博士的棋盘格法。但很多人只是调用OpenCV的calibrateCamera函数拍几张图就完事结果精度总是不尽人意。这里面的门道可不少。1. 标定板的选择与制作棋盘格 vs. 圆点网格 vs. Charuco板棋盘格最经典但角点检测在图像模糊或大角度下容易出错。圆点网格圆心检测更稳定尤其适用于鱼眼镜头。Charuco板结合了棋盘格和ArUco码能提供更鲁棒的身份识别防止角点误匹配是目前更推荐的选择。尺寸与精度标定板的物理尺寸必须精确测量建议使用游标卡尺误差0.1mm。格子大小要根据相机视场决定要保证在最近和最远拍摄距离下标定板都能占据图像足够大的区域建议30%-70%。打印时务必使用哑光材质避免反光。实操技巧我习惯用一块足够厚的亚克力板背面贴上高精度打印的标定图纸这样既平整又不易变形。千万不要用普通的A4纸贴在软板上轻微的弯曲就会引入误差。2. 数据采集的“艺术”姿态覆盖这是成败关键。你需要让标定板尽可能充满相机的整个视野空间。具体来说平移上下左右前后移动标定板。旋转绕X、Y、Z轴分别进行大幅度的俯仰、偏航和滚转。倾斜让标定板与相机光轴成各种角度甚至接近90度。距离从最近对焦距离到较远距离都要覆盖。 目标是让标定板的角点均匀地分布在图像的每一个角落特别是边缘和四个角。OpenCV的calibrateCamera函数内部会解算重投影误差如果角点只集中在图像中央它对边缘的畸变校正就会“力不从心”导致图像边缘的校正效果差。数量与质量通常需要15-25张高质量图像。图像要清晰对焦准确光照均匀避免阴影。每张图的姿态应有明显差异。可以录制一段视频然后均匀抽帧但要注意避免运动模糊。3. 工具使用与参数解读OpenCV实战import cv2 import numpy as np # 准备物体点 (3D世界坐标假设标定板在Z0平面上) objp np.zeros((rows*cols, 3), np.float32) objp[:, :2] np.mgrid[0:cols, 0:rows].T.reshape(-1, 2) * square_size # square_size 是每个格子的物理尺寸 # 检测角点 ret, corners cv2.findChessboardCorners(gray_image, (cols, rows), None) if ret: # 亚像素级角点精确化 - 这一步对提升精度至关重要 criteria (cv2.TERM_CRITERIA_EPS cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001) corners_refined cv2.cornerSubPix(gray_image, corners, (11,11), (-1,-1), criteria) objpoints.append(objp) # 存储3D点 imgpoints.append(corners_refined) # 存储2D图像点 # 标定 ret, mtx, dist, rvecs, tvecs cv2.calibrateCamera(objpoints, imgpoints, image_size, None, None) # 评估重投影误差 mean_error 0 for i in range(len(objpoints)): imgpoints2, _ cv2.projectPoints(objpoints[i], rvecs[i], tvecs[i], mtx, dist) error cv2.norm(imgpoints[i], imgpoints2, cv2.NORM_L2)/len(imgpoints2) mean_error error print(f平均重投影误差: {mean_error/len(objpoints)} 像素)关键解读mtx: 内参矩阵。fx, fy的单位是像素它们反映了焦距和感光元件像素尺寸的综合效果。fx和fy不相等说明像素不是正方形。dist: 畸变系数。通常是5个或更多。k1, k2, k3是径向畸变p1, p2是切向畸变。它们的值通常很小例如k1在1e-4到1e-2量级。如果值非常大很可能标定过程有问题。重投影误差这是衡量标定质量的黄金标准。一个好的标定平均重投影误差应该小于0.5像素对于普通镜头对于广角或鱼眼镜头可以放宽到1-2像素。如果误差大于1像素就需要检查数据质量了。4. 标定结果验证与去畸变标定完成后千万不要直接就用。一定要做可视化验证。# 校正图像 h, w image.shape[:2] newcameramtx, roi cv2.getOptimalNewCameraMatrix(mtx, dist, (w,h), 1, (w,h)) dst cv2.undistort(image, mtx, dist, None, newcameramtx) # 或者使用映射函数更高效适合视频流 mapx, mapy cv2.initUndistortRectifyMap(mtx, dist, None, newcameramtx, (w,h), cv2.CV_32FC1) dst cv2.remap(image, mapx, mapy, cv2.INTER_LINEAR)找一些有明显直线的场景如建筑物边缘观察校正后的图像直线是否变直。这是最直观的检验。3.2 激光雷达到相机的外参标定基于棋盘格的联合标定这是自动驾驶中最常见的外参标定任务之一。核心思想是利用一个双方都能“看到”的公共目标棋盘格分别计算棋盘格在相机坐标系和激光雷达坐标系下的位姿然后求解两者之间的变换关系。1. 标定场布置与数据采集标定板使用大尺寸的棋盘格或Charuco板确保在相机图像中清晰同时能被激光雷达扫描到足够的点。采集流程将标定板固定在一个稳固的位置。将车辆/传感器系统置于标定板前。同步采集一帧相机图像和一帧激光雷达点云。这里强调同步如果无法硬件同步则要确保车辆和标定板在采集瞬间完全静止。改变车辆相对于标定板的位姿前后移动、左右平移、小幅旋转重复步骤3。通常需要10-20个不同的位姿位姿差异越大标定结果越鲁棒。注意事项激光雷达点云中的标定板区域可能点比较稀疏尤其是远距离时。确保标定板表面能反射足够的激光哑光白色效果好。可以适当在标定板边缘放置一些角反射器来增强点云特征。2. 核心算法步骤拆解对于每一组同步采集的数据(Image_i, PointCloud_i)步骤A求解标定板在相机坐标系下的位姿T_cam_board。 使用相机内参和已标定的棋盘格角点3D坐标假设标定板在Z0平面通过PnP算法如cv2.solvePnP求解。ret, rvec, tvec cv2.solvePnP(obj_points, img_points, camera_matrix, dist_coeffs) T_cam_board make_transform_matrix(rvec, tvec) # 将旋转向量和平移向量转为4x4矩阵步骤B求解标定板在激光雷达坐标系下的位姿T_lidar_board。 这是难点。需要从点云中分割出标定板平面并拟合出板的角点。点云预处理截取标定板大致区域的点云进行离群点去除。平面拟合使用RANSAC算法拟合点云中的平面得到平面方程axbyczd0。角点提取将属于该平面的点投影到拟合的平面上。对这些二维投影点进行凸包检测或边界框拟合。根据已知的标定板物理尺寸和角点数量从边界中推算出角点的3D坐标。这通常需要一些启发式算法对点云质量要求较高。步骤C构建手眼标定方程。 对于两个不同的位姿i和j我们有T_cam_board_i T_cam_lidar * T_lidar_board_iT_cam_board_j T_cam_lidar * T_lidar_board_j将上式变换可以得到经典的AX XB形式的手眼标定方程(T_cam_board_j)^{-1} * T_cam_board_i * T_cam_lidar T_cam_lidar * (T_lidar_board_j)^{-1} * T_lidar_board_i这里X T_cam_lidar就是我们要求解的外参。步骤D求解外参。 收集多组(i, j)数据对构建超定方程组。可以使用cv2.calibrateHandEye函数来求解它内部实现了多种算法如Tsai-Lenz, Park, Daniilidis等。R_cam_lidar, t_cam_lidar cv2.calibrateHandEye(R_gripper2base, t_gripper2base, R_target2cam, t_target2cam, methodcv2.CALIB_HAND_EYE_TSAI) # 注意参数顺序机械臂手眼标定类比gripper2base对应lidar_boardtarget2cam对应cam_board。需要根据实际情况调整。3. 结果评估与优化重投影误差将激光雷达点云使用标定得到的外参T_cam_lidar投影到相机图像上与标定板角点的图像坐标对比。点云对齐可视化将多帧点云通过标定板位姿转换到同一坐标系下观察标定板点云是否对齐。这是非常有效的定性评估方法。使用第三方工具Autoware的lidar_camera_calibration或 Apollo 的校准工具链提供了完整的 pipeline可以简化流程。但理解其背后的原理对于调试问题至关重要。实操心得基于棋盘格的激光雷达-相机标定对数据质量非常敏感。点云中提取标定板角点的精度是瓶颈。在实践中我们常常会制作一个带有明显3D特征如不同高度的立柱的标定架而不仅仅是平面板这样点云特征更丰富拟合精度更高。另外采集数据时尽量让标定板出现在图像的不同区域左上、右下、中心等这有助于约束所有自由度。3.3 基于自然特征的在线标定与无目标标定上述方法都需要特定的标定物靶标属于“离线标定”。但在某些场景下我们无法使用标定物或者需要在线监测外参是否因振动等原因发生了变化。这时就需要无目标标定或基于自然特征的标定。1. 基于边缘/特征匹配的方法核心思想是寻找传感器数据之间的共性特征。对于激光雷达和相机最常用的特征是边缘。原理从相机图像中提取强边缘如Canny算子从激光雷达点云中提取3D线特征如基于法向量突变的边缘点。然后通过优化外参使得投影到图像上的3D边缘点与图像的2D边缘在位置上最大程度对齐。代表性工作lidar_camera_calibration中的无目标模式就采用了类似思想。它需要提供一个初始的、大致准确的外参估计。优缺点优点无需标定板可在自然场景中进行具备在线潜力。缺点对初始值敏感容易陷入局部最优依赖于场景中是否有丰富的、可提取的边缘特征计算量较大。2. 基于互信息或深度学习的方法这是更前沿的研究方向。互信息法将激光雷达点云投影到图像生成深度图或强度图计算其与相机图像之间的互信息。优化外参以最大化互信息。这假设了深度/强度信息与图像纹理存在统计相关性。深度学习法利用神经网络直接从图像和点云数据中回归外参。需要大量的、已标注外参的数据进行训练。也有方法利用神经网络提取特征然后通过几何约束进行优化。优缺点优点理论上更智能可能处理更复杂的场景。缺点需要数据训练泛化能力存疑可解释性差目前工业界应用较少更多处于研究阶段。3. 运动结构恢复法利用视觉SLAM或激光SLAM分别估计相机和激光雷达的运动轨迹然后对齐这两条轨迹来求解外参。这本质上也是一种手眼标定(AXXB)只不过这里的A是相机的相对运动B是激光雷达的相对运动。实施让搭载传感器的平台进行一段富含旋转和平移的运动如“8”字形。分别运行ORB-SLAM视觉和LOAM激光等算法获取位姿序列。然后使用手眼标定算法求解。优点完全无目标利用自身运动。缺点依赖于SLAM算法的精度和鲁棒性需要充分的激励运动特别是旋转时间同步要求高。经验之谈无目标标定目前更多是作为离线标定的补充和在线监测手段。在实际项目中我通常会先用高精度的靶标法完成初始标定得到一个可靠的外参。然后在系统运行时可以周期性地运行一个轻量级的基于边缘对齐的校验程序如果发现重投影误差持续增大则发出外参可能失效的警告提示需要进行维护或重新标定。完全依赖无目标标定进行初始化风险仍然较高。4. 毫米波雷达与IMU的标定挑战与专项方案毫米波雷达和IMU的标定有其特殊性是融合系统中的难点。4.1 毫米波雷达外参标定低分辨率与噪声下的博弈毫米波雷达特别是普通角雷达数据稀疏、噪声大、分辨率低无法像激光雷达那样清晰地“看到”标定板的形状。常用的方法有1. 角反射器法这是最主流、最可靠的方法。角反射器在雷达视野内会产生一个非常强的、稳定的点状回波。布置在空旷场地放置多个至少4个推荐6-8个角反射器精确测量它们在大地坐标系或某个基准坐标系下的3D位置。采集将车辆停在场地中保持静止采集一帧雷达点云。雷达会检测到这些角反射器对应的点。求解这就变成了一个3D-3D的点集配准问题类似ICP。已知角反射器在世界坐标系下的坐标P_world以及雷达检测到的对应点坐标P_radar求解雷达坐标系到世界坐标系的变换T_radar_world。由于雷达高度信息不准通常先忽略高度求解2D平面上的变换x, y, yaw然后再通过多个不同高度的角反射器或结合其他传感器约束高度。工具可以使用pcl::SampleConsensusInitialAlignment或自己实现SVD分解来求解。2. 基于雷达速度与轮速计/IMU的标定如果雷达支持测量径向速度多普勒速度而车辆装有轮速计或已标定的IMU可以利用运动约束进行标定。原理当车辆运动时静止物体在雷达坐标系下的速度理论上应该等于- (雷达坐标系下的车辆速度)。车辆速度可以从轮速计或IMU积分得到并转换到雷达坐标系下依赖于待求的外参。通过优化外参使得雷达测得的静止目标速度与预测速度一致。实施需要车辆进行匀速直线运动并筛选出雷达点云中的静止点聚类和速度一致性判断。这种方法可以标定雷达的俯仰角(pitch)和横滚角(roll)对航向角(yaw)不敏感。优点无需额外设备利用车辆自身运动。缺点需要精确的车速对静止点筛选要求高标定精度有限。4.2 IMU内参标定Allan方差分析与六面法IMU的零偏、尺度因子等参数会随时间、温度变化而漂移高精度应用必须标定。1. Allan方差分析确定噪声参数Allan方差是用来分析惯性传感器噪声特性的经典方法。它可以帮助我们确定陀螺仪的角随机游走(ARW)、零偏不稳定性(BI)等关键参数。这些参数对于设计融合滤波器如卡尔曼滤波的噪声矩阵Q至关重要。方法将IMU静止放置数小时通常2-6小时采集常温下的静态数据。使用Allan方差工具如imu_utils处理数据得到对数坐标下的Allan标准差曲线。通过观察曲线在不同时间常数下的斜率可以辨识出各种噪声源。实操这更多是传感器性能评估用于滤波器调参。它不直接给出用于补偿的零偏和尺度因子值。2. 六面法标定标定零偏、尺度因子、非正交误差这是标定IMU内参的实操方法。需要将IMU固定在一个立方体夹具上依次将立方体的六个面朝下静止放置。原理加速度计当每个轴分别朝上或朝下时敏感轴承受的应该是1g或-1g减去重力加速度。通过测量六个位置的输出可以建立方程组求解出零偏、尺度因子和轴间耦合参数通常用一个3x3的变换矩阵T_a表示包含尺度、非正交和安装误差。陀螺仪在静止状态下理论上角速度输出应为0。通过采集六个静止位置的数据可以求取陀螺仪的零偏。尺度因子和非正交误差的标定则需要高精度的转台让IMU绕特定轴以已知的角速度旋转比较输出与真值。工具Kalibr工具包中的imu_calibration支持六面法标定加速度计。对于陀螺仪的高精度标定通常需要专业转台。注意事项每个面需要静止采集足够长时间的数据例如60秒以平均掉高频噪声。夹具需要尽可能精确地保证每个面与水平面垂直。温度会影响零偏最好在恒温环境下进行或记录温度进行补偿。3. 基于视觉/激光的在线标定在视觉惯性里程计(VIO)或激光惯性里程计(LIO)中IMU的内参尤其是陀螺仪和加速度计的零偏可以作为状态变量与位姿一起被在线估计。例如在OKVIS、VINS-Fusion、LIO-SAM等框架中都包含了IMU零偏的估计。但这依赖于视觉或激光约束足够强且运动激励充分。踩坑实录IMU的零偏重复性很差。今天标定的零偏明天开机可能就变了更别说温度变化了。因此对于消费级IMU六面法标定得到的参数更多是作为一个“标称值”或“出厂补偿”其价值在于补偿掉较大的固定误差。在实际的融合系统中必须将零偏作为状态量进行在线估计。而尺度因子和非正交误差相对稳定一次标定后可以长期使用。所以IMU标定的核心是用六面法标定除零偏外的内参并在滤波器中对零偏进行实时估计和补偿。5. 多传感器联合标定与时间同步的终极方案当传感器数量超过两个时逐个进行两两标定不仅繁琐而且会累积误差。联合标定和全局时间同步是构建可靠系统的最后一步。5.1 多传感器联合标定框架理想情况是将所有传感器的数据和一个共同的观测目标如一个具有丰富特征的标定场同时建立联系一次性优化所有外参。1. 基于大规模标定场的联合优化布置建立一个包含多种特征如棋盘格、角反射器、AprilTag、甚至自然纹理的标定场。精确测量所有特征在全局坐标系如标定场坐标系下的3D位置。采集将车辆开进标定场保持静止同步采集所有传感器的数据相机图像、激光雷达点云、毫米波雷达点云。建模与优化为每个传感器建立一个观测模型。例如相机观测到AprilTag的角点激光雷达观测到角反射器的中心点等。建立一个全局优化问题Bundle Adjustment。优化变量包括所有传感器相对于车体的外参T_body_sensor。目标函数是最小化所有观测值的重投影误差或距离误差。使用非线性优化库如Ceres Solver, g2o进行求解。优点理论上精度最高因为所有约束被同时考虑误差均匀分布。缺点标定场建设成本高流程复杂。2. 基于图优化的逐步标定在实际工程中更常用的是一种渐进式、图优化的思路。建立传感器拓扑确定一个“核心传感器”通常是IMU或车身中心。其他传感器都标定到它上面。标定强约束对优先标定那些容易获得高精度约束的传感器对。例如相机-激光雷达使用棋盘格。相机-IMU通过Kalibr工具标定两者外参和时间差。毫米波雷达-车身使用角反射器法获得2D外参。构建优化图将每个传感器作为一个节点传感器之间的外参作为边。边的“强度”由标定方法的精度决定赋予不同的权重或信息矩阵。全局优化当所有直接边或部分边建立后可以进行一次全局图优化平差所有外参。这能利用间接约束例如通过相机-IMU和IMU-激光雷达可以约束相机-激光雷达来修正误差。工具ROS中的robot_state_publisher和tf树是管理这种坐标变换的基础。更高级的优化可以使用自定义的图优化程序。5.2 时间同步硬件与软件的双重保障没有时间同步空间标定再准也是徒劳。1. 硬件同步首选GPS/PTP授时使用带PTP(Precision Time Protocol)功能的主时钟如来自GPS模块的PPS脉冲和NMEA时间信息通过以太网给整个系统授时。这是自动驾驶领域的标准做法。所有支持PTP或NTP的传感器如某些高端相机、激光雷达可以同步到微秒级。硬件触发由一个主设备如工控机或专门的同步器发出统一的触发信号如TTL脉冲给所有传感器命令它们在同一时刻开始采集。这能消除采集时刻的误差但各传感器内部处理和数据传输的延迟可能不同。组合方案使用GPS/PTP进行绝对时间同步同时使用硬件触发进行采集时刻同步是最佳实践。2. 软件同步与延迟标定当硬件同步不可用时只能进行软件同步。时间戳对齐确保每个传感器数据都带有一个高精度的、来自同一时钟源的时间戳例如工控机的系统时钟。这是软件同步的基础。测量固定延迟很多传感器有固定的处理延迟。例如相机从曝光到图像数据可用的延迟激光雷达从扫描开始到点云发布的延迟。这些延迟需要测量或从厂商处获取并在时间戳中进行补偿。基于运动的时间标定对于相机-IMU这类组合可以使用Kalibr工具来标定两者之间的时间差(time offset)。原理是当传感器经历剧烈运动时如果时间不同步视觉特征点的运动与IMU测量的运动将无法对齐。通过优化时间差参数可以使两者对齐。这对于VIO系统至关重要。3. 数据融合层的时间处理即使在硬件上做了努力微小的时间差依然存在。在融合算法中需要进行时间补偿。插值对于高频传感器如IMU100Hz可以为低频传感器如相机10Hz的每个时刻通过IMU数据插值得到该时刻的位姿和速度。运动补偿对于激光雷达一帧点云是过去一段时间如100ms内扫描得到的。如果车辆在这期间运动了点云就会产生“运动畸变”。需要利用IMU或轮速计的数据将一帧点云中的每个点都校正到同一时刻通常是帧的起始或结束时刻这个过程称为“去畸变”或“运动补偿”。工程实践要点时间同步的规范必须从项目设计阶段就确定。我的经验是在电气设计时就必须规划好同步时钟信号的走线。对于关键传感器如前向激光雷达和相机务必选择支持硬件触发和PTP输入的产品。在软件架构上所有数据必须携带高精度时间戳最好是ROS的Header.stamp格式。在算法层第一个数据处理模块就应该是“时间同步与消息对齐”模块确保后续融合模块拿到的是在时间上对齐的数据包。忽略时间同步是很多融合demo跑得很好一上车就崩盘的主要原因。