跳转至

00a 惯导基础概念入门 Wiki (PSINS) — 新手扫盲篇

所属层级: L0基础 · 前置阅读(在 00_glvf.md 之前读) 前置依赖: 无(这是整个Wiki的起点) 学习目标: 读完你应能回答

  1. 为什么"两个角增量相加 ≠ 一次合成的角增量"?圆锥误差从哪来?
  2. 舒勒84分钟振荡到底是什么?为什么它决定了惯导的"基本精度极限"?
  3. 陀螺的 ARW、零偏、标度因子、g 灵敏度区别是什么?哪个对位置影响最大?
  4. 加计的 VRW、零偏、标度因子、g² 灵敏度区别是什么?为什么 1mg 零偏 = 1km/h 位置误差?
  5. 单子样 vs 多子样怎么选?为什么飞控用单子样、导弹用多子样?多子样需要外推吗?

📚 衔接 wiki 数学主线:本文讲惯导"黑话"扫盲(圆锥/划桨/舒勒/IMU 指标),误差模型分类与 Allan 方差详见 IMU误差模型Allan方差

🧩 这个文件为什么存在

你在 00_glvf.md 里会看到一堆"黑话":

  • 第 42-46 行的 glv.cs(圆锥/划桨系数表)——什么是圆锥补偿?
  • 第 47 行的 glv.ws(舒勒频率)——为什么是 84 分钟?
  • 第 58-76 行的 glv.dph / glv.dpsh / glv.dphpsh / glv.ugpsHz / glv.ugpsh——这些全是 IMU 指标单位,但分不清谁是谁

这4个概念是惯导入门的最大拦路虎。这个文件就是把这些"黑话"一次性讲透,让你回头看 00_glvf.md 时不再一脸懵。

学完后,你会发现 02_cnscl.md(圆锥/划桨补偿实现)和 03_insupdate.md(SINS三连更新)的物理意义会一下子通透。


1. 🌀 圆锥运动与圆锥补偿

1.1 物理直觉:为什么"两个旋转相加 ≠ 合成旋转"

日常比喻:你手里握一根筷子,让筷子的尖端画一个圆(但筷子本身不绕自己的轴转)。这就是圆锥运动——物体的指向在画圆锥面,但物体本身没有"自转"。

关键问题:陀螺测的是角速度 \(\boldsymbol{\omega}(t)\)。如果两个正交轴上有同频但相位差 90° 的角振动:

\(\omega_x(t) = \Omega \cos(\omega t), \quad \omega_y(t) = \Omega \sin(\omega t)\)

每个轴上 \(\int_0^T \omega \, dt\) 平均看起来都是零(余弦/正弦整周期积分为零)。但物体的实际指向在画圆锥面——第三个轴(z轴)会出现一个非零的平均旋转!

这就是圆锥误差的本质:旋转的不可交换性。

数学根源:两个旋转矩阵不交换 \(\mathbf{C}(\boldsymbol{\phi}_1) \cdot \mathbf{C}(\boldsymbol{\phi}_2) \neq \mathbf{C}(\boldsymbol{\phi}_2) \cdot \mathbf{C}(\boldsymbol{\phi}_1)\)

所以 \(\boldsymbol{\phi}_1 + \boldsymbol{\phi}_2 \neq \boldsymbol{\phi}_{\text{total}}\)。差的那一项,就是圆锥补偿要补的。

1.2 双子样补偿公式推导

假设一个圆锥周期内取 2 个子样 \(\mathbf{wm}_1, \mathbf{wm}_2\)(即 IMU 的两个角增量输出):

  • 未补偿\(\Delta\boldsymbol{\phi}_{\text{naive}} = \mathbf{wm}_1 + \mathbf{wm}_2\) ← 这个会丢掉不可交换性误差
  • 补偿后

\(\boxed{\Delta\boldsymbol{\phi} = \mathbf{wm}_1 + \mathbf{wm}_2 + \frac{2}{3} \mathbf{wm}_1 \times \mathbf{wm}_2}\)

2/3 系数的来源:对纯正弦圆锥运动做最小二乘拟合,使得一个完整周期内的累积误差 = 0,刚好解出来 2/3。它不是任意选的,是数学最优。

N 子样一般公式(扩展到大机动场景):

\(\Delta\boldsymbol{\phi} = \sum_{j=1}^{N} \mathbf{wm}_j + \sum_{j=1}^{N-1} c_{N,j} \cdot \mathbf{wm}_j \times \mathbf{wm}_{j+1}\)

其中 \(c_{N,j}\) 是 N 子样算法下第 j 个子样的权重,对应 PSINS 里的 glv.cs 表。

1.3 在 PSINS 里对应什么

glvf.m 第 89-94 行的 glv.cs 表:

子样数 N glv.cs 第 N-1 行 权重含义
2 [2, 0, 0, 0, 0]/3 双子样:\(c_{2,1}=2/3\)
3 [9, 27, 0, 0, 0]/20 三子样:\(c_{3,1}=9/20, c_{3,2}=27/20\)
4 [54, 92, 214, 0, 0]/105 四子样
5 [250, 525, 650, 1375, 0]/504 五子样
6 [2315, 4558, 7296, 7834, 15797]/4620 六子样

调用流程(详见 02_cnscl.md):cnscl.m 取出 cm = glv.cs(n-1, 1:n-1)' .* wm(1:n-1,:),然后 dphim = sum(cm) × wm(n,:) 做叉乘,再加到主项 sum(wm) 上。

工程意义

  • 飞机/导弹高频角振动场景下,不做圆锥补偿 → 10 秒内姿态漂移 > 1°
  • 做了双子样补偿 → 误差 < 10 arcsec(约 5e-5 rad)

1.4 一句话记忆

圆锥补偿 = 在双子样相加时,额外补一个 \(\frac{2}{3} \cdot \mathbf{wm}_1 \times \mathbf{wm}_2\),抵消旋转的不可交换性。

1.5 子样策略:单子样 vs 多子样,到底怎么选?

这是新手最常问的问题:"我看飞控/Pixhawk 里好像就是单子样?为什么 PSINS 默认双子样?"

什么是"子样"

子样(subsample) = 在一个姿态更新周期 \(T_s\) 内,IMU 采了几个点。

比如 IMU 输出频率 200Hz,姿态更新频率 100Hz → 每个更新周期内采了 2 个点 → 双子样。 如果 IMU 200Hz,姿态更新也 200Hz → 每个周期 1 个点 → 单子样

IMU采样:   |wm1|wm2|wm1|wm2|wm1|wm2|     200Hz
姿态更新:  |   T1   |   T2   |   T3   |   100Hz (双子样)

