流形上的预积分(上)

news2025/12/19 3:23:48

预积分和流形

论文:IMU Preintegration on Manifold for Effificient Visual-Inertial Maximum-a-Posteriori Estimation

引言

Recent results in monocular visual-inertial navigation (VIN) have shown that optimization-based approaches outperform filtering methods in terms of accuracy due to their capability to relinearize past states. However, the improvement comes at the cost of increased computational complexity. In this paper, we address this issue by preintegrating inertial measurements between selected keyframes. The preintegration allows us to accurately summarize hundreds of inertial measurements into a single relative motion constraint. Our first contribution is a preintegration theory that properly addresses the manifold structure of the rotation group and carefully deals with uncertainty propagation. The measurements are integrated in a local frame, which eliminates the need to repeat the integration when the linearization point changes while leaving the opportunity for belated bias corrections. The second contribution is to show that the preintegrated IMU model can be seamlessly integrated in a visual-inertial pipeline under the unifying framework of factor graphs. This enables the use of a structureless model for visual measurements, further accelerating the computation. The third contribution is an extensive evaluation of our monocular VIN pipeline: experimental results confirm that our system is very fast and demonstrates superior accuracy with respect to competitive state-of-the-art filtering and optimization algorithms, including off-the-shelf systems such as Google Tango [1].

引言

在这里插入图片描述

本文提出了一个使用增量平滑(incremental smoothing)快速计算最大后验估计(MAP)的系统。

第一项贡献是发展出了一种新颖的预积分理论。 预积分IMU测量的使用是在[26]中首次提出的,包括将两个关键帧之间的许多惯性测量组合成一个相对运动约束。 本文在此工作的基础上提出了一个预积分理论,该理论恰当地解决了旋转群的流形结构,并允许对所有雅可比矩阵进行解析推导

[26]采用欧拉角作为旋转的全局参数化。Using Euler angles and applying the usual averaging and smoothing techniques of Euclidean spaces for state propagation and covariance estimation is not properly invariant under the action of rigid transformations [27]。 此外,已知欧拉角具有奇点。 在第五节中的理论推导也推进了之前[10,12,13,25]这些工作使用了预积分测量,但没有发展出不确定性传播和后验bias校正的相应理论。 本文受益于[26]开创性见解: 在局部坐标系中进行积分,当线性化点发生变化时不需要重复积分

第二项贡献,我们将预积分的IMU模型框定为一个因子图视角(we frame our preintegrated IMU model into a factor graph perspective)。 这使得基于iSAM2 [24]的恒定时间VIN管道设计成为可能 。我们提出的增量平滑解决方案避免了线性化误差的积累,并提供了一个具有吸引力的替代方案,以使用自适应支持窗口进行优化[10]。

受[20,28]的启发,本文采用了一种无结构的视觉测量模型,该模型允许在增量平滑过程中消除大量变量(即所有3D点),进一步加速计算。

第三个贡献是对系统进行了有效的实施和广泛的评估。 实验结果表明,后端需要平均10毫秒的CPU时间来计算full MAP估计,并与SOTA方法相比获得了更高的准确性。 论文附有补充材料[29]。 此外,本文在GTSAM 4.0优化工具箱中发布了IMU预积分和无结构视觉因子的实现 。

预备知识

黎曼几何记号

本节回顾与特殊正交群SO(3)和特殊欧氏群SE(3)相关的有用概念,基于[31,32]。

SO(3)

SO(3)描述了一组三维旋转矩阵,定义为 SO ( 3 ) ≡ { R ∈ R 3 × 3 : R T R = I , det ( R ) = 1 } \text{SO}(3) \equiv \{ \bold{R} \in \mathbb{R}^{3\times 3} : \bold{R}^{T} \bold{R} = \bold{I}, \text{det}(\bold{R}) = 1 \} SO(3){RR3×3:RTR=I,det(R)=1} 。 群运算是一般的矩阵乘法,逆是矩阵转置。 SO(3)也形成光滑流形, 流形(在恒等处)的切空间(tangent space)表示为so(3),这也称为李代数,并与3×3反对称矩阵的空间相一致。可以用hat符号在 R 3 \mathbb{R}^3 R3 中标识每个带有向量的反对称矩阵:
ω ∧ = [ ω 1 ω 2 ω 3 ] ∧ = [ 0 − ω 3 ω 2 ω 3 0 − ω 1 − ω 2 ω 1 0 ] ∈ s o ( 3 ) (1) \boldsymbol{\omega}^{\wedge}=\left[\begin{array}{l} \omega_{1} \\ \omega_{2} \\ \omega_{3} \end{array}\right]^{\wedge}=\left[\begin{array}{ccc} 0 & -\omega_{3} & \omega_{2} \\ \omega_{3} & 0 & -\omega_{1} \\ -\omega_{2} & \omega_{1} & 0 \end{array}\right] \in \mathfrak{s o}(3) \tag{1} ω= ω1ω2ω3 = 0ω3ω2ω30ω1ω2ω10 so(3)(1)
可以用vee运算符将反对称矩阵映射到 R 3 \mathbb{R}^3 R3 中的向量:对于反对称矩阵 S = ω ∧ \bold{S} = \boldsymbol{\omega}^{\wedge} S=ω ,有: S ∨ = ω \bold{S}^{\vee}=\boldsymbol{\omega} S=ω 。 反对称矩阵的一个性质是:
a ∧ b = − b ∧ a , ∀ a , b ∈ R 3 (2) \mathbf{a}^{\wedge} \mathbf{b}=-\mathbf{b}^{\wedge} \mathbf{a}, \quad \forall \mathbf{a}, \mathbf{b} \in \mathbb{R}^{3} \tag{2} ab=ba,a,bR3(2)

指数映射exp: so ( 3 ) → SO ( 3 ) \text{so}(3) \to \text{SO}(3) so(3)SO(3) 将一个李代数元素关联到一个旋转:
exp ⁡ ( ϕ ∧ ) = I + sin ⁡ ( ∥ ϕ ∥ ) ∥ ϕ ∥ ϕ ∧ + 1 − cos ⁡ ( ∥ ϕ ∥ ) ∥ ϕ ∥ 2 ( ϕ ∧ ) 2 (3) \exp \left(\phi^{\wedge}\right)=\mathbf{I}+\frac{\sin (\|\phi\|)}{\|\phi\|} \phi^{\wedge}+\frac{1-\cos (\|\phi\|)}{\|\phi\|^{2}}\left(\phi^{\wedge}\right)^{2} \tag{3} exp(ϕ)=I+ϕsin(ϕ)ϕ+ϕ21cos(ϕ)(ϕ)2(3)
指数映射的一阶近似为:
exp ⁡ ( ϕ ∧ ) ≈ I + ϕ ∧ (4) \exp \left(\phi^{\wedge}\right) \approx \mathbf{I}+\phi^{\wedge} \tag{4} exp(ϕ)I+ϕ(4)

对数映射将一个SO(3)旋转矩阵关联到一个反对称矩阵:
log ⁡ ( R ) = φ ⋅ ( R − R ⊤ ) 2 sin ⁡ ( φ )  with  φ = cos ⁡ − 1 ( tr ⁡ ( R ) − 1 2 ) (5) \log (\mathrm{R})=\frac{\varphi \cdot\left(\mathrm{R}-\mathrm{R}^{\top}\right)}{2 \sin (\varphi)} \text { with } \varphi=\cos ^{-1}\left(\frac{\operatorname{tr}(\mathrm{R})-1}{2}\right) \tag{5} log(R)=2sin(φ)φ(RR) with φ=cos1(2tr(R)1)(5)
注意有 log ⁡ ( R ) ∨ = a φ \log(\bold{R})^{\vee}=\bold{a}\varphi log(R)=aφ a \bold{a} a 是旋转轴, φ \varphi φ 是旋转角。

如果限制在开球 ∥ ϕ ∥ < π \Vert \phi \Vert < \pi ϕ<π ,指数映射是一个双射,对应的逆是对数映射。 然而,如果不限制定域,指数映射就会变成满射,因为每个向量 ϕ = ( φ + 2 k π ) a , k ∈ Z \boldsymbol{\phi}=( \varphi + 2k\pi )\bold{a},k\in \mathbb{Z} ϕ=(φ+2)a,kZ 都是R的一个对数。

