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

0. 内容

在这里插入图片描述

1. 时间戳同步问题及意义

时间戳同步的原因:如果不同步,由于IMU频率高,可能由于时间戳不同步而导致在两帧camera之间的时间内用多了或者用少了IMU的数据,且时间不同步会导致我们首尾camera和IMU数据时间不同,会使估计存在误差,使我们的系统精度下降甚至出现错误的预测。如果以IMU时间为准确的,同步之后,我们可以用时间戳偏移对系统估计的 T w b T_{wb} Twb进行补偿(思路1),或者能够得到与首尾IMU时间相同的时间对应的两帧camera的观测(思路2),提升系统精度。

时间戳同步有两种方式:硬同步和软同步
在这里插入图片描述

  • 硬同步即硬件同步:即IMU(或其他传感器)产生数据的同时给一个信号,可用于出发MCU中断,然后触发camera曝光,使camera输出图像的时间戳本身就和IMU同步,从而实现硬件同步。
  • 软同步即软件同步:在软件上对收到的IMU和camera数据进行运算,解算出时间戳。具体来说,camera和IMU从产生到到达MCU是需要时间的,这段时间分别叫 t d c a m t_d^{cam} tdcam t d i m u t_d^{imu} tdimu,产生时间分别加上这个时延就的到了MCU采样的时间戳,二者相减就是真正的时间戳,这里我们只需要这个时间戳的相对量,所以我们可以假设IMU是准确的, t d i m u − t d c a m t_d^{imu}-t_d^{cam} tdimutdcam就是我们MCU所知的时间戳偏移 t d t_d td

在这里插入图片描述

1.1 思路1:补偿camera pose的估计(轨迹匀速模型)

位姿补偿公式思路:假设相机在两帧间是匀速运动。VIO输出的是系统在world系下的pose,即 T w b T_{wb} Twb,我们需要补偿的是 T w c T_{wc} Twc,于是就结合VIO输出的角速度,速度反向推到cam时刻(补偿了 t d t_d td之后的时刻),然后再用外参 T b c T_{bc} Tbc转到cam系下即可:
在这里插入图片描述

在VIO残差中进行补偿:

在这里插入图片描述

在这里插入图片描述

  1. 同样,我们VIO输出的是 T w b T_{wb} Twb所以我们要先将landmark转换到body,再转换到camera系:
  2. 这里实际上是在归一化平面,并没在像素平面(重投影误差的uv实际上是归一化平面的坐标,通过特征提取或者光流匹配而得),忽略了相机内参。
    将式(3)带入可的式(8)

重投影误差对时间戳延时 t d t_d td的Javobian:
在这里插入图片描述

式(9)推导,只看中间最复杂的部分, e x p ( ω b i t d + ω b i δ t d ) exp(\omega_{b_i}t_d+\omega_{b_i}\delta t_d) exp(ωbitd+ωbiδtd),这里好理解点的话实际上角速度 ω t \omega t ωt可以写成 ( ω t ) ∧ (\omega t)^{\wedge} (ωt),因为 ω t \omega t ωt可以代表一个三维的旋转矩阵,按照旋转的表达方式是轴角表示,即 旋转角度*旋转轴,可以看之前的一篇知乎
在这里插入图片描述
所以上述部分可以表示成 e x p [ ( ω b i t d + ω b i δ t d ) ∧ ] exp[(\omega_{b_i}t_d+\omega_{b_i}\delta t_d)^\wedge] exp[(ωbitd+ωbiδtd)],这只是便于理解,正常还是按照 ω t \omega t ωt表示,不加反对称符号。
所以,用到两个公式:

  1. 按照BCH公式的SO3版本:
    在这里插入图片描述
  2. 还有 e x e^x ex的无穷级数展开(跟太了展开差个无穷小), e x = 1 + x + x 2 2 ! + x 3 3 ! + … e^x=1+x+\frac{x_2}{2!}+\frac{x_3}{3!}+\ldots ex=1+x+2!x2+3!x3+,下面因为 ω b i δ t d \omega_{b_i}\delta t_d ωbiδtd较小,所以二阶以上直接忽略
    所以
    e x p ( ω b i t d + ω b i δ t d ) = e x p ( ω b i t d ) ∗ e x p { [ J r ( ω b i t d ) ω b i δ t d ] ∧ } = e x p ( ω b i t d ) ∗ { I + [ J r ( ω t d ) ω δ t d ] ∧ } \begin{align*}\ exp(\omega_{b_i}t_d+\omega_{b_i}\delta t_d) &=exp(\omega_{b_i}t_d) * exp\{[J_r(\omega_{b_i}t_d)\omega_{b_i}\delta t_d]^\wedge\}\\ &=exp(\omega_{b_i}t_d) * \{I + [J_r(\omega t_d)\omega \delta t_d]^\wedge \}\\ \end{align*}  exp(ωbitd+ωbiδtd)=exp(ωbitd)exp{[Jr(ωbitd)ωbiδtd]}=exp(ωbitd){I+[Jr(ωtd)ωδtd]}
    将上式带入式(9)就得BCH近似后的结果,因为是求关于时间戳 t d t_d td的Jacobian,所以将与 δ t d \delta t_d δtd有关的都拎出来,剩下的直接扔掉,就得到完整的式(9)。

