点击上方“计算机视觉life”,选择“星标”

快速获得最新干货

VIO 中,如果在世界坐标系中对 IMU 进行积分,积分项中包含体坐标系相对于世界坐标系的瞬时旋转矩阵。然而,在优化位姿时,关键帧时刻体坐标系相对于世界坐标系的旋转矩阵会发生变化,那么需要对 IMU 重新进行积分。预积分就是为了避免这种重复积分。IMU 预积分将参考坐标系改为前一帧的体坐标系,从而积出了两帧之间的相对运动。

预积分

将第 k 帧和第 k+1 帧之间的所有 IMU 进行积分,可得第 k+1 帧的位置、速度和旋转(PVQ),作为视觉估计的初始值,示意图如下:

(点击图片放大看公式)

连续形式

离散形式

//采用的是中值积分的传播方式Vector3d un_gyr = 0.5 * (gyr_0 + angular_velocity) - Bgs[j];Rs[j] *= Utility::deltaQ(un_gyr * dt).toRotationMatrix();Vector3d un_acc_1 = Rs[j] * (linear_acceleration - Bas[j]) - g;Vector3d un_acc = 0.5 * (un_acc_0 + un_acc_1);Ps[j] += dt * Vs[j] + 0.5 * dt * dt * un_acc;Vs[j] += dt * un_acc;

(左右滑动试试)

F:

MatrixXd F = MatrixXd::Zero(15, 15);F.block<3, 3>(0, 0) = Matrix3d::Identity();F.block<3, 3>(0, 3) = -0.25 * delta_q.toRotationMatrix() * R_a_0_x * _dt * _dt +                       -0.25 * result_delta_q.toRotationMatrix() * R_a_1_x *                       (Matrix3d::Identity() - R_w_x * _dt) * _dt * _dt;F.block<3, 3>(0, 6) = MatrixXd::Identity(3,3) * _dt;F.block<3, 3>(0, 9) = -0.25 * (delta_q.toRotationMatrix() +                        result_delta_q.toRotationMatrix()) * _dt * _dt;F.block<3, 3>(0, 12) = -0.25 * result_delta_q.toRotationMatrix() * R_a_1_x * _dt * _dt * -                       _dt;F.block<3, 3>(3, 3) = Matrix3d::Identity() - R_w_x * _dt;F.block<3, 3>(3, 12) = -1.0 * MatrixXd::Identity(3,3) * _dt;F.block<3, 3>(6, 3) = -0.5 * delta_q.toRotationMatrix() * R_a_0_x * _dt +                       -0.5 * result_delta_q.toRotationMatrix() * R_a_1_x *                           (Matrix3d::Identity() - R_w_x * _dt) * _dt;F.block<3, 3>(6, 6) = Matrix3d::Identity();F.block<3, 3>(6, 9) = -0.5 * (delta_q.toRotationMatrix() +                       result_delta_q.toRotationMatrix()) * _dt;F.block<3, 3>(6, 12) = -0.5 * result_delta_q.toRotationMatrix() * R_a_1_x * _dt * -_dt;F.block<3, 3>(9, 9) = Matrix3d::Identity();F.block<3, 3>(12, 12) = Matrix3d::Identity();

(左右滑动试试)

V:

MatrixXd V = MatrixXd::Zero(15,18);V.block<3, 3>(0, 0) =  0.25 * delta_q.toRotationMatrix() * _dt * _dt;V.block<3, 3>(0, 3) =  0.25 * -result_delta_q.toRotationMatrix() * R_a_1_x  * _dt * _dt *                        0.5 * _dt;V.block<3, 3>(0, 6) =  0.25 * result_delta_q.toRotationMatrix() * _dt * _dt;V.block<3, 3>(0, 9) =  V.block<3, 3>(0, 3);V.block<3, 3>(3, 3) =  0.5 * MatrixXd::Identity(3,3) * _dt;V.block<3, 3>(3, 9) =  0.5 * MatrixXd::Identity(3,3) * _dt;V.block<3, 3>(6, 0) =  0.5 * delta_q.toRotationMatrix() * _dt;V.block<3, 3>(6, 3) =  0.5 * -result_delta_q.toRotationMatrix() * R_a_1_x  * _dt * 0.5 *                        _dt;V.block<3, 3>(6, 6) =  0.5 * result_delta_q.toRotationMatrix() * _dt;V.block<3, 3>(6, 9) =  V.block<3, 3>(6, 3);V.block<3, 3>(9, 12) = MatrixXd::Identity(3,3) * _dt;V.block<3, 3>(12, 15) = MatrixXd::Identity(3,3) * _dt;

