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

VINS-Mono-VIO初始化 (五:视觉惯性对齐求解)

整体思想就是根据预积分的公式,把已知量和未知量各放到一边,因为前面的数据都是变换到 c 0 c_{0} c0下的,不是真正意义上和重力对齐的世界坐标,然后位移和速度的预积分中会用到加速度计获取的重力加速度g,但是这个重力g是没有和世界的重力方向对齐的,所以里面就存在了未知量,通过每组预积分的数据联立起来构成一个大矩阵对重力向量进行求解,这里是求解了重力方向(对于起始帧 c 0 c_{0} c0的重力方向),重力大小也有,不过不准确,所以后续还会利用重力先验对方向进行调整

有个小问题:这个预积分前面不是也会涉及重力吗,是直接不理会当作影响不大来进行处理?那这个已知量里面也包含里一定的未知量的积分影响在里面,待我看下代码确定一下整体的初始化流程和思想,后续会出篇整体初始化思想流程

关于位移的预积分量的定义,把 c 0 c_{0} c0 换成 w w w 就是之前的式子了,因为重力还没对齐所以只转换到 c 0 c_{0} c0 坐标系下,就是系统开始的第一帧下

先对平移进行推导


上一节零偏估计里面推导出这个式子
在这里插入图片描述
代入进去则有
R c 0 b k ( s P c k + 1 c 0 − R b k + 1 c 0 ⋅ P c b ) = R c 0 b k [ s P c k c 0 − R b k c 0 ⋅ P c b + R c 0 b k ⋅ v b k ⋅ Δ t − 1 2 g c 0 Δ t 2 + α ] R^{b_{k}}_{c_{0}}(sP^{c_{0}}_{c_{k+1}}-R^{c_{0}}_{b_{k+1}}·P^{b}_{c})=R^{b_{k}}_{c_{0}}[sP^{c_{0}}_{c_{k}}-R^{c_{0}}_{b_{k}}·P^{b}_{c}+R^{b_{k}}_{c_{0}}·v^{b_{k}}·Δt-\frac{1}{2}g^{c_{0}}Δt^{2}+α] Rc0bk(sPck+1c0Rbk+1c0Pcb)=Rc0bk[sPckc0Rbkc0Pcb+Rc0bkvbkΔt21gc0Δt2+α]
原本的 v b k c 0 v^{c_{0}}_{b_{k}} vbkc0 指的是再 c 0 c_{0} c0 坐标系下 b k b_{k} bk 的速度,现在直接拿在 b k b_{k} bk 系下的速度通过旋转矩阵进行变换,其实意思是一样的。
现在把已知量放左边,未知量放右边
α − P c b ⋅ R c 0 b k ⋅ R b k + 1 c 0 ⋅ P c b = R c 0 b k ( P c k + 1 c 0 − P c k c 0 ) s − v b k Δ t + 1 2 R c 0 b k g c 0 Δ t 2 α-P^{b}_{c}·R^{b_{k}}_{c_{0}}·R^{c_{0}}_{b_{k+1}}·P^{b}_{c}=R^{b_{k}}_{c_{0}}(P^{c_{0}}_{c_{k+1}}-P^{c_{0}}_{c_{k}})s-v^{b_{k}}Δt+\frac{1}{2}R^{b_{k}}_{c_{0}}g^{c_{0}}Δt^{2} αPcbRc0bkRbk+1c0Pcb=Rc0bk(Pck+1c0Pckc0)svbkΔt+21Rc0bkgc0Δt2
左边都是已知量,最后是一个 3 × 1 3×1 3×1 的一个向量
上面的式子就和论文中的公式对应了
在这里插入图片描述
在这里插入图片描述

对速度进行推导

