IMU预积分的过程详解

news2024/12/26 11:14:43

一、IMU和相机数据融合保证位姿的有效性:

  • 当运动过快时,相机会出现运动模糊,或者两帧之间重叠区域太少以至于无法进行特征匹配,所以纯视觉SLAM对快速的运动很敏感。而有了IMU,即使在相机数据无效的那段时间内,也能保持一个较好的位姿估计,这是纯视觉
    SLAM 无法做到的。

  • 当图像发生变化时,本质上我们没法知道是相机自身发生了运动,还是外界条件发生了变化,所以纯视觉SLAM难以处理动态的障碍物。而IMU能获取自己的运动信息,从某种程度上减轻动态物体的影响

  • IMU虽然可以测得角速度和加速度,但这些量都存在明显的漂移,使得积分两次得到的位姿数据非常不可靠。相比于IMU,相机数据基本不会有漂移,所以相机数据可以有效地估计并修正IMU读数中的漂移使得在慢速运动后的位姿估计依然有效。

二、IMU和Camera数据融合获取位姿的主要流程

1、利用相机和IMU分别进行图像采集和惯性数据采集,且IMU的采集频率大于相机的采集频率

2、提取相机获取的每一顿图像的特征点,然后提取特征点的描述子,匹配特征点计算相机位姿

3、对IMU得到的多组IMU数据进行预积分,计算出两图像对应的IMU的位姿和速度

4、IMU初始化,这一步的目的是获取IMU参数较好的初始值: 速度、重力以及Bias。

在这里插入图片描述

三、构建视觉残差惯性残差的统一损失函数进行联合优化

  • 视觉里程计VO通过最小化相关键帧的重投影误差,计算得到相机的位姿和地标的位置
  • IMU对相邻两帧的位姿之间添加约束,而且对每一帧添加了状态量:陀螺仪和加速度的偏差

四、IMU预积分过程

1、IMU测量模型

在这里插入图片描述

角速度是陀螺仪得到的, B是刚体,IMU与相机的物体坐标系,W是世界坐标系,与角速度和陀螺仪的偏置有关系,与陀螺仪存在的噪声有关,

加速度是由R旋转乘加速度减重力加速度的差,加速度计的偏置,噪声

2、IMU运动学模型

在这里插入图片描述
某一时刻的旋转乘角速度, 速度与加速度是有关系的,位姿也可以通过速度求解出来的

3、基于运动学模型,可得t和t+Δt时刻状态关系

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

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

相关文章

python网络爬虫实例

目录 1、访问百度 2、输入单词百度翻译 3、豆瓣电影排行榜 4、豆瓣电影top250 5、下载美女壁纸 1、访问百度 from urllib.request import urlopen url"http://www.baidu.com" respurlopen(url)with open("mybaidu.html",mode"w") as f:f.wr…

Java面试(JVM篇)——JVM 面试题合集 深入理解JVM虚拟机

关于什么是JVM? 作用: 运⾏并管理Java 源码⽂件所⽣成的Class⽂件,在不同的操作系统上安装不同的JVM ,从⽽实现了跨平台的保证。 ⼀般情况下,对于开发者⽽⾔,即使不熟悉JVM 的运⾏机制并不影响业务代码的…

【Java 进阶篇】Java XML解析:从入门到精通

XML(可扩展标记语言)是一种常用的数据格式,用于存储和交换数据。在Java中,XML解析是一项重要的任务,它允许您从XML文档中提取和操作数据。本篇博客将从基础开始,详细介绍如何在Java中解析XML文档&#xff0…

进程中的权限是如何操作的

任何一个进程都有父进程。所以,整个进程其实就是一棵进程树。而拥有同一父进程的所有进程都具有兄弟关系。 struct task_struct __rcu *real_parent; /* real parent process */ struct task_struct __rcu *parent; /* recipient of SIGCHLD, wait4() reports */ s…

超市商品管理系统 JAVA语言设计实现

目录 一、系统介绍 二、系统下载 三、系统截图 一、系统介绍 基于VueSpringBootMySQL的超市商品管理系统,超市区域模块、超市货架模块、商品类型模块、商品档案模块,分为用户网页端和管理后台,基于角色的访问控制,可将权限精确…

c++ qt连接操作sqlite

