这个公式 e⊤AI0x=e⊤be^{\top} A ^{I_0}x = e^{\top} beAI0x=eb 是这篇论文中无特征初始化 (Feature-less Initialization) 的核心灵魂。

它的作用是:在不知道运动尺度(即不知道走了几米)且不计算 3D 特征点的情况下,通过“对齐”视觉方向和 IMU 物理规律,强行解算出初始速度和重力。

以下是该公式的详细拆解:

1. 公式的来源:视觉与 IMU 的“罗生门”

为了理解这个公式,我们需要看它是由哪个等式变形而来的。
机器人的运动可以被两种传感器分别描述:

  1. 视觉 (Camera) 说:“我看到我向 ttt 方向移动了,但我不知道移动了多远(尺度 sss 未知)。”
    • 数学表达:位移 =s⋅t= s \cdot t=st
  2. 惯性 (IMU) 说:“根据我的加速度计和物理公式,我的位移应该是初速度、重力和测量值的累积。”
    • 数学表达:位移 =vΔT+12gΔT2+IMU预积分= v\Delta T + \frac{1}{2}g\Delta T^2 + \text{IMU预积分}=vΔT+21gΔT2+IMU预积分

[cite_start]将两者画等号,就得到了基础方程(论文公式 59 [cite: 491]):
s⋅t=AI0x⏟待求的物理项−b⏟已知的测量项s \cdot t = \underbrace{A ^{I_0}x}_{\text{待求的物理项}} - \underbrace{b}_{\text{已知的测量项}}st=待求的物理项 AI0x已知的测量项 b
(注:为了方便理解,这里对符号进行了逻辑简化,原论文中 bbb 包含预积分项)

2. 变量详细拆解

这个公式 e⊤AI0x=e⊤be^{\top} A ^{I_0}x = e^{\top} beAI0x=eb 里的每一个字母都有明确的物理含义:

A. xxx (或者 I0x^{I_0}xI0x):我们要找的答案

[cite_start]这是初始时刻的状态向量,包含两个 3 维向量 [cite: 441]:
I0x=[I0vI0I0g]^{I_0}x = \begin{bmatrix} ^{I_0}v_{I_0} \\ ^{I_0}g \end{bmatrix}I0x=[I0vI0I0g]

  • I0vI0^{I_0}v_{I_0}I0vI0:初始速度。
  • I0g^{I_0}gI0g:重力加速度向量(用于后续对齐水平面)。
B. AAA:时间系数矩阵

[cite_start]这个矩阵描述了时间是如何把速度和重力转化成位移的。根据论文公式 (59),它由两个时间戳 ΔT1\Delta T_1ΔT1ΔT2\Delta T_2ΔT2 决定 [cite: 491]:
A=[(ΔT2−ΔT1)I12(ΔT22−ΔT12)I]A = \begin{bmatrix} (\Delta T_2 - \Delta T_1)I & \frac{1}{2}(\Delta T_2^2 - \Delta T_1^2)I \end{bmatrix}A=[(ΔT2ΔT1)I21(ΔT22ΔT12)I]

  • 第一项对应 v⋅tv \cdot tvt(速度对位移的贡献)。
  • 第二项对应 12at2\frac{1}{2} a t^221at2(重力对位移的贡献)。
C. bbb:传感器观测到的“已知量”

[cite_start]这是由 IMU 预积分(Pre-integration)和相机外参计算出来的部分。它代表了**“如果不考虑初速度和重力,光靠 IMU 读数推算出的位移”** [cite: 491]。

D. e⊤e^{\top}e:消去尺度的“魔法棒”

这是该公式最巧妙的地方。

  • ttt 是视觉计算出的位移方向
  • sss 是未知的尺度(我们不知道走了 1 米还是 10 米)。
  • [cite_start]eee 是与 ttt 垂直的向量(即零空间向量,满足 e⊤t=0e^{\top}t = 0et=0)[cite: 499]。

3. 数学推导逻辑

为什么最后变成了 e⊤AI0x=e⊤be^{\top} A ^{I_0}x = e^{\top} beAI0x=eb?推导过程如下:

  1. 原始方程:我们将视觉观测(左边)和 IMU 物理推导(右边)建立联系:
    视觉位移(st)≈IMU物理位移(b−AI0x)\text{视觉位移}(st) \approx \text{IMU物理位移}(b - A ^{I_0}x)视觉位移(st)IMU物理位移(bAI0x)
    (注:这里调整了 AAAbbb 的正负号以符合通用的线性系统 Ax=bAx=bAx=b 形式,论文中具体重排见公式 61)

  2. 遇到困难:方程左边的 sss(尺度)是未知的。如果有这个未知数,方程就解不出来速度 xxx

  3. 投影消元:我们在等式两边同时左乘 e⊤e^{\top}e
    e⊤(st)=e⊤(b−AI0x)e^{\top} (st) = e^{\top} (b - A ^{I_0}x)e(st)=e(bAI0x)

  4. 奇迹发生:因为 eeettt 垂直,所以 e⊤t=0e^{\top} t = 0et=0,导致左边整项变成 0:
    0=e⊤b−e⊤AI0x0 = e^{\top}b - e^{\top} A ^{I_0}x0=ebeAI0x

  5. [cite_start]最终形式:移项后得到论文公式 (62) [cite: 498]:
    e⊤AI0x=e⊤be^{\top} A ^{I_0}x = e^{\top} beAI0x=eb

4. 总结:这个公式解决了什么问题?

通过构建这个线性系统,论文实现了以下突破:

  1. [cite_start]不需要解算 3D 特征点:方程里完全没有特征点的位置信息,只用了相机的位移方向 ttt [cite: 503]。
  2. [cite_start]无视尺度模糊:通过 e⊤e^{\top}e 投影,直接绕过了单目相机无法观测尺度的缺陷 [cite: 498]。
  3. [cite_start]极速求解:这是一个常数大小的线性方程组(通常 6×66 \times 66×6),计算非常快,使得系统能在 100ms 窗口内完成初始化 [cite: 505]。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