根据原始预积分的定义有
R c 0 b k ⋅ V b k + 1 c 0 = R c 0 b k ( V b k c 0 − g c 0 ⋅ Δ t ) + β R^{b_{k}}_{c_{0}}·V^{c_{0}}_{b_{k+1}}=R^{b_{k}}_{c_{0}}(V^{c_{0}}_{b_{k}}-g^{c_{0}}·Δt)+β Rc0bkVbk+1c0=Rc0bk(Vbkc0gc0Δt)+β
然后变换一下表达方式,含义是不变的
= > R c 0 b k ⋅ R b k + 1 c 0 ⋅ V b k + 1 = R c 0 b k ( R b k c 0 ⋅ V b k − g c 0 ⋅ Δ t ) + β =>R^{b_{k}}_{c_{0}}·R^{c_{0}}_{b_{k+1}}·V^{b_{k+1}}=R^{b_{k}}_{c_{0}}(R^{c_{0}}_{b_{k}}·V^{b_{k}}-g^{c_{0}}·Δt)+β =>Rc0bkRbk+1c0Vbk+1=Rc0bk(Rbkc0Vbkgc0Δt)+β
同样把已知量放左边,未知量放右边
= > β = − V b k + R c 0 b k ⋅ R b k + 1 c 0 ⋅ V b k + 1 + R c 0 b k ⋅ g c 0 ⋅ Δ t =>β=-V^{b_{k}}+R^{b_{k}}_{c_{0}}·R^{c_{0}}_{b_{k+1}}·V^{b_{k+1}}+R^{b_{k}}_{c_{0}}·g^{c_{0}}·Δt =>β=Vbk+Rc0bkRbk+1c0Vbk+1+Rc0bkgc0Δt

第 k 到 k+1 都会产生上面两个式子,会有很多个这种式子拼起来

构成 H x = b Hx=b Hx=b 的矩阵方程,代码中就是一些矩阵拼接的操作
x = [ v k , v k + 1 , g , s ] ∈ 10 × 1 x=[v_{k},v_{k+1},g,s]∈10×1 x=[vk,vk+1,g,s]10×1,所以 H 属于 10 × 10 H属于10×10 H属于10×10 b ∈ 10 × 1 b∈10×1 b10×1,实际上由于有多组数据,10 会变成 N,速度,重力都是3维的,尺度因子是1,所以每一组就是 10

有多个数据则矩阵写为,通过对每一组数据进行矩阵分块填入这个大矩阵里面,然后一次性求解出所有速度、重力和尺度
在这里插入图片描述

求解后获得重力向量
然后根据当地的重力先验来对刚才算出来的重力进行修正

相关文章:

VINS-Mono-VIO初始化 (五:视觉惯性对齐求解)

整体思想就是根据预积分的公式,把已知量和未知量各放到一边,因为前面的数据都是变换到 c 0 c_{0} c0​下的,不是真正意义上和重力对齐的世界坐标,然后位移和速度的预积分中会用到加速度计获取的重力加速度g,但是这个重…...

详解Vue——的双向数据绑定是如何实现的?

引言 在现代的Web开发中,数据绑定是一个非常重要的概念。Vue.js是一种流行的JavaScript框架,它提供了一种简单而强大的方式来实现双向数据绑定。本文将介绍Vue的双向数据绑定原理,并提供相关代码示例。 什么是双向数据绑定? 双向…...

正则表达式引擎比较(翻译自:A comparison of regex engines)

原文: A comparison of regex engines – Rust Leipzig 引言 正则表达式(或简称regex)通常用于模式搜索算法。 有许多不同的正则表达式引擎提供不同的表达式支持、性能约束和语言绑定。 基于 John Maddock 之前的工作 (regex comparison)和…...

后端Linux软件安装大全[JDK、Tomcat、MySQL、Irzsz、Git、Maven、Redis、Nginx...持续更新中]

文章目录 前言1.软件安装方式2.安装jdk3.安装Tomcat4.安装MySQL5.安装lrzsz6. 安装Git7. 安装Maven8. 安装Redis9. 安装Nginx 总结 前言 为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新…...

C++ Dijkstra 最短路径求解算法的两种实现方案