qt连接操作sqlite qt客户端编程,用到数据库的场景不多,但是部分项目还是需要数据库来保存同步数据,客户端用到的数据库,一般是sqlite。 Qt提供了数据库模块,但是qt本身的数据库模块并不好用,会有各种问题, 建议大家不要,可以自己封装数据库的操作。本篇博客介绍qt连接操…

AVS3:双向光流BIO

AVS3引入了双向光流(BI-directional Optical flow,BIO)技术,和H.266/VVC中的BDOF类似,BIO用于解决基于块的预测会存在块内某些区域仍会有偏差的现象导致需要划分更小的块。通过补偿小的像素区域的位移,BIO可以使用更大…

Leetcode刷题详解——最小覆盖子串

1. 题目链接:76. 最小覆盖子串 2. 题目描述: 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。 注意: 对于 t 中重复字符&#xf…

VSCode 自动格式化

1.打开应用商店,搜索 prettier code formatter ,选择第一个,点击安装。 2.安装完成后,点击文件,选择首选项,选择设置。 3.在搜索框内输入 save ,勾选在保存时格式化文件。 4.随便打开一个文件&a…

FineReport制作任务日历

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 博主接触FineReport帆软报表有一段时间了,正好前几天做了一个任务日历的需求,把每天完成的任务量直观的展示在日历上,方便管理者更好的监控各业务的完成情况,做完后想着…

蜣螂优化(DBO)求解置换流水车间调度问题(PFSP)

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年…

gin 框架出现runtime error: index out of range [0] with length 0

之前是这样的: category : c.Request.Form["type"][0] 加上这一句就变成了 fmt.Println(c.Request.FormFile("type")) category : c.Request.Form["type"][0]

你所瞧不上的东西正以另外一种方式kill you

简单的例子就是: 360se & 360ee的份额比你想象中的大. 360se浏览器,安全浏览器 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.196 Safari/537.36 360ee浏览器,极速浏览器 n…

摄像头工程师说 Camera-如何控制摄像头的输出尺寸(分辨率)

计算机视觉 Camera-如何控制摄像头的输出尺寸(分辨率) 摄像头工程师说 Camera-如何控制摄像头的输出尺寸(分辨率)windowingCroppingSkip/SubsampleScaleBinning总结 摄像头工程师说 Camera-如何控制摄像头的输出尺寸(分…

Google Chrome的新“IP保护”功能将隐藏用户的IP地址

导语:在保护用户隐私方面,Google Chrome正在测试一项名为“IP保护”的新功能。通过使用代理服务器掩盖用户的IP地址,这项功能能够增强用户的隐私保护。在意识到IP地址可能被用于秘密追踪后,Google希望在确保用户隐私的同时&#x…

《 汇编语言的系统学习》一、编程语言、机器语言与汇编语言

目录 《 汇编语言的系统学习》1、编程语言1.1 语言1.2 程序 2 编程语言分类2.1 机器语言2.2 汇编语言2.3 高级程序语言2.3.1 编译型2.3.1 解释型 《 汇编语言的系统学习》 1、编程语言 1.1 语言 定义:一种系统的,人与人之间通过声音、符号等进行交流的…

Qwt-QwtPlot类详解

1.概述 QwtPlot类是Qwt库中最重要的类之一,用于创建和管理绘图窗口。 QwtPlot类具有以下主要功能: 提供一个绘图窗口,可以在其中绘制简单或复杂的二维数据图。支持多种类型的图表,包括曲线图、柱状图、散点图等。能够自定义图表…

第一章: LangChain 生成与加载知识库并根据匹配内容回答问题

LangChain——让文本大模型更加智能化系列文章目录 第一章 langchain生成与加载向量库并根据匹配内容回答问题 文章目录 LangChain——让文本大模型更加智能化系列文章目录前言文章简介一、使用步骤1.引入库2.LLM加载3.数据加载4.数据切分与转换向量5.构建prompt5.查询知识库并…

进程的优先级与LAMP项目部署实战

一、进程的优先级(扩展) 1、什么是进程的优先级 Linux是一个多用户、多任务的操作系统,系统中通常运行着非常多的进程。哪些进程先运行,哪些进程后运行,就由进程优先级来控制 思考:什么时候需要用到进程…

线性表操作的实现--顺序表

本文参考朱战力老师的数据结构与算法--使用C语言一书 文章目录 前言 一、线性表是什么? 二、具体实现 1.顺序表的定义 2.初始化ListInitiate(L) 3.求当前元素个数ListLength(L) 4.插入元素ListInsert(L&…