首先根据最大后验估计(Maximum a posteriori estimation,MAP)构建非线性优化的目标函数。

初始化过程通过线性求解直接会给出一个状态的初值,而非线性优化的过程关键在于求解增量方程,并不断迭代到最优点,需要在初值以及后续的迭代点附近线性化(泰勒展开保留一阶后平方构建高斯牛顿梯度下降的增量方程):

在初值x附近泰勒展开

$f(x+\Delta x) = f(x) + J\Delta x$

$costFunction = [f(x+\Delta x)]^{2}$

最小化costFunction的过程其实就是迭代求解增量方程

$H\Delta x = b$

其中$H = J^{T}J$,$b = -J^{T}f$

因此,首先需要定义状态的增量,主要因为旋转矩阵没有加法,无法迭代求解,因此在SO(3)流形的正切空间上定义四元数的加法,并表示成最小坐标的李代数(轴转角)形式

因此对应的error-state costFunction定义为:

注意该式求解的是迭代需要使用的增量,而不是初始化过程可以直接线性求解出的初值。这是优化过程和初始化过程中costFunction的主要不同点。

接下来还需要建立对应的观测方程去计算residual及其Jacobian,并且推到误差的传播方程。和初始化过程中对比,增加的有:

  • IMU中的旋转矩阵;
  • 误差传播考虑旋转矩阵及其与translation之间的相关性;

对比初始化和非线性优化过程:

  • 都是基于Sliding Window,但是初始化中每组Sliding Window只会计算一次,如果没有收敛到可以完成初始化,则扩大窗口大小,或者直接滑动窗口;
  • Nonlinear Optimization中Sliding Window则是在固定的Sliding Window中求解增量方程迭代优化到满足一定条件(residual收敛或者限制固定迭代次数保证计算量的平衡);

VINS(五)非线性优化与在线标定调整的更多相关文章

  1. 解放双手——相机与IMU外参的在线标定

    本文作者 沈玥伶,公众号:计算机视觉life,编辑部成员 一.相机与IMU的融合 在SLAM的众多传感器解决方案中,相机与IMU的融合被认为具有很大的潜力实现低成本且高精度的定位与建图.这是因为这两个 ...

  2. [Xcode 实际操作]五、使用表格-(11)调整UITableView的单元格顺序

    目录:[Swift]Xcode实际操作 本文将演示如何调整单元格在表格中的位置. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首先 ...

  3. Oracle 物理结构(五) 文件-在线日志文件

    一.什么是在线日志文件 默认情况下redo的块大小是磁盘的扇区大小,通常是512字节,但是现在很多磁盘开始支持4k的扇区,oracle能自动识别并使用4k的大小,但是使用4k的redo block会有 ...

  4. 在线调整InnoDB Buffer Pool Size

    InnoDB Buffer Pool主要是用来缓存数据表和索引数据的内存区域,它的默认值为134217728字节(128MB).最大值取决于CPU架构;32位系统上的最大值为4294967295(23 ...

  5. Kafka(五)Kafka的API操作和拦截器

    一 kafka的API操作 1.1 环境准备 1)在eclipse中创建一个java工程 2)在工程的根目录创建一个lib文件夹 3)解压kafka安装包,将安装包libs目录下的jar包拷贝到工程的 ...

  6. 相机标定简介与MatLab相机标定工具箱的使用(未涉及原理公式推导)

    相机标定 一.相机标定的目的 确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数. 二.通用摄像机模型 世界坐标系.摄像机坐标 ...

  7. mysql在线修改表结构大数据表的风险与解决办法归纳

    整理这篇文章的缘由: 互联网应用会频繁加功能,修改需求.那么表结构也会经常修改,加字段,加索引.在线直接在生产环境的表中修改表结构,对用户使用网站是有影响. 以前我一直为这个问题头痛.当然那个时候不需 ...

  8. VIO系统的IMU与相机时间偏差标定

      视觉里程计(VIO)作为一种空间定位方法,广泛应用于VR/AR.无人驾驶和移动机器人,比如近年火热的苹果 AR-Kit和谷歌AR-Core都使用了VIO技术进行空间定位.通常,VIO系统忽略IMU ...

  9. 鸟哥的linux私房菜 - 第5/6/7/9章(在线求助 man page、Linux档案权限与目录配置、Linux档案与目录管理、压缩与打包)

    第五章.在线求助 man page X window与文本模式的切换 Ctrl+Alt+F1~F6:文字接口登入tty1~tty6终端机: Ctrl+Alt+F7:图形接口桌面. 注销当前用户:exi ...

随机推荐

  1. 使用log4j让日志写入数据库

    之前做的一个项目有这么个要求,在日志管理系统里,需要将某些日志信息存储到数据库里,供用户.管理员查看分析.因此我就花了点时间搞了一下这一功能,各位请看. 摘要:我们知道log4j能提供强大的可配置的记 ...

  2. SQL表创建注意事项

    CREATE TABLE V_USER ( AUTOID ), USERID BYTE) NOT NULL, USERNAME BYTE) NOT NULL, USERPASSWORD BYTE) N ...

  3. BZOJ1002:[FJOI2007]轮状病毒(找规律,递推)

    Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子 和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下 ...

  4. webAPI请求消息过滤器

    每当制作一个WebAPI,就必然会收到外部很多调用这个API的请求,有时候,我们希望,能从这些外部来的请求中,按照一定条件筛选过滤一下,只将那些我们觉得合法的,有必要回应的请求放进来,一方面挡住那些非 ...

  5. 第24章 QSPI—读写串行FLASH

    本章参考资料:<STM32F76xxx参考手册>.<STM32F76xxx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>及<S ...

  6. Oracle特性总结

    最近开发项目使用了Oracle,根据总体架构一开始选择使用Mybatis,发现核心模块用Mybatis效率不够,切换到jdbc实现,效率大增.Oracle可是个庞然大物,特性多多,丝毫不能马虎,否则很 ...

  7. 用 crontab 实现开机自动运行脚本

    开发「bufpay.com 个人即时到账收款平台」的时候,订单状态和支付二维码的状态如果过期了要实时修改状态,最大效率利用支付二维码. 过期脚本需要开机启动,并且 deamon 运行,有很多办法可以开 ...

  8. 竞赛题解 - Palisection(CF-17E)

    Palisection(CF-17E) - 竞赛题解 Manacher学到一定程度,也需要练一下有趣的题了-- (这是多老的题了 \(QwQ\))[传送门] 『题意』 给出一个字符串,求总共有多少对不 ...

  9. MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

    背景描述 # Time: :: # User@Host: **[**] @ [**] Id: ** # Killed: # Query_time: Rows_examined: Rows_affect ...

  10. CSS动画实例

    上一篇讲过css动画transform transition的语法,这一节展示自己做的几个小例子加深印象 1. 线条动画效果 代码:最外层div包含2个小的div : a和b.   a有左右边框(高度 ...