返回专辑
·Johan·4 分钟阅读

Allan 方差:IMU 噪声填参实战

静止长采、曲线读 N/K、连续到离散转换与 Chi2 验收;datasheet 与实测差距。

Allan 方差:IMU 噪声填参实战

1. datasheet 不能直接填 yaml

陀螺噪声 0.01 °/s/√Hz 写进 VINS yaml——我的建议:先 Allan 实测。噪声差一个数量级,预积分协方差就不对:过度自信则 scale 飘,过度保守则优化 sluggish、视觉权重过大。Allan 是在你的 IMU、你的 PCB、你的安装方式下把噪声变成可核对数字的标准路径,不是可选项。产线若只信 datasheet,冬夏温差一大就要重开「算法回退」工单,根因常在噪声表而非前端。

2. Allan deviation 定义

静止数据,平均窗口 下的 Allan 偏差:

双对数 vs 曲线揭示噪声成分。斜率 区对应白噪声, 区对应 bias random walk——VIO 填参最常用这两段。画图时保留原始 点,勿只存拟合直线,便于日后审计。

3. 采集要求

隔振静止 2–4 小时(bias random walk 需长时);采样率用运行值(200/400 Hz),勿降采样再分析;记录温度——MEMS 温漂显著,同板子冬夏曲线差一截不罕见。陀螺与加速度计分别做,分别填 gyroscope_noise_density 等字段。采集中避免敲桌子、空调直吹——环境振动会抬高白噪声段,拟合出的 偏大,VIO 会过度保守。

4. 曲线怎么读

斜率类型参数
白噪声
0零偏不稳定性
bias random walk

白噪声 区、常取 处读;bias RW 区读。拟合时勿把温度漂移段误当 RW——长采数据末尾斜率变陡,常是温漂而非算法问题。拟合脚本应输出 与拟合区间 范围,便于审计。

5. 填入预积分 / ESKF

连续 → 离散:库之间 ,必须读文档。Kalibr 输出与 Allan 拟合的 可能差 或采样率因子——填 OpenVINS/VINS 前对照 wiki conversion。bias RW:。填参后做 sanity check:静止数据上 propagation 的协方差 growth 是否合理;IMU 因子 Chi2 应接近 dof,而不是靠「轨迹顺眼」验收。

6. 过小 vs 过大

参数过小过大
白噪声过度自信,scale 飘优化 sluggish
bias RWbias 不动,长时漂bias 乱跳

改参后看 IMU 因子 Chi2 是否接近 dof(~1/dof),静止 bias 是否稳定——勿只看轨迹「顺眼」。同 bag 上 ATE 会变,但 Chi2 和静止段 bias 标准差更可靠。若白噪声过小,视觉权重相对被压低,表现为「IMU 主导、视觉救不回来尺度」。

7. datasheet 与温度

datasheet 是 chip 级理想条件;PCB、电源、安装方式通常差 1–3 倍。用 datasheet 作初值可以,必须 Allan 验证。量产若只用一次 Allan,须在规格书写适用温度范围。kalibr_allan 可自动化;采样率须等于运行采样率,降采样做 Allan 再 upsample 填参会系统性错。多 IMU 单元 spread 大时,产线应抽检而非只信单板数据。

8. 案例:量产只标一次的温度坑

同 IMU 夏测 Allan 填参,冬测 scale 飘——根因是 RW 系数随温度变,不是前端算法回退。规格书应写噪声参数适用温度,或分温段表。静止 30 min bias 标准差可作为产线抽检项,比跑整条 EuRoC 便宜。

9. 验收

  • 保存 raw 曲线 + 拟合
  • 拟合值 vs datasheet 比值;
  • 填参前后 Chi2 变化;
  • 静止 30 min bias 估计标准差合理;
  • 标定采样率 = 运行采样率。

Allan 是把「噪声」从 datasheet 神话拉回你板子上的可核对数字——跳过这步,后面调 BA 和回环都是在错协方差上救火。拟合曲线与 应随 IMU 批次归档,便于量产后追溯。Kalibr cam-imu 与 Allan 各出一组噪声时,以 Allan 为准并记录二者比值。产线抽检可对比 Allan 与 datasheet 上限,超阈退回硬件排查。长采末尾温漂段拟合时应截断,勿把 ramp 当 RW。Allan 原始数据与拟合参数应进版本库,与 IMU 批次号绑定。

← 全部文章

johan's blog