锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

R3LIVE论文学习(二):VIO子系统

时间:2023-11-22 01:07:01 tk7480传感器

VIO子系统

VIO子系统将渲染整个地图的纹理,并通过最小化光度误差来估计系统的状态。更具体地说,我们将一定数量的点(即跟踪点)投影到当前图像中。然后,通过最小化这些点的光度误差ESIKF系统状态在框架内迭代估计。

为了提高效率,跟踪的地图点很稀疏,通常需要构建输入图像的金字塔。然而,金字塔并不是平移或旋转的,也需要估计。在我们提出的框架中,我们使用单个地图点的颜色来计算光度误差。VIO同时呈现的颜色是地图点的固有属性,相机的平移和旋转是不变的。

在这里插入图片描述

为了保证鲁棒和快速收敛,我们设计了上图所示的两步管道。首先,我们使用从帧到帧的光流来跟踪地图点,并化地图点PnP投影误差。然后,我们通过最小化从跟踪点帧到地图的光度误差来进一步细化系统的状态估计。通过收敛状态估计和原始输入图像,我们进行纹理渲染来更新整个地图中点的颜色。

1 帧到帧的VIO

假设我们在上一帧的图像帧 I k ? 1 \mathbf{I}_{k-1} Ik?1 中追踪了 m m m 这个地图点 m m m 个地图点记为 P = { P 1 , … , P m } \mathcal{P}=\left\{\mathbf{P}_{1}, \ldots, \mathbf{P}_{m}\right\} P={ P1,,Pm},它们在图像帧中 I k ? 1 \mathbf{I}_{k-1} Ik1 中的投影坐标记为 { ρ 1 k − 1 , … , ρ m k − 1 } \left\{\boldsymbol{\rho}_{1_{k-1}}, \ldots, \boldsymbol{\rho}_{m_{k-1}}\right\} { ρ1k1,,ρmk1},使用 Lucas-Kanade光流法 可以找出这些地图点在当前图像帧 I k \mathbf{I}_{k} Ik 的投影坐标,记为 { ρ 1 k , … , ρ m k } \left\{\boldsymbol{\rho}_{1_{k}}, \ldots, \boldsymbol{\rho}_{m_{k}}\right\} { ρ1k,,ρmk}。然后我们通过 ESIKF 来计算和优化这些地图点的重投影误差,从而估计出系统的状态。

1.1 PnP重投影误差

如上图所示,以第 s s s 个点 P s = [ G p s T , c s T ] T ∈ P \mathbf{P}_{s}=\left[{ }^{G} \mathbf{p}_{s}^{T}, \mathbf{c}_{s}^{T}\right]^{T} \in \mathcal{P} Ps=[GpsT,csT]TP 为例,其中前面的3维向量 G p s T = [ G p s x , G p s y , G p s z ] { }^{G} \mathbf{p}_{s}^{T}= \left[{ }^{G} \mathbf{p_s}_{x},{ }^{G} \mathbf{p_s}_{y},{ }^{G} \mathbf{p_s}_{z}\right] GpsT=[Gpsx,Gpsy,Gpsz] 表示点 s s s 在世界坐标系下的三维坐标,后面的 c s T = [ c s r , c s g , c s b ] T \mathbf{c}_{s}^{T}=\left[\mathbf{c_s}_{r}, \mathbf{c_s}_{g}, \mathbf{c_s}_{b}\right]^{T} csT=[csr,csg,csb]T表示点 s s s 的RGB颜色。

为了计算点 s s s 的在图像帧 I k \mathbf{I}_{k} Ik 中的重投影误差,我们先要将点 s s s 转换到相机坐标系当中,即:

C p s = [ C p x s , C p y s , C p z s ] T = ( G R ˇ I k ⋅ I R ˇ C k ) T ⋅ G p s − I R ˇ C k T ⋅ I p ˇ C k − ( G R ˇ I k ⋅ I R ˇ C k ) T ⋅ G p ˇ I k (1) \begin{array}{r}{ }^{C} \mathbf{p}_{s}=\left[{ }^{C} \mathbf{p}_{x_{s}},{ }^{C} \mathbf{p}_{y_{s}},{ }^{C} \mathbf{p}_{z_{s}}\right]^{T}=\left({ }^{G} \check{\mathbf{R}}_{I_{k}} \cdot{ }^{I} \check{\mathbf{R}}_{C_{k}}\right)^{T} \cdot{ }^{G} \mathbf{p}_{s} -{ }^{I} \check{\mathbf{R}}_{C_{k}}^{T} \cdot{ }^{I} \check{\mathbf{p}}_{C_{k}}-\left({ }^{G} \check{\mathbf{R}}_{I_{k}} \cdot{ }^{I} \check{\mathbf{R}}_{C_{k}}\right)^{T} \cdot{ }^{G} \check{\mathbf{p}}_{I_{k}}\end{array}\tag{1} Cps=[Cpxs,Cpys,Cpzs]T=(GRˇIkIRˇCk)TGpsIRˇCkTIpˇCk(GRˇIkIRˇCk)TGpˇIk(1)

这里要注意的是, C k p G ≠ − G p C k {}^{C_k}p_G \neq -{}^Gp_{C_k} CkpG=

相关文章