当前位置: 首页 > news >正文

【深蓝学院】手写VIO第7章--VINS初始化和VIO系统--笔记

0. 内容

在这里插入图片描述

1. VIO回顾

在这里插入图片描述
在这里插入图片描述
整个视觉前端pipeline回顾:

  1. 两帧图像,可提取特征点,特征匹配(描述子暴力匹配或者光流)
  2. 已知特征点匹配关系,利用几何约束计算relative pose([R|t]),translation只有方向,没有尺度
  3. 使用三角化获得3维坐标,即可完成vslam系统的初始化
  4. 有了3D特征点,后续可根据特征跟踪,使用PnP求解Camera Pose,无需再使用几何约束

在这里插入图片描述

  1. IMU的加速度要和世界系的重力进行对齐
    在这里插入图片描述
    世界系重力假设(0,0,-9.81),IMU第一帧估计出一个 c g = c R c b g b ^{c}g=^{c}R_{cb}g_b cg=cRcbgb,就可以求出第一帧camera在world下的pose(带头大哥)

  2. 视觉的尺度和IMU尺度要进行对齐

  3. VIO系统速度,传感器bias需要估计

  4. IMU和相机的外参Tic

知道了z轴的法向量就能估计roll和pitch(tilt),但是yaw不可观。

2. VINS鲁棒初始化

2.1 pipeline overview

在这里插入图片描述
IMU积分是米制单位,但是camera不是,camera存在一个缩放因子,标定出外参 [ R b c , t b c ] [R_{bc},t_{bc}] [Rbc,tbc]之后,可以求得尺度因子s,先对坐标系,R,t的数学表示做一下说明:
旋转脚标相连时相消,刚性连接在不同时刻的的观测相同,平移左上角是观测系,右下角从左到右;平移乘旋转后平移向量不变,但观测系改变。

式(4)第一行这样理解:
c 0 p ‾ c 0 b k = c 0 p ‾ c 0 c k − 1 s c 0 R c 0 b k b p b c ( 2.1 ) {^{c_0}\overline p_{c_0b_k}}={^{c_0}\overline p_{c_0c_k}}-\frac{1}{s}{^{c_0} R_{c_0b_k}} {^{b}p_{bc}} (2.1) c0pc0bk=c0pc0cks1c0Rc0bkbpbc(2.1)
左上角都是观测系,即在什么系下看这个量,由于刚性连接在不同观测系,不同时间下相同,且平移乘旋转后旋转向量不变,但观测系改变,所以 b p b c = b k p b k c k ( 2.2 ) {^{b}p_{bc}}={^{b_k}p_{b_kc_k}}(2.2) bpbc=bkpbkck(2.2)
所以将(2.2)带入式(2.1)可得:
c 0 p ‾ c 0 b k = c 0 p ‾ c 0 c k − c 0 p ‾ b k c k = c 0 p ‾ c 0 c k + c 0 p ‾ c k b k ( 2.3 ) {^{c_0}\overline p_{c_0b_k}}={^{c_0}\overline p_{c_0c_k}}-{^{c_0}\overline p_{b_kc_k}}={^{c_0}\overline p_{c_0c_k}}+{^{c_0}\overline p_{c_kb_k}}(2.3) c0pc0bk=c0pc0ckc0pbkck=c0pc0ck+c0pckbk(2.3)
即在 c 0 c_0 c0系下进行将 c 0 p ‾ c 0 c k + c 0 p ‾ c k b k {^{c_0}\overline p_{c_0c_k}}+{^{c_0}\overline p_{c_kb_k}} c0pc0ck+c0pckbk向量相加,不难理解。
标定出Camera和IMU外参之后,利用式(2.1)就可以求出尺度因子。

在这里插入图片描述
Tbc外参的Rotation很重要,而Translation由于可能离得比较近,所以相对来说没有Rotation重要

2.2 外参估计

旋转约束:两种路径求取的 q c k b k + 1 q_{c_kb_{k+1}} qckbk+1应该相同。

在这里插入图片描述
这里的未知量只有外参 q b c q_{bc} qbc,也可以简单地理解为一段时间内,camera出一段pose(trajectory),imu积分出一段pose(trajectory),这两段pose理想情况下只有外参的差异,(不考虑 t b c t_{bc} tbc的情况下)可以将这两段pose align起来,残差是两段pose align的残差,待估计量就是外参,做LSP的结果就是外参。

