VIO和预积分(蒙圈的请过来,带你不蒙圈)

news/2025/2/27 21:34:18/

大佬的世界,你不会懂,就像一行行公式,人家觉得很简单,你却要读很多遍,不过还好,我们从普通人的世界来解读VIO和预积分。

预积分

拿大佬的话来热场,本章要介绍一种在紧耦合系统中十分常见的IMU数据处理方法:预积分(Pre-integraion)[1]。与传统IMU的运动学积分不同,预积分可以将一段时间内的IMU测量数据累计起来,建立预积分测量,因而十分适合以关键帧为基础单元的激光或视觉SLAM系统。如今预积分已经成为诸多与IMU紧耦合的标准方法[2,3,4],下面我们来介绍其基本原理。

啥是预积分,刚开始觉得它是一套系统的统称,看完一遍觉得它是不是预先积分的含义(看完一堆推导和公式,又在质疑不会这么简单吧)。

这里通过高博的代码,得到了一些启发,写在这里和大家分享。
因为IMU中的零偏会不断变化,所以零偏更新后,需要再次重新积分,是不是计算量很大,所以预积分的作者为了解决这个问题,发明了预积分(它的目的就是想:能不能不反复计算),于是他定义了3个变量,如下:
Δ R i j = R i T R j = ∏ k = i j − 1 E x p ( ( ω k ~ − b g , k − η g d , k ) Δ t ) \Delta R_{ij} = {R_{i}^{T}}R_{j}=\prod_{k=i}^{j-1}{Exp(({\tilde{\omega_{k}}-b_{g,k}-\eta_{gd,k}})\Delta{t})} ΔRij=RiTRj=k=ij1Exp((ωk~bg,kηgd,k)Δt)
Δ v i , j = R i T ( v j − v i − g Δ t i , j ) = ∑ k = i j − 1 Δ R i k ( a k ~ − b a , k − η a d , k ) Δ t \Delta v_{i,j}=R_{i}^{T}(v_j-v_i-g{\Delta{t_{i,j}}})=\sum \limits_{k=i}^{j-1}{\Delta{R_{ik}({\tilde{a_k}-b_{a,k}-\eta_{ad,k}}){\Delta{t}}}} Δvi,j=RiT(vjvigΔti,j)=k=ij1ΔRik(ak~ba,kηad,k)Δt
Δ p i , j = R i T ( p j − p i − v i Δ t i , j − 1 2 g Δ t i j 2 ) = ∑ k = i j − 1 [ Δ v i , k Δ t + 1 2 Δ R i , k ( a k ~ − b a , k − η a d , k ) Δ t 2 ] \Delta{p_{i,j}}=R_{i}^{T}(p_{j}-p_{i}-v_{i}{\Delta{t_{i,j}-\frac{1}{2}g{\Delta{t_{ij}^{2}}}}}) =\sum \limits_{k=i}^{j-1}{[\Delta{v_{i,k}\Delta{t}+\frac{1}{2}\Delta{R_{i,k}({\tilde{a_k}-b_{a,k}-\eta_{ad,k}}){\Delta{t^2}}}}]} Δpi,j=RiT(pjpiviΔti,j21gΔtij2)=k=ij1[Δvi,kΔt+21ΔRi,k(ak~ba,kηad,k)Δt2]

是的,上面作者定义的3个变量就是你们心念念的==“预积分”==,请注意,预积分量并没有直接的物理含义,他的出现是为了解决因零偏的改变而要重新积分的问题,那它是怎么解决的?后面当零偏改变时,会有快捷方式更新这个3个变量。那你会问这3个变量更新后有啥用呢?它的作用是在紧耦合的非线性优化中用来构建残差方程的。程序不断的优化更新这个3个变量,来代替原先因为零偏改变而需要重新积分的过程。

作者定义了3个新的变量,完美的解决了这个问题,要只要作者怎么想到的,可能我也要想想?反正目前我们知道了预积分的定义,更新,优化这一整体思路。


http://www.ppmy.cn/news/1126338.html

相关文章

多维时序 | MATLAB实现GWO-BP多变量时间序列预测(灰狼算法优化BP神经网络)

多维时序 | MATLAB实现GWO-BP多变量时间序列预测(灰狼算法优化BP神经网络) 目录 多维时序 | MATLAB实现GWO-BP多变量时间序列预测(灰狼算法优化BP神经网络)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.MATLAB实现GWO-BP多变量时间序列预测(灰狼算法优化BP神经网络)&…

医学图像分割:Performance Analysis of UNet and Variants for Medical Image Segmentation

论文作者:Walid Ehab,Yongmin Li 作者单位:Brunel University London 论文链接:http://arxiv.org/abs/2309.13013v1 内容简介: 1)方向:医学图像分割 2)应用:医学图像分割 3&am…

hive数据初始化

mysql版本&#xff1a;3.1.3 hive版本&#xff1a; 8.0.31 hive连接配置 <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://node88:3306/hive?createDatabaseIfNotExisttrue</value> </pr…

多线程(pthread库)

POSIX线程库 引言 前面我们提到了Linux中并无真正意义上的线程 从OS角度来看&#xff0c;这意味着它并不会提供直接创建线程的系统调用&#xff0c;它最多给我们提供创建轻量级进程LWP的接口 但是从用户的角度来看&#xff0c;用户只认识线程啊&#xff01; 因此&#xff0c;…

SpringBoot+MinIO8.0开箱即用的启动器

一、代码拉取及安装 1.码云地址 https://gitee.com/qiangesoft/rdp-starter/tree/master/rdp-starter-minio 2.本地安装 代码接入 1.引入依赖 <dependency><groupId>com.qiangesoft.rdp</groupId><artifactId>rdp-starter-minio</artifactId&g…

C++11的一些新特性|右值引用|STL中的一些变化

文章目录 1、{}初始化 2、声明 2.1auto 2.2、decltype 2.3、nullptr 2.4.范围for循环 3、STL中的一些新变化 3.1.新容器 3.2容器中的一些新方法 4.右值引用和移动语义 左值引用和右值引用 左值引用的短板&#xff1a; 右值引用使用场景和意义&#xff1a; move的作…

layui子界面操作数据后主界面刷新怎么操作

项目场景&#xff1a; layui子界面进行了增删改查需要在关闭后让主界面刷新 解决方案&#xff1a; layui的admin.open方法支持传入回调函数,主要有以下几种回调: yes回调 用于确定/提交按钮点击后的回调参数: index,layero admin.open({ yes: function(index, layero){ /…

AIGC 绘画Stable Diffusion工具的安装与使用

我们先让ChatGPT来帮我们回答一下,什么是Stable Diffusion Stable Diffusion 是一种基于概率模型的图像生成技术。它通过对图像空间中每个像素的颜色值进行推断,从而生成具有高度真实感和细节的图像。 Stable Diffusion 使用一种称为扩散过程的方法来生成图像。在生成过程中…