为了便于标记,采用指数和对数映射的“向量化”版本:
Exp ⁡ : R 3 ∋ ϕ → exp ⁡ ( ϕ ∧ ) ∈ S O ( 3 ) log ⁡ : S O ( 3 ) ∋ R → log ⁡ ( R ) ∨ ∈ R 3 (6) \begin{array}{cccccccc} \operatorname{Exp}: & \mathbb{R}^{3} & \ni & \phi & \rightarrow & \exp \left(\phi^{\wedge}\right) & \in & \mathrm{SO}(3) \\ \log : & \mathrm{SO}(3) & \ni & \mathrm{R} & \rightarrow & \log (R)^{\vee} & \in & \mathbb{R}^{3} \end{array} \tag{6} Exp:log:R3SO(3)ϕRexp(ϕ)log(R)SO(3)R3(6)
它们直接作用于向量,而不是so(3)。

使用以下一阶近似:
Exp ⁡ ( ϕ + δ ϕ ) ≈ Exp ⁡ ( ϕ ) Exp ⁡ ( J r ( ϕ ) δ ϕ ) (7) \operatorname{Exp}(\phi+\delta \phi) \approx \operatorname{Exp}(\boldsymbol{\phi}) \operatorname{Exp}\left(\mathrm{J}_{r}(\boldsymbol{\phi}) \delta \boldsymbol{\phi}\right) \tag{7} Exp(ϕ+δϕ)Exp(ϕ)Exp(Jr(ϕ)δϕ)(7)
J r ( ϕ ) \bold{J}_r(\boldsymbol{\phi}) Jr(ϕ) 是SO(3)的右雅可比,其将tangent空间中的加性增量与应用于右侧的乘法增量联系起来:
J r ( ϕ ) = I − 1 − cos ⁡ ( ∥ ϕ ∥ ) ∥ ϕ ∥ 2 ϕ ∧ + ∥ ϕ ∥ − sin ⁡ ( ∥ ϕ ∥ ) ∥ ϕ 3 ∥ ( ϕ ∧ ) 2 (8) \mathrm{J}_{r}(\phi)=\mathbf{I}-\frac{1-\cos (\|\phi\|)}{\|\phi\|^{2}} \phi^{\wedge}+\frac{\|\phi\|-\sin (\|\phi\|)}{\left\|\phi^{3}\right\|}\left(\phi^{\wedge}\right)^{2} \tag{8} Jr(ϕ)=Iϕ21cos(ϕ)ϕ+ϕ3ϕsin(ϕ)(ϕ)2(8)
类似的一阶近似也适用于对数:
log ⁡ ( Exp ⁡ ( ϕ ) Exp ⁡ ( δ ϕ ) ) ≈ ϕ + J r − 1 ( ϕ ) δ ϕ (9) \log (\operatorname{Exp}(\boldsymbol{\phi}) \operatorname{Exp}(\delta \phi)) \approx \boldsymbol{\phi}+\mathrm{J}_{r}^{-1}(\boldsymbol{\phi}) \delta \boldsymbol{\phi} \tag{9} log(Exp(ϕ)Exp(δϕ))ϕ+Jr1(ϕ)δϕ(9)
右雅可比矩阵逆的显式表达式在补充材料[29]中给出。 J r ( ϕ ) J_r(\boldsymbol{\phi}) Jr(ϕ) reduces to the identity for ∥ ϕ ∥ = 0 \Vert \boldsymbol{\phi} \Vert=0 ϕ=0

指数映射的另一个有用的性质是关于伴随矩阵的:
R Exp ⁡ ( ϕ ) R ⊤ = exp ⁡ ( R ϕ ∧ R ⊤ ) = Exp ⁡ ( R ϕ ) ⇔ Exp ⁡ ( ϕ ) R = R Exp ⁡ ( R ⊤ ϕ ) (11) \begin{aligned} \mathrm{R} \operatorname{Exp}(\phi) \mathrm{R}^{\top} &=\exp \left(\mathrm{R} \phi^{\wedge} \mathrm{R}^{\top}\right)=\operatorname{Exp}(\mathrm{R} \phi) \\ \Leftrightarrow \quad \operatorname{Exp}(\phi) \mathrm{R} &=\mathrm{R} \operatorname{Exp}\left(\mathrm{R}^{\top} \boldsymbol{\phi}\right) \end{aligned} \tag{11} RExp(ϕ)RExp(ϕ)R=exp(RϕR)=Exp(Rϕ)=RExp(Rϕ)(11)

在这里插入图片描述

SE(3)

SE(3)描述了三维刚体运动群,定义为 SE ( 3 ) ≡ { ( R , p ) : R ∈ SO(3) , p ∈ R 3 } \text{SE}(3) \equiv \{ (\bold{R},\bold{p}) : \bold{R} \in \text{SO(3)} , \bold{p} \in \mathbb{R}^3 \} SE(3){(R,p):RSO(3),pR3} 。群运算是 T 1 ⋅ T 2 = ( R 1 R 2 , R 1 p 2 + R 1 ) \bold{T}_1 \cdot \bold{T}_2 = (\bold{R}_1 \bold{R}_2,\bold{R}_1 \bold{p}_2 + \bold{R}_1) T1T2=(R1R2,R1p2+R1) ,其逆为 T 1 − 1 = ( R 1 T , − R 1 T p 1 ) \bold{T}_1^{-1}=(\bold{R}_1^{T},-\bold{R}_1^{T} \bold{p}_1) T11=(R1T,R1Tp1) , SE(3)的指数映射和对数映射在[32]中定义。 但是,本文不需要这些,原因将在第II-C节中说明。

SO(3)中不确定的描述

SO(3)中不确定度的定义:tangent空间中的一个分布,然后通过指数映射(6)将其映射到SO(3) [32-34]:
R ~ = R Exp ⁡ ( ϵ ) , ϵ ∼ N ( 0 , Σ ) (12) \tilde{\mathrm{R}}=\mathrm{R} \operatorname{Exp}(\epsilon), \quad \epsilon \sim \mathcal{N}(0, \Sigma) \tag{12} R~=RExp(ϵ),ϵN(0,Σ)(12)
其中 R \bold{R} R 是 一个给定的无噪声旋转(均值), ϵ \epsilon ϵ 为均值为零的小的正态分布扰动。

随机变量 R ~ ∈ SO ( 3 ) \tilde{\bold{R}} \in \text{SO}(3) R~SO(3) 的分布可以被显式计算,如[33]一样,得到:
p ( R ~ ) = β ( R ~ ) e − 1 2 ∥ Log ( R − 1 R ~ ) ∥ Σ 2 (13) p(\tilde{\mathrm{R}})=\beta(\tilde{\mathrm{R}}) e^{-\frac{1}{2}\left\| \text{Log} \left(\mathrm{R}^{-1} \tilde{\mathrm{R}}\right)\right\|_{\Sigma}^{2}} \tag{13} p(R~)=β(R~)e21Log(R1R~)Σ2(13)
其中 β ( R ~ ) \beta(\tilde{\bold{R}}) β(R~) 是归一化因子,近似计算: β ( R ~ ) ≃ 1 / 2 π det ( Σ ) \beta(\tilde{\bold{R}}) \simeq 1 / \sqrt{ 2 \pi \text{det}(\Sigma) } β(R~)1/2πdet(Σ) ,其中 Σ \Sigma Σ 很小。 如果将 β \beta β 近似为一个常数,那么给定一个测量 R ~ \tilde{\bold{R}} R~ ,旋转 R \bold{R} R 的负对数似然为:
L ( R ) = 1 2 ∥ Log ( R − 1 R ~ ) ∥ Σ 2 + const = 1 2 ∥ Log ( R ~ − 1 R ) ∥ Σ 2 + const (14) \mathcal{L}(\mathrm{R})=\frac{1}{2}\left\| \text{Log} \left(\mathrm{R}^{-1} \tilde{\mathrm{R}}\right)\right\|_{\Sigma}^{2}+ \text{const} =\frac{1}{2}\left\| \text{Log} \left(\tilde{\mathrm{R}}^{-1} \mathrm{R}\right)\right\|_{\Sigma}^{2}+ \text{const} \tag{14} L(R)=21 Log(R1R~) Σ2+const=21 Log(R~1R) Σ2+const(14)

