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

这篇具有很好参考价值的文章主要介绍了【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0. 内容

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

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

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

时间戳同步有两种方式:硬同步和软同步
【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记,算法,机器人

  • 硬同步即硬件同步:即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

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

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第8章--相机与IMU时间戳同步--笔记,算法,机器人

在VIO残差中进行补偿:

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

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

  1. 同样,我们VIO输出的是 T w b T_{wb} Twb所以我们要先将landmark转换到body,再转换到camera系:

  2. 这里实际上是在归一化平面,并没在像素平面(重投影误差的uv实际上是归一化平面的坐标,通过特征提取或者光流匹配而得),忽略了相机内参。

  3. 将式(3)带入可的式(8),其中, [ R w b i e x p ( − w b i t d ) ] T = e x p ( w b i t d ) R w b i T [R_{wb_i}exp(-w_{b_i}t_d)]^T=exp(w_{b_i}t_d)R_{wb_i}^T [Rwbiexp(wbitd)]T=exp(wbitd)RwbiT,即 [ e x p ( − w b i t d ) ] T = e x p ( w b i t d ) [exp(-w_{b_i}t_d)]^T=exp(w_{b_i}t_d) [exp(wbitd)]T=exp(wbitd),里代数取反。

重投影误差对时间戳延时 t d t_d td的Javobian:
【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记,算法,机器人

式(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可以代表一个三维的旋转矩阵,按照旋转的表达方式是轴角表示,即 旋转角度*旋转轴,可以看之前的一篇知乎
【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记,算法,机器人
所以上述部分可以表示成 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版本:
    【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记,算法,机器人
  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 ( ω b i t d ) ω b i δ 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_{b_i} t_d)\omega_{b_i} \delta t_d]^\wedge \}\\ \end{align*}  exp(ωbitd+ωbiδtd)=exp(ωbitd)exp{[Jr(ωbitd)ωbiδtd]}=exp(ωbitd){I+[Jr(ωbitd)ωbiδtd]}
    将上式带入式(9)就得BCH近似后的结果,因为是求关于时间戳 t d t_d td的Jacobian,整理得:
    f l c i ( t d + δ t d )   ≈ R c b e x p ( ω b i t d ) ∗ I ∗ R ω b i T ∗ C + p c b + R c b e x p ( ω b i t d ) ∗ { I ∗ R ω b i T v b i w δ t d + [ J r ( ω b i t d ) ω b i δ t d ] ∧ R ω b i T ∗ C + [ J r ( ω b i t d ) ω b i δ t d ] ∧ R ω b i T ∗ v b i w δ t d } \begin{align} f_l^{c_i}(t_d+\delta t_d)\ & \approx R_{cb}exp(\omega_{b_i}t_d)*I*R_{\omega b_i}^T*C+p_{cb} \tag{9a} \\ &\quad+R_{cb}exp(\omega_{b_i}t_d)* \{ \notag \\ &\quad I*R_{\omega b_i}^Tv_{b_i}^w\delta t_d \tag{9b}\\ &\quad+[J_r(\omega_{b_i} t_d)\omega_{b_i} \delta t_d]^\wedge R_{\omega b_i}^T *C \tag{9c}\\ &\quad + [J_r(\omega_{b_i} t_d)\omega_{b_i} \delta t_d]^\wedge R_{\omega b_i}^T * v_{b_i}^w\delta t_d \tag{9d}\\ & \quad\} \notag \end{align} flci(td+δtd) Rcbexp(ωbitd)IRωbiTC+pcb+Rcbexp(ωbitd){IRωbiTvbiwδtd+[Jr(ωbitd)ωbiδtd]RωbiTC+[Jr(ωbitd)ωbiδtd]RωbiTvbiwδtd}(9a)(9b)(9c)(9d)

上式中 C C C是(8)中的简记,(9a)即为式(8),剩下的(9d)可能是反对称约掉了为0?或者是跟 δ t d \delta t_d δtd不是直接关系,所以就扔掉了,(9a,9b,9c)整理即得完整式(9),对 δ t d \delta t_d δtd求偏导可得(10)。

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

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

【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记,算法,机器人
具体思路是:根据特征匹配可以知道特征点uv的变化量,假设特征点是匀速运动,可以算出特征点的速度,知道了时间戳偏移 t d t_d td之后即可求出补偿后的虚拟的观测值坐标。

【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记,算法,机器人
补偿观测值坐标由于只改变了观测的坐标,所以求Jacobian较简单,看(13)中与 t d t_d td有关的只有 − u , − v -u,-v u,v,所以求导就是 − V -V V

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

  • 时间戳补偿算法有用;
  • 时间戳延迟越大,系统精度下降越多。
    【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记,算法,机器人

1.3 两种方法对比

  • 特征匀速模型的假设更强,是假设特征是匀速运动的,而实际上是非线性运动,并非匀速,且补偿方法也是线性的。
  • 而轨迹匀速模型的假设更接近实际,假设两帧间camera是匀速运动,补偿方法也是非线性的,所以精度比前者高。
    【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记,算法,机器人
    实际中对时间戳偏差估计的收敛速度,轨迹匀速法更快。

2. 疑惑

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

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

3. 时间戳同步算法扩展

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

前面有系统初始化完成之后来估计 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,速度等,但是优化的量多了之后,优化精度可能会下降)

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

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是先标定出来还是在优化过程中进行呢?

