【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--作业

2023-11-05 20:52

本文主要是介绍【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--作业,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0. 题目

在这里插入图片描述

1. T1 逆深度参数化时的特征匀速模型的重投影误差

参考常鑫助教的答案:思路是将i时刻的观测投到world系,再用j时刻pose和外参投到j时刻camera坐标系下,归一化得到预测的二维坐标(这里忽略了camera的内参,逆深度是在camera系下)
要计算的是i时刻和j时刻之间的补偿之后的u坐标的重投影误差,所以i时刻也要补偿,具体步骤见下,式(5)参照14讲P47的公式,已经用过很多次了。
在这里插入图片描述

2. T2 阅读Kalibr论文,总结基于 B 样条的时间戳估计算法流程

2.1 答题

论文题目: Unified Temporal and Spatial Calibration for Multi-Sensor Systems
多传感器的联合时空标定

B(ackground):标定时time offset和外参是分开标的(但实际上二者应该有联系)。
I(ntention):在不支持硬件或者软件上时间戳同步的多传感器上实现较高精度的多传感器联合时空标定。
M(ethod):提出一个estimator和一个框架来联合标定。
R(esult):精度高。
C(conclusion):好,有望拓展到其他的sensor联合标定。

论文contri(bution):

  1. 提出一种方法标定fixed时间延迟
  2. 推导一个estimator可以同时标时间戳和外参(rotation only)
  3. 数据集和真实数据上的结果证明estimator估计时间戳很准
  4. 准是因为很好的用了之前别人没用的加计数据

助教的学术话版本:

  1. 提出一种统一的使用批量、连续时间下的最大似然估计方法,估计多传感器之间的固定时间戳延迟。
  2. 提出一个可以同时校准相机和IMU之间位姿和时间戳延迟的估计模型。
  3. 这个估计模型应用在仿真数据和真实数据上,都有足够的灵敏度估算出时间戳延迟。
  4. 证明时间戳延迟估计明显受益于在加速度测量中所包含的附加信息。

论文主要理论(助教答案):
在这里插入图片描述

本文方法的主要贡献是把估计时间戳延迟和外参R整合到一个MLE(最大似然估计)框架中,而这样做的基础就是B样条方法,使用B样条可以 parameterize the motion of the device.具体到VI的标定就是下面的内容:

  • B样条参数化将IMU位姿转化为 C ( ) \bm C() C() funtion和旋转向量 φ ( t ) \varphi(t) φ(t)
  • 将平移表示为 t ( t ) \bm t(t) t(t)
  • 速度和加速度可通过 t ( t ) \bm t(t) t(t)求一二阶导而得,
  • 角速度也可由旋转向量推导而得

在这里插入图片描述

如此可以使用B样条参数化所有的构建residual所需的variable,对LSP进行优化求解即可优化出时间戳延迟旋转外参R

在这里插入图片描述

2.2 B样条拓展

下图参考博客:https://blog.csdn.net/weixin_43846627/article/details/104297637
在这里插入图片描述

关于B样条曲线函数,由控制顶点B样条基函数组成,是一系列解析基函数的加权和

原文中的式(1)
在这里插入图片描述
待估计变量被用B样条表示,而(1)中的 Φ ( t ) \bm \Phi(t) Φ(t)是基函数,其值为定值,所以优化待估变量就转化为优化权值向量 c \bm c c,时间戳是如此,其他的以此类推。

2.3 文中其他细节

  1. 可以根据物理性质和动态性给总残差加上正则项
    在这里插入图片描述

  2. B样条参数化可以使info mat的优化过程变稀疏

在这里插入图片描述

  1. 优化过程中信息矩阵中的各个部分与VIO各个参数的关系(这个看到很多论文针对其算法的有效性进行分析时,都研究过info mat)
    在这里插入图片描述

  2. temporal padding value 的选择影响优化的结果,理解为padding即给优化结果锚定一个优化范围,文中选择的是0.04senonds
    在这里插入图片描述

  3. 用最佳拟合线和理论线的斜率差和斜率差与0.5的RMS error,使用LSP来评估结果(这里没太看懂为什么理论值是0.5)
    在这里插入图片描述

  4. 结果表明:使用所有IMU数据进行时空联合标定(即同时使用了gyro和acc数据)的精度高,variance小,对比项是gryo only,acc only,分开标定这三项
    在这里插入图片描述

文献拓展:
[7]提出连续时间的batch估计time offset方法,basis function approach: P. T. Furgale, T. D. Barfoot, and G. Sibley, “Continuous-time batch estimation using temporal basis functions,” in Proceedings of the IEEE International Conference on Robotics and Automation (ICRA), St. Paul, MN, 14-18 May 2012, pp. 2088–2095.
[14]B样条方法: R. H. Bartels, J. C. Beatty, and B. A. Barsky, An Introduction to Splines for use in Computer Graphics and Geometric Modeling. Los Altos, California, USA: Morgan Kaufmann Publishers Inc., 1987.

3. T3 推导时间戳延迟的雅克比

文章即北大的提出轨迹匀速模型:Weibo Huang, Hong Liu, and Weiwei Wan. “Online nitialization and extrinsic spatial-temporal calibration for monocular visual-inertial odometry”. In: arXiv preprint arXiv:2004.05534 (2020).

助教答案:

在这里插入图片描述

在这里插入图片描述

这篇关于【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--作业的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

对postgresql日期和时间的比较

《对postgresql日期和时间的比较》文章介绍了在数据库中处理日期和时间类型时的一些注意事项,包括如何将字符串转换为日期或时间类型,以及在比较时自动转换的情况,作者建议在使用数据库时,根据具体情况... 目录PostgreSQL日期和时间比较DB里保存到时分秒,需要和年月日比较db里存储date或者ti

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二