流形上的高斯牛顿方法

关于流形: 流形优化: Manifold Optimization 的 全网最通俗版本详解 (一)

考虑一个优化问题 min ⁡ x ∈ M f ( x ) \min_{x \in \mathcal{M}} f(x) minxMf(x) ,其中 f ( ⋅ ) f(\cdot) f() 是给定的代价函数,变量 x x x 属于流形 M \mathcal{M} M ; 为了简单起见,考虑一个单一变量,因而描述可以很容易地一般化。

流形优化的一种标准方法[35,36]包括定义一个retraction R x \mathcal{R}_x Rx ,它是tangent空间(在 x x x 处)的元素 δ x δx δx x ∈ M x∈\mathcal{M} xM 的邻域之间的一个双射映射。 使用retraction,可以重新参数化问题如下:
min ⁡ x ∈ M f ( x ) ⇒ min ⁡ δ x ∈ R n f ( R x ( δ x ) ) \min _{x \in \mathcal{M}} f(x) \Rightarrow \min _{\delta x \in \mathbb{R}^{n}} f\left(\mathcal{R}_{x}(\delta x)\right) xMminf(x)δxRnminf(Rx(δx))
重新参数化通常称为提升(lifting)[35]。 粗略地说,我们在当前估计定义的tangent空间中工作,它在局部表现为欧氏空间。 现在可以将标准优化技术应用于(14)中右边的问题。 在GN框架中,将cost围绕当前估计进行平方计算。 然后求解二次逼近得到在正切空间中向量 δ x ⋆ \delta x ^{\star} δx 。最后,流形上的当前猜测被更新为 x ^ ← R x ^ ( δ x ⋆ ) \hat{x} \leftarrow \mathcal{R}_{\hat{x}} (\delta x ^{\star}) x^Rx^(δx)

一个可能的retraction是指数映射。在计算上,这可能不是最方便的,参见[37]。

对于SE(3),使用下面的retraction, 在 T = ( R , p ) \bold{T} = (\bold{R},\bold{p}) T=(R,p)
R T ( δ ϕ , δ p ) = ( R Exp ⁡ ( δ ϕ ) , p + R δ p ) , [ δ ϕ δ p ] ∈ R 6 (15) \mathcal{R}_{\mathrm{T}}(\delta \boldsymbol{\phi}, \delta \mathbf{p})=(\mathrm{R} \operatorname{Exp}(\delta \boldsymbol{\phi}), \mathbf{p}+\mathrm{R} \delta \mathbf{p}), \quad\left[\begin{array}{ll}\delta \boldsymbol{\phi} & \delta \mathbf{p}\end{array}\right] \in \mathbb{R}^{6} \tag{15} RT(δϕ,δp)=(RExp(δϕ),p+Rδp),[δϕδp]R6(15)
这解释了为什么在第II-A节中,只定义了SO(3)的指数映射:有了这种选择就不需要计算SE(3)的指数映射。

视觉惯性状态估计的MAP

系统和假设: 考虑一个VIN问题,在这个问题中想要跟踪一个装有IMU和单目相机的传感系统 (例如,一个移动机器人或手持设备) 的状态。 假设IMU帧“B”与想要跟踪的body帧重合,并且相机和IMU之间的变换(外参)是固定的,且预先标定了(图3)。 假设SLAM前端提供未知位置的3D路标的像素测量。且得到了一个称为关键帧[16]的图像子集,对其计算位姿估计。

在这里插入图片描述

状态:系统在 i i i 时刻的状态用IMU的方向、位置、速度和bias来描述: x i ≡ [ R i , p i , v i , b i ] \bold{x}_{i} \equiv [ \bold{R}_i,\bold{p}_i,\bold{v}_i , \bold{b}_i ] xi[Ri,pi,vi,bi] ,其中 ( R i , p i ) ∈ SE(3) (\bold{R}_i,\bold{p}_i) \in \text{SE(3)} (Ri,pi)SE(3) ,速度在向量空间中即 v i ∈ R 3 \bold{v}_i \in \mathbb{R}^3 viR3 ,IMU bias可以写成 b i = [ b i g , b i a ] ∈ R 6 \bold{b}_i = [\bold{b}_i^{g},\bold{b}_i^{a}] \in \mathbb{R}^6 bi=[big,bia]R6 ,其中 b i g , b i a ∈ R 3 \bold{b}_i^g ,\bold{b}_i^a \in \mathbb{R}^3 big,biaR3 是陀螺仪和加速度计的bias。

K k \mathcal{K}_k Kk 为到时刻 k k k 为止的所有关键帧集合。 这里估计所有关键帧的状态:
X k ≐ { x i } i ∈ K k (16) \mathcal{X}_{k} \doteq\left\{\mathbf{x}_{i}\right\}_{i \in \mathcal{K}_{k}} \tag{16} Xk{xi}iKk(16)
这里采用了一种无结构的方法(参见第六节),因此3D路标不属于待估计变量的一部分。

测量: 系统输入是来自相机和IMU的测量值。 C i \mathcal{C}_i Ci 为在关键帧 i i i 的相机测量,在 i i i 时刻相机可以观察到多个路标 l l l ,因此 C i \mathcal{C}_i Ci 包含多个像素的观测 z i l \bold{z}_{il} zil 。 用 I i j \mathcal{I}_{ij} Iij 表示在两个连续关键帧 i i i j j j 之间获得的IMU测量集合。 通常每个 I i j \mathcal{I}_{ij} Iij 包含数百个IMU测量。到时间 k k k 收集到的测量集合是
Z k ≐ { C i , I i j } ( i , j ) ∈ K k (17) \mathcal{Z}_{k} \doteq\left\{\mathcal{C}_{i}, \mathcal{I}_{i j}\right\}(i, j) \in \mathcal{K}_{k} \tag{17} Zk{Ci,Iij}(i,j)Kk(17)

因子图和MAP估计:给定可用测量 Z k \mathcal{Z}_k Zk 和先验 p ( X 0 ) p(\mathcal{X}_0) p(X0) ,因子图编码了变量 X k \mathcal{X}_k Xk 的后验概率:
p ( X k ∣ Z k ) ∝ p ( X 0 ) p ( Z k ∣ X k ) = p ( X 0 ) ∏ ( i , j ) ∈ K k p ( C i , I i j ∣ X k ) = p ( X 0 ) ∏ ( i , j ) ∈ K k p ( I i j ∣ x i , x j ) ∏ i ∈ K k ∏ l ∈ C i p ( z i l ∣ x i ) (18) p\left(\mathcal{X}_{k} \mid \mathcal{Z}_{k}\right) \propto p\left(\mathcal{X}_{0}\right) p\left(\mathcal{Z}_{k} \mid \mathcal{X}_{k}\right)=p\left(\mathcal{X}_{0}\right) \prod_{(i, j) \in \mathcal{K}_{k}} p\left(\mathcal{C}_{i}, \mathcal{I}_{i j} \mid \mathcal{X}_{k}\right)\\ =p\left(\mathcal{X}_{0}\right) \prod_{(i, j) \in \mathcal{K}_{k}} p\left(\mathcal{I}_{i j} \mid \mathbf{x}_{i}, \mathbf{x}_{j}\right) \prod_{i \in \mathcal{K}_{k}} \prod_{l \in \mathcal{C}_{i}} p\left(\mathbf{z}_{i l} \mid \mathbf{x}_{i}\right) \tag{18} p(XkZk)p(X0)p(ZkXk)=p(X0)(i,j)Kkp(Ci,IijXk)=p(X0)(i,j)Kkp(Iijxi,xj)iKklCip(zilxi)(18)
因式分解(18)中的项称为因子(factors)。 图4给出了问题的因子图的连通性示意图(无结构视觉因子的连通性将在第VI节中阐明)。

在这里插入图片描述

