当前位置: 首页 > news >正文

【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;

相关文章:

  • 每日三题 9.30
  • C++ Reference: Standard C++ Library reference: C Library: cmath: llrint
  • NNDL实验: Moon1000数据集 - 弯月消失之谜
  • ROC-RK3588-PC 八核8K人工智能开源主板
  • 2022新版PMP考试有哪些变化?
  • hive集群加了个参数后,union all的任务都执行不了影响业务
  • 攻防演练中防守方的防护措施.
  • 鲁棒的非负监督低秩鉴别嵌入算法
  • 第一季:12Linux常用服务类相关命令【Java面试题】
  • 35-SpringBoot 短信验证码接口使用
  • RTOS 任务划分
  • 无人机基础知识:多旋翼无人机系统基本组成
  • uniapp原生插件-YL视频播放器
  • 黑马瑞吉外卖之套餐信息的删除
  • 第十三届蓝桥杯C++B组国赛C题——卡牌 (AC)
  • Asm.js的简单介绍
  • Idea+maven+scala构建包并在spark on yarn 运行
  • Java IO学习笔记一
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JavaScript-Array类型
  • JAVA之继承和多态
  • Laravel Mix运行时关于es2015报错解决方案
  • Laravel Telescope:优雅的应用调试工具
  • Laravel 中的一个后期静态绑定
  • python学习笔记 - ThreadLocal
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 对象管理器(defineProperty)学习笔记
  • 观察者模式实现非直接耦合
  • 浏览器缓存机制分析
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (03)光刻——半导体电路的绘制
  • (04)odoo视图操作
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (BFS)hdoj2377-Bus Pass
  • (C++17) optional的使用
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (编译到47%失败)to be deleted
  • (定时器/计数器)中断系统(详解与使用)
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (力扣)1314.矩阵区域和
  • (转)socket Aio demo
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • **PHP分步表单提交思路(分页表单提交)
  • .htaccess配置常用技巧
  • .net Application的目录
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .Net 知识杂记