A:VINS-MONO中可以选择在线优化,优化完成之后会得到一个t_d的优化结果,其他框架暂时还不知道。

5. 作业

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

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. 推导出待读6的解析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这个组文章来源地址https://www.toymoban.com/news/detail-751641.html

到了这里,关于【深蓝学院】手写VIO第8章--相机与IMU时间戳同步--笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【深蓝学院】移动机器人运动规划--第5章 最优轨迹生成--笔记

    Ch2讲了基于搜索的路径规划方法,Ch3讲了基于采样的路径规划方法,这些都是global methods,框架都是Exploration and Exploitation,且在算力足够大的情况下,一定能够找到全局最优解。 除了global methods,还有local methods,主要是Deterministic Optimization确定性优化。基于优化的方法,主要

    2024年02月19日
    浏览(45)
  • 【深蓝学院】移动机器人运动规划--第2章 基于搜索的路径规划--笔记

    Configuration Space等概念 机器人配置: 指机器人位置和所有点的表示。 DOF: 指用于表示机器人配置所需的最小的实数坐标的数量n。 C-space: 包含机器人n维所有配置的空间。 在C-space中机器人的pose是一个点。 机器人在C-space中被表示为一个点,pose包含为R,t 空间中的障碍物也需要映

    2024年01月22日
    浏览(48)
  • VIO第2讲:IMU标定实验

    参考代码 5.1.1 c++代码分析 下面代码确实是高斯噪声连续到离散除以 sqr(δt) ,偏差随机游走则是乘以 sqr(δt) 。 运动模型:利用p求出v,a;通过欧拉角的导数求出角速度w,根据时间变量t来产生数据。 5.1.2 生成ros包数据   GitHub同时提供了 ros 代码,我们直接用这套代码生成

    2024年02月21日
    浏览(30)
  • 相机雷达时间同步(基于ROS)

    ubuntu20.04 noetic usb_cam 速腾Robosense 16线 宏基暗影骑士笔记本 软同步:订阅相机和雷达原始数据,然后进行时间同步,最后将同步后的数据发布出去,通过rosbag record进行录制 同步前的话题: /rslidar_packets /usb_cam/image_raw 同步后的话题: /sync/img /sync/lidar 1) 在工作空间src目录下创建

    2024年02月15日
    浏览(55)
  • 激光雷达和相机数据时间同步的几种方法

    图1图2为数据时间未校准,使用Matlab 2022b相机和激光雷达联合标定工具箱进行的联合标定(图1为使用4对jpg和pcd文件时的联合标定效果,图2为使用15对jpg和pcd文件时的联合标定效果);图3图4为数据时间已校准后,使用Matlab 2022b相机和激光雷达联合标定工具箱进行的联合标定(

    2024年02月03日
    浏览(93)
  • OpenCV迭代去畸变undistortPoints 与vins的迭代不同 第二章vins前端 第三章imu预积分 第四章vio初始化

    OpenCV去畸变undistortPoints原理解析 不动点迭代法—单变量非线性方程近似根matlab求解 淦VINS-MONO源码 03–openCV与VINS中去畸变方法的不同 这里用的方法和openCV不同,假设现在求A点的去畸变坐标,那么我们将A的坐标直接代入畸变模型中,求得再次畸变的坐标,并求得这个坐标和

    2024年02月09日
    浏览(60)
  • 使用kaliber与imu_utils进行IMU、相机+IMU联合标定

    目录 1 标定工具编译 1.1 IMU标定工具 imu_utils 1.2 相机标定工具 kaliber 2 标定数据录制 3 开始标定 3.1 IMU标定 3.2 相机标定 3.3 相机+IMU联合标定 4 将参数填入ORBSLAM的文件中         标定IMU我们使用imu_utils软件进行标定:         首先我们安装标定软件的依赖项:Eigen、Ceres

    2024年02月07日
    浏览(42)
  • 相机与IMU标定教程

    标定教程 way 1、 imu_utils标定IMU的内参,可以校准IMU的噪声密度和随机游走噪声 2、kalibr包标定相机的内外参数,相机与IMU之间的外参 1.1安装环境 这里使用的包是 imu_utils ,使用这个包可以校准IMU的噪声密度和随机游走噪声 step1: 安装ceres库 下载编译 ceres-solver step2: 安装 cod

    2023年04月18日
    浏览(35)
  • 【电机学复习笔记】特殊同步机——同步电动机和同步调相机

    主要介绍同步电动机和同步调相机的一般及特殊问题 同步 电机的可逆性原理 : #可逆性原理 任何旋转电机既可以作发电机运行,也可以作为电动机运行,取决于其运行条件 发电机运行状态: 1、 φ 0 ; P 2 = m U I cos ⁡ φ 0 varphi0;P_2=mUIcosvarphi0 φ 0 ; P 2 ​ = m U I cos φ 0 ,输出电

    2024年04月11日
    浏览(28)
  • 使用kalibr对相机和IMU标定

    目录 一、IMU标定 二、相机标定 三、联合标定 关于需要下载的环境和具体的包参考【1】 记录标定过程 : ①录制imu的rosbag ②标定 单位问题 :   ①连续时间  ②离散时间 parameter symbol units gyr_n acc_n gyr_w acc_w 对于离散时间的白噪声  = 连续时间的白噪声 * 频率的平方根 对于离

    2024年02月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包