MAP估计对应于公式(18)的最大值,或者等价于负对数后验的最小值。 在零均值高斯噪声的假设下,负对数后验可以写成残差平方和:
X k ⋆ ≐ arg ⁡ min ⁡ X k − log ⁡ e p ( X k ∣ Z k ) = arg ⁡ min ⁡ X k ∥ r 0 ∥ Σ 0 2 + ∑ ( i , j ) ∈ K k ∥ r I i j ∥ Σ i j 2 + ∑ i ∈ K k ∑ l ∈ C i ∥ r C i l ∥ Σ C 2 (19) \mathcal{X}_{k}^{\star} \doteq \arg \min _{\mathcal{X}_{k}}-\log _{e} p\left(\mathcal{X}_{k} \mid \mathcal{Z}_{k}\right) \\ =\arg \min _{\mathcal{X}_{k}}\left\|\mathbf{r}_{0}\right\|_{\Sigma_{0}}^{2}+\sum_{(i, j) \in \mathcal{K}_{k}}\left\|\mathbf{r}_{\mathcal{I}_{i j}}\right\|_{\Sigma_{i j}}^{2}+\sum_{i \in \mathcal{K}_{k}} \sum_{l \in \mathcal{C}_{i}}\left\|\mathbf{r}_{\mathcal{C}_{i l}}\right\|_{\Sigma_{\mathcal{C}}}^{2} \tag{19} XkargXkminlogep(XkZk)=argXkminr0Σ02+(i,j)Kk rIij Σij2+iKklCirCilΣC2(19)
其中 r 0 \bold{r}_0 r0 , r I i j \bold{r}_{\mathcal{I}_{ij}} rIij , r C i l \bold{r}_{\mathcal{C}_{il}} rCil 是关于测量的残差项, Σ 0 \bold{\Sigma}_{0} Σ0 , Σ i j \bold{\Sigma}_{ij} Σij , Σ C \bold{\Sigma}_{\mathcal{C}} ΣC 是对应的协方差矩阵。

IMU模型和运动积分

IMU测量相对于惯性系的传感器的转速(rotate rate)和加速度。 测量记为 B a ~ ( t ) _{B}\tilde{\bold{a}}(t) Ba~(t) , B ω ~ W B ( t ) _{B}\tilde{\boldsymbol{\omega}}_{WB}(t) Bω~WB(t) ,受到加性白噪声 η \boldsymbol{\eta} η 和缓慢变化的传感器bias b \bold{b} b 的影响。
B ω ~ W B ( t ) = B ω W B ( t ) + b g ( t ) + η g ( t ) (20) { }_{\mathrm{B}} \tilde{\boldsymbol{\omega}}_{\mathrm{WB}}(t)={ }_{\mathrm{B}} \boldsymbol{\omega}_{\mathrm{WB}}(t)+\mathbf{b}^{g}(t)+\boldsymbol{\eta}^{g}(t) \tag{20} Bω~WB(t)=BωWB(t)+bg(t)+ηg(t)(20)

B a ~ ( t ) = R w B ⊤ ( t ) ( w a ( t ) − w g ) + b a ( t ) + η a ( t ) (21) { }_{\mathrm{B}} \tilde{\mathbf{a}}(t)=\mathrm{R}_{\mathrm{wB}}^{\top}(t) \left( { }_{\mathrm{w}} \mathbf{a}(t)-{ }_{\mathrm{w}} \mathbf{g}\right)+\mathbf{b}^{a}(t)+\boldsymbol{\eta}^{a}(t) \tag{21} Ba~(t)=RwB(t)(wa(t)wg)+ba(t)+ηa(t)(21)

前缀B表示对应的量在坐标系B中表示(c.f.,图3)。 IMU的位姿由变换 R W B , W p {\bold{R}_{WB}, _{W}\bold{p}} RWB,Wp 描述,它将一个点从传感器坐标系B映射到W。向量 B ω ~ W B ( t ) ∈ R 3 _{B}\tilde{\boldsymbol{\omega}}_{WB}(t) \in \mathbb{R}^3 Bω~WB(t)R3 为B相对于W的瞬时角速度,在坐标系B中表示; B a ~ ( t ) ∈ R 3 _{B}\tilde{\bold{a}}(t) \in \mathbb{R}^3 Ba~(t)R3 传感器的加速度; W g _{W}\bold{g} Wg 是世界坐标中的重力向量。 这里忽略了地球自转的影响,这相当于假设W是一个惯性系。

现在的目标是从IMU测量中推断系统的运动。为此,引入以下运动学模型[38,39]:
R ˙ W B = R W B    B ω W B ∧ , w v ˙ = w a , w p ˙ = w v (22) \dot{\mathrm{R}}_{\mathrm{WB}}=\mathrm{R}_{\mathrm{WB}} ~~{ }_{\mathrm{B}} \boldsymbol{\omega}_{\mathrm{WB}}^{\wedge}, \quad{ }_{\mathrm{w}} \dot{\mathbf{v}}={ }_{\mathrm{w}} \mathbf{a}, \quad{ }_{\mathrm{w}} \dot{\mathbf{p}}={ }_{\mathrm{w}} \mathbf{v} \tag{22} R˙WB=RWB  BωWB,wv˙=wa,wp˙=wv(22)
这描述了B的姿态和速度的演变。

t + ∆ t t+∆t t+t 时刻的状态由式(22)积分得到。 应用欧拉积分,假设 W a _W\bold{a} Wa B ω W B _B\boldsymbol{\omega}_{WB} BωWB 在区间 [ t , t + ∆ t ] [t, t +∆t] [t,t+t] 中保持恒定,得到:
R W B ( t + Δ t ) = R W B ( t ) Exp ⁡ ( B ω W B ( t ) Δ t ) w v ( t + Δ t ) = w v ( t ) + w a ( t ) Δ t w p ( t + Δ t ) = w p ( t ) + w v ( t ) Δ t + 1 2 w a ( t ) Δ t 2 . (23) \begin{aligned} \mathrm{R}_{\mathrm{WB}}(t+\Delta t) &=\mathrm{R}_{\mathrm{WB}}(t) \operatorname{Exp}\left({ }_{\mathrm{B}} \boldsymbol{\omega}_{\mathrm{WB}}(t) \Delta t\right) \\ {}_{\mathrm{w}} \mathbf{v}(t+\Delta t) &={ }_{\mathrm{w}} \mathbf{v}(t)+{ }_{\mathrm{w}} \mathbf{a}(t) \Delta t \\ {}_{\mathrm{w}} \mathbf{p}(t+\Delta t) &={ }_{\mathrm{w}} \mathbf{p}(t)+{ }_{\mathrm{w}} \mathbf{v}(t) \Delta t+\frac{1}{2}{ }_{\mathrm{w}} \mathbf{a}(t) \Delta t^{2} . \end{aligned} \tag{23} RWB(t+Δt)wv(t+Δt)wp(t+Δt)=RWB(t)Exp(BωWB(t)Δt)=wv(t)+wa(t)Δt=wp(t)+wv(t)Δt+21wa(t)Δt2.(23)
使用公式 (20)-(21),根据IMU测量可以计算 W a _W\bold{a} Wa B ω W B _B\boldsymbol{\omega}_{WB} BωWB ,因此(23)为:
R ( t + Δ t ) = R ( t ) Exp ⁡ ( ( ω ~ ( t ) − b g ( t ) − η g d ( t ) ) Δ t ) v ( t + Δ t ) = v ( t ) + g Δ t + R ( t ) ( a ~ ( t ) − b a ( t ) − η a d ( t ) ) Δ t p ( t + Δ t ) = p ( t ) + v ( t ) Δ t + 1 2 g Δ t 2 + 1 2 R ( t ) ( a ~ ( t ) − b a ( t ) − η a d ( t ) ) Δ t 2 (24) \begin{aligned} \mathrm{R}(t+\Delta t) &=\mathrm{R}(t) \operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}(t)-\mathbf{b}^{g}(t)-\boldsymbol{\eta}^{g d}(t)\right) \Delta t\right) \\ \mathbf{v}(t+\Delta t) &=\mathbf{v}(t)+\mathbf{g} \Delta t+\mathrm{R}(t)\left(\tilde{\mathbf{a}}(t)-\mathbf{b}^{a}(t)-\boldsymbol{\eta}^{a d}(t)\right) \Delta t \\ \mathbf{p}(t+\Delta t) &=\mathbf{p}(t)+\mathbf{v}(t) \Delta t+\frac{1}{2} \mathbf{g} \Delta t^{2} \\ &+\frac{1}{2} \mathrm{R}(t)\left(\tilde{\mathbf{a}}(t)-\mathbf{b}^{a}(t)-\boldsymbol{\eta}^{a d}(t)\right) \Delta t^{2} \end{aligned} \tag{24} R(t+Δt)v(t+Δt)p(t+Δt)=R(t)Exp((ω~(t)bg(t)ηgd(t))Δt)=v(t)+gΔt+R(t)(a~(t)ba(t)ηad(t))Δt=p(t)+v(t)Δt+21gΔt2+21R(t)(a~(t)ba(t)ηad(t))Δt2(24)
为了可读性去掉了坐标帧的下标。离散时间噪声 η g d \boldsymbol{\eta}^{gd} ηgd 的协方差是采样率的函数,与连续时间谱噪声 η g \boldsymbol{\eta}^g ηg 有关: Cov ( η g d ( t ) ) = 1 Δ t Cov ( η g ( t ) ) \text{Cov}(\boldsymbol{\eta}^{gd}(t)) = \frac{1}{\Delta t} \text{Cov}(\boldsymbol{\eta}^{g}(t)) Cov(ηgd(t))=Δt1Cov(ηg(t)) η a d \boldsymbol{\eta}^{ad} ηad 也一样,参考附录。