IMU采样:   |wm|wm|wm|wm|wm|wm|wm|wm|    200Hz
姿态更新:  |T1|T2|T3|T4|T5|T6|T7|T8|    200Hz (单子样)

单子样 vs 多子样对比

维度 单子样 (N=1) 双子样 (N=2) 三子样 (N=3) 四子样+
圆锥补偿 ❌ 无法做标准补偿 ✅ 2/3 系数 ✅ 9/20+27/20 ✅ 更高阶
补偿精度 0(无补偿) 消除 2 阶误差 消除 3 阶 消除 4 阶+
要求 IMU 频率 = 更新频率 2× 更新频率 3× 更新频率 N× 更新频率
计算量 最低 中等 较高
适用场景 低动态/低成本 通用车载/机载 高动态导弹/飞机 激光陀螺高精度

为什么很多 MEMS 飞控用单子样?

你说得对——Pixhawk/PX4 等开源飞控确实多用单子样。原因:

  1. MEMS 陀螺的圆锥误差本身就小:消费级 MEMS 陀螺 ARW \~0.1°/√h,零偏 1-10°/h,零偏本身比圆锥误差大几个数量级——圆锥补不补几乎看不出来
  2. 飞控动态不高:多旋翼/固定翼的角速度一般 < 100°/s,角振动频率 < 10Hz,圆锥误差项 \(\mathbf{wm}_1 \times \mathbf{wm}_2\) 的量级 \~ \((0.5°)^2 \approx 0.25°^2 \approx 7.6 \times 10^{-5}\) rad² → 对姿态的影响 < 0.01°/s,飞控精度(1-5°)下完全可忽略
  3. 算力限制:嵌入式 MCU(STM32 F4/H7)算力有限,单子样一个叉乘都省了
  4. IMU 频率 = 更新频率:飞控的 IMU 输出 1-8kHz,但 EKF 更新也 100-400Hz,本来频率就够快,没必要多采再合并

什么时候必须用多子样?

场景 为什么必须多子样
高动态导弹/炮弹 角速度可达 1000°/s,角振动频率 > 100Hz,圆锥误差项 \((5°)^2 \approx 0.76°\) → 不补偿姿态直接爆
激光陀螺惯导 陀螺 ARW < 0.001°/√h,零偏 < 0.01°/h,圆锥误差反而成了主要误差源,必须补偿
振动环境(车载发动机旁) 发动机 50-200Hz 振动直接耦合到 IMU,产生周期性圆锥运动
飞机机翼颤振 气动弹性引起 5-30Hz 角振动

"牺牲频率换精度"?

不完全对,更准确的说法是:固定 IMU 采样率,降低更新频率 → 用更多子样换更高补偿精度

  • IMU 固定 200Hz → 更新 200Hz(单子样) vs 更新 100Hz(双子样)
  • 单子样的信息量更大(每 5ms 更新一次姿态),但没有补偿
  • 双子样信息量小一些(每 10ms 更新一次),但有 2/3 补偿项
  • 对于高精度系统,补偿的收益 >> 更新频率的损失

但如果 IMU 频率不变,更新频率也不能降(比如飞控需要 400Hz 姿态控制),那就只能单子样——飞控选单子样不是因为单子样更好,而是因为 IMU 频率和更新频率被绑死了

PSINS 的特殊单子样模式

cnscl.m 第 33-34 行有个巧妙的 coneoptimal=2 模式:

if coneoptimal==2
    dphim = 1/12*cros(glv.wm_1,wm);  % 用上一个采样周期最后一个子样做补偿

这叫跨周期单子样补偿——虽然每个更新周期只有 1 个子样,但利用上一个周期的最后一个子样 \(\mathbf{wm}_{-1}\),也能构造一个 \(\frac{1}{12}\mathbf{wm}_{-1} \times \mathbf{wm}\) 的补偿项(系数 1/12 而非 2/3,因为跨周期采样间隔不均匀)。

这就是"低动态 MEMS 系统也想做补偿"的折中方案——代价只是多存一个 \(\mathbf{wm}_{-1}\)glv.wm_1),几乎零成本。

1.6 算法漂移表:为什么子样越多精度越高?

下面的表格来自秦永元老师的《惯性导航(第三版)》(表 9.4.1),直观展示了不同子样算法在纯圆锥运动下的漂移量级

设圆锥运动参数:半锥角 \(a\)、角频率 \(\omega\)、姿态更新周期 \(h\)\(\Delta\boldsymbol{\theta}_i\) 是第 \(i\) 个子样的角增量。

算法 旋转矢量 \(\boldsymbol{\Phi}\) 算法漂移 \(\|\dot{\bar{\boldsymbol{\Phi}}}_{er}\|\)
单子样 \(\Delta\boldsymbol{\theta}\) \(\dfrac{a^2\omega}{12}(\omega h)^2\)
优化双子样 \(\Delta\boldsymbol{\theta}_1+\Delta\boldsymbol{\theta}_2+\dfrac{2}{3}\Delta\boldsymbol{\theta}_1 \times \Delta\boldsymbol{\theta}_2\) \(\dfrac{a^2\omega}{960}(\omega h)^4\)
优化三子样 \(\Delta\boldsymbol{\theta}_1+\Delta\boldsymbol{\theta}_2+\Delta\boldsymbol{\theta}_3+\dfrac{9}{20}\Delta\boldsymbol{\theta}_1 \times \Delta\boldsymbol{\theta}_3+\dfrac{27}{40}\Delta\boldsymbol{\theta}_2 \times (\Delta\boldsymbol{\theta}_3-\Delta\boldsymbol{\theta}_1)\) \(\dfrac{a^2\omega}{204\,120}(\omega h)^6\)
优化四子样 \(\begin{aligned}&\Delta\boldsymbol{\theta}_1+\Delta\boldsymbol{\theta}_2+\Delta\boldsymbol{\theta}_3+\Delta\boldsymbol{\theta}_4 +\dfrac{214}{315}(\Delta\boldsymbol{\theta}_1 \times \Delta\boldsymbol{\theta}_2+\Delta\boldsymbol{\theta}_3 \times \Delta\boldsymbol{\theta}_4)\\&+\dfrac{46}{105}(\Delta\boldsymbol{\theta}_1 \times \Delta\boldsymbol{\theta}_3+\Delta\boldsymbol{\theta}_2 \times \Delta\boldsymbol{\theta}_4)+\dfrac{54}{105}\Delta\boldsymbol{\theta}_1 \times \Delta\boldsymbol{\theta}_4+\dfrac{214}{315}\Delta\boldsymbol{\theta}_2 \times \Delta\boldsymbol{\theta}_3\end{aligned}\) \(\dfrac{a^2\omega}{82\,575\,360}(\omega h)^8\)

