VINS-Mono 阅读

news/2025/2/12 22:58:56/

VINS-Mono: A Robust and Versatile Monocular
Visual-Inertial State Estimator

Abstract

本文介绍了一种单目-视觉惯性状态估计,在平面上运动。单目图像和imu的组合提供了一种最少的传感器组合,三自由度的状态估计。我们将视觉和惯性在一个窗口中计算。

本系统在各个方面都比较鲁邦,比如:状态未知条件下的初始化、在线标定、闭环检测、四自由度的pose graph。这些性质让本系统简单易用。

1. Overview

本系统分为三个步骤

  • 视觉IMU预处理
  • 初始化过程
  • 非线性优化

表示方法: ( ) w ()^w ()w表示世界坐标系、 ( ) b ()^b ()b表示body坐标系, ( ) c ()^c ()c表示cam坐标系

2. 观测预处理

A. 视觉处理比较简单
B. IMU 预积分
这里有一个疑问,貌似这里把body系下的加速度,直接乘以旋转矩阵,就到了全局系
p b k + 1 w = p b k w + v b k w + ∫ ∫ R t w ∗ a ^ t d t 2 p^{w}_{b_{k+1}} = p^{w}_{b_k} + v^w_{b_k} + \int \int R^w_t * \hat{a}_tdt^2 pbk+1w=pbkw+vbkw+∫∫Rtwa^tdt2
v b k + 1 w = v b k w + ∫ R t w ∗ a ^ t d t v^{w}_{b_{k+1}} = v^{w}_{b_k} + \int R^w_t * \hat{a}_tdt vbk+1w=vbkw+Rtwa^tdt
q b k + 1 w = q b k w ⊗ ∫ 1 / 2 Ω ( w ^ ) q t b k d t q^{w}_{b_{k+1}} = q^{w}_{b_k} \otimes \int 1/2 \Omega(\hat{w})q^{b_k}_tdt qbk+1w=qbkw1/2Ω(w^)qtbkdt
因为观察到上面的式子是依赖 b k {b_k} bk的,在公式两边同时乘以 R w b k R^{b_k}_w Rwbk, 将上面的式子转换到局部坐标系下:
R w b k p b k + 1 w = R w b k ( p b k w + v b k w ) + R w b k ∫ ∫ R t w ∗ a ^ t d t 2 R^{b_k}_wp^{w}_{b_{k+1}} = R^{b_k}_w(p^{w}_{b_k} + v^w_{b_k}) + R^{b_k}_w\int \int R^w_t * \hat{a}_tdt^2 Rwbkpbk+1w=Rwbk(pbkw+vbkw)+Rwbk∫∫Rtwa^tdt2
R w b k v b k + 1 w = R w b k v b k w + R w b k ∫ R t w ∗ a ^ t d t R^{b_k}_wv^{w}_{b_{k+1}} = R^{b_k}_wv^{w}_{b_k} + R^{b_k}_w\int R^w_t * \hat{a}_tdt Rwbkvbk+1w=Rwbkvbkw+RwbkRtwa^tdt
q w b k q b k + 1 w = q w b k q b k w ⊗ ∫ 1 / 2 Ω ( w ^ ) q t b k d t q^{b_k}_wq^{w}_{b_{k+1}} = q^{b_k}_wq^{w}_{b_k} \otimes \int 1/2 \Omega(\hat{w})q^{b_k}_tdt qwbkqbk+1w=qwbkqbkw1/2Ω(w^)qtbkdt

因此得到预积分的三个公式:
α b k + 1 b k = ∫ ∫ R t b k ∗ a ^ t d t 2 \alpha^{b_k}_{b_{k+1}}=\int \int R^{b_k}_t * \hat{a}_tdt^2 αbk+1bk=∫∫Rtbka^tdt2
β b k + 1 b k = ∫ R t b k ∗ a ^ t d t \beta^{b_k}_{b_{k+1}}=\int R^{b_k}_t * \hat{a}_tdt βbk+1bk=Rtbka^tdt
γ b k + 1 b k = ∫ 1 / 2 Ω ( w ^ ) q t b k d t \gamma^{b_k}_{b_{k+1}} = \int 1/2 \Omega(\hat{w})q^{b_k}_tdt γbk+1bk=1/2Ω(w^)qtbkdt

