博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IMU数据积分获得当前位姿
阅读量:4954 次
发布时间:2019-06-12

本文共 1168 字,大约阅读时间需要 3 分钟。

从两帧IMU数据中获得当前位姿的预测思路非常简单,无非是求出当前时刻\(t\)与下一时刻\(t+1\)加速度的均值, 把它作为\(\Delta t\)时间内的平均加速度,有了这个平均加速度及当前时刻的初始速度和初始位置,就可以近似的求出\(t+1\)时刻的速度和位置。求出当前时刻\(t\)与下一时刻\(t+1\)角速度的均值, 把它作为\(\Delta t\)时间内的平均角速度,有了这个平均角速度及当前时刻的姿态,就可以近似的求出\(t+1\)时刻的姿态。

但是由于IMU的数据存在着坐标系、bias和重力加速度的问题需要额外的一些处理。
首先对于加速度,因为imu的加速度数据是在Body坐标系下表示的,所以要利用对应时刻的姿态将其转换到世界坐标系下,转换之前要减去bias,转化之后要减去重力加速度(世界坐标系下的重力加速度恒等于9.8):
\[ a_{t,w}=Q_t(a_{t,b}-B_a)-g\\ a_{t+1,w}=Q_{t+1}(a_{t+1,b}-B_a)-g \]
\(Q_{t+1}\)\(t+1\)时刻的姿态,需要用角速度的数据来近似计算:
\[ \omega_t^{'} = \frac{1}{2}(\omega_t+\omega_{t+1})-B_g\\ Q_{t+1}=Q_t(\omega_t^{'}\Delta t) \]
有了\(t,t+1\)时刻的加速度,就可以求出\(t+1\)时刻的速度和位置:
\[ a_{t,w}^{'}=\frac{1}{2}(a_{t,w}+a_{t+1,w})\\ V_{t+1}=V_t+a_{t,w}^{'}\Delta t\\ P_{t+1}=P_t+ V_t\Delta t + \frac{1}{2}a_{t,w}^{'}\Delta t ^2 \]

按照计算的顺序整理一下整个积分的流程:

\[ a_{t,w}=Q_t(a_{t,b}-B_a)-g\\ \omega_t^{'} = \frac{1}{2}(\omega_t+\omega_{t+1})-B_g\\ Q_{t+1}=Q_t(\omega_t^{'}\Delta t)\\ a_{t+1,w}=Q_{t+1}(a_{t+1,b}-B_a)-g\\ a_{t,w}^{'}=\frac{1}{2}(a_{t,w}+a_{t+1,w})\\ V_{t+1}=V_t+a_{t,w}^{'}\Delta t\\ P_{t+1}=P_t+ V_t\Delta t + \frac{1}{2}a_{t,w}^{'}\Delta t ^2 \]
具体代码见VINS_MONO的predict()函数。

转载于:https://www.cnblogs.com/glxin/p/9851909.html

你可能感兴趣的文章
java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例
查看>>
使用Busybox制作根文件系统
查看>>
Ubuntu候选栏乱码
查看>>
基于SSH框架的在线考勤系统开发的质量属性
查看>>
jpg图片在IE6、IE7和IE8下不显示解决办法
查看>>
delphi之模糊找图
查看>>
Javascript模块化编程的写法
查看>>
大华门禁SDK二次开发(二)-SignalR应用
查看>>
oracle 使用job定时自动重置sequence
查看>>
集成百度推送
查看>>
在项目中加入其他样式
查看>>
在使用Kettle的集群排序中 Carte的设定——(基于Windows)
查看>>
【原】iOS中KVC和KVO的区别
查看>>
OMAPL138学习----DSPLINK DEMO解析之SCALE
查看>>
IoC的基本概念
查看>>
restframework CBV试图的4种方式
查看>>
大图居中,以1920px为例
查看>>
Python3 图片转字符画
查看>>
[C陷阱和缺陷] 第7章 可移植性缺陷
查看>>
人需要治愈
查看>>