由于补偿camera pose的估计改变了姿态,所以Jacobian的求取有些复杂,QinTong(2018,在待读文献2中)有一个想法是直接补偿我们特征点的测量值,计算出补偿值,应用于真实观测值上得到一个虚拟的观测值。

1.2 思路2:补偿观测值坐标(特征匀速模型)

在这里插入图片描述
具体思路是:根据特征匹配可以知道特征点uv的变化量,假设特征点是匀速运动,可以算出特征点的速度,知道了时间戳偏移 t d t_d td之后即可求出补偿后的虚拟的观测值坐标。

在这里插入图片描述
补偿观测值坐标由于只改变了观测的坐标,所以求Jacobian较简单,看(13)中与 t d t_d td有关的只有 − u , − v -u,-v u,v,所以求导就是 − V -V V

QinTong的paper论文实验结果和结论:

  • 时间戳补偿算法有用;
  • 时间戳延迟越大,系统精度下降越多。
    在这里插入图片描述

1.3 两种方法对比

  • 特征匀速模型的假设更强,是假设特征是匀速运动的,而实际上是非线性运动,并非匀速,且补偿方法也是线性的。
  • 而轨迹匀速模型的假设更接近实际,假设两帧间camera是匀速运动,补偿方法也是非线性的,所以精度比前者高。
    在这里插入图片描述
    实际中对时间戳偏差估计的收敛速度,轨迹匀速法更快。

2. 疑惑

这个是先采集一段数据先标定出来IMU和Camera的时间戳,然后按照上面的任意一种方法补偿到系统中,还是说边估计边补偿?

看了些论文的标题,应该是先标定出来的,后面看了论文再来填这个坑。

3. 时间戳同步算法扩展

在这里插入图片描述

前面有系统初始化完成之后来估计 t d t_d td的,当系统初始化没有完成时 t d t_d td如何估计呢?
可以通过VO/SFM求出KF pose,利用 T b c T_{bc} Tbc外参转到body系下,求出i,j时刻的相对位姿,跟IMU预计分量对比构建误差,多时刻观测量可进行BA,优化出时间戳(也可优化出gyro bias,速度等,但是优化的量多了之后,优化精度可能会下降)

在这里插入图片描述

4. 总结

本章主要讨论了在VIO系统中对camera和IMU时间戳进行对齐的问题,着重讨论了将Camera对齐IMU的两种方法:轨迹匀速模型和特征匀速模型。并对其他的VI时间戳同步算法进行了扩展。

  1. 针对轨迹匀速模型特征匀速模型
  • 前者假设两个KF间的camera之间是匀速运动,估计出时间戳延时 t d t_d td之后,将其补偿在估计的camera位姿上,该方法对VIO数据的pose进行了改动,对于系统Jacobian的改动较大,但假设相对后者较弱,精度比后者高。
  • 后者假设两帧KF间的特征点是匀速运动,估计出 t d t_d td后,将其补偿在特征点的观测上,计算出补偿之后的观测,该方法对Jacobian改动较小,而且为线性改动,但缺点也较为明显,因为该方法假设较强(特征较难满足匀速运动),所以精度比前者低,时间戳收敛速度比前者慢,但代码改动小,计算速度简单。
  1. 另外对时间戳同步算法进行了扩展:
  • 待读4改为对IMU进行时间戳补偿,精度更高;
  • 待读5用camera的pose计算出traj,进而得出 ω , a \omega, a ω,a,与IMU的进行align得出 t d t_d td(这个不清楚,需要读原文)
  • 待读6(提出Kalibr,行业标杆)使用标定板出一段camera pose,再使用B样条(B Spline)进行拟合,一阶,二阶导可以得出 ω , a \omega, a ω,a,和IMU数据进行align,优化出时间戳,不过使用的是autodiff 数值Jacobian。
  • 待读7推导出6的解析李群Jacobian。
还有疑惑,时间戳便宜$t_d$是先标定出来还是在优化过程中进行呢?后续再解。

5. 作业

在这里插入图片描述

6. 待读文献

1. 北大的,提出轨迹匀速模型

Weibo Huang, Hong Liu, and Weiwei Wan. “Online initialization and extrinsic spatial-temporal calibration for monocular visual-inertial odometry”. In: arXiv preprint arXiv:2004.05534 (2020).