在流形上的IMU预积分

本节包含本文的第一个关键贡献。 虽然Eq.(24)可以很容易地被看作因子图中的概率约束,但它需要在因子图中以较高的速率包含状态。在这里,表明在 k = i k = i k=i k = j k = j k=j 时刻两个关键帧之间的所有测量可以整合为一个单一的复合测量,称为预积分IMU测量,它约束了连续关键帧之间的运动。 这个概念首先在[26]中提出(使用欧拉角),本文通过发展一个适用于流形上预积分的理论来扩展它。

假设IMU与相机同步,并在离散时间 k k k 提供测量(参见图5) 。

在这里插入图片描述

对于 k = i k = i k=i k = j k = j k=j 之间的所有 ∆ t ∆t t 区间,迭代IMU积分(24)(c.f,图5),发现:
R j = R i ∏ k = i j − 1 Exp ⁡ ( ( ω ~ k − b k g − η k g d ) Δ t ) v j = v i + g Δ t i j + ∑ k = i j − 1 R k ( a ~ k − b k a − η k a d ) Δ t p j = p i + ∑ k = i j − 1 v k Δ t + 1 2 g Δ t i j 2 + 1 2 ∑ k = i j − 1 R k ( a ~ k − b k a − η k a d ) Δ t 2 (25) \mathrm{R}_{j}=\mathrm{R}_{i} \prod_{k=i}^{j-1} \operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_{k}-\mathbf{b}_{k}^{g}-\boldsymbol{\eta}_{k}^{g d}\right) \Delta t\right) \\ \mathbf{v}_{j}=\mathbf{v}_{i}+\mathbf{g} \Delta t_{i j}+\sum_{k=i}^{j-1} \mathrm{R}_{k}\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{k}^{a}-\boldsymbol{\eta}_{k}^{a d}\right) \Delta t \\ \mathbf{p}_{j}=\mathbf{p}_{i}+\sum_{k=i}^{j-1} \mathbf{v}_{k} \Delta t+\frac{1}{2} \mathbf{g} \Delta t_{i j}^{2}+\frac{1}{2} \sum_{k=i}^{j-1} \mathrm{R}_{k}\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{k}^{a}-\boldsymbol{\eta}_{k}^{a d}\right) \Delta t^{2} \tag{25} Rj=Rik=ij1Exp((ω~kbkgηkgd)Δt)vj=vi+gΔtij+k=ij1Rk(a~kbkaηkad)Δtpj=pi+k=ij1vkΔt+21gΔtij2+21k=ij1Rk(a~kbkaηkad)Δt2(25)
引入缩写: Δ t i j ≡ ∑ k = i j Δ t \Delta t_{ij} \equiv \sum_{k=i}^{j} \Delta t Δtijk=ijΔt ( ⋅ ) i ≡ ( ⋅ ) ( t i ) (\cdot)_i \equiv (\cdot)(t_i) ()i()(ti) 来增强可读性。

虽然Eq.(25)已经提供了时间 t i t_i ti t j t_j tj 之间运动的估计,但它有一个缺点,即**(25)中的积分必须在时间 t i t_i ti 的线性化点发生变化时重新计算**(直观地说,旋转 R i \bold{R}_i Ri 的变化意味着所有未来的旋转 R k , k = i , ⋯   , j − 1 \bold{R}_k,k=i,\cdots,j-1 Rk,k=i,,j1 的变化,并且有必要重新计算(25)中的求和与乘积)。

本文的目标是避免重复积分。为此定义了以下相对运动增量,它们与 t i t_i ti 时刻的位姿和速度无关:
Δ R i j ≐ R i ⊤ R j = ∏ k = i j − 1 Exp ⁡ ( ( ω ~ k − b k g − η k g d ) Δ t ) Δ v i j ≐ R i ⊤ ( v j − v i − g Δ t i j ) = ∑ k = i j − 1 Δ R i k ( a ~ k − b k a − η k a d ) Δ t Δ p i j ≐ R i ⊤ ( p j − p i − v i Δ t i j − 1 2 g Δ t i j 2 ) = ∑ k = i j − 1 [ Δ v i k Δ t + 1 2 Δ R i k ( a ~ k − b k a − η k a d ) Δ t 2 ] = ∑ k = i j − 1 [ 3 2 Δ R i k ( a ~ k − b k a − η k a d ) Δ t 2 ] (26) \begin{aligned} \Delta \mathrm{R}_{i j} & \doteq \mathrm{R}_{i}^{\top} \mathrm{R}_{j}=\prod_{k=i}^{j-1} \operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_{k}-\mathbf{b}_{k}^{g}-\boldsymbol{\eta}_{k}^{g d}\right) \Delta t\right) \\ \Delta \mathbf{v}_{i j} & \doteq \mathrm{R}_{i}^{\top}\left(\mathbf{v}_{j}-\mathbf{v}_{i}-\mathbf{g} \Delta t_{i j}\right)=\sum_{k=i}^{j-1} \Delta \mathrm{R}_{i k}\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{k}^{a}-\boldsymbol{\eta}_{k}^{a d}\right) \Delta t \\ \Delta \mathbf{p}_{i j} & \doteq \mathrm{R}_{i}^{\top}\left(\mathbf{p}_{j}-\mathbf{p}_{i}-\mathbf{v}_{i} \Delta t_{i j}-\frac{1}{2} \mathbf{g} \Delta t_{i j}^{2}\right) \\ &=\sum_{k=i}^{j-1}\left[\Delta \mathbf{v}_{i k} \Delta t+\frac{1}{2} \Delta \mathrm{R}_{i k}\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{k}^{a}-\boldsymbol{\eta}_{k}^{a d}\right) \Delta t^{2}\right] \\ &=\sum_{k=i}^{j-1}\left[\frac{3}{2} \Delta \mathrm{R}_{i k}\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{k}^{a}-\boldsymbol{\eta}_{k}^{a d}\right) \Delta t^{2}\right] \end{aligned} \tag{26} ΔRijΔvijΔpijRiRj=k=ij1Exp((ω~kbkgηkgd)Δt)Ri(vjvigΔtij)=k=ij1ΔRik(a~kbkaηkad)ΔtRi(pjpiviΔtij21gΔtij2)=k=ij1[ΔvikΔt+21ΔRik(a~kbkaηkad)Δt2]=k=ij1[23ΔRik(a~kbkaηkad)Δt2](26)
其中定义 Δ R i k ≡ R i T R k \Delta \bold{R}_{ik} \equiv \bold{R}_{i}^{T} \bold{R}_{k} ΔRikRiTRk Δ v i k ≡ v k v i \Delta \bold{v}_{ik} \equiv \bold{v}_{k} \bold{v}_{i} Δvikvkvi

(26)中的求和与乘积仍然是bias的函数。 分两步解决这个问题。在V-A节中,假设 b i \bold{b}_i bi 是已知的; 然后在V-C节中展示了当bias估计发生变化时如何避免重复积分。在本文的其余部分中,假设两个关键帧之间的bias保持不变:
b i g = b i + 1 g = … = b j − 1 g , b i a = b i + 1 a = … = b j − 1 a (27) \mathbf{b}_{i}^{g}=\mathbf{b}_{i+1}^{g}=\ldots=\mathbf{b}_{j-1}^{g}, \quad \mathbf{b}_{i}^{a}=\mathbf{b}_{i+1}^{a}=\ldots=\mathbf{b}_{j-1}^{a} \tag{27} big=bi+1g==bj1g,bia=bi+1a==bj1a(27)