上面的式子定义的递推公式,可以看成是只需要使用imu,将 b k b_k bk当做是基础pose,就可以完全得到的结果。从下往上,可以求出 α , β , γ \alpha, \beta, \gamma α,β,γ的所有结果。

对于离线形式,因为都是积分,其实就是累加的形式得到最终的结果。
α i + 1 b k = α i b k + \alpha^{b_k}_{i+1} = \alpha^{b_k}_{i} + αi+1bk=αibk+
公式5中的 α \alpha α, 为什么会和 β \beta β有关系?有关系的,通过下面的实例可以验证。

这里可以使用一个实际的例子来进行验证。初速度=0,以加速度1m/s^2向前移动,对v和s进行积分,结果一致。

从这个例子可以看出,这三个预积分,其实对应的就是这一段的速度增量、距离增量、角度增量。

有了观测量之后,在后续的使用过程中,需要使用该观测量的协方差。这里因为假设没有bias,所以误差的来源就是角速度和加速度的高斯误差。

因为这里的观测量变成了 α , β , γ \alpha, \beta, \gamma α,β,γ, 所以要通过协方差传播公式来传递。

又因为是离散的,所以又需要求一下每一个delta量的协方差。求得协方差的迭代公式。协方差迭代公式,就是利用偏导的平方进行传播的。

notes:为了简化公式推导,假设没有bias,没有重力。pose的移动在一个平面上发生。


http://www.ppmy.cn/news/836412.html

相关文章

VINS-Mono详解(一)

文章目录 VINS-Mono前端概述入口函数main()回调函数img_callback()发布频率控制特征点提取与光流跟踪单目处理逻辑双目处理逻辑 FeatureTracker::readImage()函数更新特征点id VINS-Mono前端概述 VINS-Mono将前端封装为一个ROS节点feature_tracker,该节点订阅相机图…

VINS-Mono详解

代码框架 /feature_tracker 视觉前端 n.subscribe(IMAGE_TOPIC, 100, img_callback) 订阅图像话题,执行回调函数img_callback img_callback() trackerData[i].readImage(ptr->image.rowRange(ROW * i, ROW * (i 1)), img_msg->header.stamp.toSec()); //读…

ViTPose

具体而言,ViTPose使用普通和非分层vit Transformer[14]作为backbone来提取给定人物实例的特征图,其中backbone通过掩蔽图像建模借口任务(例如MAE[16])进行预训练,以提供良好的初始化。然后,下面的轻量级解码…

详述反射中构造方法、属性和普通方法 (如何获取、获取信息、如何使用)

获取构造方法: 借助Class类某些可以获取对应类中声明的构造方法实例对象,这些方法有: 1、Constructor[] getConstrutors():返回该Class对象表示类包含的所有public构造方法(不含继承)所对应Constructor对…

Yolov5---模型阅读、改进、实验

1.模型学习 1.1 模型理论阅读 YOLOv5【网络结构】超详细解读总结!!!建议收藏✨✨!_yolov5 网络结构_耿鬼喝椰汁的博客-CSDN博客 1.2 模型代码阅读 (1条消息) YOLOv5-6.2源码解析-train.py(超级无敌巨详细版)_yolov5train代码详解…

网络安全十四条经验教训

2022年,是网络安全市场高速发展的一年,同时也是企业评估安全项目投资有效性,校准和优化安全防御战略和预算的关键时间节点。 面对快速迭代的网络威胁,每位CISO都有自己的方法和视角来总结和反思即将过去的2022年,此类经…

【运维工程师学习五】数据库

【运维工程师学习五】数据库 1、常用的关系型数据库2、C/S结构3、MariaDB图形客户端4、安装MariaDB5、启动MariaDB及验证启动是否成功6、验证启动——端口7、验证启动——进程8、MariaDB配置文件路径主配置文件解读: 9、MariaDB的配置选项10、MariaDB客户端连接1、在…

关于VUE报错“TypeError: Converting circular structure to JSON“

关于VUE报错“TypeError: Converting circular structure to JSON" 问题: [Vue warn]: Error in nextTick: "TypeError: Converting circular structure to JSON--> starting at object with constructor Vue| property $options -> object wit…