经典文献阅读之--Stereo-NEC(全新双目VIO初始化)

0. 简介

双目VI-SLAM初始化方法分为两种类型:联合方法和分离方法。联合方法通过融合视觉观测和IMU积分来同时处理视觉和惯性参数,但有可能在闭合解中忽视陀螺仪偏置,而且计算成本高。分离方法首先独立解决SfM问题,然后根据纯视觉SLAM系统中的相机姿态推导惯性参数,其准确性在很大程度上取决于纯视觉SLAM的性能。即使在ORB-SLAM3这样的最新双目VI-SLAM系统中,也假设在相邻帧之间有足够的基线和轻微的旋转的情况下,进行准确的相机轨迹估计。

为此《Stereo-NEC: Enhancing Stereo Visual-Inertial SLAM Initialization with Normal Epipolar Constraints》一文提出了一种准确而稳健的双目视觉惯性SLAM系统初始化方法。与当前最先进的方法不同,后者严重依赖于纯视觉SLAM系统的准确性来估计惯性变量,而不更新相机姿态,这可能会影响准确性和稳健性,我们的方法提供了一种不同的解决方案。我们意识到精确陀螺仪偏置估计对旋转准确性的关键影响。这反过来又会由于累积的平移误差而影响轨迹准确性。为了解决这个问题,我们首先独立估计陀螺仪偏置,并使用它来制定进一步细化的最大后验问题。在这一细化之后,我们继续通过从陀螺仪测量中去除陀螺仪偏置来执行IMU积分以更新旋转估计。然后,我们利用健壮而准确的旋转估计通过三自由度捆绑调整来增强平移估计。相关方法在Github上已经开源了。

1. 主要贡献

  1. 提出一种新方法,利用立体视觉的正常极线约束来估计初始陀螺仪偏差,并使用后者初始化最大后验(MAP)问题以进行进一步精细化。
  2. 通过分别估计旋转来提高初始化的准确性和鲁棒性,首先通过IMU旋转积分进行,然后利用精确可靠的旋转估计来通过3自由度(DoF)束调整增强平移估计
  3. 引入一种新颖的方法来评估初始化成功与否,通过评估正常极线约束的残差来实现。

2. 预备知识

2.1 符号表示

在本文中,我们采用以下符号表示:世界坐标系、物体坐标系和相机坐标系分别用 ( ⋅ ) w (·)^w ()w ( ⋅ ) b (·)^b ()b ( ⋅ ) c (·)^c ()c表示。对于立体相机, c L c_L cL c R c_R cR分别代表左相机和右相机。我们用 R R R表示旋转矩阵,用 v v v表示速度向量,用 t t t表示平移向量,用 g = ( 0 , 0 , G ) T g = (0, 0, G)^T g=(0,0,G)T表示重力向量,其中 G G G是重力的大小。 R i j R^j_i Rij表示从坐标系 i i i到坐标系 j j j的相对旋转, t i j t^j_i tij表示相对平移。 b k b_k bk表示在拍摄第 k k k张图像时的物体坐标系, c k c_k ck表示在拍摄第 k k k张图像时的左相机坐标系。加速度偏差和陀螺仪偏差在本地物体坐标系中分别用 b a b_a ba b g b_g bg表示。 α b k + 1 b k α^{b_k}_{b_{k+1}} αbk+1bk β b k + 1 b k β^{b_k}_{b_{k+1}} βbk+1bk γ b k + 1 b k γ^{b_k}_{b_{k+1}} γbk+1bk表示从 b k b_k bk b k + 1 b_{k+1} bk+1的平移、速度和旋转的预积分。 ∆ t k , k + 1 ∆t_{k,k+1} tk,k+1表示从时间 k k k到时间 k + 1 k+1 k+1的间隔。 λ λ λ代表矩阵的一个特征值, λ m i n λ_{min} λmin特指最小特征值。 n n n指的是一个法向量。 N N N代表用于初始化的关键帧数量。

2.2 单目正常极线约束(MNEC可以计算陀螺仪偏差)