A.预积分IMU测量


Exp函数的线性化:
Exp ⁡ ( ϕ + δ ϕ ) ≈ Exp ⁡ ( ϕ ) Exp ⁡ ( J r ( ϕ ) δ ϕ ) (7) \operatorname{Exp}(\phi+\delta \phi) \approx \operatorname{Exp}(\boldsymbol{\phi}) \operatorname{Exp}\left(\mathrm{J}_{r}(\boldsymbol{\phi}) \delta \boldsymbol{\phi}\right) \tag{7} Exp(ϕ+δϕ)Exp(ϕ)Exp(Jr(ϕ)δϕ)(7)
J r ( ϕ ) \bold{J}_r(\boldsymbol{\phi}) Jr(ϕ) 是SO(3)的右雅可比,其将tangent空间中的加性增量与应用于右侧的乘法增量联系起来:
J r ( ϕ ) = I − 1 − cos ⁡ ( ∥ ϕ ∥ ) ∥ ϕ ∥ 2 ϕ ∧ + ∥ ϕ ∥ − sin ⁡ ( ∥ ϕ ∥ ) ∥ ϕ 3 ∥ ( ϕ ∧ ) 2 (8) \mathrm{J}_{r}(\phi)=\mathbf{I}-\frac{1-\cos (\|\phi\|)}{\|\phi\|^{2}} \phi^{\wedge}+\frac{\|\phi\|-\sin (\|\phi\|)}{\left\|\phi^{3}\right\|}\left(\phi^{\wedge}\right)^{2} \tag{8} Jr(ϕ)=Iϕ21cos(ϕ)ϕ+ϕ3ϕsin(ϕ)(ϕ)2(8)

SO(3)伴随矩阵的性质:
R Exp ⁡ ( ϕ ) R ⊤ = exp ⁡ ( R ϕ ∧ R ⊤ ) = Exp ⁡ ( R ϕ ) ⇔ Exp ⁡ ( ϕ ) R = R Exp ⁡ ( R ⊤ ϕ ) (11) \begin{aligned} \mathrm{R} \operatorname{Exp}(\phi) \mathrm{R}^{\top} &=\exp \left(\mathrm{R} \phi^{\wedge} \mathrm{R}^{\top}\right)=\operatorname{Exp}(\mathrm{R} \phi) \\ \Leftrightarrow \quad \operatorname{Exp}(\phi) \mathrm{R} &=\mathrm{R} \operatorname{Exp}\left(\mathrm{R}^{\top} \boldsymbol{\phi}\right) \end{aligned} \tag{11} RExp(ϕ)RExp(ϕ)R=exp(RϕR)=Exp(Rϕ)=RExp(Rϕ)(11)


在本节中假设 t i t_i ti 时刻的bias是已知的,现在想要分离(26)中的噪声。 从旋转增量 ∆ R i j ∆\bold{R}_{ij} Rij 开始,使用一阶近似公式(7)(旋转噪声是“小”的)并重新排列项,使用式(11)将噪声“移动”到最后:
KaTeX parse error: Expected 'EOF', got '&' at position 71: …\mathrm{R}_{j} &̲=\prod_{k=i}^{j…
公式变形:
Δ R i j = (eq.7) ∏ k = i j − 1 [ Exp ⁡ ( ( ω ~ k − b i g ) Δ t ) Exp ⁡ ( − J r k η k g d Δ t ) ] = (eq.11) Δ R ~ i j ∏ k = i j − 1 Exp ⁡ ( − Δ R ~ k + 1 j ⊤ J r k η k g d Δ t ) ≐ Δ R ~ i j Exp ⁡ ( − δ ϕ i j ) (28) \begin{aligned} \Delta \mathrm{R}_{i j} & \stackrel{\text{(eq.7)}}{=} \prod_{k=i}^{j-1}\left[\operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_{k}-\mathbf{b}_{i}^{g}\right) \Delta t\right) \operatorname{Exp}\left(-\mathrm{J}_{r}^{k} \boldsymbol{\eta}_{k}^{g d} \Delta t\right)\right] \\ & \stackrel{\text{(eq.11)}}{=} \Delta \tilde{\mathrm{R}}_{i j} \prod_{k=i}^{j-1} \operatorname{Exp}\left(-\Delta \tilde{\mathrm{R}}_{k+1 j}^{\top} \mathrm{J}_{r}^{k} \boldsymbol{\eta}_{k}^{g d} \Delta t\right) \\ & \doteq \Delta \tilde{\mathrm{R}}_{i j} \operatorname{Exp}\left(-\delta \boldsymbol{\phi}_{i j}\right) \end{aligned} \tag{28} ΔRij=(eq.7)k=ij1[Exp((ω~kbig)Δt)Exp(JrkηkgdΔt)]=(eq.11)ΔR~ijk=ij1Exp(ΔR~k+1jJrkηkgdΔt)ΔR~ijExp(δϕij)(28)
其中 J r k ≡ J r k ( ω ~ k − b i g ) \bold{J}^k_r \equiv \bold{J}^k_r ( \tilde{\boldsymbol{\omega}}_k - \bold{b}_i^g ) JrkJrk(ω~kbig) 。定义预积分旋转测量 Δ R ~ i j ≡ ∏ k = i j − 1 Exp ( ( ω ~ k − b i g ) Δ t ) \Delta \tilde{\bold{R}}_{ij} \equiv \prod_{k=i}^{j-1} \text{Exp}( (\tilde{\boldsymbol{\omega}}_k - \bold{b}_i^g) \Delta t ) ΔR~ijk=ij1Exp((ω~kbig)Δt) , 其噪声 δ ϕ i j \delta \boldsymbol{\phi}_{ij} δϕij 将在下一节中进一步分析。


反对称矩阵的性质:
a ∧ b = − b ∧ a , ∀ a , b ∈ R 3 (2) \mathbf{a}^{\wedge} \mathbf{b}=-\mathbf{b}^{\wedge} \mathbf{a}, \quad \forall \mathbf{a}, \mathbf{b} \in \mathbb{R}^{3} \tag{2} ab=ba,a,bR3(2)
指数映射到一阶近似:
exp ⁡ ( ϕ ∧ ) ≈ I + ϕ ∧ (4) \exp \left(\phi^{\wedge}\right) \approx \mathbf{I}+\phi^{\wedge} \tag{4} exp(ϕ)I+ϕ(4)


