Files
calibration/docs/20260808_LiDAR-IMU标定现状与问题.md

9.1 KiB
Raw Permalink Blame History

20260808 HI13 + H32LiDARIMU 标定现状与问题

数据:D:\data\calibration_usable_20260808
可用会话:sessions_v1_host_aligned(三优先窗)
当前结果目录:各窗 out_fixed_dt0/
清单:sessions_v1_host_aligned/calibration_manifest_fixed_dt0.json
车辆配置:config/vehicle_hi13_h32_20260808.yaml
约定外参:p_IMU = T_IMU_lidar · p_lidar


1. 一句话结论

旋转 + 主机桥接时间对齐可以冻结;平移(full_se3)尚不可正式交付。
三窗 rotation_only(δt=0)结果跨窗一致,不必因平移先验 Z 修正而重跑旋转


2. 当前可用结果(out_fixed_dt0

约定:p_IMU = T_IMU_lidar · p_lidar;本轮交付 仅旋转t = [0,0,0]time_offset_s = 0

状态 δt roll/pitch/yaw (°) 手眼 RMS (°) 手眼对数 vs CAD prior
priority_174005_174515 rotation_only_accepted 0 0.398 / +0.108 / 89.998 0.625 1374 0.413°
priority_174905_175450 同上 0 0.316 / 0.352 / 90.002 0.293 1182 0.473°
priority_175910_180530 同上 0 0.373 / 0.036 / 90.005 0.786 789 0.375°
  • 跨窗旋转互差约 0.15°–0.47°(相对三窗均值 ≤0.26°)。
  • CAD/安装平移先验只用于后续 SE3 / 校验,不写入本轮交付 T
  • 原始摘要:各窗 out_fixed_dt0/summary.json;总表 calibration_manifest_fixed_dt0.json

2.1 窗1 priority_174005_174515R_IMU_lidar

  • 路径:...\priority_174005_174515\out_fixed_dt0\summary.json
  • rpy_deg_xyz[-0.39806616272552936, 0.10842366761721789, 89.99788311264182]
  • quaternion_xyzw[-0.0031254048203223084, -0.0017872288323561246, 0.7070914597978358, 0.707112936622415]
R =
[[ 3.6946588133e-05, -0.9999758655693408, -0.0069474393698490 ],
 [ 0.9999982088237712,  2.3798651350e-05,  0.0018925598731371 ],
 [-0.0018923488575947, -0.0069474968493909,  0.9999740753156198 ]]
t = [0, 0, 0]

2.2 窗2 priority_174905_175450R_IMU_lidar

  • 路径:...\priority_174905_175450\out_fixed_dt0\summary.json
  • rpy_deg_xyz[-0.31554362742542746, -0.35231680831805484, 90.00193338170823]
  • quaternion_xyzw[0.00022698471903919405, -0.004121119694188399, 0.7071067019847445, 0.7070948146172911]
R =
[[-3.3743238552e-05, -0.9999848355714863, -0.0055070399001942 ],
 [ 0.9999810938467022,  1.2097239027e-07, -0.0061491421465438 ],
 [ 0.0061490495645171, -0.0055071432752239,  0.9999659297008071 ]]
t = [0, 0, 0]

2.3 窗3 priority_175910_180530R_IMU_lidar

  • 路径:...\priority_175910_180530\out_fixed_dt0\summary.json
  • rpy_deg_xyz[-0.37335575043737196, -0.03585856981709423, 90.00538974486676]
  • quaternion_xyzw[-0.002082462199099642, -0.002525219418619018, 0.7071355299053291, 0.7070704554452735]
R =
[[-9.4068775206e-05, -0.9999787650354249, -0.0065161821101807 ],
 [ 0.9999997997313592, -8.9988606603e-05, -0.0006264497522950 ],
 [ 0.0006258500675082, -0.0065162397345547,  0.9999785732361544 ]]
t = [0, 0, 0]

相对历史失败轮次

轮次 问题 结果
sessions_v1_aligned 首帧强行对齐设备钟 三窗手眼失败,RMS ~9°–12°
自由估 δt + signed refine 窗3 δt 漂到 0.48 s;窗2 yaw≈19° 跨窗 yaw 矛盾(81°/19°/93°)
本轮 fixed δt=0 主机桥接后冻结时间 三窗 yaw≈90°,可互证

3. 已澄清并写入配置的坐标系 / 先验

3.1 车体与传感器

  • 车体:X 前 / Y 左 / Z 上;雷达与 IMU 安装在 X 正方向(后轮轴前方)。
  • CAD 图纸可能画成 +X 朝后,那只是读图坐标系,不是车体真实轴。
  • IMUHI13 RFUX 右 / Y 前 / Z 上),原始数据不做轴向重映射。
  • 雷达 NPZ:假定与车体一致(X 前 / Y 左 / Z 上)。

