IMU预积分(自动驾驶与机器人中的SLAM技术)
简单记录《自动驾驶与机器人中的SLAM技术》一书中IMU预积分算法,防止自己遗忘。
概述
当一个新的IMU数据到来时,预积分器应该完成以下功能:
- 在上一个数据的基础上利用预积分测量模型计算三个预积分观测量 Δ R ~ i j , Δ v ~ i j , Δ p ~ i j \Delta \tilde{R}_{ij},\Delta \tilde{v}_{ij},\Delta \tilde{p}_{ij} ΔR~ij,Δv~ij,Δp~ij。
- 计算三个噪声量的协方差矩阵 Σ i , k + 1 \Sigma_{i,k+1} Σi,k+1,作为后续图优化的信息矩阵。
- 计算预积分观测量相对于零偏的雅可比矩阵,共五个,用于在零偏更新后更新预积分观测量。
预积分测量模型
Δ
R
~
i
j
=
∏
k
=
i
j
−
1
Exp
(
(
ω
~
k
−
b
g
,
i
)
Δ
t
)
Δ
v
~
i
j
=
∑
k
=
i
j
−
1
Δ
R
~
i
k
(
a
~
k
−
b
a
,
i
)
Δ
t
Δ
p
~
i
j
=
∑
k
=
i
j
−
1
[
(
Δ
v
~
i
k
Δ
t
)
+
1
2
Δ
R
~
i
k
(
a
~
k
−
b
a
,
i
)
Δ
t
2
]
\Delta \tilde{R}_{ij} = \prod_{k=i}^{j-1} \text{Exp}\left((\tilde{\omega}_k - b_{g,i})\Delta t\right)\\\\[10pt] \Delta \tilde{v}_{ij} = \sum_{k=i}^{j-1} \Delta \tilde{R}_{ik}(\tilde{a}_k - b_{a,i})\Delta t\\\\[10pt] \Delta \tilde{p}_{ij} = \sum_{k=i}^{j-1} \left[(\Delta \tilde{v}_{ik}\Delta t) + \frac{1}{2}\Delta \tilde{R}_{ik}(\tilde{a}_k - b_{a,i})\Delta t^2\right]
ΔR~ij=k=i∏j−1Exp((ω~k−bg,i)Δt)Δv~ij=k=i∑j−1ΔR~ik(a~k−ba,i)ΔtΔp~ij=k=i∑j−1[(Δv~ikΔt)+21ΔR~ik(a~k−ba,i)Δt2]
使用上述三个公式输入IMU观测值计算预积分量(不考虑噪声,也就是说计算出来的是观测量,包含着观测噪声)
上式中预积分内部带有零偏量,因此不可避免地会依赖此时的零偏估计,为了处理这种依赖做出如下调整:
1、
i
i
i时刻零偏是固定的,并且在整个预积分计算过程中都是固定的
2、做出预积分对零偏量的一阶线性化模型,舍弃对零偏的高阶项
3、当零偏估计发生变化时,用这个线性模型来修正预积分
预积分噪声模型
这一部分主要是为了构建噪声递推公式,得到AB系数矩阵在每次递推时用来更新噪声协方差矩阵,该噪声协方差矩阵用于预积分图优化中的信息矩阵(GN优化方法中
H
=
J
T
P
J
=
J
T
Σ
−
1
J
,
H=J^TPJ=J^T\Sigma^{-1}J,
H=JTPJ=JTΣ−1J, 误差越大权重越小)。
噪声模型:
δ
ϕ
i
,
j
=
Δ
R
~
r
,
j
−
1
,
j
⊤
δ
ϕ
i
,
j
−
1
+
J
r
,
j
−
1
η
g
d
,
j
−
1
Δ
t
δ
v
i
,
j
=
δ
v
i
,
j
−
1
−
Δ
R
~
i
,
j
−
1
(
a
~
j
−
1
−
b
a
,
i
)
∧
δ
ϕ
i
,
j
−
1
Δ
t
+
Δ
R
~
v
i
,
j
−
1
η
a
d
,
j
−
1
Δ
t
δ
p
i
,
j
=
δ
p
i
,
j
−
1
+
δ
v
i
,
j
−
1
Δ
t
−
1
2
Δ
R
~
i
,
j
−
1
(
a
~
j
−
1
−
b
a
,
i
)
∧
δ
ϕ
i
,
j
−
1
Δ
t
2
+
1
2
Δ
R
~
i
,
j
−
1
η
a
d
,
j
−
1
Δ
t
2
\delta \phi_{i, j} =\Delta \tilde{R}_{r,j-1, j}^\top \delta \phi_{i, j-1} + J_{r, j-1} \eta_{gd, j-1} \Delta t\\ \\\\[10pt] \delta v_{i, j}=\delta v_{i, j-1} - \Delta \tilde{R}_{i, j-1} (\tilde{a}_{j-1} - b_{a, i})^{\wedge} \delta \phi_{i, j-1} \Delta t + \Delta \tilde{R}_{vi, j-1} \eta_{ad, j-1} \Delta t\\ \\\\[10pt] \delta p_{i, j} =\delta p_{i, j-1} + \delta v_{i, j-1} \Delta t - \frac{1}{2} \Delta \tilde{R}_{i, j-1} (\tilde{a}_{j-1} - b_{a, i})^{\wedge}{\delta \phi_{i, j-1}} \Delta t^2 + \frac{1}{2} \Delta \tilde{R}_{i, j-1} \eta_{ad, j-1} \Delta t^2
δϕi,j=ΔR~r,j−1,j⊤δϕi,j−1+Jr,j−1ηgd,j−1Δtδvi,j=δvi,j−1−ΔR~i,j−1(a~j−1−ba,i)∧δϕi,j−1Δt+ΔR~vi,j−1ηad,j−1Δtδpi,j=δpi,j−1+δvi,j−1Δt−21ΔR~i,j−1(a~j−1−ba,i)∧δϕi,j−1Δt2+21ΔR~i,j−1ηad,j−1Δt2
转换为递推公式
[
δ
ϕ
i
,
j
δ
v
i
,
j
δ
p
i
,
j
]
=
[
Δ
R
~
i
,
j
−
1
−
1
0
0
−
Δ
R
~
i
,
j
−
1
(
a
~
j
−
1
−
b
a
,
i
)
δ
ϕ
i
k
I
0
−
1
2
Δ
R
~
i
,
j
−
1
(
a
~
j
−
1
−
b
a
,
i
)
δ
ϕ
i
k
Δ
t
Δ
t
I
]
[
δ
ϕ
i
,
j
−
1
δ
v
i
,
j
−
1
δ
p
i
,
j
−
1
]
+
[
J
r
,
j
−
1
Δ
t
0
0
Δ
R
~
i
,
j
−
1
Δ
t
0
1
2
Δ
R
~
i
,
j
−
1
]
[
η
g
d
,
j
−
1
η
a
d
,
j
−
1
]
\begin{bmatrix} \delta \phi_{i,j} \\ \delta v_{i,j} \\ \delta p_{i,j} \end{bmatrix} = \begin{bmatrix} \Delta \tilde{R}_{i, j-1}^{-1} & 0 & 0 \\ -\Delta \tilde{R}_{i, j-1} (\tilde{a}_{j-1} - b_{a, i})^{\delta \phi_{ik}} & I & 0 \\ -\frac{1}{2} \Delta \tilde{R}_{i, j-1} (\tilde{a}_{j-1} - b_{a, i})^{\delta \phi_{ik}} \Delta t & \Delta t & I \end{bmatrix} \begin{bmatrix} \delta \phi_{i,j-1} \\ \delta v_{i,j-1} \\ \delta p_{i,j-1} \end{bmatrix}+ \begin{bmatrix} J_{r,j-1} \Delta t & 0\\ 0 & \Delta \tilde{R}_{i,j-1} \Delta t \\ 0 & \frac{1}{2} \Delta \tilde{R}_{i,j-1} \end{bmatrix} \begin{bmatrix} \eta_{gd, j-1}\\ \eta_{ad,j-1} \end{bmatrix}
δϕi,jδvi,jδpi,j
=
ΔR~i,j−1−1−ΔR~i,j−1(a~j−1−ba,i)δϕik−21ΔR~i,j−1(a~j−1−ba,i)δϕikΔt0IΔt00I
δϕi,j−1δvi,j−1δpi,j−1
+
Jr,j−1Δt000ΔR~i,j−1Δt21ΔR~i,j−1
[ηgd,j−1ηad,j−1]
噪声的协方差递推公式为
Σ
i
,
k
+
1
=
A
k
+
1
Σ
i
,
k
A
k
+
1
⊤
+
B
k
+
1
C
o
v
(
η
d
,
k
)
B
k
+
1
⊤
\Sigma_{i,k+1}=A_{k+1}\Sigma_{i,k}A_{k+1}^{\top}+B_{k+1}Cov(\eta_{d,k})B_{k+1}^{\top}
Σi,k+1=Ak+1Σi,kAk+1⊤+Bk+1Cov(ηd,k)Bk+1⊤
这里的
A
k
+
1
A_{k+1}
Ak+1 矩阵接近单位阵
I
I
I,因此可以看成噪声累加。陀螺仪的噪声通过
B
B
B 矩阵进入旋转的观测量中,加速度计的噪声则主要进入速度与平移估计中。
零偏的更新
前面的预积分观测模型中假设了在
i
i
i 时刻的IMU零偏恒定不变,这里我们假定预积分观测是随零偏线性变化的,也就是说在零偏发生时,按照一阶导数来更新预积分观测量。
具体来说就是把预积分观测量看成零偏
b
g
,
i
b_{g,i}
bg,i,
b
a
,
i
b_{a,i}
ba,i, 的函数,那么当零偏更新时,预积分观测量做如下修改:
Δ
R
~
i
j
(
b
g
,
i
+
δ
b
g
,
i
)
=
Δ
R
~
i
j
(
b
g
,
i
)
Exp
(
∂
Δ
R
~
i
j
∂
b
g
,
i
δ
b
g
,
i
)
Δ
v
~
i
j
(
b
g
,
i
+
δ
b
g
,
i
,
b
a
,
i
+
δ
b
a
,
i
)
=
Δ
v
~
i
j
(
b
g
,
i
,
b
a
,
i
)
+
∂
Δ
v
~
i
j
∂
b
g
,
i
δ
b
g
,
i
+
∂
Δ
v
~
i
j
∂
b
a
,
i
δ
b
a
,
i
Δ
p
~
i
j
(
b
g
,
i
+
δ
b
g
,
i
,
b
a
,
i
+
δ
b
a
,
i
)
=
Δ
p
~
i
j
(
b
g
,
i
,
b
a
,
i
)
+
∂
Δ
p
~
i
j
∂
b
g
,
i
δ
b
g
,
i
+
∂
Δ
p
~
i
j
∂
b
a
,
i
δ
b
a
,
i
\Delta \tilde{R}_{ij}(b_{g,i} + \delta b_{g,i}) = \Delta \tilde{R}_{ij}(b_{g,i}) \text{Exp}\left(\frac{\partial \Delta \tilde{R}_{ij}}{\partial b_{g,i}} \delta b_{g,i}\right)\\\\[10pt] \Delta \tilde{v}_{ij}(b_{g,i} + \delta b_{g,i}, b_{a,i} + \delta b_{a,i}) = \Delta \tilde{v}_{ij}(b_{g,i}, b_{a,i}) + \frac{\partial \Delta \tilde{v}_{ij}}{\partial b_{g,i}} \delta b_{g,i} + \frac{\partial \Delta \tilde{v}_{ij}}{\partial b_{a,i}} \delta b_{a,i}\\\\[10pt] \Delta \tilde{p}_{ij}(b_{g,i} + \delta b_{g,i}, b_{a,i} + \delta b_{a,i}) = \Delta \tilde{p}_{ij}(b_{g,i}, b_{a,i}) + \frac{\partial \Delta \tilde{p}_{ij}}{\partial b_{g,i}} \delta b_{g,i} + \frac{\partial \Delta \tilde{p}_{ij}}{\partial b_{a,i}} \delta b_{a,i}
ΔR~ij(bg,i+δbg,i)=ΔR~ij(bg,i)Exp(∂bg,i∂ΔR~ijδbg,i)Δv~ij(bg,i+δbg,i,ba,i+δba,i)=Δv~ij(bg,i,ba,i)+∂bg,i∂Δv~ijδbg,i+∂ba,i∂Δv~ijδba,iΔp~ij(bg,i+δbg,i,ba,i+δba,i)=Δp~ij(bg,i,ba,i)+∂bg,i∂Δp~ijδbg,i+∂ba,i∂Δp~ijδba,i
其中上述公式中偏导数的递推形式如下:
∂
Δ
R
~
i
j
∂
b
g
,
i
=
Δ
R
~
j
−
1
,
j
⊤
∂
Δ
R
~
i
,
j
−
1
∂
b
g
,
i
−
J
r
,
j
−
1
Δ
t
∂
Δ
v
~
i
j
∂
b
a
,
i
=
∂
Δ
v
~
i
,
j
−
1
∂
b
a
,
i
−
Δ
R
~
i
,
j
−
1
Δ
t
∂
Δ
v
~
i
j
∂
b
g
,
i
=
∂
Δ
v
~
i
,
j
−
1
∂
b
g
,
i
−
Δ
R
~
i
,
j
−
1
(
a
~
j
−
1
−
b
a
,
i
)
∧
∂
Δ
R
~
i
,
j
−
1
∂
b
g
,
i
Δ
t
∂
Δ
p
~
i
j
∂
b
a
,
i
=
∂
Δ
p
~
i
,
j
−
1
∂
b
a
,
i
+
∂
Δ
v
~
i
,
j
−
1
∂
b
a
,
i
Δ
t
−
1
2
Δ
R
~
i
,
j
−
1
Δ
t
2
∂
Δ
p
~
i
j
∂
b
g
,
i
=
∂
Δ
p
~
i
,
j
−
1
∂
b
g
,
i
+
∂
Δ
v
~
i
,
j
−
1
∂
b
g
,
i
Δ
t
−
1
2
Δ
R
~
i
,
j
−
1
(
a
~
j
−
1
−
b
a
,
i
)
∧
∂
Δ
R
~
i
,
j
−
1
∂
b
g
,
i
Δ
t
2
\frac{\partial \Delta \tilde{R}_{ij}}{\partial b_{g,i}} = \Delta \tilde{R}_{j-1,j}^\top \frac{\partial \Delta \tilde{R}_{i,j-1}}{\partial b_{g,i}}-J_{r,j-1} \Delta t\\ \\\\[10pt] \frac{\partial \Delta \tilde{v}_{ij}}{\partial b_{a,i}} =\frac{\partial \Delta \tilde{v}_{i,j-1}}{\partial b_{a,i}}-\Delta \tilde R_{i,j-1}\Delta t\\ \\\\[10pt] \frac{\partial \Delta \tilde{v}_{ij}}{\partial b_{g,i}} =\frac{\partial \Delta \tilde{v}_{i,j-1}}{\partial b_{g,i}}-\Delta \tilde{R}_{i,j-1}(\tilde a_{j-1}-b_{a,i})^\wedge \frac{\partial \Delta \tilde{R}_{i,j-1}}{\partial b_{g,i}} \Delta t\\ \\\\[10pt] \frac{\partial \Delta \tilde{p}_{ij}}{\partial b_{a,i}} = \frac{\partial \Delta \tilde{p}_{i,j-1}}{\partial b_{a,i}} + \frac{\partial \Delta \tilde{v}_{i,j-1}}{\partial b_{a,i}} \Delta t - \frac{1}{2} \Delta \tilde{R}_{i,j-1} \Delta t^2 \\\\[10pt] \frac{\partial \Delta \tilde{p}_{ij}}{\partial b_{g,i}} = \frac{\partial \Delta \tilde{p}_{i,j-1}}{\partial b_{g,i}} + \frac{\partial \Delta \tilde{v}_{i,j-1}}{\partial b_{g,i}} \Delta t - \frac{1}{2} \Delta \tilde{R}_{i,j-1}(\tilde a_{j-1}-b_{a,i})^\wedge \frac{\partial \Delta \tilde{R}_{i,j-1}}{\partial b_{g,i}} \Delta t^2
∂bg,i∂ΔR~ij=ΔR~j−1,j⊤∂bg,i∂ΔR~i,j−1−Jr,j−1Δt∂ba,i∂Δv~ij=∂ba,i∂Δv~i,j−1−ΔR~i,j−1Δt∂bg,i∂Δv~ij=∂bg,i∂Δv~i,j−1−ΔR~i,j−1(a~j−1−ba,i)∧∂bg,i∂ΔR~i,j−1Δt∂ba,i∂Δp~ij=∂ba,i∂Δp~i,j−1+∂ba,i∂Δv~i,j−1Δt−21ΔR~i,j−1Δt2∂bg,i∂Δp~ij=∂bg,i∂Δp~i,j−1+∂bg,i∂Δv~i,j−1Δt−21ΔR~i,j−1(a~j−1−ba,i)∧∂bg,i∂ΔR~i,j−1Δt2
每次接收到新的IMU数据时都计算观测量对
i
i
i时刻零偏的偏导数,以便在零偏更新后(预积分优化)更新预积分观测值。
基于预积分的图优化
这里是将IMU的预积分作为约束因子(边)建立因子图进行图优化,要建立约束需要知道节点、残差、雅可比;
1、节点是状态变量PVQ及两个零偏
x = [ R i p i v i b g i b a i R j p j v j ] ⊤ x=\begin{bmatrix} R_i&p_i&v_i&b_{gi}&b_{ai}&R_j&p_j&v_j \end{bmatrix}^\top x=[RipivibgibaiRjpjvj]⊤
2、残差是状态变量的误差方程
噪声模型中我们给出了噪声模型的递推公式,是为了更新噪声的协方差矩阵,下边我们先给出测量模型,然后由测量模型给出误差方程:
Δ
R
~
i
j
=
R
i
⊤
R
j
E
x
p
(
δ
ϕ
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
.
\Delta \tilde{R}_{ij} = R_i^\top R_j Exp(\delta \phi_{ij}), \\[10pt] \Delta \tilde{v}_{ij} = R_i^\top (v_j - v_i - g \Delta t_{ij}) + \delta v_{ij}, \\[10pt] \Delta \tilde{p}_{ij} = R_i^\top \left(p_j - p_i - v_i \Delta t_{ij} - \frac{1}{2}g \Delta t_{ij}^2\right) + \delta p_{ij}.
ΔR~ij=Ri⊤RjExp(δϕij),Δv~ij=Ri⊤(vj−vi−gΔtij)+δvij,Δp~ij=Ri⊤(pj−pi−viΔtij−21gΔtij2)+δpij.
以上公式可以看出测量值等于真实值加噪声,该公式是由真实值公式推导出来的(分离测量与噪声),下面从测量模型定义残差:
r
Δ
R
i
j
=
L
o
g
(
(
Δ
R
~
i
j
)
(
R
i
⊤
R
j
)
)
=
−
δ
ϕ
i
j
,
r
Δ
v
i
j
=
R
i
⊤
(
v
j
−
v
i
−
g
Δ
t
i
j
)
−
Δ
v
~
i
j
=
−
δ
v
i
j
,
r
Δ
p
i
j
=
R
i
⊤
(
p
j
−
p
i
−
v
i
Δ
t
i
j
−
1
2
g
Δ
t
i
j
2
)
−
Δ
p
~
i
j
=
−
δ
p
i
j
.
r_{\Delta R_{ij}} = Log\left((\Delta \tilde{R}_{ij})(R_i^\top R_j)\right)=-\delta \phi_{ij}, \\\\[10pt] r_{\Delta v_{ij}} = R_i^\top(v_j - v_i - g \Delta t_{ij}) - \Delta \tilde{v}_{ij}=- \delta v_{ij}, \\\\[10pt] r_{\Delta p_{ij}} = R_i^\top\left(p_j - p_i - v_i \Delta t_{ij} - \frac{1}{2}g \Delta t_{ij}^2\right) - \Delta \tilde{p}_{ij}=- \delta p_{ij}.
rΔRij=Log((ΔR~ij)(Ri⊤Rj))=−δϕij,rΔvij=Ri⊤(vj−vi−gΔtij)−Δv~ij=−δvij,rΔpij=Ri⊤(pj−pi−viΔtij−21gΔtij2)−Δp~ij=−δpij.
上式中,残差部分实际就是噪声部分,因此残差的协方差矩阵就是噪声的协方差矩阵。
3、雅可比是残差对状态变量的偏导
[
∂
r
Δ
R
i
j
∂
x
∂
r
Δ
v
i
j
∂
x
∂
r
Δ
p
i
j
∂
x
]
9
∗
24
=
[
∂
r
Δ
R
i
j
∂
R
i
∂
r
Δ
R
i
j
∂
p
i
=
0
∂
r
Δ
R
i
j
∂
v
i
=
0
∂
r
Δ
R
i
j
∂
b
g
i
∂
r
Δ
R
i
j
∂
b
a
i
=
0
∂
r
Δ
R
i
j
∂
R
j
∂
r
Δ
R
i
j
∂
p
j
=
0
∂
r
Δ
R
i
j
∂
v
j
=
0
∂
r
Δ
v
i
j
∂
R
i
∂
r
Δ
v
i
j
∂
p
i
=
0
∂
r
Δ
v
i
j
∂
v
i
∂
r
Δ
v
i
j
∂
b
g
i
∂
r
Δ
v
i
j
∂
b
a
i
∂
r
Δ
v
i
j
∂
R
j
=
0
∂
r
Δ
v
i
j
∂
p
j
=
0
∂
r
Δ
v
i
j
∂
v
j
∂
r
Δ
p
i
j
∂
R
i
∂
r
Δ
p
i
j
∂
p
i
∂
r
Δ
p
i
j
∂
v
i
∂
r
Δ
p
i
j
∂
b
g
i
∂
r
Δ
p
i
j
∂
b
a
i
∂
r
Δ
p
i
j
∂
R
j
=
0
∂
r
Δ
p
i
j
∂
p
j
∂
r
Δ
p
i
j
∂
v
j
=
0
]
\begin{bmatrix} \frac{\partial r_{\Delta R_{ij}}}{\partial x} \\[10pt] \frac{\partial r_{\Delta v_{ij}}}{\partial x} \\[10pt] \frac{\partial r_{\Delta p_{ij}}}{\partial x} \\[10pt] \end{bmatrix}_{9*24}= \begin{bmatrix} \frac{\partial r_{\Delta R_{ij}}}{\partial R_i} & \frac{\partial r_{\Delta R_{ij}}}{\partial p_i}=0 & \frac{\partial r_{\Delta R_{ij}}}{\partial v_i}=0 & \frac{\partial r_{\Delta R_{ij}}}{\partial b_{gi}} & \frac{\partial r_{\Delta R_{ij}}}{\partial b_{ai}} =0& \frac{\partial r_{\Delta R_{ij}}}{\partial R_j} & \frac{\partial r_{\Delta R_{ij}}}{\partial p_j} =0& \frac{\partial r_{\Delta R_{ij}}}{\partial v_j} =0 \\[10pt] \\ \frac{\partial r_{\Delta v_{ij}}}{\partial R_i} & \frac{\partial r_{\Delta v_{ij}}}{\partial p_i}=0 & \frac{\partial r_{\Delta v_{ij}}}{\partial v_i} & \frac{\partial r_{\Delta v_{ij}}}{\partial b_{gi}} & \frac{\partial r_{\Delta v_{ij}}}{\partial b_{ai}}& \frac{\partial r_{\Delta v_{ij}}}{\partial R_j} =0& \frac{\partial r_{\Delta v_{ij}}}{\partial p_j} =0& \frac{\partial r_{\Delta v_{ij}}}{\partial v_j} \\[10pt] \\ \frac{\partial r_{\Delta p_{ij}}}{\partial R_i} & \frac{\partial r_{\Delta p_{ij}}}{\partial p_i} & \frac{\partial r_{\Delta p_{ij}}}{\partial v_i} & \frac{\partial r_{\Delta p_{ij}}}{\partial b_{gi}} & \frac{\partial r_{\Delta p_{ij}}}{\partial b_{ai}} & \frac{\partial r_{\Delta p_{ij}}}{\partial R_j} =0& \frac{\partial r_{\Delta p_{ij}}}{\partial p_j}& \frac{\partial r_{\Delta p_{ij}}}{\partial v_j} =0 \end{bmatrix}
∂x∂rΔRij∂x∂rΔvij∂x∂rΔpij
9∗24=
∂Ri∂rΔRij∂Ri∂rΔvij∂Ri∂rΔpij∂pi∂rΔRij=0∂pi∂rΔvij=0∂pi∂rΔpij∂vi∂rΔRij=0∂vi∂rΔvij∂vi∂rΔpij∂bgi∂rΔRij∂bgi∂rΔvij∂bgi∂rΔpij∂bai∂rΔRij=0∂bai∂rΔvij∂bai∂rΔpij∂Rj∂rΔRij∂Rj∂rΔvij=0∂Rj∂rΔpij=0∂pj∂rΔRij=0∂pj∂rΔvij=0∂pj∂rΔpij∂vj∂rΔRij=0∂vj∂rΔvij∂vj∂rΔpij=0
其中:
残差对
R
i
求偏导
:
∂
r
Δ
R
i
j
∂
R
i
=
−
J
r
−
1
(
r
Δ
R
i
j
)
R
j
⊤
R
i
∂
r
Δ
v
i
j
∂
R
i
=
(
R
i
⊤
(
v
j
−
v
i
−
g
Δ
t
i
j
)
)
∧
∂
r
Δ
p
i
j
∂
R
i
=
(
R
i
⊤
(
p
j
−
p
i
−
v
i
Δ
t
i
j
−
1
2
g
Δ
t
i
j
2
)
)
∧
残差对R_i求偏导:\\ \frac{\partial r_{\Delta R_{ij}}}{\partial R_i} =-J_r^{-1}(r_{\Delta R_{ij}})R_j^\top R_i \\[10pt] \frac{\partial r_{\Delta v_{ij}}}{\partial R_i} =(R_i^\top(v_j-v_i-g\Delta t_{ij}))^{\wedge} \\[10pt] \frac{\partial r_{\Delta p_{ij}}}{\partial R_i}=(R_i^\top(p_j-p_i-v_i \Delta t_{ij}-\frac{1}{2}g\Delta t^2_{ij}))^{\wedge} \\[10pt]
残差对Ri求偏导:∂Ri∂rΔRij=−Jr−1(rΔRij)Rj⊤Ri∂Ri∂rΔvij=(Ri⊤(vj−vi−gΔtij))∧∂Ri∂rΔpij=(Ri⊤(pj−pi−viΔtij−21gΔtij2))∧
残差对
p
i
求偏导
:
∂
r
Δ
p
i
j
∂
p
i
=
−
R
i
⊤
残差对p_i求偏导:\\ \frac{\partial r_{\Delta p_{ij}}}{\partial p_i}=-R_i^\top
残差对pi求偏导:∂pi∂rΔpij=−Ri⊤
残差对
v
i
求偏导
:
∂
r
Δ
v
i
j
∂
v
i
=
−
R
i
⊤
∂
r
Δ
p
i
j
∂
v
i
=
−
R
i
⊤
Δ
t
i
j
残差对v_i求偏导:\\ \frac{\partial r_{\Delta v_{ij}}}{\partial v_i} =-R_i^\top \\[10pt] \frac{\partial r_{\Delta p_{ij}}}{\partial v_i}=-R_i^\top \Delta t_{ij}
残差对vi求偏导:∂vi∂rΔvij=−Ri⊤∂vi∂rΔpij=−Ri⊤Δtij
残差对
b
g
,
i
求偏导
:
∂
r
Δ
R
i
j
∂
b
g
,
i
=
−
J
r
−
1
(
r
Δ
R
i
j
′
)
E
x
p
(
r
Δ
R
i
j
′
)
⊤
∂
R
^
i
j
∂
b
g
,
i
∂
r
Δ
v
i
j
∂
b
g
,
i
=
−
(
∂
Δ
v
~
i
,
j
−
1
∂
b
g
,
i
−
Δ
R
~
i
,
j
−
1
(
a
~
j
−
1
−
b
a
,
i
)
∧
∂
Δ
R
~
i
,
j
−
1
∂
b
g
,
i
Δ
t
)
∂
r
Δ
p
i
j
∂
b
g
,
i
=
−
(
∂
Δ
p
~
i
,
j
−
1
∂
b
g
,
i
+
∂
Δ
v
~
i
,
j
−
1
∂
b
g
,
i
Δ
t
−
1
2
Δ
R
~
i
,
j
−
1
(
a
~
j
−
1
−
b
a
,
i
)
∧
∂
Δ
R
~
i
,
j
−
1
∂
b
g
,
i
Δ
t
2
)
残差对b_{g,i}求偏导:\\ \frac{\partial r_{\Delta R_{ij}}}{\partial b_{g,i}} =-J_r^{-1}(r'_{\Delta R_{ij}})Exp\left(r'_{\Delta R_{ij}}\right)^{\top} \frac{\partial \hat{R}_{ij}}{\partial b_{g,i}} \\[10pt] \frac{\partial r_{\Delta v_{ij}}}{\partial b_{g,i}}=-\left(\frac{\partial \Delta \tilde{v}_{i,j-1}}{\partial b_{g,i}}-\Delta \tilde{R}_{i,j-1}(\tilde a_{j-1}-b_{a,i})^\wedge \frac{\partial \Delta \tilde{R}_{i,j-1}}{\partial b_{g,i}} \Delta t\right) \\[10pt] \frac{\partial r_{\Delta p_{ij}}}{\partial b_{g,i}}=-\left(\frac{\partial \Delta \tilde{p}_{i,j-1}}{\partial b_{g,i}} + \frac{\partial \Delta \tilde{v}_{i,j-1}}{\partial b_{g,i}} \Delta t - \frac{1}{2} \Delta \tilde{R}_{i,j-1}(\tilde a_{j-1}-b_{a,i})^\wedge \frac{\partial \Delta \tilde{R}_{i,j-1}}{\partial b_{g,i}} \Delta t^2 \right)
残差对bg,i求偏导:∂bg,i∂rΔRij=−Jr−1(rΔRij′)Exp(rΔRij′)⊤∂bg,i∂R^ij∂bg,i∂rΔvij=−(∂bg,i∂Δv~i,j−1−ΔR~i,j−1(a~j−1−ba,i)∧∂bg,i∂ΔR~i,j−1Δt)∂bg,i∂rΔpij=−(∂bg,i∂Δp~i,j−1+∂bg,i∂Δv~i,j−1Δt−21ΔR~i,j−1(a~j−1−ba,i)∧∂bg,i∂ΔR~i,j−1Δt2)
残差对
b
a
,
i
求偏导
:
∂
r
Δ
v
i
j
∂
b
a
,
i
=
−
(
∂
Δ
v
~
i
,
j
−
1
∂
b
a
,
i
−
Δ
R
~
i
,
j
−
1
Δ
t
)
∂
r
Δ
p
i
j
∂
b
a
,
i
=
−
(
∂
Δ
p
~
i
,
j
−
1
∂
b
a
,
i
+
∂
Δ
v
~
i
,
j
−
1
∂
b
a
,
i
Δ
t
−
1
2
Δ
R
~
i
,
j
−
1
Δ
t
2
)
残差对b_{a,i}求偏导:\\ \frac{\partial r_{\Delta v_{ij}}}{\partial b_{a,i}}=-\left(\frac{\partial \Delta \tilde{v}_{i,j-1}}{\partial b_{a,i}}-\Delta \tilde R_{i,j-1}\Delta t\right) \\[10pt] \frac{\partial r_{\Delta p_{ij}}}{\partial b_{a,i}}=-\left( \frac{\partial \Delta \tilde{p}_{i,j-1}}{\partial b_{a,i}} + \frac{\partial \Delta \tilde{v}_{i,j-1}}{\partial b_{a,i}} \Delta t - \frac{1}{2} \Delta \tilde{R}_{i,j-1} \Delta t^2 \right)
残差对ba,i求偏导:∂ba,i∂rΔvij=−(∂ba,i∂Δv~i,j−1−ΔR~i,j−1Δt)∂ba,i∂rΔpij=−(∂ba,i∂Δp~i,j−1+∂ba,i∂Δv~i,j−1Δt−21ΔR~i,j−1Δt2)
残差对
R
j
求偏导
:
∂
r
Δ
R
i
j
∂
R
j
=
J
r
−
1
(
r
Δ
R
i
j
)
残差对R_j求偏导:\\ \frac{\partial r_{\Delta R_{ij}}}{\partial R_j}=J_r^{-1}(r_{\Delta R_{ij}})
残差对Rj求偏导:∂Rj∂rΔRij=Jr−1(rΔRij)
残差对
p
j
求偏导
:
∂
r
Δ
p
i
j
∂
p
j
=
R
i
⊤
残差对p_j求偏导:\\ \frac{\partial r_{\Delta p_{ij}}}{\partial p_j}=R_i^\top
残差对pj求偏导:∂pj∂rΔpij=Ri⊤
残差对
v
j
求偏导
:
∂
r
Δ
p
i
j
∂
p
j
=
R
i
⊤
残差对v_j求偏导:\\ \frac{\partial r_{\Delta p_{ij}}}{\partial p_j}=R_i^\top
残差对vj求偏导:∂pj∂rΔpij=Ri⊤