将(28)带入到(26),使用(4)对于 Exp ( − δ ϕ i j ) \text{Exp}(-\delta \boldsymbol{\phi}_{ij}) Exp(δϕij) 使用一阶近似,并扔掉高阶的噪声项,可以获得:
Δ v i j ≐ R i ⊤ ( v j − v i − g Δ t i j ) = ∑ k = i j − 1 Δ R i k ( a ~ k − b k a − η k a d ) Δ t = ∑ k = i j − 1 ( Δ R i k ( a ~ k − b k a ) Δ t − Δ R i k η k a d Δ t ) 代入(28) = ∑ k = i j − 1 ( Δ R ~ i j Exp ⁡ ( − δ ϕ i j ) ( a ~ k − b k a ) Δ t − Δ R ~ i j Exp ⁡ ( − δ ϕ i j ) η k a d Δ t ) \Delta \mathbf{v}_{i j} \doteq \mathrm{R}_{i}^{\top}\left(\mathbf{v}_{j}-\mathbf{v}_{i}-\mathbf{g} \Delta t_{i j}\right) \\ =\sum_{k=i}^{j-1} \Delta \mathrm{R}_{i k}\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{k}^{a}-\boldsymbol{\eta}_{k}^{a d}\right) \Delta t \\ =\sum_{k=i}^{j-1} (\Delta \mathrm{R}_{i k}\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{k}^{a} \right) \Delta t - \Delta \mathrm{R}_{i k} \boldsymbol{\eta}_{k}^{a d} \Delta t )\\ \text{代入(28)} \\ =\sum_{k=i}^{j-1} (\Delta \tilde{\mathrm{R}}_{i j} \operatorname{Exp}\left(-\delta \boldsymbol{\phi}_{i j}\right) \left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{k}^{a} \right) \Delta t - \Delta \tilde{\mathrm{R}}_{i j} \operatorname{Exp}\left(-\delta \boldsymbol{\phi}_{i j}\right) \boldsymbol{\eta}_{k}^{a d} \Delta t ) ΔvijRi(vjvigΔtij)=k=ij1ΔRik(a~kbkaηkad)Δt=k=ij1(ΔRik(a~kbka)ΔtΔRikηkadΔt)代入(28)=k=ij1(ΔR~ijExp(δϕij)(a~kbka)ΔtΔR~ijExp(δϕij)ηkadΔt)
变形:
Δ v i j ≃  eq.(4)  ∑ k = i j − 1 Δ R ~ i k ( I − δ ϕ i k ∧ ) ( a ~ k − b i a ) Δ t − Δ R ~ i k η k a d Δ t =  eq.(2)  Δ v ~ i j + ∑ k = i j − 1 [ Δ R ~ i k ( a ~ k − b i a ) ∧ δ ϕ i k Δ t − Δ R ~ i k η k a d Δ t ] ≐ Δ v ~ i j − δ v i j (29) \Delta \mathbf{v}_{i j} \stackrel{\text { eq.(4) }}{\simeq} \sum_{k=i}^{j-1} \Delta \tilde{\mathrm{R}}_{i k}\left(\mathbf{I}-\delta \boldsymbol{\phi}_{i k}^{\wedge}\right)\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{i}^{a}\right) \Delta t-\Delta \tilde{\mathrm{R}}_{i k} \boldsymbol{\eta}_{k}^{a d} \Delta t \\ \stackrel{\text { eq.(2) }}{=} \Delta \tilde{\mathbf{v}}_{i j}+\sum_{k=i}^{j-1}\left[\Delta \tilde{\mathrm{R}}_{i k}\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{i}^{a}\right)^{\wedge} \delta \phi_{i k} \Delta t-\Delta \tilde{\mathrm{R}}_{i k} \boldsymbol{\eta}_{k}^{a d} \Delta t\right] \\ \doteq \Delta \tilde{\mathbf{v}}_{i j}-\delta \mathbf{v}_{i j} \tag{29} Δvij eq.(4) k=ij1ΔR~ik(Iδϕik)(a~kbia)ΔtΔR~ikηkadΔt= eq.(2) Δv~ij+k=ij1[ΔR~ik(a~kbia)δϕikΔtΔR~ikηkadΔt]Δv~ijδvij(29)
其中定义了预积分速度测量 Δ v ~ i j ≡ ∑ k = i j − 1 Δ R ~ i k ( a ~ k − b i a ) Δ t \Delta \tilde{\bold{v}}_{ij} \equiv \sum_{k=i}^{j-1} \Delta \tilde{\bold{R}}_{ik} ( \tilde{\bold{a}}_{k} - \bold{b}_i^a )\Delta t Δv~ijk=ij1ΔR~ik(a~kbia)Δt 和它的噪声 δ v i j \delta \bold{v}_{ij} δvij

同理,将(28)代入(26)中 Δ p i j \Delta \bold{p}_{ij} Δpij 的表达式中,利用一阶近似(4)可得:
Δ p i j = ∑ k = i j − 1 [ 3 2 Δ R i k ( a ~ k − b k a − η k a d ) Δ t 2 ] 代入(28) Δ p i j = ∑ k = i j − 1 [ 3 2 Δ R ~ i j Exp ⁡ ( − δ ϕ i j ) ( a ~ k − b k a − η k a d ) Δ t 2 ] \Delta \mathbf{p}_{i j} = \sum_{k=i}^{j-1}\left[\frac{3}{2} \Delta \mathrm{R}_{i k}\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{k}^{a}-\boldsymbol{\eta}_{k}^{a d}\right) \Delta t^{2}\right] \\ \text{代入(28)}\\ \Delta \mathbf{p}_{i j} = \sum_{k=i}^{j-1}\left[\frac{3}{2} \Delta \tilde{\mathrm{R}}_{i j} \operatorname{Exp}\left(-\delta \boldsymbol{\phi}_{i j}\right) \left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{k}^{a}-\boldsymbol{\eta}_{k}^{a d}\right) \Delta t^{2}\right] Δpij=k=ij1[23ΔRik(a~kbkaηkad)Δt2]代入(28)Δpij=k=ij1[23ΔR~ijExp(δϕij)(a~kbkaηkad)Δt2]
变形:
Δ p i j ≃  eq.(4) ∑ k = i j − 1 3 2 Δ R ~ i k ( I − δ ϕ i k ∧ ) ( a ~ k − b i a ) Δ t 2 − ∑ k = i j − 1 3 2 Δ R ~ i k η k a d Δ t 2 =  eq.(2)  Δ p ~ i j + ∑ k = i j − 1 [ 3 2 Δ R ~ i k ( a ~ k − b i a ) ∧ δ ϕ i k Δ t 2 − 3 2 Δ R ~ i k η k a d Δ t 2 ] ≐ Δ p ~ i j − δ p i j (30) \Delta \mathbf{p}_{i j} \stackrel{\text { eq.(4)}}{\simeq} \sum_{k=i}^{j-1} \frac{3}{2} \Delta \tilde{\mathrm{R}}_{i k}\left(\mathbf{I}-\delta \boldsymbol{\phi}_{i k}^{\wedge}\right)\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{i}^{a}\right) \Delta t^{2}-\sum_{k=i}^{j-1} \frac{3}{2} \Delta \tilde{\mathrm{R}}_{i k} \boldsymbol{\eta}_{k}^{a d} \Delta t^{2} \\ \stackrel{\text { eq.(2) }}{=} \Delta \tilde{\mathbf{p}}_{i j}+\sum_{k=i}^{j-1}\left[\frac{3}{2} \Delta \tilde{\mathrm{R}}_{i k}\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{i}^{a}\right)^{\wedge} \delta \boldsymbol{\phi}_{i k} \Delta t^{2}-\frac{3}{2} \Delta \tilde{\mathrm{R}}_{i k} \boldsymbol{\eta}_{k}^{a d} \Delta t^{2}\right] \\ \doteq \Delta \tilde{\mathbf{p}}_{i j}-\delta \mathbf{p}_{i j} \tag{30} Δpij eq.(4)k=ij123ΔR~ik(Iδϕik)(a~kbia)Δt2k=ij123ΔR~ikηkadΔt2= eq.(2) Δp~ij+k=ij1[23ΔR~ik(a~kbia)δϕikΔt223ΔR~ikηkadΔt2]Δp~ijδpij(30)
其中定义了预积分位置测量 Δ p ~ i j \Delta \tilde{\bold{p}}_{ij} Δp~ij 和它的噪声 δ p i j \delta \bold{p}_{ij} δpij

将(28),(29),(30)代入(26),最终得到预积分测量模型:
Δ R ~ i j = R i ⊤ R j Exp ⁡ ( δ ϕ i j ) Δ v ~ i j = R i ⊤ ( v j − v i − g Δ t i j ) + δ v i j Δ p ~ i j = R i ⊤ ( p j − p i − v i Δ t i j − 1 2 g Δ t i j 2 ) + δ p i j (31) \begin{aligned} \Delta \tilde{\mathrm{R}}_{i j} &=\mathrm{R}_{i}^{\top} \mathrm{R}_{j} \operatorname{Exp}\left(\delta \phi_{i j}\right) \\ \Delta \tilde{\mathbf{v}}_{i j} &=\mathrm{R}_{i}^{\top}\left(\mathbf{v}_{j}-\mathbf{v}_{i}-\mathbf{g} \Delta t_{i j}\right)+\delta \mathbf{v}_{i j} \\ \Delta \tilde{\mathbf{p}}_{i j} &=\mathrm{R}_{i}^{\top}\left(\mathbf{p}_{j}-\mathbf{p}_{i}-\mathbf{v}_{i} \Delta t_{i j}-\frac{1}{2} \mathbf{g} \Delta t_{i j}^{2}\right)+\delta \mathbf{p}_{i j} \end{aligned} \tag{31} ΔR~ijΔv~ijΔp~ij=RiRjExp(δϕij)=Ri(vjvigΔtij)+δvij=Ri(pjpiviΔtij21gΔtij2)+δpij(31)
其中复合测量被写成(待估计)状态“加上”随机噪声的函数,由随机向量描述 [ δ ϕ i j T , δ v i j T , δ p i j T ] T [\delta \boldsymbol{\phi}_{ij}^T,\delta \bold{v}_{ij}^T,\delta \bold{p}_{ij}^T]^T [δϕijT,δvijT,δpijT]T 。 下一节将讨论噪声项的性质。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

