00a 惯导基础概念入门 Wiki (PSINS) — 新手扫盲篇¶
所属层级: L0基础 · 前置阅读(在 00_glvf.md 之前读) 前置依赖: 无(这是整个Wiki的起点) 学习目标: 读完你应能回答
- 为什么"两个角增量相加 ≠ 一次合成的角增量"?圆锥误差从哪来?
- 舒勒84分钟振荡到底是什么?为什么它决定了惯导的"基本精度极限"?
- 陀螺的 ARW、零偏、标度因子、g 灵敏度区别是什么?哪个对位置影响最大?
- 加计的 VRW、零偏、标度因子、g² 灵敏度区别是什么?为什么 1mg 零偏 = 1km/h 位置误差?
- 单子样 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 等开源飞控确实多用单子样。原因:
- MEMS 陀螺的圆锥误差本身就小:消费级 MEMS 陀螺 ARW \~0.1°/√h,零偏 1-10°/h,零偏本身比圆锥误差大几个数量级——圆锥补不补几乎看不出来
- 飞控动态不高:多旋翼/固定翼的角速度一般 < 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°)下完全可忽略
- 算力限制:嵌入式 MCU(STM32 F4/H7)算力有限,单子样一个叉乘都省了
- 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 模式:
这叫跨周期单子样补偿——虽然每个更新周期只有 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 陀螺零偏
| 场景 | 单子样角增量 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^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\) 会通过科里奥利加速度耦合到速度上:
- 飞机速度 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 灵敏度可以通过位置翻转标定来测:
- 陀螺 x 轴朝上(感受 +1g)→ 记录零偏 \(\omega_{+1g}\)
- 陀螺 x 轴朝下(感受 -1g)→ 记录零偏 \(\omega_{-1g}\)
- \(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 行:
对应 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 工程做法¶
- IMU 静止采集 24h 数据(至少 6h,越长越好)
- 调用 avar.m 或 avar2.m 算 Allan 方差
- 画双对数图
- 从斜率 -1/2 段读 ARW,从底凹点读零偏不稳定性
- 对照 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. ❌ 初学者最容易踩的坑¶
- 把 ARW 和零偏搞混:ARW 是随机噪声,每次开机都不一样,不能标定补偿;零偏是恒定的,开机后能通过零速更新(ZUPT)或 GNSS 组合的方式估计。两者完全不同性质。
- 以为陀螺零偏只引起角度误差:实际上它通过 \(g \sin(\phi)\) 的等效加速度耦合到位置上,是位置误差的主要来源之一!陀螺零偏 → 姿态误差 → 加计投影错 → 位置 \(t^2\) 发散,不是单纯的角度误差。
- 忘了加计零偏是 \(t^2\) 发散:很多人以为加计没陀螺重要,其实 1 mg 加计零偏 1 小时就发散 63 公里。加计零偏是长期导航的第一杀手。
- 觉得圆锥补偿可有可无:在静态或低动态下确实差别不大,但只要载体有 > 1 Hz 的角振动(车载振动、飞机机动、弹载飞行),不做补偿姿态立刻漂移。所有 SINS 必须做圆锥补偿。
- 把 Allan 方差底凹点误读成零偏稳定性:那是"零偏不稳定性"(含漂移成分),零偏稳定性要在恒温下 24h 测,两者差几倍。数据手册经常把两者故意混写,看的时候要注意区分。
- 舒勒振荡是"有益的"还是"有害的":舒勒调谐让机动不激发振荡(有益),但任何误差源(陀螺零偏、加计零偏)都会激发舒勒振荡 → 误差以 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 可试,该目录无页面请本地浏览):
- 画双对数 Allan 曲线
- 在斜率 -1/2 段(τ = 1s 附近)读 ARW,单位 °/√h
- 在底凹点(τ ≈ 100-1000s)读零偏不稳定性,单位 °/h
- 对照 imuerrset.m 的设置,看量级是否一致
📚 下一站¶
读完本文件,你就可以去 00_glvf.md 了——你会看到 glv.cs / glv.ws / glv.dph / glv.ug 这些符号时不再陌生。
然后顺序往下:
- 00_glvf.md → 全局参数总入口
- 01_earth.md → 地球参数计算
- 02_cnscl.md → 圆锥+划桨补偿实现层(理论在这里落地)
- 03_insupdate.md → SINS 三连更新核心