怎么读这张表?

关键看 \((\omega h)^n\) 的幂次——它决定了算法漂移随"圆锥频率 × 更新周期"的增长速度:

算法 \((\omega h)\) 幂次 如果 \(\omega h = 0.1\)(即 10 个采样点/周期) 如果 \(\omega h = 0.01\)(100 个采样点/周期)
单子样 \((\omega h)^2\) \(10^{-2}\) \(10^{-4}\)
双子样 \((\omega h)^4\) \(10^{-4}\) \(10^{-8}\)
三子样 \((\omega h)^6\) \(10^{-6}\) \(10^{-12}\)
四子样 \((\omega h)^8\) \(10^{-8}\) \(10^{-16}\)

直觉:每增加一个子样,误差阶数提高 2 阶。当 \(\omega h\) 很小(高频采样)时,多子样的增益是指数级的——这也是为什么高精度惯导一定要多子样。

反过来:当 \(\omega h\) 很大(低频采样 + 高频圆锥运动),即使双子样也压不住——这就是为什么飞控单子样在高振动下精度骤降。

和 PSINS 的 glv.cs 对照

你提供的"优化双子样"公式里的 \(\frac{2}{3}\) 系数,正好就是 glvf.m 第 90 行 glv.cs(1,:) = [2,0,0,0,0]/3。三子样公式里的 \(\frac{9}{20}\)\(\frac{27}{40}\) 对应 glv.cs(2,:) = [9,27,0,0,0]/20(注意 \(\frac{27}{40} = \frac{27}{20} \times \frac{1}{2}\),PSINS 的实现形式略有展开差异但数学等价)。

1.7 多子样需要外推吗?

不需要。 多子样是"已经采到的数据做补偿",不是"预测未来"。

概念 含义 需不需要?
多子样补偿 一个更新周期内已采到 N 个点,用这 N 个点算补偿 ✅ 就是 cnscl.m 的标准做法
外推(extrapolation) 用当前周期数据预测下一周期的角增量 ❌ 圆锥补偿不需要
跨周期补偿 用上一个周期的最后一个子样 + 当前单子样 ✅ coneoptimal=2 模式,但这叫"回顾"不是"外推"

数据流图(为什么多子样不需要外推):

更新周期 T (100Hz, h=10ms)
|<-------- 已采到的数据 -------->|
wm1(0-5ms)  wm2(5-10ms)  →  cnscl算补偿  →  insupdate更新姿态
                        用的是已经采完的 wm1, wm2
                        不需要预测 wm3

唯一的"跨周期"情况是 coneoptimal=2 模式(单子样+前一样),它用的是上一个周期已采到的 \(\mathbf{wm}_{-1}\)(存在 glv.wm_1 里),也不是外推——是回顾(lookback)。

一句话总结:圆锥补偿用的全是"已采到的数据",多子样 = 本周期的多个点,跨周期 = 上一个周期的最后一个点。没有预测,没有外推。

1.8 什么时候需要圆锥补偿?——一个判断标准

很多飞控有双子样甚至多子样数据,但不做那个 \(\frac{2}{3}\mathbf{wm}_1 \times \mathbf{wm}_2\) 叉乘项。到底什么时候需要做?

看一个量就够了:圆锥误差项 vs 陀螺零偏

\[\text{圆锥误差项} \sim \frac{2}{3}|\mathbf{wm}_1 \times \mathbf{wm}_2| \sim (\omega \cdot h)^2 \quad \text{vs} \quad \text{陀螺零偏} \cdot h\]
场景 单子样角增量 wm 圆锥误差项 陀螺零偏·h 需要补偿?
飞控 8kHz,角速度 200°/s 0.025° \((0.025)^2 \times \frac{2}{3} \approx 0.02°\) 1°/h × 0.125ms \(\approx 3.5 \times 10^{-5}\)° ❌ 圆锥误差比零偏大,但绝对值极小
PSINS 100Hz,角速度 200°/s \(2^2 \times \frac{2}{3} \approx 2.67\)°² → 1.6° 0.01°/h × 10ms \(\approx 2.8 \times 10^{-5}\)° ✅ 远大于零偏
飞控 8kHz,但发动机振动 200Hz 振动幅度 0.5° \((0.5)^2 \times \frac{2}{3} \approx 0.41°\) 1°/h × 0.125ms ⚠️ 接近了,振动场景要注意

一句话判断标准:圆锥误差项 \(\sim (\omega \cdot h)^2\),如果它比陀螺零偏还小,就不用做;比零偏大,就必须做。频率越高(\(h\) 越小),圆锥误差越小 → 飞控高频天然不需要。但如果高振动场景,即使高频也要注意。

1.9 MEMS 检测不到地球自转,所以不需要扣 \(\omega_{ie}^n\)

不完全对。要分两个场景看:

场景一:飞控(只做姿态,不做惯导位置解算)

地球自转 = 15°/h。MEMS 陀螺零偏 1-10°/h,ARW 0.1°/√h。地球自转和零偏同量级或更小,扣不扣对姿态影响在零偏误差的"噪声"里。而且飞控有加计做重力对准,姿态不会长时间发散。可以不扣 \(\omega_{ie}^n\)

场景二:惯导(做位置解算)

即使 MEMS 陀螺精度差,如果你要算位置,\(\omega_{ie}^n\) 会通过科里奥利加速度耦合到速度上:

\[\mathbf{a}_{\text{有害}} = -(2\boldsymbol{\omega}_{ie}^n + \boldsymbol{\omega}_{en}^n) \times \mathbf{v}^n\]
  • 飞机速度 300 m/s 时:\(2\omega_{ie} \times v = 2 \times 7.29 \times 10^{-5} \times 300 \approx 0.044\) m/s²
  • 不扣的话,10 分钟后速度误差 \(0.044 \times 600 = 26\) m/s,位置误差 \(\frac{1}{2} \times 0.044 \times 600^2 \approx 7920\) m

所以:地球自转 \(\omega_{ie}^n\) 不扣没关系的前提是"你不做位置解算"或"速度很低"。一旦做惯导位置解算,无论什么等级 IMU,都必须扣。

场景 \(\omega_{ie}^n\) 原因
飞控只做姿态 ❌ 可以不扣 地球自转 15°/h 被陀螺零偏淹没
飞控 + GPS 做位置 ❌ 不需要 位置靠 GPS,不需要惯导推算
惯导做位置解算 必须扣 科里奥利加速度耦合到速度→位置,10 分钟误差 8km