单目正常极线约束(MNEC) [23]编码了单个移动相机两个姿态之间的视线向量与相应极平面法线的几何关系。如图1所示,当考虑两个连续时间点的特征对应时,一对单位视线向量( f i f_i fi f i ′ f^′_i fi)分别来源于时间点 k k k k + 1 k+1 k+1的光学中心( O k O_k Ok O k + 1 O_{k+1} Ok+1)分别在时间点 k k k k + 1 k+1 k+1,指向3D点( p i p_i pi)。每对视线向量定义了一个极平面以及其关联的法线向量 n i = f i × R c k + 1 c k f i ′ n_i = f_i × R^{c_k}_{c_{k+1}} f^′_i ni=fi×Rck+1ckfi。这些极平面的交点形成一条线,即两帧之间的基线 t c k + 1 c k t^{c_k}_{c_{k+1}} tck+1ck(由虚线标记)。法线向量共同形成相应的极平面法线,该法线垂直于基线 t c k + 1 c k t^{c_k}_{c_{k+1}} tck+1ck。假设观测到 n n n个3D点,我们将 n n n个极平面的法线向量堆叠成一个矩阵 N = [ n 1 . . . n n ] N = [n_1...n_n] N=[n1...nn]。共面性的要求在数学上等同于矩阵 M = N N T M = NN^T M=NNT的最小特征值为零。

在这里插入图片描述


MNEC的残差由下式给出:

e i = ∣ n i ⊤ t c k + 1 c k ∣ . e_i = \left| \mathbf{n}_i^\top \mathbf{t}^{c_{k}}_{c_{k+1}} \right|. ei= nitck+1ck .

