IMU预积分的一些理解

2023-11-14

IMU预积分,算是比较简单的一个算法,无奈网上找到的资料都讲的晦涩难懂,看明白了也觉得不过如此。

讲一下我的理解:

整体流程

1. 推导IMU离散运动方程

2. 根据离散运动方程,进行预积分,并将预积分的误差项拆分出来,因为我们在定义误差的时候,有P,V,和R,所以不同的误差其实权重是不一样的,我们需要误差项的协方差矩阵来定义这个权重;

3. 因为(测量值=真实值+误差 当然对于R是乘的关系),所以我们可以写出来这个式子:

4. 误差项拆分出来之后,因为我们的加表和陀螺仪的偏置,之前假定是恒定的,但实际上是一个随机游走过程,因此,我们需要考虑偏置的更新;考虑到偏置的原因,我们可以将测量值重新定义如下:

 

          这个公式中,头顶一横杠的是用原有的偏置计算出来的值,头顶是波浪线的是更新的偏置算出来的值;

5. 到这里,我们已经把测量值的表达式搞清楚了,无非是真实值,加上误差值,加上偏置的随机游走导致的波动值,这三项,现在这三项都加进去了,我们可以定义从i到j的预积分的误差值了。实际中我们优化的是误差值,使误差值为0

         理想值:

           根据第四步得到的测量值描述公式,我们得到误差描述公式:

 

6. 到这里还没结束,我们要优化的值,那么我们有误差了,我们需要误差对这些值的导数,即求雅克比,比较繁琐,可以参考资料。求得了导数,误差,我们就可以用G2O进行计算了,真是美极了;

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面对其过程进行简要的描述:

IMU数据包含两部分,一部分是加表的数据,另一部分是陀螺仪的数据。我们通过这俩玩意儿可以观测到加速度和角速度,不过我们观察到的数据与实际值还有噪声和偏置,特别是低成本的IMU,这些导致的误差会更厉害

这俩公式就是模型部分了,偏差为b,噪声为η

我们还要知道,当增加一个小的时间时,R,V,P是如何变化的,即以下公式:

考虑到迭代,需要有初始i时刻,结束j时刻,以上公式改写:

 

这个时候,我们要清楚我们最终目的是干嘛,我们是想让他与i时刻的数据解耦,所以我要做一个从i到j 的变化量(对于R要考虑李代数的形式)

上面的这个公式是一个混沌体,既包括测量值,又包括偏置,又包括噪声,这么多玩意儿,如何处理?偏置不知道,我们就假定偏置是恒定的,我们先把噪声分离出来:

 

 

 

具体推导过程网上资料非常丰富,直接写上面的结果了。

到这里已经把误差项分离出来了,上式的左边是测量值,右边第一项是真实值,第二项是噪声值;我们可以把误差项单独拎出来,如下公式:

通过演化,推导,得到误差的一步递推公式:

从这几个公式可以看出来,从i时刻到J时刻,其实是一个时间段,那这个一步递推其实是针对这个时间段的叠加,因此在处理的时候,协方差也需要每个时刻都更新,从i时刻不断更新,直至j时刻。这个协方差可以在求解时,设置信息矩阵的时候用,度量误差中各个维度的权重;

剩下的就是针对测量值的推导描述了,测量值肯定不是只有噪声一项的,测量值除了噪声其实还有偏置导致的偏移,等等,在上面流程介绍中已经讲过了,具体如何推导,网上大把资料。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

那了解了这些理论知识了,我们需要知道在实际中如何使用呢?

实际中来了IMU的数据之后,我们要如何处理:

  1. 根据每一个时刻的IMU值,求delta_P,delta_V,delta_R这三个值就是纯运动方程就可以求了,递推性质,可以最终得到从I到j时刻的delta的总和;
  2. 递推求从i到J时刻delta的P,R,V对两个偏置的雅克比的值,这些值后面会用到
  3. 这一个时间段的delta的PVR都计算完了,雅克比也计算完了,那就对误差进行更新吧
  4. 使用G2O进行对误差的优化,那就使用G2O进行愉快的计算吧

定义误差,

举个例子,针对deltaP中,这个就是从i到j时间段的累计,如何算呢,直接用下面的式子就可以计算了

因为是测量值,实际上已经考虑到噪声了,偏置用上一次的值就好(反正是迭代的)。

定义雅克比:

根据大佬的论文On-Manifold Preintegration for Real-Time Visual-Inertial Odometry,看着公式直接往上整就对了(想自己推导也可以,比较繁琐,但不复杂),无非就是误差方程对P,对R,对V和对偏置求导,其中第2步的求带结果在这个地方是有用的,根源在于这个误差对偏置的求导,和第2步对偏置求导结果部分是相似的,无非就是一个负号的区别,所以可以拿来用。不过deltaR对bg的求导结果还是差异很大的,注意一下。

更新更新,误差最小即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IMU预积分的一些理解 的相关文章

  • 三维刚体变换

    欢迎访问我的博客首页 三维刚体变换 1 坐标系 1 1 空间坐标系 1 2 右手坐标系与像素坐标系 2 旋转与平移 2 1 推导旋转 2 2 推导平移 2 3 推导变换 2 4 刚体变换 2 5 坐标系旋转与向量旋转 3 链式变换 4 Ei
  • Ubuntu18.04 安装速腾聚创最新驱动RSLidar_SDK采集XYZIRT格式的激光点云数据 --SLAM不学无术小问题

    Ubuntu18 04 安装速腾聚创最新驱动RSLidar SDK采集XYZIRT格式的激光点云数据 新款驱动支持RS16 RS32 RSBP RS128 RS80 RSM1 B3 RSHELIOS等型号 注意 该教程旨在引导安装 可能现在
  • ORB_SLAM3复现——上篇

    ORB SLAM3 前言 1 ORB SLAM3 2 准备环境 2 1 C 11 Compiler 2 2 Pangolin 2 3 Opencv 2 4 Eigen 3 复现ORB SLAM3 3 1 下载代码 3 2 执行build s
  • 【SLAM】卡尔曼滤波(Kalman Filter)

    卡尔曼滤波 Kalman filter 一种利用线性系统状态方程 通过系统输入输出观测数据 对系统状态进行最优估计的算法 由于观测数据中包括系统中的噪声和干扰的影响 所以最优估计也可看作是滤波过程 卡尔曼滤波器的原理解释如下 首先 我们先要
  • 【点云处理技术之PCL】滤波器——直通滤波器(pcl::PassThrough)

    直通滤波器 是直接根据滤波器设定的条件 选择自己所需点云 可以选择保留设定范围内的点云 也可以选择滤除设定范围内的点云 保留或者滤出是由setFilterLimitsNegative进行模式开关的 代码中 设定z轴的条件 保留z方向范围 0
  • 滤波器拓扑结构:Sallen-key和Multiple Feedback

    在一些关于滤波器设计的地方 总可以看到Sallen key和Multiple Feedback这两个词组 但不清楚什么意思 查了查资料 顺带在此处记录一下 Sallen key 麻省理工学院林肯实验室的R P Sallen and E L
  • 视觉SLAM实践入门——(20)视觉里程计之直接法

    多层直接法的过程 1 读图 随机取点并计算深度 2 创建图像金字塔 相机内参也需要缩放 并计算对应点的像素坐标 3 应用单层直接法 使用G N L M等方法 或者使用g2o ceres库 进行优化 源码中有一些地方会引起段错误 修改方法见下
  • 视觉SLAM漫谈(二):图优化理论与g2o的使用

    视觉SLAM漫谈 二 图优化理论与g2o的使用 1 前言以及回顾 各位朋友 自从上一篇 视觉SLAM漫谈 写成以来已经有一段时间了 我收到几位热心读者的邮件 有的希望我介绍一下当前视觉SLAM程序的实用程度 更多的人希望了解一下前文提到的g
  • LeGO-LOAM论文翻译(内容精简)

    LeGO LOAM是一种在LOAM之上进行改进的激光雷达建图方法 建图效果比LOAM要好 但是建图较为稀疏 计算量也更小了 本文原地址 wykxwyc的博客 github注释后LeGO LOAM源码 LeGO LOAM NOTED 关于代码
  • 【SLAM】libQGLViewer:VS 2019 + Qt 5.14.2 + Win 10 配置

    libQGLViewer 2 7 2 VS 2019 Qt 5 14 2 Win 10 配置 注意 这次配置没有完全成功 编译25个成功 一个失败 失败的是 qglviewerplugin qglviewerplugin 是一个可选控件 不
  • 互转(经纬度、地心坐标、东北天坐标)

    Part1三种坐标系介绍 经纬度坐标 假设空间某点P 用经纬度表示的话 你们B代表纬度 L代表经度 H代表大地高 纬度B P点沿着地球法线方向与赤道面的夹角 向北为正称为北纬 0 90 向南为负称为南纬 0 90 实际表示可以用 90 90
  • 视觉SLAM技术及其应用(章国锋--复杂环境下的鲁棒SfM与SLAM)

    SLAM 同时定位与地图构建 机器人和计算机视觉领域的基本问题 在未知环境中定位自身方位并同时构建环境三维地图 应用广泛 增强现实 虚拟现实 机器人 无人驾驶 SLAM常用的传感器 红外传感器 较近距离感应 常用与扫地机器人 激光雷达 单线
  • SLAM-hector_slam 简介与使用

    hector slam功能包使用高斯牛顿方法 不需要里程计数据 只根据激光信息便可构建地图 所以他的总体框架如下 hector slam功能包 hector slam的核心节点是hector mapping 它订阅 scan 话题以获取SL
  • Ubuntu20.04安装各种库----简洁版

    目录 Eigen3 Sophus Pangolin Ceres g2o 建议先装anaconda再装ros python opencv啥该有的都有了 下面仅仅安装ros没有的库 Eigen3 作用 线性代数开源库 提供了有关线性代数 矩阵和
  • GMAPPING的参数设置

    二 运行gmapping 我总结了运行gmapping的两种方法 1 基于命令行 rosrun gmapping slam gmapping scan scan delta 0 1 maxUrange 4 99 xmin 5 0 ymin
  • Object SLAM: An Object SLAM Framework for Association, Mapping, and High-Level Tasks 论文解读

    是一篇来自机器人顶刊T RO的文章 发表于2023 5 An Object SLAM Framework for Association Mapping and High Level Tasks 论文 An Object SLAM Fram
  • LIO-SAM运行自己数据包遇到的问题解决--SLAM不学无数术小问题

    LIO SAM 成功适配自己数据集 注意本文测试环境 Ubuntu18 04 ROS melodic版本 笔者用到的硬件以简单参数 激光雷达 速腾聚创16线激光雷达 RS Lidar 16 IMU 超核电子CH110型 9轴惯导 使用频率1
  • ORB_SLAM2运行官方数据集/自己数据集

    官方数据集运行结果 WeChat 20230210194425 可以正常运行 自己数据集运行结果 自己的数据集 主要是用手机摄像头采集的实验室进行了一下简单的运行 可以成功运行 但是由于查看的相关程序的是死循环不能像运行官方数据集那样完整保
  • Ubuntu18.04安装Autoware1.15(解决Openplanner无法绕障的问题:Openplanner2.5)

    文章目录 一 下载Autoware1 15源码 二 安装依赖 三 修改CUDA版本 四 编译以及报错解决 编译 1 报 undefined reference to cv Mat Mat 的错就按照下面方式改相应包 2 遇到OpenCV的C
  • Todesk突然高速通道使用已结束

    今天使用Todesk直接报出如下错误 好像对于海外用户需要付费购买海外会员 大家有没有什么可以替换的远程控制软件的吗 能分享一下吗