在这里插入图片描述
VINS论文中将多个时刻的数据累计起来,并使用了鲁棒核函数对每一项进行了加权,权值计算方法:有 t r ( R ) = 1 + 2 c o s θ tr(R)=1+2cos\theta tr(R)=1+2cosθ(可以看wiki),式(9)中的那一大块矩阵就是式(5)移项而得,因为求的是相同的量(如 q c k b k + 1 q_{c_kb_{k+1}} qckbk+1),所以理想情况下连乘应该是Identity,但实际上,如果外参估的不准,这个角度会较大(>threshole),所以式(8)将大于threshold的部分的权值设的较小,进行了抑制。

最终对 q b c q_{bc} qbc的求解还是对式(7)使用SVD分解,取 V T V^T VT最后一列作为解。

(参考这篇博客参考这篇博客中使用Lanrange算子证明取 V T V^T VT最后一列是我们所求的解。)

论文中还对SVD分解的倒数第二小奇异值进行了判断,如果小于阈值则认为该次估计无效,重新采集数据进行估计。(这和增多数据来提升数据信噪比是一样的目的,都是为了提高数值稳定性)

2.3 gyro bias估计

在这里插入图片描述
式(10)就是将 b k b_k bk b k + 1 b_{k+1} bk+1时刻之间imu的rotation都转到 c 0 c_0 c0系下进行align:

  • 前两项四元数相乘代表求在 c 0 c_0 c0系下看imu在 b k b_k bk b k + 1 b_{k+1} bk+1时刻之间的relative rotation
  • 第3项 q b k b k + 1 q_{b_kb_{k+1}} qbkbk+1是IMU积分而来的两时刻间的relative rotation真值(会受到gyro bias的影响),对其进行一阶Taylor展开,带入(10),(10)即代表一阶项所代表的 θ e r r \theta_{err} θerr,可以求出gyro bias

这跟前面估计外参的是一样的,都是使用的旋转约束。

2.4 初始化速度,重力,尺度因子

在这里插入图片描述

相关文章:

【深蓝学院】手写VIO第7章--VINS初始化和VIO系统--笔记

0. 内容 1. VIO回顾 整个视觉前端pipeline回顾: 两帧图像,可提取特征点,特征匹配(描述子暴力匹配或者光流)已知特征点匹配关系,利用几何约束计算relative pose([R|t]),translation只有方向&…...

大开眼界:Netbios 上古时代如何用一个参数实现一个世界 负面典型

今天的程序员普遍遵循这样的接口设计原则:通过不同的接口名和参数列表准确表达不同的功能。 这似乎是理所当然的,然而上古时代却并非如此,比如Netbios协议整个协议的接口只有一个函数、一个参数! 当初是基于什么原则这样设计不晓得…...

el-table制作表格,改变表格的滚动条样式

// 改变滚动条相关样式 *::-webkit-scrollbar {width:10px; height:0px; background-color:transparent;} /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ *::-webkit-scrollbar-track {background-color: rgba(0,0,0,0.3); } /*定义滚动条轨道 内阴影圆角*/ *::-web…...

Cmd报错:No module named ‘pip’

目录 1、问题描述2、问题原因3、问题解决 1、问题描述 今天在cmd命令行安装Twisted的扩展包whl文件时报错: ...... ModuleNotFoundError: No module named pip2、问题原因 升级pip时命令使用错误 3、问题解决 1) 重装pip python -m ensurepip2&#x…...

python输出奇数:如何使用Python输出奇数?

Python输出奇数的方法有很多种,下面给出一种使用for循环的实现方式:上述代码的输出结果为: Python输出奇数的方法有很多种,下面给出一种使用for循环的实现方式: # 定义一个变量n,表示要输出的奇数的最大值…...

2023 NewStarCTF --- wp

文章目录 前言Week1MiscCyberChefs Secret机密图片流量!鲨鱼!压缩包们空白格隐秘的眼睛 Web泄露的秘密Begin of UploadErrorFlaskBegin of HTTPBegin of PHPR!C!E!EasyLogin CryptobrainfuckCaesars SecertfenceVigenrebabyrsaSmall dbabyxorbabyencodin…...