MNEC有两个应用:

  1. 旋转:Kneip和Lynen [21] 的目标是确定相对旋转 R c k + 1 c k R^{c_k}_{c_{k+1}} Rck+1ck ,它使得最小特征值 λ min ( M k , k + 1 \lambda_{\text{min}}(M_{k,k+1} λmin(Mk,k+1) 最小化:
    在这里插入图片描述

    矩阵 M k , k + 1 M_{k,k+1} Mk,k+1 具有特定属性:它是实数、对称的、正半定的。此外,由于法线向量的共面性约束,其秩为2。使用Levenberg-Marquardt算法可以求解方程(1)。


  2. 陀螺仪偏差:受Kneip和Lynen的工作启发,He等人[22]利用MNEC直接优化陀螺仪偏差,结合图像观测和相机-IMU外部标定矩阵 [ R c b ∣ t c b ] [R_{cb}|t_{cb}] [Rcbtcb]。这改变了从方程(1)到方程(2)的目标函数:

    在这里插入图片描述


在考虑了陀螺仪偏差对第 k k k帧和第 k + 1 k+1 k+1帧之间时间段的影响后,使用 γ b k + 1 b k {γ}^{b_k}_{b_{k+1}} γbk+1bk的一阶泰勒近似估算 γ ^ b k + 1 b k \hat{γ}^{b_k}_{b{k+1}} γ^bk+1bk,并且 J b g γ J^γ_{b_g} Jbgγ代表了由于陀螺仪偏差估计的微小差异导致的预积分变化。

3. 提出的方法

我们的方法是基于这样一个认识:精确的陀螺仪偏差估计显著影响旋转精度,最终由于平移误差的累积,影响轨迹精度。我们在之前的工作[9]基础上进行了改进,该工作采用了一个误差状态卡尔曼滤波器(ESKF)来估计陀螺仪偏差并校正旋转估计,我们减少了对纯视觉SLAM进行旋转估计的依赖。我们方法的基本思想植根于认识到陀螺仪偏差的重要性。我们首先独立估计陀螺仪偏差,然后使用它来构建MAP问题以进行进一步的细化。在这种细化之后,我们继续更新旋转估计。有了稳健和准确的旋转估计,我们利用它来辅助平移估计。我们的方法包括五个步骤,旨在得到关键帧的初始姿态和速度、重力方向和IMU偏差的精确初始值:

  • 步骤0. 纯视觉SLAM:从立体视觉仅SLAM获得初始关键帧姿态
  • 步骤1. 基于特征值的陀螺仪偏差估计器:使用视觉和陀螺仪测量数据,通过构建一个最小化特征值问题来得出初始陀螺仪偏差
  • 步骤2. 陀螺仪偏差精细化,加速度偏差,速度和重力估计器:通过解决一个仅惯性的MAP估计问题,细化陀螺仪偏差并估计关键帧的速度、重力方向和加速度偏差
  • 步骤3. 旋转-平移解耦优化:通过整合去除陀螺仪偏差的陀螺仪测量数据来更新相机旋转估计,并使用3-DoF BA优化相机平移。
  • 步骤4. 联合视觉-惯性束调整:使用从前面步骤中得出的解作为视觉-惯性MAP的初始估计,以获得关键帧姿态、关键帧速度、3D点、重力方向和IMU偏差的最优估计。
    在以下小节中,我们将提供对我们初始化步骤的更详细解释。

在这里插入图片描述

图2:展示了立体正常极线约束的几何结构图。蓝色和红色虚线三角形分别代表左右相机。左侧的 O k O_k Ok和左侧的 O k + 1 O_{k+1} Ok+1分别代表时间 k k k k + 1 k+1 k+1时的两个左光学中心。类似地,右侧的 O k O_k Ok和右侧的 O k + 1 O_{k+1} Ok+1对应于两个右光学中心。橙色线代表立体相机的基线左相机的时间极平面以绿色和黄色表示,而右相机的时间极平面以蓝色和紫色表示。每个时间极平面的相应法向量 n i n_i ni以相应颜色表示。只有来自同一相机的法线向量是共面的。

3.1 基于特征值的陀螺仪偏差估计器

如图2所示,立体正常极线约束扩展了单目正常极线约束,从而能够整合额外的视觉观测信息,增强陀螺仪偏差估计的鲁棒性和准确性。为了在利用立体观测信息的同时估计初始陀螺仪偏差,我们通过最小化方程(3)中的最小特征值 λ m i n λ_{min} λmin来初始化陀螺仪偏差:

在这里插入图片描述

其中 ( f L i , f L i ′ ) (f_{L_i}, f^′_{L_i}) (fLi,fLi)表示左相机中的一对视线向量, ( f R i , f R i ′ ) (f_{R_i}, f^′_{R_i}) (fRi,fRi)表示右相机中的一对视线向量。 n L n_L nL n R n_R nR表示左相机和右相机观测到的特征数量 R c L b R^b_{c_L} RcLb R c R b R^b_{c_R} RcRb分别代表左相机-IMU外部标定的旋转矩阵和右相机-IMU外部标定的旋转矩阵 L M k , k + 1 ^LM_{k,k+1} LMk,k+1 R M k , k + 1 ^RM_{k,k+1} RMk,k+1是利用来自左右相机的法线构建的。 E E E表示在连续两个时间点的关键帧对集合。

3.2 陀螺仪偏差精细化,加速度偏差,速度和重力估计器

…详情请参照古月居

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1551704.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Qt --- 常用控件的介绍---Widget属性介绍

一、控件概述 编程,讲究的是站在巨人的肩膀上,而不是从头发明轮子。一个图形化界面上的内容,不需要咱们全都从零区实现,Qt中已经提供了很多内置的控件了(按钮,文本框,单选按钮,复选…

CMake教程(八):添加定制命令和生成的文件

本篇继续 CMake 官网教程的第八篇教程,所用材料是 Step8 目录下的源代码。 本篇教程主要讲解如何通过 CMake 生成一个头文件,该头文件当中包含了 1 到 10 的平方根表格,然后在程序的其它部分包含这个生成的头文件。 出于教学的目的&#xf…

手机实时提取SIM卡打电话的信令声音-新的篇章(二、USB音频线初步探索)

手机实时提取SIM卡打电话的信令声音-新的篇章(二、USB音频线初步探索) 前言 前面的篇章和方案中,我们从架构拓扑和原理的角度分析了使用音频线来绕开手机对SIM卡电话的通话声音的封锁场景的可行性,并尝试拆分和对比模拟3.5mm耳机的音频和USB的数字音频线在使用上的差异。 在…

【ADC】系统误差分析中的统计原理

概述 本文学习于TI 高精度实验室课程,讨论典型和最大数据表规格的统计含义,分析最坏情况分析和查看典型值的统计分析之间的差异。 文章目录 概述一、最坏情况下的误差大小及其概率二、估计误差更好的方法 一、最坏情况下的误差大小及其概率 为了更好地…

【电机-概述及分类】

文章目录 第1章1-1 电机的定义1-2 电机的构成要素1-3 电机的分类1-3-1 直流电机1-3-1-1 永磁励磁型直流电机1-3-1-2 电磁铁励磁型直流电机 第1章 重新认识电机的体系 电机包括许多种类。换个角度来看,并没有完美的电机,某种电机具有所谓A的优点&#xf…

Unreal 对象、属性同步流程

文章目录 类型同步初始化创建 FObjectReplicator创建 FRepLayout、Cmd、ShadowOffset创建 FRepChangedPropertyTracker、FRepState创建 FReplicationChangelistMgr、FRepChangelistState、ShadowBuffer 属性同步属性变化检测查找变化属性,写入ShadowMemory发送数据 …

php email功能实现:详细步骤与配置技巧?

php email发送功能详细教程?如何使用php email服务? 无论是用户注册、密码重置,还是订单确认,电子邮件都是与用户沟通的重要手段。AokSend将详细介绍如何实现php email功能,并提供一些配置技巧,帮助你更好…

读代码UNET

这个后面这个大小怎么算的,这参数怎么填,怎么来的? 这是怎么看怎么算的? 这些参数设置怎么设置?卷积多大,有什么讲究?

65.【C语言】联合体

目录 目录 1.定义 2.格式 3.例题 答案速查 分析 4.练习 答案速查 分析 5.相同成员的联合体和结构体的对比 6.联合体的大小计算 2条规则 答案速查 分析 练习 答案速查 分析 7.联合体的优点 8.匿名联合体 1.定义 和结构体有所不同,顾名思义:所有成员联合使用同…

软件设计师——计算机网络

📔个人主页📚:秋邱-CSDN博客☀️专属专栏✨:软考——软件设计师🏅往期回顾🏆:🌟其他专栏🌟:C语言_秋邱 一、OSI/ RM七层模型(⭐⭐⭐) ​ 层次 名称 主要功…

【STM32单片机_(HAL库)】4-1【定时器TIM】定时器中断点灯实验

1.硬件 STM32单片机最小系统LED灯模块 2.软件 timer驱动文件添加定时器HAL驱动层文件添加GPIO常用函数定时器中断配置流程main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "timer.h"int main(void) {H…

latex打出邮箱图标和可点击的orcidID

如图所示: 邮箱的打法 \usepackage{bbding} \inst{(}\Envelope\inst{)}orcidID的打法 \newcommand{\myorcidID}[1]{\href{https://orcid.org/#1}{\includegraphics[width8pt]{res/orcid.png}}} \captionsetup[algorithm]{skip5pt} \definecolor{customblue}{RGB}{…

硬盘数据不翼而飞?2024四大神器帮您找回!

能看到这篇文章的,相信都是一不小心丢失了重要数据的小伙伴。不要慌,以下的这几个硬盘数据恢复软件大家都可以试试,它们大概率能帮助大家找回重要数据! 福昕数据恢复 直达链接(复制到浏览器打开)&#xf…

鸿蒙开发(NEXT/API 12)【穿戴设备信息查询】手机侧应用开发

// 在使用Wear Engine服务前,请导入WearEngine与相关模块 import { wearEngine } from kit.WearEngine; import { BusinessError } from kit.BasicServicesKit;查询穿戴设备是否支持某种WearEngine能力集 注意 该接口的调用需要在开发者联盟申请设备基础信息权限。…

Threejs中使用A*算法寻路导航

<!DOCTYPE html> <html><head><title>Threejs中使用A*算法寻路导航&#xff0c;Threejs室内室外地图导航</title><script type"text/javascript" src"libs/three.js"></script><script type"text/javas…

zabbix7.0监控linux主机案例详解

前言 服务端配置 链接: rocky9.2部署zabbix服务端的详细过程 环境 主机ip应用zabbix-server192.168.10.11zabbix本体zabbix-client192.168.10.12zabbix-agent zabbix-server(服务端已配置) 具体实现过程 zabbix-client配置 安装zabbix-agent 添加扩展包 dnf -y instal…

AD软件的分屏显示功能

1.鼠标右键点击上面的窗格&#xff0c;选择“垂直分布”&#xff0c;即可以将AD软件分屏&#xff0c;左边选择原理图&#xff0c;右边选择PCB即可以方便去设计PCB的布局。实现原理图和pcb文件的同时查看。 还可以建立起2个图之间的联动关系。 比如我们在电路图里面选择stm32 m…

风险函数梳理工具

风险函数梳理工具 在日常的软件开发工作中&#xff0c;代码的安全性和质量至关重要。然而&#xff0c;面对庞大的代码库&#xff0c;手动查找潜在的风险函数不仅耗时&#xff0c;而且容易出错。特别是在团队协作中&#xff0c;代码审查和重构工作往往占据了大量宝贵的时间&…

心理咨询预约管理系统(含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 心理咨询预约管理系统2拥有三个角色&#xff1a; 管理员端 首页 系统近况&#xff08;咨询师和注册来访者数量&#xff0c;预约数量&#xff09; 显示最新的消息、留言和公告&#xff0…

软件测试学习笔记丨Pytest 学习指南

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32336 基本介绍 pytest框架是一个成熟&#xff0c;全面的测试框架&#xff0c;具有非常丰富的第三方插件&#xff0c;并且可以自定义扩展 比如&#xff1a;pytest-selenium , pytest-html ,…