1.10 \(\omega_{en}^n\) vs \(\omega_{in}^n\) 区别 + 科里奥利加速度所有 IMU 都要扣吗?

\(\omega_{en}^n\)\(\omega_{in}^n\) 的区别

符号 读法 物理含义 大小量级
\(\omega_{ie}^n\) e系相对于i系的角速度 地球在转(不管你动不动) 7.29e-5 rad/s(恒定)
\(\omega_{en}^n\) n系相对于e系的角速度 你移动→n系坐标轴方向跟着变 取决于速度,300m/s 时 ~5e-5 rad/s
\(\omega_{in}^n\) n系相对于i系的总角速度 \(= \omega_{ie}^n + \omega_{en}^n\) 上面两个加起来
  • \(\omega_{ie}^n\):地球在转(不管你动不动)
  • \(\omega_{en}^n\):你在动→n系跟着你的位置变方向
  • \(\omega_{in}^n\):两个加起来 = n系在惯性空间的总旋转

科里奥利加速度 \((2\omega_{ie}^n + \omega_{en}^n) \times \mathbf{v}^n\) 所有 IMU 都要扣吗?

只要做位置解算,就要扣,和 IMU 等级无关。 原因是科里奥利加速度是物理效应,不是 IMU 误差:

  • 你站在地球(旋转系)上运动 → 必然受科里奥利力
  • 这个力和你用什么等级的 IMU 没关系——地球在转,你在动,就有
  • 300m/s 时科里奥利 = 0.044 m/s² ≈ 4.5mg → 不扣就是 4.5mg 的加计零偏等效
IMU 等级 陀螺零偏 加计零偏 科里奥利要不要扣?
消费级 MEMS 1-10°/h 1-10mg ✅ 必须扣(4.5mg 比加计零偏还大!)
战术级 MEMS 0.01-1°/h 0.05-1mg ✅ 必须扣
激光陀螺 <0.001°/h <0.05mg ✅ 必须扣

关键直觉:科里奥利加速度不是"IMU 误差",是"物理效应"。你用再好的 IMU,地球还是照样转,你还是照样受科里奥利力。陀螺零偏可以靠标定/KF 估,但科里奥利必须从公式里扣。


2. 🚣 划桨运动与划桨补偿

2.1 物理直觉:划桨 = 圆锥的"加速度版"

比喻:船在波浪里同时做横摇(角振动)和上下颠簸(线振动)。加计感受到的比力里会有一个额外的虚假项——这就是划桨误差。

圆锥是纯角运动的耦合;划桨是角振动 + 线振动的耦合。两者数学形式几乎对称。

数学根源:当 \(\boldsymbol{\omega}(t)\)\(\mathbf{f}(t)\) 同频但有相位差时,加计的积分 \(\int \mathbf{f} \, dt\) 里会出现一个非零项,和 \(\boldsymbol{\omega} \times \mathbf{f}\) 有关——本质还是不可交换性。

2.2 双子样划桨补偿公式

\(\boxed{\Delta\mathbf{v} = \mathbf{vm}_1 + \mathbf{vm}_2 + \frac{2}{3}\bigl(\mathbf{wm}_1 \times \mathbf{vm}_2 + \mathbf{wm}_2 \times \mathbf{vm}_1\bigr)}\)

和圆锥公式对比:

  • 圆锥:1 个叉乘项 \(\frac{2}{3} \mathbf{wm}_1 \times \mathbf{wm}_2\)
  • 划桨:2 个叉乘项的对称组合 \(\frac{2}{3}(\mathbf{wm}_1 \times \mathbf{vm}_2 + \mathbf{wm}_2 \times \mathbf{vm}_1)\)

工程意义:船舶/车载高振动场景下,不做划桨补偿 → 10 秒内速度误差 > 0.1 m/s。

2.3 一句话记忆

划桨补偿 = 圆锥补偿的加速度版,在双子样相加时补一个 \(\frac{2}{3} \cdot (\mathbf{wm} \times \mathbf{vm}\) 的对称组合\()\)


3. 🌊 舒勒振荡与舒勒频率

3.1 物理直觉:地心倒立摆

把惯导想象成一个倒立摆

  • 摆锤是你(惯导载体)
  • 支点是地心
  • 摆长 = 地球半径 \(R_e \approx 6378\) km

这个倒立摆的自然周期:

\(T_s = 2\pi \sqrt{\frac{R_e}{g_0}} \approx 2\pi \sqrt{\frac{6.378 \times 10^6}{9.8}} \approx 5057 \text{ s} \approx 84.4 \text{ min}\)

这就是舒勒周期。所有"调谐到舒勒频率"的惯导回路,等价于让这个摆的周期 = 84.4 分钟。

调谐的好处:地面车辆任何加减速都不会让这个摆"晃起来"——位置误差不会因为机动而振荡发散。这就是舒勒调谐的工程价值。

3.2 数学推导

惯导水平位置误差方程(简化形式):

\(\ddot{x} = -\frac{g_0}{R_e} x + \text{误差源}\)

这是一个标准的二阶振荡系统,对应 \(\omega^2 = g_0/R_e\),所以:

\(\boxed{\omega_s = \sqrt{\frac{g_0}{R_e}} \approx 1.241 \times 10^{-3} \text{ rad/s}, \quad T_s = \frac{2\pi}{\omega_s} \approx 84.4 \text{ min}}\)

这就是 glvf.m 第 47 行 glv.ws = 1/sqrt(glv.Re/glv.g0) 的来源。

3.3 误差源驱动下的舒勒振荡

陀螺零偏 \(\boldsymbol{\varepsilon}_b\) 引起姿态误差 \(\boldsymbol{\phi}\)\(\boldsymbol{\phi}\) 会让加计的比力投影错 → 等效一个 \(g \sin(\phi)\) 的虚假加速度 → 激发舒勒振荡:

\(\varepsilon_b = 1°/\text{h} \;\Rightarrow\; \phi_{\text{osc}} \approx 0.5° \;\Rightarrow\; \delta p_{\text{peak}} \approx 0.5 \text{ nmile/h}\)

这就是为什么"1°/h 的陀螺"对应"0.5 nmile/h 的导航精度"——业内经验值的来源!

3.4 三个时间常数记忆表

振荡模式 周期 来源 影响什么
舒勒振荡 84.4 min 惯导水平回路 \(g/R_e\) 水平姿态/速度/位置误差
傅科振荡 24 h 地球自转 × 舒勒 舒勒振荡的包络调制
地球振荡 24 h 地球自转直接项 方位角/纬度误差

