转载泡泡机器人——IMU预积分总结与公式推导2
本文为IMU预积分总结与公式推导系列技术报告的第二篇。
承接第一篇的内容,本篇将推导IMU预积分的测量值,并分析其测量误差的分布形式。
传统捷联惯性导航的递推算法,以初始状态为基础,利用IMU测量得到的比力和角速度信息进行积分运算,实时更新载体的位姿及速度等状态,回顾上一篇给出的运动模型,如果已知k时刻的载体状态Rk、vk和pk,则利用IMU测量值可以直接递推得到k+1时刻的载体状态,根据这种思路,如果知道上一帧图像采样时刻载体的位姿和速度,则可以递推得到当前帧的位姿和速度。需要注意的是,传统的惯导解算中非常重要的一个问题是处理重力,由于加计的测量特性,其测量值为包含反向重力的比力,而不是纯加速度。这使得一旦姿态不准确,重力投影误差将对速度和位置积分产生严重影响。
在基于BA的视觉惯性融合算法中,各个节点的载体状态都是有待优化的量。IMU预积分的初衷,是希望借鉴纯视觉SLAM中图优化的思想,将帧与帧之间IMU相对测量信息转换为约束节点(载体位姿)的边参与到优化框架中。IMU预积分理论最大的贡献是对这些IMU相对测量进行处理,使得它与绝对位姿解耦(或者只需要线性运算就可以进行校正),从而大大提高优化速度。另外,这种优化架构还使得加计测量中不受待见的重力变成一个有利条件——重力的存在将使整个系统对绝对姿态(指相对水平地理坐标系的俯仰角和横滚角,不包括真航向)可观。要知道纯视觉VO或者SLAM是完全无法得到绝对姿态的。
此外,由于传感器测量误差的存在,无论是纯惯导还是纯VO解算,单纯依靠递推运算不可避免的将带来累积误差(低精度IMU会极快发散)。将两种传感器融合可以利用冗余测量(例如两种方式都可以求取相对位姿)来抑制累积误差。同时,IMU和视觉这两种不同源的测量,也使得IMU的bias可观,从而可以在优化中被有效估计。另外老生常谈的纯单目视觉缺乏绝对尺度的问题,也可以由惯性信息的引入而得以解决。
罗里吧嗦了一大堆,下面我们就来看看IMU预积分中是如何处理相对测量的。
本篇对IMU预积分的理想模型及其噪声展开部分的公式进行了分析和推导。噪声分布将用来计算IMU预积分的信息矩阵,在优化框架中起到平衡权重的作用。
转载泡泡机器人——IMU预积分总结与公式推导2的更多相关文章
- 转载泡泡机器人——IMU预积分总结与公式推导1
IMU预积分技术最早由T Lupton于12年提出[1],C Forster于15年[2][3][4]将其进一步拓展到李代数上,形成了一套优雅的理论体系.Forster将IMU预积分在开源因子图优化库 ...
- IMU 预积分推导
给 StereoDSO 加 IMU,想直接用 OKVIS 的代码,但是有点看不懂.知乎上郑帆写的文章<四元数矩阵与 so(3) 左右雅可比>提到 OKVIS 的预积分是使用四元数,而预积分 ...
- VINS(七)estimator_node 数据对齐 imu预积分 vision
首先通过vins_estimator mode监听几个Topic(频率2000Hz),将imu数据,feature数据,raw_image数据(用于回环检测)通过各自的回调函数封装起来 ros::Su ...
- VINS(三)IMU预积分
IMU的数据频率一般远高于视觉,在视觉两帧k,k+1之间通常会有>10组IMU数据.IMU的数据通过积分,可以获取当前位姿(p位置,q四元数表达的姿态).瞬时速度等参数. 在VIO中,如果参考世 ...
- IMU预积分
https://www.sohu.com/a/242760307_715754 http://www.sohu.com/a/243155537_715754 https://www.sohu.com/ ...
- [转载]在线文档预览方案-Office Web Apps
最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...
- 泡泡机器人SLAM 2019
LDSO:具有回环检测的直接稀疏里程计:LDSO:Direct Sparse Odometry with Loop Closure Abstract—In this paper we present ...
- 分享| 语义SLAM的未来与思考(泡泡机器人)
相比典型的点云地图,语义地图能够很好的表示出机器人到的地方是什么,机器人“看”到的东西是什么.比如进入到一个房间,点云地图中,机器人并不能识别显示出来的一块块的点云到底是什么,但是语义地图的构建可以分 ...
- 【转载】C/C++预处理器
转自:http://www.cnblogs.com/lidabo/archive/2012/08/27/2658909.html C/C++编译系统编译程序的过程为预处理.编译.链接.预处理器是在程序 ...
随机推荐
- 痞子衡嵌入式:串口调试工具Jays-PyCOM诞生记 - 索引
大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家介绍的是串口调试工具Jays-PyCOM诞生. 串口调试助手是嵌入式开发里非常常用的小工具,市面上有非常多流行的串口调试工具,比如TeraTe ...
- [JavaScript] requireJS基本使用
requireJS 是一个 AMD 规范的模块加载器主要解决的js开发的4个问题1. 异步加载,防止阻塞页面渲染2. 解决js文件之间的依赖关系和保证js的加载顺序3. 按需加载 来实现一个 requ ...
- [转]How to: Create a Report Server Database (Reporting Services Configuration)
本文转自:https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms157300%28v%3dsql.10 ...
- 面试常问的几个排序和查找算法,PHP实现
冒泡,快排,二分查找,都是面试常问的几个算法题目,虽然简单,但是一段时间不用的话就很容易忘记,这里我用PHP实现了一下,温故而知新. 排序 冒泡排序 每一次冒出一个最大的值 function bubb ...
- 用app.net Core搞掂多国语言网站
Asp.net Core 中文文档很少,你可以看英文的,不过英文的也是说的有点乱.这篇文章是干货. 1. 配置好你的WebApplication,使他可以支持国际化语言,修改文档Startup.cs ...
- FineReport数据库连接(oracle+plsql)(1)
一. 数据库建表 数据库是Oracle12c,工具是plsql.具体操作百度即可,此处不赘述.(图1) 图1 二. FineReport中建立数据库连接 在上方选项卡中单击服务器,选择定义数据连接 ...
- 从零学习Fluter(八):Flutter的四种运行模式--Debug、Release、Profile和test以及命名规范
从零学习Fluter(八):Flutter的四种运行模式--Debug.Release.Profile和test以及命名规范 好几天没有跟新我的这个系列文章,一是因为这两天我又在之前的基础上,重新认识 ...
- 数据结构java(一)数组链表
链表是数据结构中最基础的内容,链表在存储结构上分成两种:数组形式储存,链式存储. 相比c语言需要的结构体,在java中由于有了面向对象编程,将指针‘藏’了起来,不需要分配内存. 所以只需要创建一个对象 ...
- dotnet core如何编译exe
dotnet core 有一个转变,他用dll格式来代替exe作为通用执行格式,然后要命令行dotnet yourApp.dll 来运行程序.为了提高逼格,双击可以运行,可以采用以下方案: 方案一 用 ...
- IOS跟ANDROID的区别
大家总是会纠结哪个手机系统会更加适合自己,那就由小编我简要介绍一下IOS和安卓的区别吧! 运行机制:安卓是虚拟机运行机制,IOS是沙盒运行机制.这里再说明一下这两者的主要不同之处.安卓系统中应用程序的 ...