迪杰斯特拉算法(Diikstra) 是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。 核心思想,搜索到某一个顶点后,更新与其相邻顶点的权重。顶点权重的数据含义表示从起始点到此点的最短路径长度(也就是经过的…...

因存在色情内容,夸克被罚50万元

媒体经济的繁荣、自媒体、直播等各种形式的信息传播疯狂发展,但是各种形式的信息资源大规模生产时,“色情”,“暴力”的图像和视频不可控的滋生,特别是某些 APP 或浏览器。一旦打开,满屏都是“哥哥,快来啊”…...

汽车EDI:福特Ford EDI项目案例

项目背景 福特(Ford)是世界著名的汽车品牌,为美国福特汽车公司(Ford Motor Company)旗下的众多品牌之一。此前的文章福特FORD EDI需求分析中,我们已经了解了福特Ford EDI 的大致需求,本文将会介…...

正则表达式的使用实例

正则表达式的使用实例 1- 表示2- 实例 1- 表示 1, [:digit:] 表示0-9全部十个数字 //等价于 0123456789, 而不等价于[0123456789] 2, [[:digit:]] 表示任意一个数字 \{m,n\} 表示其前面的字符出现最少m次,最多n次的情况 \{3,\} 其前面的字符出…...

STM智能小车——OLED实现测速小车

目录 1. 测速模块 2. 测试原理和单位换算 3. 定时器和中断实现测速开发和调试代码 4. 小车速度显示在OLED屏 1. 测速模块 用途:广泛用于电机转速检测,脉冲计数,位置限位等。有遮挡,输出高电平;无遮挡,输出低电平接线…...

pod基本概念

目录 pod基本概念 pause容器 Pod分类: Pod容器的分类 1、基础容器(infrastructure container) 2、初始化容器(initcontainers) 3、应用容器(Maincontainer) 镜像拉取策略(im…...

SQL Server 中定时调度调用存储过程

要在SQL中定时调度调用存储过程,你可以使用SQL Server代理(如果你正在使用SQL Server数据库)。下面是一些步骤来配置SQL Server代理以定时调度调用存储过程: 打开SQL Server Management Studio (SSMS) 并连接到你的SQL Server实例…...

SpringCloud(三) Ribbon负载均衡

SpringCloud(二) Eureka注册中心的使用-CSDN博客 在SpringCloud(二)中学习了如何通过Eureka实现服务的注册和发送,从而通过RestTemplate实现不同微服务之间的调用,加上LoadBalance注解之后实现负载均衡,那负载均衡的原理是什么呢? 目录 一, 负载均衡 1.1 负载均衡原理 1.2 源…...

vue2:路由前置守卫无法获取到this.$store.state.xxx

在获取到vuex的数据时候,想在router目录下的index.js文件去获取到vuex仓库中声明的全局变量,但是通过this.$store.stote.xxx去获取的时候,报错提示:$store未定义 一、store/index.js const store new Vuex.Store({state: {// 属…...

Unity的碰撞检测(五)

温馨提示:本文基于前一篇“Unity的碰撞检测(四)​​​​​​​”继续探讨两个游戏对象具备刚体的BodyType均为Dynamic,但是Collision Detection属性不同的碰撞检测,阅读本文则默认已阅读前文。 (一)测试说明 在基于两…...

Flutter笔记:Flutter的应用生命周期状态(lifecycleState)管理

Flutter笔记 Flutter的应用生命周期状态(lifecycleState)管理 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/…...

代碼隨想錄算法訓練營|第五十四天|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组。刷题心得(c++)

讀題 300.最长递增子序列 看完代码随想录之后的想法 思想上很簡單,dp[i]表示i之前的包括i的numbers[i]節尾的最長上升子序列的長度 並且透過兩層迴圈,一層遍歷全部,一層遍歷到i,透過比較當前dp[i]還是dp[j] 1哪個比較大&…...

正点原子嵌入式linux驱动开发——Linux 串口RS232/485/GPS 驱动

串口是很常用的一个外设,在Linux下通常通过串口和其他设备或传感器进行通信,根据 电平的不同,串口分为TTL和RS232。不管是什么样的接口电平,其驱动程序都是一样的,通过外接RS485这样的芯片就可以将串口转换为RS485信号…...

HDFS工作流程和机制

HDFS写数据流程(上传文件) 核心概念--Pipeline管道 HDFS在上传文件写数据过程中采用的一种传输方式。 线性传输:客户端将数据写入第一个数据节点,第一个数据节点保存数据之后再将快复制到第二个节点,第二节点复制给…...

CMMI/ASPICE认证咨询及工具服务

服务概述 质量专家戴明博士的名言“如果你不能描述做事情的过程,那么你不知道你在做什么”。过程是连接有能力的工程师和先进技术的纽带,因此产品开发过程直接决定了产品的质量和研发的效率。 经纬恒润可结合多体系要求,如IATF16949\ISO26262…...

【NI-DAQmx入门】计数器

1.计数器的作用 NI产品的计数器一般来说兼容TTL信号,定义如下:0-0.8V为逻辑低电平,2~5V为高电平,0.8-2V为高阻态,最大上升下降时间为50ns。 计数器可以感测上升沿(从逻辑低到逻辑高的转变)和下降…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...

土建施工员考试:建筑施工技术重点知识有哪些?

《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...