一种应用于卷帘快门相机的视觉惯性融合连续时间表示方法

本文主要是介绍一种应用于卷帘快门相机的视觉惯性融合连续时间表示方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

样条融合:一种应用于卷帘快门相机的视觉惯性融合连续时间表示方法

    • 一、论文总结
    • 一、基于累积B样条插值公式推到如下

一、论文总结

论文总结:
样条融合:一种应用于卷帘快门相机的视觉-惯性融合连续时间表示方法本文介绍了一种利用卷帘式CMOS相机和MEMS IMUs等传感器进行SLAM和视觉惯性标定的方法。利用相机轨迹的连续时间模型,融合来自其它不同步的高速率传感器的信息,同时限制状态大小。对相机的卷帘快门进行建模,并能在惯性测量中产生误差。该模型不局限于视觉惯性SLAM,还可以简化其他传感器的集成,如旋转SICK激光雷达。
本文方法的核心是一个SLAM系统连续的轨迹表示。我们假设系统需满足如下性质:
1) 允许系统在线和批量运行
2) 系统具有C2的连续性,使我们能够预测IMU的测量值
3) 具有一个很好的近似最小扭矩轨迹
4) 是可参数化且无奇异点的刚体运动
为满足以上性质,本文选择累积B样条插值法,这种方法允许在样条曲线上的任意一点计算解析时间倒数。可以很容易地合成加速度计和陀螺仪的测量值,反过来利用他们对观测到的测量值形成直接误差。
连续时间框架的另一个优点是处理卷帘快门相机。虽然卷帘快门相机的射影几何形状与全局快门相机相同,但图像的每一行都是在不同的时间内曝光的,每一行都比上一行延迟得更久。当相机在运动时,这可能导致图像出现扭曲和倾斜。使用相机运动的连续时间模型,将图像的每一行看作是单独曝光的,如图1所示。
图1

此外本文还给出了视觉和惯性数据的生成模型,通过最小化观测值和预测值之间的差值所形成的目标函数,可批量的求解样条曲线和相机参数,利用连续时间公式,可以对重投影误差和惯性误差进行均匀处理,并根据设备规格或校准计算出它们各自的信息矩阵进行加权。
文章实验部分,进行了仿真和实际数据的对比。首先在一个模拟的单目卷帘相机数据集上给出滑动窗口的视觉测试结果。然后在实际视惯SLAM系统采集的数据集上做了相应测试。结果验证了本文提出的基于连续时间下的B-样条插值方法具有良好的预测效果。

一、基于累积B样条插值公式推到如下

注:为了描述方便以下公式是以截图形式展现

  1. 累积 B-样条插值基本公式如下:
    公式1(1)

值得注意的是B为基函数,p为控制点。
用矩阵的形式表达:
在这里插入图片描述 (2)

在这里插入图片描述 (3)
其中
在这里插入图片描述 (4)
基于累积B-样条插值法公式,在SE(3)下的表达如下:
在这里插入图片描述 (5)
指数对数映射之后得到:
在这里插入图片描述 (6)
假控制点个数k=4,得到:
在这里插入图片描述(7)
展开得到:
在这里插入图片描述(8)
其中B(u(t))表达如下:
在这里插入图片描述 (9)
上式(9)中红色方框矩阵的计算过程手动推到如下:
在这里插入图片描述
最终得到SE(3)下三次累积B-样条的公式变成了如下形式:
在这里插入图片描述(10)

基于以上B-样条公式可以对IMU数据进行插值,推导过程如下:
首先IMU误差模型表达如下:
在这里插入图片描述 (11)
用B-样条方法可以得到连续时间下的陀螺仪角速率和加表的加速度值,重新表达以上公式,如下:
在这里插入图片描述 (12)
其中R,P是矩阵T的子集,要求出R的一介导和P的二阶导,需求出T矩阵的一介二阶导。将矩阵T表示公式简化如下:
在这里插入图片描述(13)
其中对T矩阵求一介二阶偏导如下:
在这里插入图片描述 (14)
求出这个公式,需要求出Ai的一阶二阶导数,计算公式如下:
在这里插入图片描述(15)
这里以A0计算推导为例,A1,A2推导步骤类似,这里就只推导A0:
首先对A0泰勒展开:
在这里插入图片描述(16)
求一阶导如下:
在这里插入图片描述 (17)
求二阶导如下:
在这里插入图片描述 (18)
其中要求出A0以及A0的一介二阶导数,需要先求出B0以及它的一阶二阶导数。求解过程如下:
在这里插入图片描述 (19)
在这里插入图片描述 (20)
在这里插入图片描述(21)

同样基于以上步骤可以推导出A1,A2以及它们的一阶二阶导数。
如果将这个过程反推上去,就可以计算出连续时间下imu的角速率和加速度信息啦!!!

参考文献:
1.Spline Fusion: A continuous-time representation for visual-inertial fusion with application to rolling shutter cameras
2.A Spline-Based Trajectory Representation for Sensor Fusion
and Rolling Shutter Cameras
3.Research Notes and Jacobians:Continuous-Time Visual-Inertial Trajectory Estimation with Event Cameras
4.Sigma-Point Kalman Filtering for Integrated GPS and Inertial Navigation
5.General matrix representations for Bsplines
友情提示:代码下载需要C币,请事先判断是否对您有帮助,谨慎下载哦!!!

这篇关于一种应用于卷帘快门相机的视觉惯性融合连续时间表示方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/258816

相关文章

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

Windows 上如果忘记了 MySQL 密码 重置密码的两种方法

《Windows上如果忘记了MySQL密码重置密码的两种方法》:本文主要介绍Windows上如果忘记了MySQL密码重置密码的两种方法,本文通过两种方法结合实例代码给大家介绍的非常详细,感... 目录方法 1:以跳过权限验证模式启动 mysql 并重置密码方法 2:使用 my.ini 文件的临时配置在 Wi

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

最详细安装 PostgreSQL方法及常见问题解决

《最详细安装PostgreSQL方法及常见问题解决》:本文主要介绍最详细安装PostgreSQL方法及常见问题解决,介绍了在Windows系统上安装PostgreSQL及Linux系统上安装Po... 目录一、在 Windows 系统上安装 PostgreSQL1. 下载 PostgreSQL 安装包2.

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认