(左右滑动试试)

离散形式的 PVQ 增量误差的 Jacobian 和协方差

对应代码在integration_base.h文件的midPointIntegration():

jacobian = F * jacobian;covariance = F * covariance * F.transpose() + V * noise * V.transpose();

从零开始学习三维视觉核心技术SLAM,扫描查看介绍,3天内无条件退款

早就是优势,学习切忌单打独斗,这里有教程资料、练习作业、答疑解惑等,优质学习圈帮你少走弯路,快速入门!

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、算法竞赛、图像检测分割、人脸人体、医学影像、自动驾驶、综合等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

推荐阅读

从零开始一起学习SLAM | 为什么要学SLAM?

从零开始一起学习SLAM | 学习SLAM到底需要学什么?

从零开始一起学习SLAM | SLAM有什么用?

从零开始一起学习SLAM | C++新特性要不要学?

从零开始一起学习SLAM | 为什么要用齐次坐标?

从零开始一起学习SLAM | 三维空间刚体的旋转

从零开始一起学习SLAM | 为啥需要李群与李代数?

从零开始一起学习SLAM | 相机成像模型

从零开始一起学习SLAM | 不推公式,如何真正理解对极约束?

从零开始一起学习SLAM | 神奇的单应矩阵

从零开始一起学习SLAM | 你好,点云

从零开始一起学习SLAM | 给点云加个滤网

从零开始一起学习SLAM | 点云平滑法线估计

从零开始一起学习SLAM | 点云到网格的进化

从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码

从零开始一起学习SLAM | 掌握g2o顶点编程套路

从零开始一起学习SLAM | 掌握g2o边的代码套路

从零开始一起学习SLAM | ICP原理及应用

从零开始一起学习SLAM | 用四元数插值来对齐IMU和图像帧

可视化理解四元数,愿你不再掉头发

视觉SLAM技术综述

研究SLAM,对编程的要求有多高?

深度学习遇到SLAM | 如何评价基于深度学习的DeepVO,VINet,VidLoc?

现在开源的RGB-D SLAM有哪些?

详解 | SLAM回环检测问题

汇总 | SLAM、重建、语义相关数据集大全

吐血整理 | SLAM方向国内有哪些优秀的公司?

最强战队 | 三维视觉、SLAM方向全球顶尖实验室汇总

SLAM方向公众号、知乎、博客上有哪些大V可以关注?

汇总 | 最全 SLAM 开源数据集

综述 | SLAM回环检测方法

干货总结 | SLAM 面试常见问题及参考解答2019 最新SLAM、定位、建图求职分享,看完感觉自己就是小菜鸡!2019暑期计算机视觉实习应聘总结

2018年SLAM、三维视觉方向求职经验分享

经验分享 | SLAM、3D vision笔试面试问题

最新AI干货,我在看  

