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

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

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

    • 一、论文总结
    • 一、基于累积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

相关文章

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

CentOS 7部署主域名服务器 DNS的方法

《CentOS7部署主域名服务器DNS的方法》文章详细介绍了在CentOS7上部署主域名服务器DNS的步骤,包括安装BIND服务、配置DNS服务、添加域名区域、创建区域文件、配置反向解析、检查配置... 目录1. 安装 BIND 服务和工具2.  配置 BIND 服务3 . 添加你的域名区域配置4.创建区域