点击上方“计算机视觉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干货,我在看  

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

  1. IMU预积分及残差雅克比计算

    前段时间推了泡泡机器人邱笑晨博士的IMU预积分公式,收获很大,再看到VIORB的时候,大都用的这一套公式. 后再看VINS的时候,VINS用的是连续时间的预积分,看一些大佬的博客,说代码里写的是离散时 ...

  2. 3d激光SLAM:LIO-SAM框架—IMU预积分功能数据初始化

    前言 LIO-SAM的全称是:Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping 从全称上可以看出,该算法是一个紧耦合的 ...

  3. 十七.激光和惯导LIO-SLAM框架学习之IMU和IMU预积分

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  4. [学习SLAM]VINS中IMU预积分的误差推到公式与代码雅克比(协防差/信息矩阵)构建

    //todo /** *IMU预积分中采用中值积分地推jacobian和covariance **/ void midPointIntegration(double _dt, const Eigen: ...

  5. VINS-mono 论文解读:IMU预积分+Marg边缘化

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 VINS-mono 论文解读(IMU预积分+Marg边缘化) 前面 ...

  6. VINS-Mono 代码详细解读——IMU预积分的残差、Jacobian和协方差

    前言: 对第k帧和第k+1帧之间所有的IMU进行积分,可得到第K+1帧的PVQ(位置.速度.旋转),作为视觉估计的初始值. 每次qwbt优化更新后,都要重新进行积分,运算量较大.将积分模型转为预积分模 ...

  7. VINS学习(二)IMU预积分原理与实现

    VINS学习(二)IMU预积分原理与实现 一.连续时间下的IMU积分 二.连续时间下的IMU预积分 三.离散时间下的IMU预积分 1. 欧拉法 2. 中值法 四.连续时间下的IMU状态误差传递 五.离 ...

  8. IMU预积分--详细推导过程

    一.提前了解 二.预积分的目的 1.IMU通过加速度计和陀螺仪测出的是加速度和角速度,通过积分获得两帧之间的旋转和位移的变换: 2.在后端非线性优化的时候,需要优化位姿,每次调整位姿都需要在它们之间重 ...

  9. VINS-Mono理论学习——IMU预积分 Pre-integration (Jacobian 协方差)

    引言 VINS论文的IV-B. IMU Pre-integration介绍了IMU预积分模型,Foster的两篇论文对IMU预积分理论进行详细分析. 传统传统捷联惯性导航的递推算法,是在已知上一时刻的 ...

  10. 关于DSO直接法与IMU预积分联合VIO/SLAM一些思路

    本文不适合初学者:干货多没写具体方法,目前还在数论分解和思考中,估计得2个月后完成. 必要性: 1.常规VIO系统如VINS-MONO建立的地图质量太差,稀疏且不便认知 2.假设并入D相机,无论紧耦合 ...

最新文章

  1. Android之工程目录介绍
  2. 每日一皮:虽然我们交付了V2版本,但用户仍然使用V1版本...
  3. python什么时候用框架_python爬虫-什么时候选择selenium框架框架?
  4. Android Service(7)--完结篇
  5. 17-爬虫之scrapy框架五大核心组件工作流程及下载中间件介绍04
  6. 开发Teams Tabs应用程序
  7. WebOS + WebIM
  8. linux下搭建属于自己的博客(WordPress安装)
  9. reentrantlock失效了?_ReentrantLock 源码简单分析
  10. percona mysql 同步_Percona MySQL5.6 半同步复制
  11. [转载] python字符串数组字典_Python:字符串、列表、元组、字典
  12. 怎样用js结合h5画出多头像组合头像
  13. Swift中的Masonry第三方库——SnapKit
  14. 框架设计--第七章 MyBatis的核心配置--习题答案
  15. 2020年好用的BI应用排行榜
  16. Vue——v-show的使用——2020.11.18
  17. ViewFlipper-仿淘宝垂直广告滚动
  18. B站《三体》动画正式开播 刘慈欣:宇宙很大,生活更大
  19. web前端课程设计——动漫网页2个网页HTML+CSS web前端开发技术 web课程设计 网页规划与设计
  20. 雨天在火车站台上撑伞会触电吗?

热门文章

  1. Ubuntu14.04安装VMwareTools
  2. C++学习笔记之由文本文件读取数据到vector模板建立的二维数组 并存储为新的文本文件...
  3. 我的权限系统设计实现MVC4 + WebAPI + EasyUI + Knockout(二)菜单导航
  4. 使用C#的unsafe加快处理图像速度
  5. 如何使用JavaScript来写ASP程序
  6. 2.Prometheus 监控技术与实践 --- Prometheus基本概念及部署
  7. 24.卷1(套接字联网API)---带外数据
  8. 81. $GLOBALS['HTTP_RAW_POST_DATA'] 和$_POST的区别
  9. 雨棚板弹性法计算简图_旌阳移动推拉雨棚移动蓬定制
  10. Python - 进程/线程相关整理