longer95479@home:~$

[Paper Reading] Online Temporal Calibration for Camera-IMU Systems: Theory and Algorithms [IJRR 2014]


Li2014IJRR_timing.pdf

针对的问题

使用的方法

基于MSCKF的在线时间标定方法

实现的效果

存在的不足/未来的工作



[Paper Reading] Online Temporal Calibration for Visual Intertial System [IROS 2018]


arXiv:1808.00692

针对的问题

相机时间戳与IMU时间戳存在初始的时间偏移,线程收到两个时间戳的两帧KeyFrame,在这两个时刻内进行 IMU 预积分,此时需要在 imu buffer 里检索这段时间内的 IMU 数据,若以 IMU 的时间为基准,这两个时刻实际的关键帧并不是一开始收到的那两帧,而是在空间上有所偏移-

使用的方法

两个时刻上很接近的关键帧,其空间变化也很小,图像上的特征点认为是匀速运动的,速度用两帧关键帧的对应特征点坐标相减求出,然后根据还没求出但假设已知的时间偏移 $t_d$ 对特征点的坐标进行修正。

将带有 $t_d$ 的修正后的特征点坐标,替换掉重投影误差中原来的特征点坐标,从而将时间偏差参数 $t_d$ 引入了优化方程相机残差项

每次优化完成后,对相机时间戳进行修正,由粗到细,使得匀速运动假设更加合理。

实现的效果

  • 与 Kalibr 离线标定效果接近
  • 手动添加时间偏移,比没有该措施的 vinsmono 和 okvis 好
  • 适用于廉价传感器

存在的问题/未来的工作

没有对 $t_d$ 的可观性进行分析

参考

知乎:VIO系统中IMU与相机时间偏差标定(PaperReading)



Singular Value Decomposition(SVD)


Eigen Vector Decomposing

特征值与特征向量的定义和关系可由下面等式给出

\[Ax = x\lambda\]

扩展成 n 个特征向量和特征值,有

\[A \begin{pmatrix} x_1 & x_2 & \cdots & x_n \end{pmatrix} = \begin{pmatrix} x_1 & x_2 & \cdots & x_n \end{pmatrix} \begin{pmatrix} \lambda_1 \\ & \lambda_2 \\ && \ddots \\ &&& \lambda_n \end{pmatrix}\]

简写为

\[AP= P\Lambda\] \[A= P \Lambda P^{-1}\]

这意味着什么呢?可以从这几个角度理解:

  • $A$ 与 $\Lambda$ 相似。两个矩阵相似,代表着同一个线性变换,在不同基下的表示。 $P$ 表示的是坐标系变换,$\Lambda$ 表示的是线性变换
\[^{B_1}v \mapsto \ ^{B_1}w = A \ ^{B_1}v\] \[^{B_2}v \mapsto \ ^{B_2}w = \Lambda\ ^{B_2}v\] \[\begin{align} ^{B_1}w &= P \ ^{B_2}w \\ &= P \Lambda \ ^{B_2}v \\ &= P \Lambda P^{-1} \ ^{B_1}v \end{align}\]
  • A 这个线性变换被分解为三步(假设 P 正交):先旋转,后拉伸,再旋转回去

PS:已知 $v \mapsto w,\ v,w \in \mathbb{R}^n$,需要 n 个这样的映射才能唯一确定一个线性映射或矩阵

\[\begin{pmatrix} v^T & 0_{1\times n} & \cdots & 0_{1\times n}\\ 0_{1\times n} & v^T & \cdots & 0_{1\times n}\\ \cdots && \ddots\\ 0_{1\times n} & 0_{1\times n} & \cdots & v^T\\ \end{pmatrix}_{n\times n^2} \begin{pmatrix} a_{11} \\ a_{12} \\ \dots \\ a_{1n}\\ \cdots\\ a_{nn} \end{pmatrix}_{n \times n} = w\]

SVD

full matrices:

\[A_{mn} = U_{mm}\Sigma_{mn}(V_{nn})^T\]

full_matrices

not full matrices: retain max r eigen values and vectors

\[A_{mn} \approx U_{mr}\Sigma_{rr}(V_{nr})^T, r \leq min(m,n)\]

not_full_matrices

应用

图片压缩或降维

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np

I = mpimg.imread("E:\\Data\\Pictures\\Screenshots\\屏幕截图(1).png");

u, s, vh = np.linalg.svd(I[:,:,0],full_matrices=False)
smat = np.diag(s)
print(smat.shape)

k = 5
I_compress = np.dot(u[:,0:k],np.dot(smat[0:k,0:k],vh[0:k,:]))

plt.subplot(2,1,1)
plt.imshow(I[:,:,0])
plt.subplot(2,1,2)
plt.imshow(I_compress)
plt.show()

求超定齐次方程 $Ax = 0$ 的最小二乘解

\[A_{mn}x = 0\] \[m>n,rank(A) = n\]

这个方程没有非零解(因为列向量空间维数是 m,但不相关的列向量只有 n 个,无法线性组合得到零向量),因此求最小二乘解,也就是让 $\lvert Ax \rvert ^2 = x^TA^TAx$ 最小的 x。

\[\begin{align} x^* = \underset{x}{\mathrm{arg\ min}}\ x^TA^TAx \\ s.t.\ x^Tx = 1 \end{align}\]
  • 如果 $x$ 是 $A^TA$ 的特征向量,在此前提下选择最小特征值对应的 x,则 $x^TA^TAx = \lambda$ 是最小的
\[x^TA^TAx = x^T \lambda x = \lambda x^Tx = \lambda\]
  • $x$ 不是 $A^TA$ 的特征向量
\[A = U \Sigma V^T \\\] \[A^TA = V\Sigma^T U^T U\Sigma V^T = V\Sigma^T\Sigma V^T \\\] \[x 用 V 的正交列向量表示:x = Va,\ a^Ta = 1\\\] \[\begin{align} x^TA^TAx &= x^T V\Sigma^T\Sigma V^T x \\ &= a^T \Sigma^T \Sigma a \\ & = \sum_{i=1}^{n} a_i^2 \lambda_i \geq \lambda_{min} \end{align}\] \[\lambda_{min} = \sum_{i=1}^n a_i^2 \lambda_{min} \leq \sum_{i=1}^{n} a_i^2 \lambda_i \leq \sum_{i=1}^n a_i^2 \lambda_{max} = \lambda_{max}\]

等号成立的条件为,当 $\lambda_{min}$ 或 $\lambda_{max}$ 对应的 $a_i = 1$,其余的 $a_i = 0$。

情况 1 其实只是情况 2 的特例。$a_i$ 充当挑选 $V$ 中列向量(即 $A^TA$ 的特征向量)的角色。

所以最小二乘解 $x^*$ 等于, $A^TA$ 的最小特征值对应的特征向量,也即 $A$ 最小奇异值对应的右奇异向量因此可以通过对 A 进行 SVD 分解求得 $Ax = 0$ 的最小二乘解。

而最小二乘的求解在多视角几何中均有应用,如路标的三角化、PnP等,因为这些问题最后会得到一个超定齐次方程

参考



Total views. cowboys. Hits