【VIO】第1讲 IMU 传感器

1.旋转运动学

速度合成公式:
v i = v i b i + w i b i × r i + R i b v b v^i = v_{ib}^i + w_{ib}^i \times r^i +R_{ib}v^b vi=vibi+wibi×ri+Ribvb
加速度合成公式:
a i = w ˙ i b i × r i ⏟ 欧拉力 + w i b i × ( w i b i × r i ) ⏟ 离心力 + 2 w i b i × v i ⏟ 科氏力 + R i b a b a^i = \underbrace{\dot{w}_{ib}^i \times r^i}_{欧拉力} + \underbrace{w_{ib}^i \times (w_{ib}^i \times r^i)}_{离心力} + \underbrace{2w_{ib}^i \times v^i}_{科氏力} + R_{ib}a^b ai=欧拉力 w˙ibi×ri+离心力 wibi×(wibi×ri)+科氏力 2wibi×vi+Ribab

2.IMU 测量模型及运动模型

​ 1)加速度计

​ 2)陀螺仪

3.IMU 误差模型

​ 1)确定性误差

​ 零偏(Bias):IMU传感器在完全静止状态下存在的非零输出值

​ 尺度因子(Scale): IMU传感器自身尺度不准引起的测量误差

​ 不垂直度(Nonorothogonality):IMU传感器中由于各轴安装不垂直引起的误差

​ 2)随机误差

​ 高斯白噪声:均值为 0 ,方差为 σ \sigma σ 的独立高斯过程
n ( t ) ∼ ( 0 , σ ) n(t) \sim (0, \sigma) n(t)(0,σ)
​ bias随机游走

​ 3)高斯白噪声的离散积分

​ 离散状态下的高斯白噪声 n ( t ) n(t) n(t) 服从如下分布:
n d ( k ) ∼ N ( 0 , σ 2 Δ t ) n_d(k)\sim N(0, \frac{\sigma^2}{\Delta t}) nd(k)N(0,Δtσ2)
​ 离散方差 σ d \sigma_d σd
σ d = σ Δ t \sigma_d = \frac{\sigma}{\sqrt{\Delta t}} σd=Δt σ
​ 高斯白噪声的连续时间到离散时间之间差 1 Δ t \frac{1}{\sqrt{\Delta t}} Δt 1, 其中 Δ t \Delta t Δt 为传感器的采样时间

​ 4)零偏的离散积分

​ 已知:
b ( t ) ˙ = n ( t ) = σ b w ( t ) \dot{b(t)} = n(t) = \sigma_b w(t) b(t)˙=n(t)=σbw(t)
​ 所以可以得到离散状态下零偏符合分布:
b d ( k ) ∼ N ( b d ( k − 1 ) , Δ t σ b 2 ) b_d(k) \sim N(b_d(k-1), \Delta t \sigma_b^2) bd(k)N(bd(k1),Δtσb2)

​ bias 随机游走的噪声方差从连续时间到连续时间之间需要乘以 Δ t \sqrt{\Delta t} Δt

4.IMU 随机误差标定

​ Allan 方差标定

5.加速度计与陀螺仪误差模型

(1)加速度计

​ 导航系G为东北天, g G = ( 0 , 0 , − 9.81 ) T g^G = (0, 0, -9.81)^T gG=(0,0,9.81)T

​ 理论测量值:
a m B = R B G ( a G − g G ) a_m^B = R_{BG}(a^G-g^G) amB=RBG(aGgG)
​ 考虑高斯白噪声,bias,以及尺度因子
a m B = S a R B G ( a G − g G ) + n a + b a a_m^B = S_aR_{BG}(a^G-g^G) + n_a + b_a amB=SaRBG(aGgG)+na+ba
(2)陀螺仪

​ 考虑高斯白噪声,bias,以及尺度因子
w m B = S g w B + n g + b g w_m^B = S_gw^B + n_g+b_g wmB=SgwB+ng+bg

6.VIO中的IMU模型

忽略scale,只考虑白噪声和bias随机游走:
w ~ b = w b + b g + n g \widetilde{w}^b = w^b+b^g+n^g w b=wb+bg+ng

a ~ b = q b w ( a w + g w ) + b a + n a \widetilde{a}^b = q_{bw}(a^w+g^w)+b^a+n^a a b=qbw(aw+gw)+ba+na

上标g表示陀螺仪,a表示加速度计,w表示世界坐标系,b表示IMU机体坐标系。IMU真实值 w , a w,a w,a, 测量值 w ~ \widetilde{w} w , a ~ \widetilde{a} a

7.运动模型的离散积分

(1)欧拉法
a = q w b k ( a b k − b k a ) − g w a = q_{wb_k} (a^{b_k} - b^a_k ) -g^w a=qwbk(abkbka)gw

w = w b k − b k g w=w^{b_k} - b_k^g w=wbkbkg

(2)中值法
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 ] a= \frac{1}{2} [q_{wb_k}(a^{b_k} - b^a_k ) - g^w + q_{wb_{k+1}}(a^{b_{k+1}} - b^a_k ) - g^w] a=21[qwbk(abkbka)gw+qwbk+1(abk+1bka)gw]

w = 1 2 [ ( w b k − b k g ) + ( w b k + 1 − b k g ) ] w = \frac{1}{2} [(w^{b_k} - b_k^g) + (w^{b_{k+1}} - b_k^g)] w=21[(wbkbkg)+(wbk+1bkg)]

// imu 动力学模型 欧拉积分

Eigen::Vector3d acc_w = Qwb * (imupose.imu_acc) + gw;  // aw = Rwb * ( acc_body - acc_bias ) + gw
Qwb = Qwb * dq;
Pwb = Pwb + Vw * dt + 0.5 * dt * dt * acc_w;
Vw = Vw + acc_w * dt;

// 中值积分
Eigen::Vector3d acc_w = Qwb * (imupose.imu_acc) + gw;
Qwb = Qwb * dq;
Eigen::Vector3d acc_w1 = Qwb * (imupose.imu_acc) + gw;
acc_w = 0.5 * (acc_w + acc_w1);

Pwb = Pwb + Vw * dt + 0.5 * dt * dt * acc_w;
Vw = Vw + acc_w * dt;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值