免费体验CSDN云IDE使用指南

云IDE产品介绍 云IDE使用教程 免费使用地址&#xff1a;点击【云IDE】&#xff0c;即可开始创建工作空间啦~ 官方活动入口 文章目录1.免费体验CSDN云IDE使用指南1.1云IDE优点2.自己的代码在云IDE上跑起来看看如何操作2.1 克隆开源仓库2.2 创建一个空工作空间2.3 使用默认模板代…

Thread类中run和start的区别

一.认识 Thread类 中的 start() 和 run() 首先来看一张jdk-api中对于start 和 run 的描述. 二.方法的区别 下面我们简单看一下代码: // 继承Thread类 重写run() class MyThread extends Thread {Overridepublic void run() {while (true) {System.out.println("thread&q…

如何通过点击商品的信息(图片或者文字)跳转到更加详细的商品信息介绍(前后端分离之Vue实现)

以下只是做简单的演示、大致实现的效果。页面效果需要进一步优化。目的是提供思路 视频效果&#xff1a; 首页商品跳转1、需求 1、首页的的商品来自接口数据2、在首页点击某一个商品跳转到更加详细的商品介绍页面&#xff08;可以购买、加入购物车、查看商品评价信息等&#x…

频频出现的DevOps到底是什么呢?浅浅了解下什么是DevOps吧

文章目录 &#x1f4d1;前言 &#x1f9e9;DevOps的概念和起源 &#x1f4f0;DevOps的概念 &#x1f4f0;DevOps的起源与发展 &#x1f4f0;总结 &#x1f9e9;DevOps的发展 &#x1f4f0;发展过程速览 &#x1f4f0;发展现状 &#x1f4f0;未来发展 &#x1f4c4;以…

【前端】JavaScript数据类型

目录 一、数据类型简介 二、简单数据类型 数字型Number 1.数字型进制 2.数字型范围 3.数字型三个特殊值 4.isNaN() 字符串型String 1.字符串引号嵌套 2.字符串转义符 3.字符串长度 4.字符串拼接 布尔型Boolean Undefined和Null 三、获取变量数据类型 四、数据类型…

res.add(new ArrayList<>(path))和res.add(path)的区别

一.问题描述 在链表path里面添加值&#xff0c;之后把path链表添加到res链表中&#xff0c;自己做的时候使用res.add(path)&#xff0c;结果发现出现解答错误。 题目链接&#xff1a;113. 路径总和 II - 力扣&#xff08;LeetCode&#xff09; 代码如下&#xff1a; class …

网络初始之网络协议

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 1.局域网&#xff1a; 概念&#xff1a; 构建方式 2.广域网&#xff1a; 3.IP地址&#xff1a; 4. 端口号&#xff1a; 常考点&#xff1a; 一、…

【单端S参数与差分S参数转化】

单端S参数与差分S参数转化 1 单端S参数说明 对于单端信号来说&#xff0c;用单端S参数来描述其传输特性&#xff0c;如常见的2端口网络&#xff0c;其S参数包括S11&#xff08;1端口回波损耗RL&#xff09;、S21&#xff08;插入损耗IL&#xff09;、S12&#xff08;插入损耗…

[JSON] JSON基础知识

JSON(JavaScript Object Notation&#xff0c;JavaScript对象表简谱)是一种轻量级的数据交换格式&#xff0c;采用完全独立于编程语言的文本格式来存储和表示数据 JSON文件的文件类型是.json JSON是纯文本&#xff0c;具有层级结构&#xff0c;易于阅读和编写&#xff0c;其本…

【愚公系列】2022年11月 微信小程序-优购电商项目-商品支付页面

文章目录前言1. 商品⽀付页面设计规范一、商品支付页面1.业务逻辑2.涉及的接口数据3. 关键技术二、商品购物车页面相关代码1.页面代码2.效果前言 1. 商品⽀付页面设计规范 第一、支付流程一定要简单。现代人的生活节奏是非常快速的&#xff0c;而且情绪比较浮躁。当用户在浏览…

深入理解Java内存区域(最新版面试题)

1、什么是JVM&#xff1f; JVM&#xff08;Java Virtual Machine&#xff09;是用于运行Java字节码的虚拟机&#xff0c;包括一套字节码指令集、一组程序寄存器、一个虚拟机栈、一个虚拟机堆、一个方法区和一个垃圾回收器。JVM运行在操作系统之上&#xff0c;不与硬件设备直接交…

微信小程序消息订阅Java

前言 编写日期 : 2022-11-04 写这篇文章原因 公司给政府做一个订餐系统&#xff0c;需要在员工在小程序上发起订餐后经过部门领导和书记的审批后&#xff0c;再由食堂确认订餐结果。在订餐审批单在各个节点流转的过程中&#xff0c;需要给每一个节点的审批人发送微信订阅消息…

Linux企业应用——Docker(三)之史上最简单,一篇学会Docker私有仓库Harbor的搭建

文章目录一、什么是Harbor二、搭建私有仓库1.安装docker-ce2.安装软件库包3.创建认证三、在另一台已安装docker的主机上四、搭建Harbor测试docker hub虽然方便&#xff0c;但是还是有限制&#xff1a;• 需要internet连接&#xff0c;速度慢• 所有人都可以访问• 由于安全原因…

SharpShooter Reports.Web 7.5 Crack

SharpShooter Reports.Web 是真正的跨平台报告查看器&#xff0c;因为它能够向 Windows、Linux、Mac OS 甚至 iOS 和 Android 平板电脑和手机提供报告。创建的报告可以轻松集成到任何网站和网页中&#xff0c;包括 MS MVC 和 ASP.NET 应用程序。by Ω578867473报告设计方便易用…

22级第三次比赛题解

文章目录A (1). Ashy与几何(贪心几何)B (2). One eye question of hengheng(前缀和)C Fox hate oranges(模拟)D KingZhangs Similar pair (思维)E (5). 38秒你敢交我A题&#xff1f;F (6). How many numbers are thereG (7). Jump lattice (思维)H (8). CCoolGuang Conjecture(…

五十万字总结,2022最新Java面试八股汇总(含答案,收藏版)

写在前面 今年的疫情&#xff0c;让招聘面试变得雪上加霜。已经有不少大厂&#xff0c;如腾讯、字节跳动的招聘名额明显减少&#xff0c;面试门槛却一再拔高&#xff0c;如果不用心准备&#xff0c;很可能就被面试官怼得哑口无言&#xff0c;甚至失去了难得的机会。 现如今&a…

【网安神器篇】——瑞士军刀Netcat

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右…

G1D5-Intriguing properties of neural networks

今天考完软考中项啦~~明天还有翻译&#xff0c;不过不想复习啦~ 读读论文啦~读网络安全文献课需要的叭 这篇2013年的intruging properties of neural networks的作者都好大佬&#xff01;&#xff01;&#xff01; 先来看看h指数是什么哈~ 一、h指数 一个人的所有论文中&…

C语言题解 | 去重数组合并数组

… &#x1f333;&#x1f332;&#x1f331;本文已收录至&#xff1a;C语言题解系列 更多知识尽在此专栏中&#xff01; 文章目录&#x1f349;前言&#x1f349;正文&#x1f34d;去重数组&#x1f34c;分析&#x1f34c;思路&#x1f34c;代码&#x1f34d;合并数组&#x1…

Allegro基本规则设置指导书之Physical规则设置

Allegro基本规则设置指导书之Physical规则设置 下面介绍规则设置指导书之Physical规则设置 点击Set-up-constraints-Constraint Manager打开规则管理器 设置Physical规则 打开时默认有个Default规则 从左往右 Line Width 最小线宽 最大线宽 Neck 最小线宽 Neck的走线长度 如…