3.5 一句话记忆

舒勒周期 = 84 分钟 = 地心倒立摆的自然周期。调谐到它 = 机动不激发振荡。陀螺零偏是舒勒振荡的驱动源。


4. 🎯 陀螺指标全谱(带工程量级)

陀螺(角速度传感器)的核心指标,每个指标必须写明:名字 + 符号 + 单位 + 物理含义 + 对位置误差的传播

指标名 符号 常用单位 物理含义 消费级 MEMS 战术级 FOG/RLG 导航级 航空级/船用 对位置误差的传播
零偏稳定性 \(\varepsilon_b\) °/h 恒定角速度误差 1-100 0.01-1 0.001-0.01 <0.001 位置随 \(t\) 线性发散: \(\delta p \approx \varepsilon_b \cdot g \cdot t^2 / 2\)
角度随机游走 ARW °/√h 白噪声积分后的角误差 0.1-10 0.01-0.1 0.001-0.01 <0.001 位置随 \(\sqrt{t}\) 发散: \(\sigma_p \propto \text{ARW} \cdot g \cdot t^{3/2}\)
随机游走斜率 RRW °/h/√h (°/h\(^{3/2}\)) 零偏缓慢漂移 1-10 0.1-1 0.01-0.1 <0.01 位置随 \(t^{5/2}\) 发散
标度因子误差 \(\delta K\)/SF ppm 转动角度的比例误差 100-1000 10-100 1-10 <1 大机动时姿态误差正比机动角
标度因子非线性 SFNL ppm 大角速度下额外变化 100-1000 50-200 10-50 <10 振动/冲击场景姿态漂移
量化误差 arcsec 数字输出的最小步长 1-10 0.1-1 0.01-0.1 <0.01 高频噪声贡献
带宽 BW Hz 动态响应上限 50-200 200-500 200-1000 >500 高动态时相位滞后
抗冲击 g 耐受过载 1000-10000 100-500 50-200 >200 炮射/弹载场景
温度系数 °/h/°C 零偏随温度漂移 1-10 0.1-1 0.01-0.1 <0.01 需要温度标定补偿
g 灵敏度 \(K_g\) (°/h)/g 加速度引起的虚假零偏 1-10 0.1-1 0.01-0.1 <0.01 振动/线加速场景产生虚假角速度→姿态耦合误差

g 灵敏度详解:陀螺为什么怕加速度?

物理直觉

陀螺本该只测角速度。但 MEMS 陀螺内部有振动质量——当载体有线加速度 \(a\) 时,振动质量受惯性力影响,输出会"串入"一个和 \(a\) 成正比的虚假角速度。这就是 g 灵敏度(g-sensitivity),也叫加速度灵敏度

\(\omega_{\text{虚假}} = K_g \cdot a\)

其中 \(K_g\) 的单位是 (°/h)/g,含义是:每 1g 加速度,陀螺输出偏移多少 °/h

数据手册典型值

陀螺类型 g 灵敏度 说明
消费级 MEMS (MPU6050) 1-10 (°/h)/g 振动环境下零偏漂移严重
战术级 MEMS (ADIS16xxx) 0.1-1 (°/h)/g 好一个数量级
光纤陀螺 FOG 0.01-0.1 (°/h)/g 光路不受加速度影响,但仍有一点点
激光陀螺 RLG <0.01 (°/h)/g 几乎不受加速度影响

为什么飞控/车载场景 g 灵敏度特别致命?

车辆在颠簸路面行驶时,垂直加速度可达 2-5g,发动机振动频率 50-200Hz。如果 \(K_g = 1\) (°/h)/g:

  • 振动峰值 3g → 虚假角速度 3°/h
  • 一个 10 秒的颠簸段 → 姿态漂移 3°/h × 10s / 3600 = 0.0083° ≈ 30 arcsec
  • 如果振动持续 10 分钟 → 姿态漂移 0.5°

这就是为什么车载惯导在颠簸路面上精度骤降——不是陀螺零偏变了,而是 g 灵敏度被振动激发。

g 灵敏度在 PSINS 里对应什么

glvf.m 里有三个和 g 灵敏度相关的单位换算:

变量 定义 物理含义
glv.dphpg (L70) glv.dph / glv.g0 1 (°/h)/g → rad/s²,g 灵敏度 SI 化
glv.dphpg2 (L71) glv.dphpg / glv.g0 1 (°/h)/g² → rad/s³,二阶 g 灵敏度(g² 项)
glv.secpg (L64) glv.sec / glv.g0 1 arcsec/g → rad/s²,另一种 g 灵敏度表示法

00_glvf.md 练习 1 里的 gyro_g_sens = 1 * glv.dph / glv.g0,就是 1 (°/h)/g 转成 SI 单位 = 4.957e-7 rad/(s²)。

怎么标定补偿?

g 灵敏度可以通过位置翻转标定来测:

  1. 陀螺 x 轴朝上(感受 +1g)→ 记录零偏 \(\omega_{+1g}\)
  2. 陀螺 x 轴朝下(感受 -1g)→ 记录零偏 \(\omega_{-1g}\)
  3. \(K_{g,x} = (\omega_{+1g} - \omega_{-1g}) / 2\)

补偿时在 insupdate.m 的零偏项里加一个 \(\mathbf{K}_g \cdot \mathbf{f}^b\) 的修正:

\(\boldsymbol{\varepsilon}_{\text{总}} = \boldsymbol{\varepsilon}_b + \mathbf{K}_g \cdot \mathbf{f}^b\)

PSINS 的 imuerrset.m 里可以设置 g 灵敏度参数。

ARW vs 零偏:新手最容易混的一对

维度 ARW 零偏
性质 白噪声积分 → 非平稳 恒定 → 平稳
每次开机 不一样 基本一样
能否标定补偿 不能(每次都变) 能(开机零速更新可估)
位置发散 \(t^{3/2}\) \(t^2\)(更可怕)

"零偏不稳定性" vs "零偏稳定性"

  • 零偏不稳定性 = Allan 曲线底凹点的值(含缓慢漂移成分),单位 °/h
  • 零偏稳定性 = 恒温下 24h 测的极值,单位 °/h
  • 两者差几倍,别在数据手册里混读

5. 🎯 加计指标全谱(带工程量级)

加计(加速度计)核心指标表,同上格式。

