IMU 预积分(仅供参考)
IMU Pre-Integration
本文章记录在学习 VIO 的过程中对 IMU 预积分的一些理解和公式的证明,也看了很多的文章和论文,知识点和证明过于复杂,特此记录,方便复习回顾,参考文献和网址也已经在文章最后给出,大家也可以自行查阅。
0. 部分先验知识
1.0 预积分定义
1.1 引出预积分
与传统IMU的运动学积分不同,预积分可以将一段时间内的IMU测量数据累计起来,建立预积分测量,因而十分适合以关键帧为基础单元的激光或视觉SLAM系统。
IMU 的真实值为
上标
预积分的过程可以用如下图来示意:
从第
问题:每次
优化更新后,都需要重新进行积分,运算量较大。
一个很简单的公式转换,就可以将积分模型转为预积分模型:
那么,
1.2 预积分量
预积分量仅仅跟 IMU 测量值有关,它将一段时间内的 IMU 数据直接积分起来就得到了预积分量:
其中
将上面三个量分别带入公式
2.0 IMU 的预积分误差
2.1 定义
定义:一段时间内 IMU 构建的预积分量作为测量值,对两时刻之间的状态量进行约束
其实就是将公式
公式
上面误差中位移, 速度, 偏置都是直接相减得到。第二项是关于四元 数的旋转误差, 其中
2.2 预积分的离散形式
这里使用 mid-point 方法,即两个相邻时刻
2.3 预积分量的方差
question: 一个 IMU 数据作为测量值的噪声方差我们能够标定。现在,一段时间内多个 IMU 数据积分形成的预积分量的方差呢?
Covariance Propagation
已知一个变量 , 则有
所以,要推导预积分量的协方差,我们需要知道 imu
噪声和预积分量之间的线性递推关系。
假设已知了相邻时刻误差的线性传递方程:
比如: 状态量误差为
误差的传递由两部分组成:当前时刻的误差传递给下一时刻,当前时刻测量噪声传递给下一时刻。
协方差矩阵可以通过递推计算得到:
其中,
2.4 状态误差线性递推公式的推导
2.4.1 简介
通常对于状态量之间的递推关系是非线性的方程如
我们可以用两种方法来推导状态误差传递的线性递推关系:
- 一种是基于一阶泰勒展开的误差递推方程。
- 一种是基于误差随时间变化的递推方程。
2.4.2 基于一阶泰勒展开的误差递推方程
令状态量为
基于泰勒展开的误差传递(应用于 EKF
的协方差预测)
非线性系统
其中,
证明:对非线性状态方程进行一阶泰勒展开有:
2.4.3 基于误差随时间变化的递推方程
如果我们能够推导状态误差随时间变化的导数关系,比如:
则误差状态的传递方程为:
对上面式子作个简单展开即可得到:
这两种推导方式的可以看出有:
2.4.4 对比分析
第一种方法不是很好么,为什么会想着去弄误差随时间的变化呢 ? 这是因为 VIO
系统中已经知道了状态的导数和状态之间的转移矩阵。
如: 我们已经知道速度和状态量之间的关系:
那我们就可以推导速度的误差和状态误差之间的关系,再每一项上都加上各自的误差就有:
由此就能以此类推,写出整个
2.5 预积分的误差递推公式推导
首先回顾预积分的误差递推公式,将测量噪声也考虑进模型:
确定误差传递的状态量,噪声量,然后开始构建传递方程。
-
预积分误差传递的形式:
用前面一阶泰勒展开的推导方式,我们希望能推导出如下的形式:
为两个时刻间的协方差传递矩阵
其中的系数为:
- 证明:
公式简化约定,考虑到公式的编辑篇幅,为了对一些求导公式进行简化,这里做一些简单的约定, 比如求导公式:
后续直接简写为 :
雅克比矩阵 F 的推导:
首先将速度预积分量
那么,速度的预积分量对角度预积分量的
其中分子和一写成:
将上面两部分综合起来就能得到
递推公式如下:
只有括号中的公式部分和角速度 bias 有关系, 因此雅克比的推导只考括号中的公式部分。
旋转预积分量的
另外, 三元组四元数相乘有如下性质:
其中
下面开始详细推导:
只考虑公式中的虚部:
那么, 第
渔已授完,
- 四元数求导的直观理解(不够严谨) https://zhuanlan.zhihu.com/p/395511536
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具