IMU模型
SLAM基础——IMU传感器(IMU误差模型、IMU离散积分)
1.基本模型
IMU误差模型
误差分类
- 加速度计和陀螺仪的误差可以分为:确定性误差、随机误差
- 确定性误差可以事先标定确定,包括:bais、scale
- 随机误差通常假设噪声服从高斯分布,包括:高斯白噪声、bais随机游走…
忽略scale,只考虑高斯白噪声n和bais随机游走b:
ω ~ b = ω b + b g + n g a ~ b = q b w ( a w + g w ) + b a + n a \begin{aligned} {\tilde{\mathbf{\omega}}^b} &= {\mathbf{\omega}^b} + {\mathbf{b}^g} + { \mathbf{n}^g } \\ {\tilde{\mathbf{a}}^b} &= {\mathbf{q}_{bw}} ( {\mathbf{a}^w} + {\mathbf{g}^w}) + {\mathbf{b}^a} + {\mathbf{n}^a} \end{aligned} ω~ba~b=ωb+bg+ng=qbw(aw+gw)+ba+na
有上标波浪线的代表的是陀螺仪的测量值
ω
b
~
\tilde{\mathbf\omega^b}
ωb~ 和加速度计的测量值
a
~
b
{\tilde{\mathbf{a}}^b}
a~b
右上标
b
b
b 表示的是 body坐标系,
w
w
w 表示世界坐标系或惯性坐标系,
a
a
a 表示加速度acc,
g
g
g 表示gyro陀螺仪。
所以位移
p
p
p,速度
v
v
v,四元数
q
q
q 的微分形式如下所示,
⊗
{\otimes}
⊗ 代表四元数之间的乘法。
p
˙
w
b
t
=
v
t
w
v
˙
t
w
=
a
t
w
q
˙
w
b
t
=
q
w
b
t
⊗
[
0
1
2
ω
b
t
]
\begin{aligned} {\dot{\mathbf{p}}_{wb_t}} &= {\mathbf{v}^w_t} \\ {\dot{\mathbf{v}}^w_t} &= {\mathbf{a}^w_t}\\ {\dot{\mathbf{q}}_{wb_t}} &= {\mathbf{q}_{wb_t}} {\otimes} \begin{bmatrix} 0\\ {\frac{1}{2}}{\mathbf{\omega}}^{b_t}\\ \end{bmatrix} \end{aligned}
p˙wbtv˙twq˙wbt=vtw=atw=qwbt⊗[021ωbt]
2.连续时间下IMU运动模型
根据上面的微分形式,可以从第 i i i 个时刻的位移 p w b i {\mathbf{p}_{wb_i}} pwbi,速度 v i w {\mathbf{v}^w_i} viw,四元数 q w b i {\mathbf{q}_{wb_i}} qwbi 通过IMU的测量值进行积分,得到第 j j j 时刻的位移( p w b j {\mathbf{p}_{wb_j}} pwbj )、速度( v j w {\mathbf{v}^w_j} vjw )、四元数( q w b j {\mathbf{q}_{wb_j}} qwbj )。
p w b j = p w b i + v t w △ t + ∬ t ∈ [ i , j ] ( q w b t a b t − g w ) δ t 2 v j w = v i w + ∫ t ∈ [ i , j ] ( q w b t a b t − g w ) δ t q w b j = ∫ t ∈ [ i , j ] q w b t ⊗ [ 0 1 2 ω b t ] δ t \begin{aligned} {\mathbf{p}_{wb_j}} &= {\mathbf{p}_{wb_i}} + {{\mathbf{v}}^w_t}{{\triangle}t} + {\iint_{t{\in}[i,j]}} ( {\mathbf{q}_{wb_t}} {\mathbf{a}^{b_t}} - \mathbf{g}^w ) {\delta}t^2 \\ {\mathbf{v}^w_j} &= {\mathbf{v}^w_i} + {\int_{t{\in}[i,j]}} ( {\mathbf{q}_{wb_t}} {\mathbf{a}^{b_t}} - \mathbf{g}^w ) {\delta}t \\ {\mathbf{q}_{wb_j}} &= {\int_{t{\in}[i,j]}}{\mathbf{q}_{wb_t}} {\otimes} \begin{bmatrix} 0\\ {\frac{1}{2}}{\mathbf{\omega}}^{b_t} \\ \end{bmatrix}{\delta}t \end{aligned} pwbjvjwqwbj=pwbi+vtw△t+∬t∈[i,j](qwbtabt−gw)δt2=viw+∫t∈[i,j](qwbtabt−gw)δt=∫t∈[i,j]qwbt⊗[021ωbt]δt
3.运动模型的离散积分–欧拉法
使用欧拉法,即两个相邻时刻
k
k
k 到
k
+
1
k+1
k+1 的位姿是用第
k
k
k时刻的测量值
a
\mathbf{a}
a,
ω
{\mathbf{\omega}}
ω 来计算的
p
w
b
k
+
1
=
p
w
b
k
+
v
t
w
△
t
+
1
2
a
△
t
2
v
k
+
1
w
=
v
k
w
+
a
△
t
q
w
b
k
+
1
=
q
w
b
k
⊗
[
0
1
2
ω
δ
t
]
\begin{aligned} {\mathbf{p}_{wb_{k+1}}} &= {\mathbf{p}_{wb_k}} + {{\mathbf{v}}^w_t}{{\triangle}t} + {\frac{1}{2}\mathbf{a}{{\triangle}t^2}} \\ {\mathbf{v}^w_{k+1}} &= {\mathbf{v}^w_k} + {\mathbf{a}{{\triangle}t}} \\ {\mathbf{q}_{wb_{k+1}}} &= {\mathbf{q}_{wb_{k}}} {\otimes} \begin{bmatrix} 0\\ {\frac{1}{2}}{\mathbf{\omega}{\delta}t}\\ \end{bmatrix} \end{aligned}
pwbk+1vk+1wqwbk+1=pwbk+vtw△t+21a△t2=vkw+a△t=qwbk⊗[021ωδt]
其中,
a = q w b k ( a b k − b k a ) − g w ω = ω b k − b k g \begin{aligned} {\mathbf{a}} &= {\mathbf{q}_{wb_k}} ( \mathbf{a}^{b_k} - \mathbf{b}^a_k ) - {\mathbf{g}^w} \\ {\mathbf{\omega}} &= {\mathbf{\omega}^{b_k}} - {\mathbf{b}^g_k} \end{aligned} aω=qwbk(abk−bka)−gw=ωbk−bkg
4.运动模型的离散积分–中值积分法
p w b k + 1 = p w b k + v t w △ t + 1 2 a △ t 2 v k + 1 w = v k w + a △ t q w b k + 1 = q w b k ⊗ [ 0 1 2 ω δ t ] \begin{aligned} {\mathbf{p}_{wb_{k+1}}} &= {\mathbf{p}_{wb_k}} + {{\mathbf{v}}^w_t}{{\triangle}t} + {\frac{1}{2}\mathbf{a}{{\triangle}t^2}} \\ {\mathbf{v}^w_{k+1}} &= {\mathbf{v}^w_k} + {\mathbf{a}{{\triangle}t}} \\ {\mathbf{q}_{wb_{k+1}}} &= {\mathbf{q}_{wb_{k}}} {\otimes} \begin{bmatrix} 0\\ {\frac{1}{2}}{\mathbf{\omega}{\delta}t}\\ \end{bmatrix} \end{aligned} pwbk+1vk+1wqwbk+1=pwbk+vtw△t+21a△t2=vkw+a△t=qwbk⊗[021ωδt]
其中,
a = 1 2 [ q w b k ( a b k − b k a ) − g w + q w b k + 1 ( a b k + 1 − b k a ) − g w ] ω = 1 2 [ ω b k − b k g + ω b k + 1 − b k g ] \begin{aligned} {\mathbf{a}} &= {\frac{1}{2}}[{\mathbf{q}_{wb_k}} ( \mathbf{a}^{b_k} - \mathbf{b}^a_k ) - {\mathbf{g}^w} + {\mathbf{q}_{wb_{k+1}}} ( \mathbf{a}^{b_{k+1}} - \mathbf{b}^a_k ) - {\mathbf{g}^w}] \\ {\mathbf{\omega}} &= {\frac{1}{2}}[{\mathbf{\omega}^{b_k}} - {\mathbf{b}^g_k} + {\mathbf{\omega}^{b_{k+1}}} - {\mathbf{b}^g_k}] \end{aligned} aω=21[qwbk(abk−bka)−gw+qwbk+1(abk+1−bka)−gw]=21[ωbk−bkg+ωbk+1−bkg]