3.2 安装量(translation_m

传感器 X / Y(后轮轴中心) Z(离地)
IMU 2.574 / 0.0365 m 0.8925 + 0.294 = 1.1865 m
雷达 2.522 / 0.00002 m 相位中心离地 1.994999879 m
  • 后轮轴中心离地:294 mm(Z 用离地高时加在 CAD 轴心高上)。
  • 雷达 CAD dZ=1.637499879 m;相位中心离地还需加后轮轴离地 0.294 m 和相位中心偏移 0.0635 m,最终为 1.994999879 m

3.3 导出外参先验

  • R_IMU_lidar ≈ yaw 90°:[[0,-1,0],[1,0,0],[0,0,1]](软约束 σ=15°)。
  • t_IMU_lidar[0.0365, -0.0518, 0.8085] m(相对 Z = 1.994999879 1.1865 = 0.808499879 m)。
  • 旋转先验不因 Z 修正改变;平移先验 Z 更新为 0.808499879 m。

4. 现存问题清单

P1. IMU 预积分平移 Δp 不可用(阻塞正式平移)

  • 现象:可视化模式 4 若用完整 X⁻¹ A X,橙/蓝点云常呈上下错层Z 差米级~几十米)。
  • 根因:加速度预积分缺少可靠重力/零偏处理,t_A 尤其 Z 发散;不是旋转外参错了
  • 旁证:相对 GICP 的旋转残差中位约 0.16°;|t_A| 中位却常 >1 m。
  • 影响:full_se3 / 依赖 IMU 位移的平移估计不可信。
  • 缓解(已做):visualize_pair_3d.pyrotation_only 默认模式 4 = R 共轭 + GICP 的 t_B--mode4-translation gicp|imu|auto)。

P2. 平面运动导致竖直平移弱可观

  • 三优先窗以水平转弯为主,缺少缓坡/俯仰激励。
  • 流水线门控已给出 translation_accepted=false
  • 即使打开平移先验(σ≈5 cm),弱激励下结果易变成先验回显,不宜当标定成功。

P3. 时间偏移若再自由估计会被带偏(已规避,需保持)

  • 主机 UTC 桥接(MSOP/IMU HostReceiveUtc)后,两路已在同一时间轴,残差通常几十毫秒量级。
  • 若再做有符号 δt 精修,会与错误/未收敛的 R 耦合,窗3 曾从约 −0.12 s 走到 0.48 s
  • 现行做法:桥接会话使用 --fixed-time-offset-s 0 --no-signed-time-refine

P4. 单窗低残差 ≠ 外参正确(历史教训)

  • 自由 δt 轮次中,窗2 手眼 RMS 最低(~0.3°)但 yaw≈19°,与 CAD/其他窗差 60°+。
  • 平面运动下 yaw 外参可出现多个能拟合 R_A R_X ≈ R_X R_B 的解。
  • 必须做跨窗一致性 + 可视化叠点,不能只看单窗 RMS。

P5. 旋转软先验尚未做无先验对照

  • 当前 σ=15°;笔记显示 Tsai 初值本身已接近(约 0.3°–1.1° RMS),不像纯先验硬拽。
  • 仍缺一次:关闭先验或放大 sigma_deg 的对照,以排除「只是被拉到 90°」的疑虑。

P6. 文档与操作约定未完全同步(工程)

  • README 需明确写清:host-bridge 后固定 δt=0、禁用 signed refine、rotation_only 可视化用法。
  • 交付物目前缺一版「冻结的联合/中位 R + 使用说明」JSON/报告(旋转可交,平移明确不交)。

5. 不该做 / 可以做

动作 建议
因 Z 先验修正重跑三窗 rotation_only 不必R 未依赖新 t
正式交付 6-DOF / 信赖当前 Δp 估 t 不要
试验性 full_se3(固定 R、δt=0、新 t 先验) 可做,结果标「实验」
可视化验收模式 3 vs 4(gicp 平移) 建议做
无先验 / 大 σ 旋转对照 建议做
冻结交付 R + δt=0 说明 建议做
补采缓坡或加强垂直尺寸约束后再估 t 正式平移前需要

6. 建议下一步顺序

  1. 验收旋转:三窗抽转弯运动对,模式 3/4 叠点;可选无先验对照。
  2. 定稿旋转:三窗中位或联合手眼 → 交付 R_IMU_lidar +「δt=0(主机桥接)」说明;明确不交 t
  3. 工程收尾:README 主机桥接配方;需要时再整理联合标定脚本入口。
  4. 平移(靠后):改善 IMU 位移模型或改用更可靠的位移观测 + 竖直激励后,再用新 t 先验跑 SE3。

7. 常用路径与命令

数据根:
  D:\data\calibration_usable_20260808\sessions_v1_host_aligned\

结果:
  ...\priority_XXXX\out_fixed_dt0\summary.json
  ...\priority_XXXX\out_fixed_dt0\motion_pairs.json
  ...\calibration_manifest_fixed_dt0.json
# 可视化(rotation_only 默认模式4用 GICP 平移)
python tools\visualize_pair_3d.py `
  --lidar D:\data\calibration_usable_20260808\sessions_v1_host_aligned\priority_174005_174515\lidar `
  --summary D:\data\calibration_usable_20260808\sessions_v1_host_aligned\priority_174005_174515\out_fixed_dt0\summary.json `
  --pair-index 0

# 若要看「坏 Δp」导致的错层效果:
#   --mode4-translation imu

8. 问题优先级(跟踪用)

ID 严重度 状态 标题
P1 未解决 IMU Δp 不可用,阻塞正式平移
P2 未解决 平面运动,竖直 t 弱可观
P3 已规避 自由 δt / signed refine 带偏(需保持冻结)
P4 已吸收教训 单窗低残差不可单独验收
P5 待做 无旋转先验对照
P6 待做 README/交付物同步