6.1 KiB
从 LiDAR–IMU 平移困难到 RTK–IMU 工程外参
本文解释为什么仓库同时保留 LiDAR–IMU 与 RTK–IMU 两条链路、为什么本轮将天线–IMU 外参的工程验证重心转向 RTK–IMU,以及两条链路如何避免互相混淆。
决策结论
保留两条链路,不删除 LiDAR–IMU。LiDAR–IMU 仍然是雷达与 IMU 旋转/时间关系的有效工具,也记录了平移失败的具体证据;RTK–IMU 是针对“天线相位中心到 IMU 的杆臂”采用的独立观测模型。它们共享基础数学与 IMU 预积分,但不共享求解器或验收结论。
当前 RTK–IMU 结果应描述为:机械测量锚定的杆臂,经 RTK+IMU 动态数据一致性验证的工程候选。它不是 data-only 平移标定,也不是已正式 engineering 放行的结果。
LiDAR–IMU 为什么暂时不能交平移
LiDAR–IMU 链路将相邻关键帧的点云配准相对运动,与同一区间 IMU 预积分运动做手眼/联合优化。当前实车数据中旋转和时间关系可得到稳定结果,但平移受两个独立问题限制:
- IMU 位移预积分不可靠。 加速度积分对重力与加速度零偏敏感;当前
Δp尤其 Z 分量会发散。已有证据显示点云相对旋转残差中位约0.16°,而 IMU 位移增量模长常大于1 m,说明这不是单纯旋转误差。 - 运动激励不足。 现有重点窗口以水平转弯为主,缺少连续坡道/俯仰激励,竖直杆臂弱可观。即使加入很强的平移先验,求解也可能只是先验回显,而非数据观测。
因此 LiDAR–IMU 的状态是:旋转与时间对齐可用,full_se3/平移不可作为安装参数交付。详细证据在 LiDAR–IMU 现状与问题 和 问题清单。
为什么 RTK–IMU 更适合验证天线杆臂
RTK 直接给出天线相位中心的 GNSS 位置与 Doppler 速度;双天线还给出 ANT1→ANT2 基线方向。对固定旋转 R_WI 和杆臂 l_I = p_ANT1^I,观测模型为:
p_ANT1^W = p_IMU^W + R_WI * l_I
v_ANT1^W = v_IMU^W + R_WI * ((omega - b_g) × l_I)
转弯时的 omega × l_I、加减速和坡道中的姿态变化,都会直接增强杆臂可观性;这比把加速度二次积分当作唯一位移来源更适合做天线–IMU 一致性检查。
双天线基线本身只有 2DoF 方向信息,不能凭空构造完整三轴姿态。本项目采用:
- R1b:以基线和 IMU 动态估计 ANT1→ANT2 在 IMU 中的 2DoF 方向。
- R2V:以基线和高质量 Doppler velocity 做独立诊断。
- R2G:在确认水平的静止场地,以基线 + 重力 + 地面水平先验补齐完整旋转。
- R3:跨会话、block-out、协方差和可观性复核。
正式固定旋转来源是 R2G_gravity_level_prior;旧式 GNHPR 三轴姿态手眼只保留为诊断,不作为正式外参。
RTK–IMU 平移如何求解和验证
每个 GNSS node 使用 15DoF 状态 (R,p,v,bg,ba),相邻 node 由 covariance-whitened IMU preintegration 与 bias random-walk 连接。因子包括:
- BESTNAVA:天线相位中心 XYZ;
- GGA:仅在 BEST 缺失时约束 XY,不混用 MSL 高度到 ENU Z;
- Doppler:天线速度;
- HPR:可选基线/姿态观测,direct 与短 bridge 使用不同协方差;
- 静止段:gravity candidate 与 ZUPT 分离,禁止将匀速直线误作 ZUPT。
杆臂的判断流程不是“优化器有数值就算成功”:
- 先用无机械先验的 free solve 评估 Schur 边缘化后的 3×3 杆臂信息、协方差、最弱方向和多初值稳定性。
- 若完整 XYZ 不可观,冻结 free 结果为诊断基线,不继续无限增加非线性 free solve。
- 以机械测量作为绝对杆臂来源,比较 fixed-mechanical、soft-prior 与 free 的代价和物理残差。
- 在 circle、left-right、slope 高动态窗口,以及与标定窗口不重叠的 held-out 数据上固定杆臂验证。
- 做旋转扰动敏感性、独立 innovation 与 propagation root-cause audit;这些审计不重新优化杆臂。
本次结果应如何理解
- 当前固定工程候选:
l_I = [-0.4518015159, -0.2644749820, 0.7314656115] m。 - 机械测量决定杆臂绝对值;RTK+IMU 动态数据用于独立一致性和稳定性验证。
- 47 个非重叠标定窗口表明机械先验与数据拟合相容,但没有足够的数据驱动信息去有意义地细化机械值。
- held-out 物理验证和旋转敏感性通过;杆臂敏感的高动态数据没有发现机械外参明显冲突。
- 低速、低角速度独立传播仍有约
0.20 m/s²的公共加速度偏差;这更像 propagation nuisance,而不是由omega × l消失后的杆臂错误造成。该问题尚未关闭,故engineering_translation_accepted=false。
这解释了两个同时成立的事实:机械外参没有被动态数据否定,但整个传播模型尚未达到正式放行标准。机器可读结果见 工程 release 决策。
代码边界和共享模块
imu_lidar/
lidar_io.py, lidar_deskew.py, registration.py, keyframes.py
motion_pairs.py, phase_a.py, pipeline.py, joint_optimizer.py
-> LiDAR–IMU 专用
rtk_imu/
rtk_io.py, rtk_attitude.py, rtk_imu_rotation.py
rtk_imu_multisource.py, rtk_imu_engineering.py, rtk_imu_node_graph.py
-> RTK–IMU 专用
imu_lidar/contracts.py, geometry.py, geodesy.py, imu_io.py,
imu_preintegration.py, rotation_handeye.py
-> 两条链路可复用的基础能力
RTK–IMU 只能 import 这 6 个共享模块,不应 import LiDAR 专用求解文件。命令入口都在 tools/,并按 run_rtk_imu_*、audit_rtk_imu_* 与 LiDAR 工具名称区分。
进一步工作
在宣称正式工程放行前,应优先关闭低速传播公共加速度偏差:区分图优化 nuisance accel bias 与可迁移物理 bias,复核静态 bias、重力泄漏和短时传播。不要用调机械先验、调 covariance 或扩大 free solve 来掩盖该问题。
RTK–IMU 的完整工程流程、当前变换和复现命令见 README_RTK_IMU.md。