imu预积分_VINS 中的 IMU 预积分推导和代码解读相关推荐

  1. 计算机无法使用打印机预览,电脑中excel打印预览无法查看的处理方法

    我们在处理数据时,经常都会使用到excel应用.不过,最近一位用户反馈自己电脑中excel的打印预览突然无法查看了.这是怎么回事呢?我们要如何操作?接下来,就随系统城小编一起看看该问题的解决方法吧! ...

  2. 【Android RTMP】Android Camera 视频数据采集预览 ( 视频采集相关概念 | 摄像头预览参数设置 | 摄像头预览数据回调接口 )

    文章目录 安卓直播推流专栏博客总结 一. Android 端数据采集涉及到的相关概念 二. Camera 预览图像尺寸设置 三. 获取摄像头采集的数据格式 安卓直播推流专栏博客总结 Android R ...

  3. VINS-Mono关键知识点总结——预积分和后端优化IMU部分

    VINS-Mono关键知识点总结--预积分和后端优化IMU部分 VINS-Mono关键知识点总结--预积分和后端优化IMU部分 1. 预积分的理论推导 2. 预积分的代码分析 3. 后端优化IMU部分 ...

  4. Xamarin XAML语言教程Visual Studio中实现XAML预览

    2019独角兽企业重金招聘Python工程师标准>>> Xamarin XAML语言教程Visual Studio中实现XAML预览 每次通过编译运行的方式查看XAML文件效果,需要 ...

  5. Visual Basic中实现带预览的对话框

    Visual Basic中实现带预览的对话框 2007-05-04 07:00作者:出处:论坛整理责任编辑:卢林嘉 用户在图片框中选择图片时,希望预先对图片的轮廓及大小有初步了解,但是VB的通用对话框 ...

  6. mysql 预编译_PHP中MySQL的预处理(预编译)执行方式

    MySQL的预编译是指在创建数据库对象时就将指定的SQL语句编译完成,这时SQL语句已经被MySQL解析.审查,所以相对传统的执行方式(每处理一个SQL语句就要解析SQL语句.检查语法和语义),预编译 ...

  7. Android Studio xml文件中的布局预览视图

    操作系统:Windows 10 x64 IDE:Android Studio 3.3.1 更新了Android Studio之后,xml文件中的布局预览视图变得如此简洁! 原因是没有勾选Show La ...

  8. 在Windows 7或Vista资源管理器中禁用缩略图预览

    If you want to speed up browsing around in explorer, you might think about disabling thumbnail previ ...

  9. 关闭edge任务栏预览_如何在Microsoft Edge中关闭选项卡预览

    关闭edge任务栏预览 Now that it has extension support, Microsoft Edge is becoming a more and more viable bro ...

  10. sap中泰国有预扣税设置吗_泰国餐厅密度细分:带有K-means聚类的python

    sap中泰国有预扣税设置吗 Hi! I am Tung, and this is my first stories for my weekend project. What inspired this ...

最新文章

  1. ORB-SLAM2系统的实时点云地图构建
  2. 2017国二java题库,2017全国计算机二级考试JAVA考试题库
  3. github mysql 数据恢复_记一次MySQL删库的数据恢复
  4. progress组件(进度条)
  5. no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]]
  6. traceroute命令原理
  7. pip安装gluonts
  8. python自动化运维快速入门 pdf 郑征_Python自动化运维快速入门
  9. wpf 客户端 添加qq客服咨询
  10. preparedstatement mysql 数据_使用PreparedStatement对象操作数据库
  11. MyBatis逆向工程
  12. WIN7更改用户名访问共享文件夹
  13. java常用英语单词大全(一)
  14. matlab实现拍照功能,matlab下拍照功能的实现
  15. 新产品开发中TR1,TR2,TR3..具体指什么?
  16. 港科夜闻|沈向洋教授获委任为香港科大校董会主席
  17. Linux下驱动开发
  18. 【短视频 】 分享几个免费剪辑视频的软件
  19. Oracle总结(三):Oracle统计分析
  20. 是的,各位久等的 Windows 神器已上架

热门文章

  1. Hadoop学习笔记三
  2. Tomcat默认端口,关闭不必要的安全隐患
  3. hough变换是如何检测出直线和圆的?
  4. calamari构架图
  5. LeetCode_88、合并两个数组(python)
  6. git cherry-pick 的使用
  7. 【SpringBoot_ANNOTATIONS】AOP 01 AOP功能测试
  8. elk怎么读的_大数据采集和抽取怎么做?这篇文章终于说明白了!
  9. matlab 6.5 vc6,MATLAB6.5 与 VC6.0混合编程中的 VC6.0的设置
  10. C# DateTime的ToString()方法的使用