2. QinTong提出特征匀速模型

Tong Qin and Shaojie Shen. “Online temporal calibration for monocular visual-inertial systems”. In: RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE. 2018, pp. 3662–3669.

3. PTAM的特征匀速模型思路

Georg Klein and David Murray. “Parallel tracking and mapping on a camera phone”. In: 2009 8th IEEE International Symposium on Mixed and Augmented Reality. IEEE. 2009, pp. 83–86.
这篇是2009年的PTAM,里面的思想上面QinTong这篇一样。

4. 认为camera是准的,补偿IMU时间戳

Yonggen Ling et al. “Modeling varying camera-imu time offset in optimization-based visual-inertial odometry”. In: Proceedings of the European Conference on Computer Vision (ECCV). 2018, pp. 484–500.
这篇相对于第1节的算法,假设更弱,虽然轨迹匀速是假设camera见是匀速运动,但是如果是Slinding Window中的KF相隔时间久,可能存在较大时间差,匀速假设不易成立。
这篇改为补偿IMU,由于IMU频率高,数据之间的匀速假设更接近真实值,所以精度会更高,但是每次估计出新的时间戳都需要重新进行IMU预先积分,导致计算量增大。(没看过原文,IMU预积分不能找出来和时间戳的关系吗,这样就不用每次重新计算了)。

5. 用camera估出来的 ω , a \omega,a ω,a和IMU测量值进行align,得到时间戳偏移

Janne Mustaniemi et al. “Inertial-based scale estimation for structure from motion on mobile devices”. In: 2017 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE. 2017, pp. 4394–4401.

6. ETH大组,Kalibr论文(行业标杆,必读)

Paul Furgale, Joern Rehder, and Roland Siegwart. “Unified temporal and spatial calibration for multi-sensor systems”. In: 2013 IEEE/RSJ International Conference on Intelligent Robots and Systems. IEEE. 2013, pp. 1280–1286.
Roland Siegwart好象是组的负责人。
使用标定板出一段camera pose,再使用B样条(B Spline)进行拟合,一阶,二阶导可以得出 ω , a \omega, a ω,a,和IMU数据进行align,优化出时间戳。但是解析解太复杂,这篇论文使用的autodiff数值Jacobian

7. 推导出解析Jacobian(DSO那个组,公式较多)

Christiane Sommer et al. “Efficient derivative computation for cumulative B-splines on Lie groups”. In: Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020, pp. 11148–11156.
丹尼尔 crimse这个组

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java基础 特殊文件

1.Properties属性文件: 1.1使用Properties读取属性文件里的键值对数据: package specialFile;import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.Enumeration; import java.util.Propert…

读高性能MySQL(第4版)笔记21_读后总结与感想兼导读

1. 基本信息 高性能MySQL:经过大规模运维验证的策略(第4版) High Performance MySQL, Fourth Edition [美] Silvia Botros(西尔维亚博特罗斯);Jeremy Tinley(杰里米廷利) 电子工业出版社,2022年10月出版 1.1. 读薄率 书籍总字…

【机器学习合集】优化目标与评估指标合集 ->(个人学习记录笔记)

文章目录 优化目标与评估指标1. 优化目标1.1 两类基础任务与常见优化目标1.2 分类任务损失0-1损失交叉熵损失与KL散度softmax损失的理解与改进Hinge损失 1.3 回归任务损失L1/L2距离L1/L2距离的改进 Huber loss 2. 评测指标2.1 分类任务中评测指标准确率(查准率)/召回率(查全率)…

修改svc的LoadBalancer的IP引发的惨案

文章目录 背景修改externalIPs的操作api-server报错日志挽救教训 背景 k8s集群没有接外部负载均衡,部署istio的时候ingressgateway一直pending。 于是手动修改了这个lb svc的externalIP,于是k8s就崩了,如何崩的,且听我还道来。 …

CRM客户管理系统源码 带移动端APP+H5+小程序

CRM客户管理系统源码 带移动端APPH5小程序 开发环境: thinkphp mysql 功能介绍: 1、 办公管理:审批管理、工作报告、日程管理、办公审批、公告管理 2、 客户管理:我的客户、客户列表、成交客户、行业类别、预查、地区列表、客户状态、客…

【Unity数据交互】JSON开山篇

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

Rabbitmq----分布式场景下的应用

服务异步通信-分布式场景下的应用 如果单机模式忘记也可以看看这个快速回顾rabbitmq,在做学习 消息队列在使用过程中,面临着很多实际问题需要思考: 1.消息可靠性 消息从发送,到消费者接收,会经理多个过程: 其中的每一…

嵌入式软件找实习需要掌握哪些知识?