指标名 符号 常用单位 物理含义 消费级 MEMS 战术级 导航级 航空级 对位置误差的传播
零偏稳定性 \(\nabla_b\) μg (\(10^{-6}\) g) 恒定加速度误差 100-1000 50-100 10-50 <10 位置随 \(t^2\) 二次发散\(\delta p \approx \nabla_b \cdot t^2 / 2\)
速度随机游走 VRW μg/√Hz 白噪声积分 100-1000 30-100 5-30 <5 速度随 \(\sqrt{t}\),位置随 \(t^{3/2}\)
标度因子误差 \(\delta K\)/SF ppm 加速度比例误差 100-1000 50-200 10-50 <10 大加速度时速度误差正比
g² 灵敏度(二阶非线性) \(K_{a2}\) μg/g² 加速度平方项引起的虚假输出 100-500 50-100 10-50 <10 大加速度/振动场景,对应 PSINS imuerr.Ka2
量化误差 m/s² 最小步长 1e-4 1e-5 1e-6 <1e-6 高频噪声
温度系数 μg/°C 零偏随温度漂移 50-500 10-50 1-10 <1 需要温度补偿

g² 灵敏度详解:加计也有灵敏度!

加计本该只测加速度。但实际输出不是纯线性的 \(f_{out} = K \cdot f_{true}\),而是:

\(f_{out} = K_1 \cdot f + K_2 \cdot f^2 + \cdots\)

那个 \(K_2 \cdot f^2\) 就是二阶非线性,也叫加计的 g² 灵敏度。含义是:加速度越大,加计输出偏离线性关系的程度越大

  • 1g 时:\(K_2 \cdot 1^2 = K_2\) → 加计零偏偏移 \(K_2\) μg
  • 5g 时:\(K_2 \cdot 5^2 = 25 K_2\) → 偏移变成 25 倍!
  • 振动峰值 10g 时:\(K_2 \cdot 100 = 100 K_2\)偏移变成 100 倍

为什么振动场景 g² 灵敏度特别致命:振动虽然是零均值的,但 \(f^2\) 永远是正的!所以振动会产生一个恒定的偏移 \(\overline{K_2 \cdot f^2} > 0\),等效成一个加计零偏——这就是"振动整流误差"。

在 PSINS 里,imuerrset.m 第 102-105 行:

if exist('Ka2', 'var')
    imuerr.Ka2(1:3) = Ka2*glv.ugpg2;  % 单位 μg/g² → SI
end

对应 glvf.m 第 42 行 glv.ugpg2 = glv.ug/glv.g0^2

陀螺 g 灵敏度 vs 加计 g² 灵敏度:对照表

维度 陀螺 g 灵敏度 加计 g² 灵敏度(二阶非线性)
物理来源 加速度 → 虚假角速度 加速度² → 虚假加速度
公式 \(\omega_{\text{虚假}} = K_g \cdot a\) \(f_{\text{虚假}} = K_{a2} \cdot f^2\)
单位 (°/h)/g μg/g²
PSINS 变量 glv.dphpg (L70) glv.ugpg2 (L42), imuerr.Ka2
一阶还是二阶 一阶(和 \(a\) 成正比) 二阶(和 \(a^2\) 成正比)
零均值振动下 可正可负,部分抵消 恒正,不抵消 → 振动整流误差
主要影响 姿态 速度/位置
严重场景 线加速 + 角振动耦合 大加速度/持续振动

关键区别:陀螺 g 灵敏度是一阶项(振动零均值时可部分抵消),加计 g² 灵敏度是二阶项(\(f^2\) 恒正,振动整流后产生恒定偏移)。这就是为什么"加计比陀螺更怕振动"。

⚠️ 关键直觉:加计零偏是 \(t^2\) 发散,比陀螺零偏还可怕!

1 mg 加计零偏 → 1 小时后位置误差

\(\delta p = \frac{1}{2} \nabla_b \cdot t^2 = \frac{1}{2} \cdot (10^{-3} \cdot 9.8) \cdot 3600^2 \approx 6.35 \times 10^4 \text{ m} = 63.5 \text{ km}\)

1mg 加计零偏 1 小时 = 63 公里! 这就是为什么加计标定比陀螺还重要,也是为什么 INS/GPS 组合导航里 GNSS 位置观测对加计零偏的"修正效果"远好于对陀螺零偏。


6. 📐 从指标到位置误差:一个完整例题

给定一个战术级 IMU

  • 陀螺:零偏 0.01°/h,ARW = 0.1°/√h
  • 加计:零偏 50μg,VRW = 50μg/√Hz

求 1 分钟、1 小时、10 小时后的位置误差(只考虑零偏和 ARW/VRW)。

解答

1. 陀螺零偏贡献\(\delta p_{\text{gyro\_bias}}(t) = \varepsilon_b \cdot g \cdot t^2 / 2\)

  • \(\varepsilon_b = 0.01°/\text{h} = 4.85 \times 10^{-8}\) rad/s
  • 1 min: \(4.85e{-8} \cdot 9.8 \cdot 60^2 / 2 \approx 8.5 \times 10^{-4}\) m ≈ 1 mm
  • 1 h: \(4.85e{-8} \cdot 9.8 \cdot 3600^2 / 2 \approx 3.1\) m
  • 10 h: ≈ 310 m

2. 陀螺 ARW 贡献\(\sigma_p \propto \text{ARW} \cdot g \cdot t^{3/2} / \sqrt{3}\)(简化估算)

  • 1 h: 量级 \~ 1 m
  • 10 h: 量级 \~ 30 m

3. 加计零偏贡献\(\delta p_{\text{acc\_bias}}(t) = \nabla_b \cdot t^2 / 2\)

  • \(\nabla_b = 50 \mu\text{g} = 4.9 \times 10^{-7}\) m/s²
  • 1 min: \(4.9e{-7} \cdot 60^2 / 2 \approx 8.8 \times 10^{-4}\) m ≈ 1 mm
  • 1 h: \(4.9e{-7} \cdot 3600^2 / 2 \approx 3.2\) m
  • 10 h: ≈ 317 m

4. 加计 VRW 贡献\(\sigma_v(t) = \text{VRW} \cdot \sqrt{t}\)\(\sigma_p \approx \sigma_v \cdot t / 2\)

  • 1 h: VRW=50μg/√Hz ≈ 0.49 mm/s/√s × 60 ≈ 3 cm/s 速度误差,位置 \~ 5 m
  • 10 h: 位置 \~ 50 m

总和估算(1σ,各误差独立平方和开根):

时长 陀螺零偏 陀螺 ARW 加计零偏 加计 VRW 合计 1σ
1 min 1 mm ≪1 mm 1 mm ≪1 mm ≈2 mm
1 h 3.1 m \~1 m 3.2 m \~5 m ≈7 m
10 h 310 m \~30 m 317 m \~50 m ≈440 m