随机推荐

  • SIGIR'22

    1 背景 近年来 因果推断在推荐 广告 用户增长等领域得到越来越多的关注和应用 如在用户 客户增长领域的消息发送和权益分发方面 为了兼顾用户体验和平台效率 不仅需要预估用户在接受不同权益下的转化概率 还需要预估用户自然情况下未接收干预的转化
  • cocos2d-x屏幕适配原理分析

    转自 https www 2cto com kf 201212 175527 html https blog csdn net u012861978 article details 53233892 分析 designResolutionS
  • QT5.11下载与安装教程

    一 QT软件下载 Qt 5 9 之后的安装包与之前相比 不再区分 VS 版本和 MinGW 版本 而是全都整合到了一个安装包中 因此 与之前的安装包相比 体积也是大了不少 以前是 1G 多 现在是 2G 多 QT5 9 0安装包 QT5 8
  • 电商打折套路解析

    1 分析出 各个品牌都有多少商品参加了双十一活动 这里面有个问题 最后在设置分类是设置错了 应该有4个类 少量少打折 少量大打折 大量小打折 大量大打折 分析思路可以参考下面的思维导图 import numpy as np import p
  • 使用Matplotlib画心形函数图

    函数如下 代码如下 import numpy as np import matplotlib pyplot as plt 导入模块 t np arange 6 6 0 1 x 16 np power np sin t 3 y 13 np c
  • labview与三菱PLC通讯研究

    labview 与三菱 PLC 通讯研究 一 介绍Labview Labvie是实验室虚拟仪器工程工作台 Labview Virtual Instruments Engineering Workbench 的简称 是美国国家仪器公司开发的虚
  • Spring 日志框架

    Spring5 日志使用 Spring jcl 模块 测试一下spring5 的默认日志实现 public class LogDemo public static void main String args Log logger LogFa
  • 第十五届全国大学生信息安全竞赛(ciscn初赛) 部分writeup

    杂项的附件地址 https share weiyun com BZyngGSZ CISCN web Ezpop misc everlasting night ez usb 问卷调查 pwn login nomal crypto 签到电台 基
  • ICDE2020

    Improving Neural Relation Extraction with Implicit Mutual Relations Jun Kuang Yixin Cao Jianbing Zheng Xiangnan He Ming
  • Centos虚拟机使用virt-manager创建虚拟机

    目录 使用virt manager 主机与centos7虚拟机的共享文件夹设置 将共享文件夹中的iso文件复制到上个home iso目录下 使用virt manager创建虚拟机 上篇文章链接 VM下安装Ubuntu CentOS并安装配置
  • C#两种进程暂停和继续的方法 2021-02-16

    C 两种进程暂停和继续的方法 方法一 方法二 方法一 可以使用Thread Suspend和Thread Resume这两个方法 namespace ThreadSuspended public partial class Form1 Fo
  • CLIP跨语言多模态模型 pytorch下安装

    github地址 GitHub openai CLIP Contrastive Language Image Pretraining 创建python环境 conda create n CLIP python 3 8 安装pytorch和t
  • lxml.html方法,用lxml编辑html代码

    假设我有html代码 它被破坏了 它是从另一个程序给出的 我必须找到其中的所有图像 并将src属性更改为一些代码 仅此而已 它应该在决赛中被打破 在 这是我的代码 coding utf 8 from lxml import etree fr
  • Android 查看是否已经安装某应用(获取某应用的包名)

    借助的工具 adb以及真手机 adb下载 https dl google com android repository platform tools r33 0 1 windows zip 下载解压 解压到ADB文件 复制该路径 配置环境变
  • 数据库SQL运用(1)

    数据库关键字 Top Like In Between As Join InnerJoin LeftJoin RightJoin FullJoin Union Top Top 子句用来截取要返回的数目 如果查询出的数据有成千上百条 那么Top
  • 机器学习——回归问题中的曲线过拟合问题

    问 使用简单的函数解决回归问题时更容易过拟合 答 使用简单的函数解决回归问题可能更容易欠拟合 而不是过拟合 这是因为简单的函数通常具有较低的灵活性 不能很好地拟合复杂的数据模式 因此 如果使用简单的函数来解决复杂的回归问题 则可能会发生欠拟
  • 计算机二级python基础题刷题笔记(三)

    hello 看到三的小伙伴们你们已经超过30 的对手啦 接下来也要加油呀 代码没有最好 只有更好 如果你有更好的想法答案欢迎在评论区里发表呀 1 将程序里定义好的std列表里的姓名和成绩与已经定义好的模板拼成一段话 显示在屏幕里 std 张
  • 使用QrCode解析二维码

    使用QrCode识别二维码 1 引入QrCode import QrCode from qrcode decoder 2 HTML 使用el upload上传图片
  • 中秋-canvas-唯美星空

    明月几时有 把酒问青天 不知天上宫阙 今夕是何年 我欲乘风归去 又恐琼楼玉宇 高处不胜寒 起舞弄清影 何似在人间 转朱阁 低绮户 照无眠 不应有恨 何事长向别时圆 人有悲欢离合 月有阴晴圆缺 此事古难全 但愿人长久 千里共婵娟 值此中秋佳节
  • IMU预积分的一些理解

    IMU预积分 算是比较简单的一个算法 无奈网上找到的资料都讲的晦涩难懂 看明白了也觉得不过如此 讲一下我的理解 整体流程 1 推导IMU离散运动方程 2 根据离散运动方程 进行预积分 并将预积分的误差项拆分出来 因为我们在定义误差的时候 有