一键切换IP地址:电脑IP更改的简便方法

今天我要和大家分享一个电脑IP更改的简便方法——一键切换IP地址。如果您想要更改电脑的IP地址,无需繁琐的设置和复杂的步骤,只需使用以下简单的方法,即可轻松实现IP地址的切换。让我们开始吧! 1、使用批处理脚本 批处理脚本是一…...

计算机相关内容的网站主题说明书

1. 网站名称: 中职计算机学堂 2. 网站目标: 主要目标:为中职学生提供计算机基础教程、编程入门、IT技能培训。次要目标:鼓励学生发表自己的作品,交流技术问题,构建IT爱好者社区。 3. 目标受众&#xff1…...

zabbix监控项

一、监控项(items) 1、获取监控数据的方式: ① zabbix-agent:代理程序是在被监控主机上运行的软件,负责收集和报告有关主机性能和状态的数据,监控系统通过与代理程序通信来获取数据。 ② SNMP&#xff1…...

Java基础面试-重载和重写的区别

重载:发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同,方法返回值和访问修饰符可 以不同,发生在编译时。 重写:发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类&…...

记一次生产大对象及GC时长优化经验

最近在做一次系统整体优化,发现系统存在GC时长过长及JVM内存溢出的问题,记录一下优化的过程 面试的时候我们都被问过如何处理生产问题,尤其是线上oom或者GC调优的问题更是必问,所以到底应该如何发现解决这些问题呢,用真实的场景实操&#xff…...

Vue项目为页面添加水印效果

最近在做项目,有这样要求,需要在指定容器中添加水印,也可不设置容器,如果没有容器,则添加在整个页面中,即body,当接到这个需求的时候我第一想的方法就是用canvas来实现,话不多说搞起…...

两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回…...

试过GPT-4V后,微软写了个166页的测评报告,业内人士:高级用户必读

一周之前,ChatGPT迎来重大更新,不管是 GPT-4 还是 GPT-3.5 模型,都可以基于图像进行分析和对话。与之对应的,多模态版GPT-4V模型相关文档也一并放出。当时 OpenAI 放出的文档只有18页,很多内容都无从得知,对…...

使用Python构造VARIMA模型

简介 VARMA(p,q)结合了VAR和VMA模型,其中p是向量自回归(VAR)模型的滞后期数,q是VMA模型的移动平均的阶数。 VARMA是ARMA的推广,它将ARMA模型扩展到多个时间序列变量的情况,通过VAR和VMA的线性组合来描述多个时间序列变量之间的联…...

Java基于SpringBoot+Vue的考研资讯平台

1 简介 大家好,我是程序员徐师兄,今天为大家带来的是Java基于SpringBootVue的考研资讯平台 Java基于SpringBoot的考研资讯平台,在系统当中学生可以根据不同的信息来实现该网站的考研资讯平台信息的管理。 系统主要分为前台和后台。主要包括…...

信钰证券:9月以来A股20家银行 获机构不同批次调研

Wind数据显现,自9月份以来,已经有20家银行获安排不同批次调研。其间常熟银行、瑞丰银行被调研次数较多,别离为20次、11次;宁波银行、渝农商行获安排调研家数居前,别离为206家、128家。从上市银行宣布的调研情况来看&am…...

应用商店优化的好处有哪些?

应用程序优化优势包括应用在商店的可见性和曝光度,高质量和被相关用户的更好发现,增加的应用下载量,降低用户获取成本和持续增长,增加应用收入和转化率以及全球受众范围。 1、提高知名度并在应用商店中脱颖而出。 如果用户找不到…...

MacOS Pro笔记本硬盘升级纪实

背景 MacPro 2015 mid的苹果本,忽然心血来潮想升级一下SSD。三个步骤:做启动盘,时间机器备份,插新的SSD盘恢复。 过程 下载MacOS,macOS Monterey 12.7官方原版镜像: https://swcdn.apple.com/content/do…...

景联文科技:3D点云标注应用场景和专业平台

3D点云技术之所以得到广泛发展和应用,主要是因为它能够以一种直观、真实和全面的方式来表示和获取现实世界中的三维信息。 3D点云的优势: 真实感和立体感:3D点云数据能够呈现物体的真实感和立体感,使观察者能够更直观地理解物体的…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...