验证:跑 PSINS 的 test_SINS.m,把 imuerr = imuerrset(...) 里的参数按上面的量级设置,看跑出来的位置误差曲线和上表对得上。


7. 📊 Allan 方差:IMU 的"指纹识别"

7.1 为什么用 Allan 方差

一块静止的 IMU 数据里,ARW / RRW / 零偏不稳定性 / 量化噪声 全都叠加在一起。直接看时域波形分不出来。

Allan 方差把不同时间尺度的噪声分频段解开——一个数据序列能读出 5 类指标,这就是"指纹"的含义。

7.2 Allan 方差定义

\(\sigma_A^2(\tau) = \frac{1}{2(N-1)} \sum_{k=1}^{N-1} (\bar{x}_{k+1} - \bar{x}_k)^2\)

其中 \(\bar{x}_k\)\(\tau\) 时长内的平均值,\(N\) 是总段数。

7.3 双对数曲线的 5 个斜率段

\(\log \sigma_A\) vs \(\log \tau\) 双对数图上:

斜率 误差类型 物理含义 读出来的指标
-1/2 ARW(白噪声) 高频随机噪声 ARW,单位 °/√h 或 μg/√Hz
-1 量化噪声 AD 采样的离散误差 量化步长
0 零偏不稳定性 Allan 曲线最低点(底凹) 零偏不稳定性,单位 °/h 或 μg
+1/2 RRW(随机游走) 缓慢漂移 RRW,单位 °/h/√h
+1 正弦噪声 周期性干扰 周期/幅度

7.4 工程做法

  1. IMU 静止采集 24h 数据(至少 6h,越长越好)
  2. 调用 avar.mavar2.m 算 Allan 方差
  3. 画双对数图
  4. 从斜率 -1/2 段读 ARW,从底凹点读零偏不稳定性
  5. 对照 imuerrset.m 的设置看是否一致

8. 🧭 角速度符号约定:"相对于"和"投影到"

这是惯导符号体系最让新手困惑的一步,在 01_earth.md 里会频繁用到,必须先讲透。

8.1 "相对于" = 下标

\(\omega_{ie}\) 读作"e 系相对于 i 系的角速度"——意思是:站在 i 系看,e 系在以什么角速度转

  • i 系 = 惯性系(不转的"绝对静止"参考系,原点在地心,z 轴指地球自转轴方向)
  • e 系 = 地球固连系(跟着地球一起转,原点也在地心,但坐标轴"钉在地球上")
  • n 系 = 导航系(当地水平,你站的地方"东-北-天")

地球自转 → e 系相对于 i 系在转 → \(\omega_{ie}\) 就是地球自转角速度,大小 = 7.292e-5 rad/s。

记忆口诀\(\omega_{AB}\) = B 系相对于 A 系 的角速度。下标从右往左读:右边的 B 是"被观察者",左边的 A 是"观察者站的地方"。

8.2 "投影到" = 上标

\(\omega_{ie}^n\) 的上标 \(n\) 意思是:把这个角速度向量,投影(分解)到 n 系的三个轴上

同一个角速度向量 \(\boldsymbol{\omega}_{ie}\),在不同的坐标系里看起来不一样:

  • 投影到 e 系:\(\boldsymbol{\omega}_{ie}^e = [0; 0; \omega_{ie}]\)(e 系 z 轴就是地球自转轴,所以只在 z 方向有分量)
  • 投影到 n 系:\(\boldsymbol{\omega}_{ie}^n = [0; \omega_{ie}\cos L; \omega_{ie}\sin L]\)(n 系的"北"和"天"方向不再是自转轴方向,要分解)

图解

        天(U) ↑
              |  ωie 方向 = 地球自转轴方向
              |  /
              | / ← 在北纬 L 处,自转轴同时朝"北"和"天"方向倾斜
              |/    
     北(N) ←---* (你站的位置, 纬度 L)
              \
               \ 东(E) →
  • 在赤道 (L=0°):自转轴完全在"北"方向 → \(\omega_{ie}^n = [0; \omega_{ie}; 0]\)
  • 在北极 (L=90°):自转轴完全在"天"方向 → \(\omega_{ie}^n = [0; 0; \omega_{ie}]\)
  • 在 34°N(西工大):自转轴同时朝北和朝天 → 北分量 = \(\omega_{ie}\cos 34°\),天分量 = \(\omega_{ie}\sin 34°\)

8.3 合在一起理解

符号部分 含义 回答的问题
下标 \(ie\) e 系相对于 i 系 "谁相对于谁在转?" → e 系(地球)相对于 i 系(惯性系)
上标 \(n\) 投影到 n 系 "在哪个坐标系里分解?" → 在 n 系(东-北-天)的三个轴上分解

一句话记忆\(\omega_{ie}^n\) = "e 系相对于 i 系的角速度"这个物理量,写成 n 系三个轴上的分量物理量不变,只是换了把尺子量——同一个地球自转,在赤道看全是"朝北"的,在北极看全是"朝天"的。

8.4 三个核心角速度速查表

符号 完整读法 物理含义
\(\omega_{ie}^n\) e 系相对于 i 系,投影到 n 系 地球自转在东-北-天的分量
\(\omega_{en}^n\) n 系相对于 e 系,投影到 n 系 你移动引起 n 系坐标轴方向变化
\(\omega_{in}^n\) n 系相对于 i 系,投影到 n 系 上面两个的叠加 = n 系总旋转

8.5 为什么不是"i系→e系"?

有些人(包括我之前在 01_earth.md 里写得不严谨)会用"i系→e系"这种箭头写法。这是不规范的,容易让人误解成"从 i 系转到 e 系"。

\(\omega_{ie}\)标准读法e 系相对于 i 系的角速度——下标从右往左读,右边的 e 是"被观察者",左边的 i 是"观察者站的地方"。箭头写法 \(\omega_{ie}\) 的下标顺序 \(ie\) 对应"e 相对于 i",不能理解成"i 转到 e"。

⚠️ 初学者坑:如果你看到有人写"i系→e系角速度",请自动脑内翻译成"e系相对于i系角速度"——物理含义完全一样,但"相对于"才是标准术语。

8.6 角速度 vs 坐标变换:什么时候用哪个说法?

这是两个完全不同的概念,但新手经常混在一起:

