ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

激光雷达标定原理与实战:从外参、内参到时间同步的完整指南

激光雷达标定原理与实战:从外参、内参到时间同步的完整指南 要说激光雷达标定这事儿我是深有体会的。这个系列能写到第三篇说明前两篇相机内参、相机外参你们应该是看进去了。很多做感知的朋友都问过我一个问题雷达和相机都单独标定过了为什么融合出来的结果还是歪的点云投影到图像上轮廓总是错开一大截。问题基本都出在激光雷达标定这一步上——不是没标而是没标对、没标透。这篇文章我从原理层面把激光雷达标定彻底拆开讲清楚再给出能直接落地的实现路径。内容会涉及坐标系变换、外参标定主流的几类方法、内参补偿、时间同步这些核心环节最后附上我在实际项目中踩过的坑和验证精度的经验。适合正在做多传感器融合、自动驾驶感知或者机器人导航的朋友无论你是刚入门还是已经调过一阵子标定应该都能从中捞到点干货。1. 激光雷达为什么需要标定误差藏在你看不见的地方很多人对激光雷达标定有个误解觉得激光雷达出厂就校准好了装上车就能直接用。这个想法大错特错。激光雷达出厂确实做过内参校准每一束激光的角度、距离补偿在出厂时都有对应的修正参数但那是台架状态下的精度。一旦装到车上、机器人上情况就完全不一样了。1.1 安装误差是外参标定存在的根本理由激光雷达装在车顶、机器人头部或者支架上你理想中是让雷达坐标系跟车体坐标系完全平行但现实是——支架焊接有公差哪怕只有1-2度的偏角投射到50米外就是接近1米的偏差雷达底座螺丝拧紧后壳体本身会有肉眼看不出来的微小形变不同批次的雷达内部扫描平面和外壳参考面之间本来就存在差异我碰到过最典型的案例一台清洁机器人激光雷达装在顶部正中央装配图纸上标注的安装角度是0度结果实测点云往左偏了1.8度。这个角度肉眼看支架完全察觉不出来但建图的时候走廊墙面的点云就是叠不齐每次回环检测都要靠暴力搜索硬凑。这种误差不通过外参标定去补偿靠算法是救不回来的。1.2 三类误差决定了标定的不同层级要说清楚激光雷达标定得先明确误差的来源分层机械安装误差雷达坐标系和车体坐标系之间的旋转和平移偏差。这是外参标定要解决的也是本文的核心。内部装配误差雷达内部电机轴心、光学透镜、接收器阵列之间的相对位置偏差导致每个激光通道的实际出射角度和理论值不一样。这是内参标定的范畴通常是出厂标定做的但如果你手头的雷达被别人拆过、摔过内参可能已经漂了。测量系统误差TOF测距本身的系统偏差、温度漂移、接收信号强度不同导致的测距非线性。这类误差通常靠距离校准表来补偿一般不需要用户自行标定但做高精度测绘的人会关注。简单说外参标定告诉大家雷达装在哪、朝向哪内参标定告诉大家雷达内部每一束激光的真实角度和距离。两个都对了融合才算真正对齐。1.3 标定差一点后面全盘崩激光雷达标定的影响范围远比大多数人想象的大定位建图层面——点云配准算法ICP、NDT初始化时需要一个靠谱的初值外参不准会让初始位姿偏差过大直接导致配准掉进局部最优解。在长廊、空旷场景尤其致命因为几何特征匮乏错误的初值可能让NDT直接把两帧点云怼到完全错误的位置。感知融合层面——相机图像上的障碍物和点云聚类结果对不上决策层不知道该信谁。我见过一个项目因为外参yaw偏了0.5度高速场景下目标框和点云聚类永远错开半个车身AEB自动紧急制动功能反复误触发。控制规划层面——障碍物在车体坐标系下的位置算歪了局部路径规划绕障就会留出不必要的安全裕度或者更危险的是切得太近。所以标定这件事看着是个一次搞定的离线任务实际上它会渗透到整个系统的每一个角落。我个人的经验是多传感器系统上线前标定环节值得单独排期来做千万别压缩这个时间。2. 坐标变换与参数化激光雷达标定的数学底座外参标定本质上是在求一个刚体变换矩阵把雷达坐标系下的点转换到目标坐标系通常是车体坐标系或相机坐标系下。数学上不复杂但要把每个概念吃透不然你在调参的时候根本不知道自己在调什么。2.1 四个坐标系你必须分得清做激光雷达标定脑子里得时刻绷着一根弦我到底在哪个坐标系里说话雷达坐标系L系以激光雷达的几何中心为原点通常x轴指向前方或者按雷达数据手册定义y轴向左z轴向上。雷达输出的原始点云坐标就是在这个坐标系下的。车体/机器人坐标系B系一般以车辆后轴中心或机器人几何中心为原点x轴前进方向y轴向左z轴向上。这是整个系统逻辑上的世界中心定位、规划都在这个坐标系下工作。相机坐标系C系以相机光心为原点z轴指向相机前方OpenCV惯例x轴向右y轴向下。注意相机坐标系的x和y方向跟雷达、车体坐标系经常不一样很多人第一次做投影就栽在这个细节上。像素坐标系I系图像左上角为原点u轴向右v轴向下单位是像素。这里唯一容易踩坑的地方是各个坐标系的轴向定义不一致。雷达坐标系和车体坐标系类似但相机坐标系完全是另一种约定所以做雷达到图像的投影时中间一定要经过一个明确的坐标变换不要在脑子里想当然地把某个轴直接对应过去。2.2 旋转矩阵、欧拉角与四元数怎么选刚体变换的标准形式是[ P_B R \cdot P_L t ]其中 (P_L) 是雷达坐标系下的三维点(R) 是 3x3 旋转矩阵(t) 是 3x1 平移向量。外参标定就是求解 (R) 和 (t)。旋转的表示方式有三种各有优缺点欧拉角roll、pitch、yaw直观3个参数物理意义明确。但存在万向锁问题而且旋转顺序不同结果完全不同——是先绕x轴转还是先绕y轴转必须定义清楚。标定迭代优化的时候用欧拉角做参数化容易在接近90度时触发奇异。旋转矩阵9个参数必须满足正交性和行列式为1的约束。优化时如果直接拿9个参数去迭代会让约束被破坏解出来一个不是旋转的矩阵。四元数4个参数带一个单位约束没有万向锁问题插值也方便。这是工程上的主流选择。我的建议是工程实现中用四元数平移向量作为优化变量但分析和调试时把四元数转成欧拉角来看。因为人脑对欧拉角有直觉对四元数没直觉。你在标定结果验证阶段发现yaw偏了0.3度这个信息是很好用的但如果给你的是一串(0.7071, 0, 0.7071, 0)你根本不知道问题出在哪。2.3 外参标定和手眼标定的关系做机器人或自动驾驶的朋友肯定听过手眼标定hand-eye calibration求解机械臂末端和相机之间的固定变换。激光雷达外参标定在数学上和手眼标定同源都是求解AXXB形式的方程。具体来说当你让载具运动时雷达相对于世界的位置变化可以通过点云配准得到相当于X同时车体自身的位姿变化可以从里程计/惯导得到相当于A和B。手眼标定的思路确实可以用在雷达外参标定上——基于运动的标定方法核心就是解AXXB。这个思路后面还会展开。要理解标定算法脑子里得建立这个认知外参标定不是一个测量问题而是一个优化问题。我们不是在用尺子量安装位置而是在收集大量数据后用数值优化的方法反推出最优的变换参数。这个视角的转变很重要因为它决定了你怎么理解标定的精度、怎么判断标定结果的可靠性。3. 外参标定的三条主流路径靶标法、特征匹配法、运动估计法激光雷达外参标定经过这些年的发展方法已经非常丰富了。我从实际工程角度把主流方案归成三大类每一类都有适用的场景和各自的坑。3.1 基于标定靶标的标定方法这是最传统、也是精度最可控的方法。思路很简单在雷达前方放置已知几何尺寸的标定靶标棋盘格、三面体、平面板等然后从点云中提取靶标的特征和已知的靶标模型做配准解出外参。雷达点云中提取靶标的常见做法平面拟合对点云做平面分割RANSAC拟合出靶标所在平面再提取靶标边界或角点反射强度阈值标定靶标通常用高反射材料点云强度值和背景差异大可以直接阈值分割出来几何形状匹配靶标做成L型、三角形等特殊形状用点云的边缘特征去匹配这类方法的优点是精度高、可复现、结果稳定。缺点是操作繁琐需要一块合适的标定板而且雷达的角分辨率要足够高——如果雷达的垂直角分辨率是2度一块1米高的标定板在10米外只能扫到几个点想提取出清晰的边界非常困难。标定板尺寸选择有一个基本原则在目标距离范围内标定板要至少能覆盖雷达的5-10条扫描线。以16线雷达为例垂直视场角30度角分辨率2度1米高的板子放到10米处大约覆盖5条线是勉强可用的下限。如果条件允许建议用更大的板子或者更近的标定距离。3.2 基于特征匹配的方法省靶标但需要场景配合这类方法不需要专门的靶标直接从自然场景中提取特征进行匹配。关键是怎么在点云和图像或其他传感器数据之间找到稳定的对应特征。点云到图像的边缘对齐法把雷达点云投影到图像上通过优化外参使得投影后的点云边缘和图像边缘重合度最大化。这个方法对结构化场景非常有效——建筑物边缘、路沿、车道线都是天然的特征。优化目标通常用边缘响应值的累计或者互信息MI来度量。点到面的配准法场景中如果存在明显的平面地面、墙面可以提取点云中的平面然后优化外参使得这些平面在目标坐标系下的位置和走向与已知真值一致。这个方法在地面车辆场景特别好用因为地面是天然的大平面。相关性最大化法不提取显式特征而是把点云的某个属性深度值、强度值投影到图像坐标系和相机的深度图或灰度图做相关性最大化。互信息Mutual Information是经典做法优点是鲁棒缺点是计算量大容易陷入局部最优需要一个较好的初值。特征匹配法省去了标定靶标但有一个前提是你得有一个特征丰富、稳定的环境。在地下停车场这种地方墙面白花花一片雷达点云投影上去边缘模糊这类方法的精度会大打折扣。3.3 基于运动的方法无靶标靠自身运动解算基于运动的方法原理来自手眼标定。核心思路是让载具做一组包含旋转和平移的运动每个时刻都有雷达自身通过帧间配准得到的位姿变化以及从底盘里程计/IMU得到的位姿变化。两个传感器观测到的是同一段运动通过求解AXXB就能解出雷达和车体之间的固定外参。这种方法的优点是完全不需要标定靶标也不需要外部场景特征在建图过程中顺带就能完成。缺点是精度受帧间配准精度、里程计精度影响很大而且当载具运动不够丰富比如只有直线运动时方程组会退化解出的外参在一些方向上不可观。我做过一个室内机器人项目用基于运动的方法标定。第一次采集数据的时候让机器人沿着走廊直线跑了三趟结果标定出来的yaw角跟真值差了2度。原因很简单——直线运动只激励了x方向的平移yaw角的可观性极差。后来改成8字形路线配合原地旋转结果就收敛到0.05度以内了。3.4 三类方法怎么选方法类型精度水准操作复杂度场景要求适用场景靶标法高0.1度级高需布设靶标需专门标定板和场地量产下线、实验室精标特征匹配法中高0.2-0.5度中需场景特征边缘/平面特征丰富园区、城区道路运动估计法中0.3-1度低跑一段路即可运动要足够丰富现场快速标定、自标定我的判断标准很简单如果是产线标定或者对精度要求极高的系统比如L4级自动驾驶选靶标法如果是现场交付、快速部署特征匹配法最平衡如果是长时间运行的系统可以在线跑运动估计法做持续校准。没有一种方法是万能的但至少你要知道每种方法的天花板在哪。4. 实战基于靶标的雷达-相机联合标定实现全流程这一节我不讲空泛的原理直接走一遍我常用的雷达和相机联合外参标定的完整实现路径。这个流程我自己用了很多年也基于ROS做过标准化封装覆盖了从数据采集到参数求优再到精度验证的完整链路。4.1 准备工作硬件布置和数据采集的硬性要求硬件要求一块平面度高的标定板建议尺寸1.5m x 1.0m以上表面做漫反射处理中心可以贴一张AprilTag或者棋盘格供相机识别激光雷达和相机刚性固定标定过程中绝对不允许有任何相对位移保证标定现场光照均匀不要在强太阳光直射下标定——强光会让相机的棋盘格角点检测失效也会让雷达点云的反射强度饱和数据采集要领采集至少10-15个不同位姿的标定板观测。什么是不同位姿就是标定板要出现在视场的不同位置、不同朝向——左前方、右前方、近处、远处、倾斜、竖直、俯仰。目的是让标定板在雷达和相机的视场里都占据足够大的面积而且覆盖不同的距离范围。这里有三个我从实际操作中总结出的关键经验标定板距离雷达和相机不要太远。对16线雷达来说6-8米是上限再远点云就太稀疏了标定板不要和雷达扫描平面平行。如果标定板面和雷达扫描线方向平行点云打在板上呈一条线分布平面拟合的约束会变得极差每个位姿下保持载具静止不要晃动。点云本身没问题但相机的图像如果运动模糊角点检测会出问题4.2 雷达点云中的标定板提取从分割到平面拟合拿到一帧点云后第一步是把落在标定板上的点给揪出来。常用方法是反射强度阈值平面分割的组合激光雷达点云数据格式一般都包含x、y、z和intensity。高反射标定板的intensity值会显著高于周围环境可以直接做一个阈值分割把低反射率的点滤掉。之后对剩下的点做欧式聚类把可能属于标定板的点云簇分离出来。拿到疑似标定板的点云簇之后用RANSAC做平面拟合得到平面的法向量 (\hat{n}) 和质心位置 (\bar{p})。这两个量很关键——法向量决定了标定板的朝向质心决定了它的位置。平面拟合这一步要注意RANSAC的阈值要按雷达的测距噪声来设定。机械式雷达在10米内的测距噪声一般是1-3厘米阈值设成5厘米比较合适。如果设得太大会把不属于平面的杂点也拟合进来导致法向量偏斜。4.3 相机图像中的标定板位姿估计PnP求解相机这一侧相对简单用OpenCV或者AprilTag库检测标定板上的角点得到2D像素坐标和对应的3D板面坐标然后用PnP求解相机坐标系下标定板的位姿旋转平移。以棋盘格为例用cv::findChessboardCorners检测角点用cv::solvePnP求解标定板在相机坐标系下的位姿得到旋转向量rvec和平移向量tvec到这里我们同时有了标定板在雷达坐标系下的平面方程法向量质心以及标定板在相机坐标系下的位姿。但这两者还不能直接建立约束——我们需要的是一个把雷达坐标系转换到相机坐标系的变换矩阵 (T_{C \leftarrow L})。关键来了我们知道标定板在雷达坐标系下的平面参数也知道它在相机坐标系下的平面参数同一个平面在不同坐标系下的表示通过 (T_{C \leftarrow L}) 关联。于是可以建立约束标定板平面的法向量在两个坐标系下的方向关系(\hat{n}C R{CL} \cdot \hat{n}_L)标定板平面上任意一点比如质心在两个坐标系下的位置关系(\bar{p}C R{CL} \cdot \bar{p}L t{CL})多个位姿的观测叠在一起就是一个超定方程组可以用SVD或非线性最小二乘求解。4.4 非线性优化从粗糙初值到精确解上面的SVD解法能得到一个不错的初值但离高精度标定还有距离。原因是SVD解法只用了平面的法向量和质心没有利用平面上的全部点信息。更精细的做法是用点到平面的距离最小化作为优化目标。对第 (i) 帧观测中标定板上的任意一个雷达点 (p_{L}^{(j)})它经过外参变换后应当落在相机坐标系下对应的标定板平面上[ \text{cost} \sum_{i} \sum_{j} \left( \hat{n}{C}^{(i)} \cdot \left( R{CL} \cdot p_{L}^{(i,j)} t_{CL} - \bar{p}_{C}^{(i)} \right) \right)^2 ]这个目标函数的意义很直观点云经过变换后到标定板平面的距离应该为0。用Ceres或g2o做LMLevenberg-Marquardt优化优化变量是 (R_{CL})用四元数参数化和 (t_{CL})。这里有一个实操中的经验优化时先把平移向量固定只优化旋转等旋转收敛了再联合优化平移和旋转。原因是旋转和平移之间存在耦合同时优化容易在小梯度方向上震荡。分步优化的收敛速度明显更快也不容易掉进局部最优。4.5 核心代码逻辑参考我用C写过整体流程这里给出最关键的一段优化目标基于Ceres框架// 定义CostFunction点到平面的距离残差 struct PlanePointCost { PlanePointCost(const Eigen::Vector3d pt_l, const Eigen::Vector3d n_c, const Eigen::Vector3d p_c) : pt_l_(pt_l), n_c_(n_c), p_c_(p_c) {} template typename T bool operator()(const T* const quat, const T* const trans, T* residual) const { // 将雷达点变换到相机坐标系 Eigen::MatrixT, 3, 1 pt_c; ceres::QuaternionRotatePoint(quat, pt_l_.castT().data(), pt_c.data()); pt_c[0] trans[0]; pt_c[1] trans[1]; pt_c[2] trans[2]; // 到平面的距离残差 Eigen::MatrixT, 3, 1 diff pt_c - p_c_.castT(); residual[0] n_c_.castT().dot(diff); return true; } private: const Eigen::Vector3d pt_l_; const Eigen::Vector3d n_c_; const Eigen::Vector3d p_c_; }; // 在优化循环中 // 四元数需要做归一化约束 // 使用 ceres::LocalParameterization 的 QuaternionParameterization注意Ceres中的QuaternionRotatePoint要求四元数顺序是[w, x, y, z]而Eigen默认的Quaterniond内部存储顺序也是[w, x, y, z]但如果你用Eigen::Matrixdouble,4,1手动传参一定要确认顺序。这个坑我踩过一次搞反了之后旋转估计完全错误排查了好几个小时。4.6 雷达-相机外参标定工具参考如果要快速实现不一定全部自己造轮子。业内常用的工具链Autoware的Calibration Toolkit提供了图形化界面支持棋盘格标定板自动检测角点和平面对应关系输出外参。适合做相机和Velodyne系列雷达的联合标定。lidar_camera_calibration这是一个开源的ROS包支持棋盘格和ArUco码两种标定板流程完整。我实测下来ArUco模式比棋盘格模式鲁棒性好在远距离和反光场景下角点检测更稳。标定板的选择建议对于雷达-相机联合标定我优先推荐ArUco码板。原因是AprilTag/ArUco在图像中的检测精度高同时在高反射材料上印刷雷达点云的强度值也很容易把它分割出来。一个板子同时服务两个传感器省事。5. 内参校准和时间同步外参之外不可忽略的细节如果上一节的内容是外参标定的主干那么这一节的两个问题就是最容易被忽略但影响巨大的支线。很多人标完外参发现投影还是不对排查很久最后发现问题出在内参偏差或者时间戳错位。这两个问题藏在深处一旦踩中却会让你怀疑人生。5.1 雷达内参漂移出厂参数不是永远的真理激光雷达出厂时内参是标定过的每个通道的垂直角度、水平角度偏移、距离零点偏移都有记录也存在雷达固件里。但内参不是一成不变的雷达受到剧烈冲击后内部光学结构可能发生微量位移温度变化引起结构热胀冷缩角度发生微小偏移长期运行导致电机磨损扫描平面的水平度下降内参偏差的表现非常隐蔽点云整体不发生变形但在某些特定角度和距离上测距值系统性偏大或者偏小。比如某个通道的角度偏了0.1度在20米处就会产生约3.5厘米的高度误差这个量级对远距离目标检测是有影响的。校准内参的方法比外参更复杂通常需要在室内用已知几何尺寸的标定场让雷达从多个位置对同一靶标做扫描然后反推每个通道的角度偏差和距离偏差。这基本属于出厂级别的标定了普通使用场景下不需要频繁操作。但我给你的建议是如果雷达经历过剧烈振动或者高空跌落务必重新做一次全面标定不要迷信出厂参数。5.2 时间同步点云和图像同时采集了吗时间同步是个老生常谈但永远有人栽跟头的问题。雷达和相机是完全独立的传感器各自按自己的节奏出数据。雷达的每个点都有精确的时间戳相机每帧图像也有时间戳但如果两者的时间基准没有对齐你拿到的同一时刻的点云和图像实际上差了那么几十毫秒。在车辆行驶状态下这个时间差会造成明显的投影错位。举例车辆以72km/h行驶20米/秒如果雷达和相机的时间差有50ms那么车辆在这段时间内前进了1米。一个3米外的行人在50ms内相对车体移动了1米投影到图像上该错开多少结果一想便知。时间同步的两种常见方案硬同步PPSGPRMC给雷达提供PPS脉冲信号和GPRMC时间报文让雷达的每个点都对齐到UTC时间。相机则通过外部触发信号进行曝光同步。这是精度最高的方案自动驾驶量产车基本都是这么干的。软同步时间戳插值使用主时钟通常是工控机系统时间为所有传感器数据打时间戳然后在算法层面对齐。简单易实现但精度受系统调度延迟影响通常只能做到毫秒级到十几毫秒级。做标定的时候尤其要注意时间同步如果你采集的标定数据里雷达和相机的时间戳对不齐那么标定板在雷达点云中的位置和图像中的位置本身就不对应这时候做联合优化外参怎么标都标不准。标定前务必先验证时间同步精度。一个简单的验证做法在车静止时采集一帧数据确认点云投影到图像上标定板是对齐的然后在车低速行驶时再采集一帧如果投影错位明显说明时间同步有问题先把这个问题解决了再标外参。5.3 点云畸变运动中的雷达数据会拽出残影这个话题其实跟标定也密切相关。机械式雷达是旋转扫描的一帧点云中的点其实是雷达旋转一整圈过程中陆续采集的。如果载体在运动中每个点对应的时刻车辆位置都不一样。直接用帧头时刻的位姿去变换所有点点云就会产生畸变。在标定场景中这个畸变的影响是标定板在点云中呈扭曲的形状平面拟合的精度会下降。尤其是载具在标定过程中有轻微晃动时这个畸变会被标定算法吸收导致外参估计引入额外的偏差。解决方案是去畸变deskew利用IMU或里程计提供的帧内运动将每个点补偿到帧头时刻的坐标系下。对于静止标定的场景尽量保证载具在采集期间绝对静止能最大程度避免这个问题。如果必须在运动中标定比如下车不方便那就要实现去畸变逻辑后再喂给标定算法。6. 标定结果的验证方法与典型坑标定完不代表就结束了。外参标定结果的验证才是整个流程中我认为最考验经验的部分——因为优化算法永远会给你一个数值解但那个解到底是对的还是自洽但偏离真值的需要靠验证手段来把关。6.1 可视化验证怎么判断投影是对的最直观的验证方式是把雷达点云投影到图像上叠加显示。判断标准有几点点云的边缘和图像的边缘对齐——比如路沿、建筑轮廓、车辆外轮廓点云在图像上的重投影误差不要超过3-5个像素近距离地面点在图像上的位置应该在预期范围内不会飘到空中或钻到地下你可以编写一个简单的预览工具把点云按估计的外参投影到图像半透明叠加显示逐帧查看。但主观目测只能发现明显错误标定误差在0.5度以内时肉眼是很难分辨的。6.2 定量验证用独立数据说话更高置信度的做法是用标定数据之外的一组独立测试数据做定量验证最近邻距离评估把标定后的点云投影到相机坐标系和相机的深度图如果有做最近邻距离对比计算平均误差和最大误差。重投影误差在图像中标定板上选取若干角点将对应的雷达点投影到图像上计算与角点的像素距离。合格的标定通常能做到5像素以内的平均重投影误差。平面一致性对地面做平面拟合检查雷达点云转换到车体坐标系后地面点z坐标是否稳定在一定范围内比如±5厘米。这些验证数据建议留存归档。量产项目中每台车的外参和验证报告应当绑定存档后续如果出现质量问题这是最重要的追溯依据。6.3 那些年我踩过的典型坑坑1雷达的强反射点干扰角点检测高反射标定板虽然方便雷达点云分割但在相机图像中往往会过曝白色高光区域会吃掉棋盘格的黑色角点。解决方案标定板表面做哑光处理避免高光反射或者使用ArUco码板白底黑码过曝阈值宽容度更高。坑2初始值给得太差导致优化收敛错解非线性优化需要好的初值如果你的雷达安装角度和你想的差了很大比如装反了、旋转了90度直接丢给Ceres优化大概率收敛到某个局部最优解。我自己处理过最离谱的一次雷达的z轴被接反了优化器把roll角强行收敛到180度来补偿解出来表面看残差很小但外参完全反了。优化完后一定要做物理合理性检查平移向量的数值应该和实际安装位置相符旋转角应该在预期的合理范围。坑3多帧数据的质量不一样全部混在一起优化有些帧的标定板点云可能被遮挡了一部分有些帧的标定板角点检测错了如果把这些质量差的数据也丢进优化器会拉低整体精度。建议加一个数据筛选步骤每帧数据进入优化器前检查点云中点的数量和分布范围检查PnP的重投影误差不达标的帧直接丢弃。坑4标定板不够大导致平面约束不足我前面说的标定板至少覆盖5-10条扫描线不是拍脑袋的。有一次我用一块A3纸那么大的板子标定一个32线雷达每个位姿只扫到3-4条线平面法向量的估计方差大得离谱最后标出来的pitch角误差超过1度。换了1.2m x 0.8m的板子之后精度直接提升了一个量级。坑5温度变化引起的支架热胀冷缩这个问题在户外长时间工作中很常见。早晨标定的外参到了中午太阳暴晒后可能就有微小的变化。如果系统对精度要求很高建议在一天中不同温度下做几次标定评估温度漂移量。如果漂移超过你的精度容忍范围就得考虑换用低热膨胀系数的安装支架或者在软件里做温度补偿。6.4 什么时候需要重新标定最后我觉得有必要说说什么情况下需要重标这其实是个质量管理问题。我给自己定了几条杠杠供你参考激光雷达被撞击、拆卸或更换过——必须重标雷达和相机的紧固螺丝有过松动——必须重新检查每天首次开机时跑一次快速验证如果重投影误差明显变大——安排重标季节温差超过30度的环境建议每季度校验一次标定不是一劳永逸的事它是系统长期稳定运行的一部分。对精度负责就是对这些细节负责。回到开头说的那个系列传感器标定这件事越往后做越会发现它不是一个孤立的求个矩阵的任务而是和整个传感器系统的时间同步、安装设计、数据质量紧密耦合的工程问题。激光雷达标定的核心价值不光是让点云和图像对齐更是让整个感知系统在物理空间里找到一个共同的、可信的参考基准。把这个基准做扎实了后面的融合、感知、规划才能站在一个坚实的地基上。
返回列表