嵌入式软件找实习需要掌握哪些知识? 嵌入式软件实习暂时不用刷力扣。具体需要掌握哪些知识每个公司的要求都不太一样,因为嵌入式也有很多细分领域,单片机、C语言是需要熟悉的,最近很多小伙伴找我,说想要一些嵌入式资料…

如何在VScode中让printf输出中文

如何在VScode中让printf输出中文? 1、在“Visual Studio Code”图标上右击,弹出对话框。见下图: 2、点击“以管理员身份运行”,得到下图: 3、点击“UTF-8”按钮,得到下图: 4、点击“通过编码重…

什么是时序图,看了你就明白

目录 前言: 什么是时序图: 时序图的组成元素: 1. 角色(Actor) 2. 对象(Object) 3. 生命线(LifeLine) 4. 激活期(Activation) 5. 消息类型(Message) 6.组合片段(Combined fragment) 时序图的绘制规则:​ 绘制时序图的3步: 1.划清边界&#xf…

Vue $nextTick

我们用一个例子来说明$nextTick的作用: 我们用一个变量showIpt来控制input框的显示和隐藏,默认是隐藏。 我们点击一个按钮后显示这个输入框的同时,input还要自动获取焦点。 但是我们点击按钮过后并没有生效。 为什么?this.show…

Linux云服务器限制ip进行ssh远程连接

对Linux云服务器限制IP进行SSH远程连接的原因主要有以下几点: 增加安全性:SSH是一种加密的网络传输协议,可以保护数据的机密性和完整性。通过限制SSH连接的IP地址,可以防止未经授权的访问和数据泄露。只有拥有访问权限的IP地址才…

关于亚马逊 CodeWhisperer 的使用体验

Amazon CodeWhisperer 是亚⻢逊出品的一款基于机器学习的 AI 编程助手,可实时提供代码建议。现在已正式可用,面向个人提供免费服务,通过在各种流行的IDE里集成 CodeWhisperer(包括我们常用的 JetBrains 产品包及 Vscode 工具集&am…

什么是蓝桥杯?什么是蓝桥STEMA考试?

第十五届蓝桥大赛赛事安排? STEMA考试11月(考试时间11月26日) STEMA考试1月(2024年1月) STEMA考试3月(2024年3月) 第十五届蓝桥杯省赛(2024年4月待定) 第十五届蓝桥杯国赛(2024年5月待定) 注:以上时间具体以组委会官方发布为准。 01.蓝桥杯 蓝桥杯全国软件和…

【C++】C++入门(中)--引用

目录 一 引用概念 二 引用特性 三 常引用 四 引用使用场景 1 做参数 2. 做返回值 1 例一 2 例二 3 例三 4 例四 五 传值, 传引用效率比较 六 值和引用的作为返回值类型的性能比较 七 引用和指针的区别 一 引用概念 引用不是新定义一个变量,而是给已存…

2015年亚太杯APMCM数学建模大赛B题城市公共交通服务水平动态评价模型求解全过程文档及程序

2015年亚太杯APMCM数学建模大赛 B题 城市公共交通服务水平动态评价模型 原题再现 城市公共交通服务评价是城市公共交通系统建设和提高公共交通运营效率的重要组成部分。对于公交企业,管理和规划部门,传统公交车站、线路和换乘枢纽的规划数据只是基于主…

深入探究ASEMI肖特基二极管MBR60100PT的材质

编辑-Z 在电子零件领域中,肖特基二极管MBR60100PT因其出色的性能和广泛的应用而显得尤为关键。理解其材质不仅有助于我们深入理解其运作原理,也有助于我们做出更合适的电子设计。那么,肖特基二极管MBR60100PT是什么材质呢? 首先&#xff0c…

【Ansible自动化运维工具 1】Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)

Ansible常用模块 一、Ansible1.1 简介1.2 工作原理1.3 Ansible的特性1.3.1 特性一:Agentless,即无Agent的存在1.3.2 特性二:幂等性 1.4 Ansible的基本组件 二、Ansible环境安装部署2.1 安装ansible2.2 查看基本信息2.3 配置远程主机清单 三、…

子集生成算法:给定一个集合,枚举所有可能的子集

给定一个集合,枚举所有可能的子集。 (为简单起见,本文讨论的集合中没有重复元素) 1、方法一:增量构造法 第一种思路是一次选出一个元素放到集合中,程序如下: void print_subset(int n, int …

Hafnium简介和构建

安全之安全(security)博客目录导读 目录 一、Hafnium简介 二、Hafnium构建 2.1.1 先决条件 2.1.1.1 构建Host 2.1.1.2 工具链 2.1.1.3 依赖 2.1.1.4 获取源码 2.1.2 构建 一、Hafnium简介 可信固件为Armv8-A、Armv9-A和Armv8-M提供了安全软件的参考实现。它为SoC开发人…