\(\omega_{ie}\)(角速度) \(C_i^e\)(坐标变换矩阵)
是什么 角速度(rad/s),描述"转多快" 变换矩阵(无单位),描述"怎么投影"
标准读法 e系相对于i系的角速度 i系到e系的坐标变换
物理含义 站在i系看,e系转得多快 把一个向量从i系分量→e系分量
符号位置 下标 \(ie\) 上下标 \(C_i^e\)(上=e系,下=i系)
数学性质 向量,3个分量 矩阵,3×3,正交
两者关系 角速度导致变换矩阵随时间变化 \(\dot{C}_i^e = -[\boldsymbol{\omega}_{ie}^e]_\times \, C_i^e\)

一句话记忆: - 说角速度时,用"e系相对于i系"——这是物理量的描述 - 说坐标变换时,才用"i系→e系"——这是矩阵/投影的描述

📌 典型场景:在 ./01_earth.md 里,eth.wnie 是角速度(用"相对于"读),ins.Cbn / ins.qnb 是姿态变换(用"b系→n系"读)。两者通过 \(\dot{C}_b^n = C_b^n [\boldsymbol{\omega}_{nb}^n]_\times\) 联系起来。


9. 🔗 这些概念在 glvf.m 里的什么位置?

读完本文件后,再去看 00_glvf.md 时,你能把以下符号和本文件的内容对上:

glvf.m 中的变量 含义 对应本文件哪节
glv.cs 圆锥/划桨补偿系数表 第 1-2 节
glv.ws 舒勒角频率 \(\omega_s\) 第 3 节
glv.dph 1°/h = π/180/3600 rad/s 第 4 节(陀螺零偏单位)
glv.dpsh 1°/√h 第 4 节(陀螺 ARW 单位)
glv.dphpsh (1°/h)/√h 第 4 节(陀螺 RRW 单位)
glv.ug 1μg = g0 × 1e-6 m/s² 第 5 节(加计零偏单位)
glv.ugpsHz 1μg/√Hz 第 5 节(加计 VRW 单位)
glv.ugpsh 1μg/√h 第 5 节(加计 VRW 的另一种表示)
glv.ppm 1ppm = 1e-6 第 4-5 节(标度因子单位)
glv.secpg arcsec/g g 灵敏度另一种表示法
glv.dphpg (1°/h)/g → rad/s² 陀螺 g 灵敏度(见第 4 节详解)
glv.dphpg2 (1°/h)/g² → rad/s³ 陀螺二阶 g 灵敏度
glv.meru 毫地转率 = ωie/1000 陀螺零偏的另一单位

9. ❌ 初学者最容易踩的坑

  1. 把 ARW 和零偏搞混:ARW 是随机噪声,每次开机都不一样,不能标定补偿;零偏是恒定的,开机后能通过零速更新(ZUPT)或 GNSS 组合的方式估计。两者完全不同性质。
  2. 以为陀螺零偏只引起角度误差:实际上它通过 \(g \sin(\phi)\) 的等效加速度耦合到位置上,是位置误差的主要来源之一!陀螺零偏 → 姿态误差 → 加计投影错 → 位置 \(t^2\) 发散,不是单纯的角度误差。
  3. 忘了加计零偏是 \(t^2\) 发散:很多人以为加计没陀螺重要,其实 1 mg 加计零偏 1 小时就发散 63 公里。加计零偏是长期导航的第一杀手。
  4. 觉得圆锥补偿可有可无:在静态或低动态下确实差别不大,但只要载体有 > 1 Hz 的角振动(车载振动、飞机机动、弹载飞行),不做补偿姿态立刻漂移。所有 SINS 必须做圆锥补偿
  5. 把 Allan 方差底凹点误读成零偏稳定性:那是"零偏不稳定性"(含漂移成分),零偏稳定性要在恒温下 24h 测,两者差几倍。数据手册经常把两者故意混写,看的时候要注意区分。
  6. 舒勒振荡是"有益的"还是"有害的":舒勒调谐让机动不激发振荡(有益),但任何误差源(陀螺零偏、加计零偏)都会激发舒勒振荡 → 误差以 84 分钟周期振荡(有害)。调谐不能消灭误差源,只是隔离了机动激发

10. 🎯 配套练习

练习 1:手算圆锥补偿

给定 \(\mathbf{wm}_1 = [0.01; 0; 0]\) rad,\(\mathbf{wm}_2 = [0; 0.01; 0]\) rad。手算:

\(\Delta\boldsymbol{\phi} = \mathbf{wm}_1 + \mathbf{wm}_2 + \frac{2}{3} \mathbf{wm}_1 \times \mathbf{wm}_2\)

验证:z 分量 = \(\frac{2}{3} \cdot 0.01^2 = 6.67 \times 10^{-5}\) rad ≈ 13.7 arcsec。这就是不做圆锥补偿会损失的精度

练习 2:舒勒频率验证

用 MATLAB 算:

glv;
ws_check = 1/sqrt(glv.Re/glv.g0);   % 应 ≈ 1.241e-3 rad/s
T_check = 2*pi/ws_check / 60;        % 应 ≈ 84.4 min

对照 glv.ws 应该一致。

练习 3:零偏 → 位置误差

给一个 0.01°/h 陀螺零偏,纯惯导 1 小时后:

  • 姿态误差 ≈ \(0.01° \times 1 = 0.01° = 1.745 \times 10^{-4}\) rad
  • 等效加速度误差 ≈ \(g \cdot \sin(0.01°) \approx 9.8 \times 1.745e{-4} = 1.71 \times 10^{-3}\) m/s²
  • 位置误差 ≈ \(1.71e{-3} \cdot 3600^2 / 2 \approx 11\) km

等等,为什么这里和第 6 节例题(3.1 m)差这么多?

→ 因为第 6 节用的是 \(\varepsilon_b \cdot g \cdot t^2 / 2\),其中 \(\varepsilon_b\) 已经是 rad/s 单位;这里如果用"0.01°/h × 1h"作为姿态误差的估计,是稳态误差,会偏大。真正的舒勒振荡峰值位置误差 ≈ 3 m(1σ)—— test_SINS.m 把 eb 改成 0.01°/h 跑一次,画位置误差曲线,看哪个对

练习 4:Allan 曲线读数

用 PSINS 的 avar.m 跑一段静止 IMU 数据(psins260314/data/ 目录下的 lasergyro.imu 可试,该目录无页面请本地浏览):

  1. 画双对数 Allan 曲线
  2. 在斜率 -1/2 段(τ = 1s 附近)读 ARW,单位 °/√h
  3. 在底凹点(τ ≈ 100-1000s)读零偏不稳定性,单位 °/h
  4. 对照 imuerrset.m 的设置,看量级是否一致

📚 下一站

读完本文件,你就可以去 00_glvf.md 了——你会看到 glv.cs / glv.ws / glv.dph / glv.ug 这些符号时不再陌生。

然后顺序往下: