[论文阅读]SRVIO:Super Robust Visual Inertial Odometry for dynamic environments...

文章全名:SRVIO: Super Robust Visual Inertial Odometry for dynamic environments and challenging Loop-closure conditions
提出了一个基于“Vins-Mono”并结合了“DNN网络”的针对“动态场景”的“实时”SLAM系统。

文章的主要贡献
1、最重要的贡献不是方法上的创新,而应该是给了一个好用的实时的完整的SLAM系统
2、每个部分都给了DNN网络的结合方法。Preprocessing结合了语义网络HRNet筛选特征点、自己训练的去IMU噪声网络处理IMU数据流;回环用了SuperPoints和SuperGlue。

SRVIO系统框架

主要分为预处理preprocessing、优化optimization和回环检测loop closure三部分。
请添加图片描述

A.预处理preprocessing

预处理的输入:照片流+IMU数据流
预处理的输出:
组成部分:视觉预处理+惯导预处理

视觉预处理
请添加图片描述

输入:照片流,输出:每帧的特征点矩阵和该帧的特征点质量权重(表示这个帧的好坏)
1、首先照片经过①,得到特征点位置和描述子
2、然后照片通过②经由HRNet处理,得到特征点属于moveable还是unmoveable
3、由于神经网络结果的语义信息的局限性,到☂这里用到一个三步的处理方法。
先用unmoveable的结果通过RANSAC计算位姿;(unmoveable结果给的位姿)
再用位姿通过Fundamental矩阵检验所有匹配的离群情况;(点的实际动、静情况)
最后对所有的inliner再RANSAC计算一次得到最终位姿;(取所有静态点再次计算位姿)
[ P C i , S i , F i n i t i a l i , i − 1 ] = R A N S A C ( P i n i t i a l C i , P C i − 1 ) P C i , S 2 = { P l , i n i t i a l C i : ∣ P l , i n i t i a l C i . F i n i t i a l i , i − 1 . P l C i − 1 ∣ < ϵ } [ P C i , F a c c u r a t e i , i − 1 ] = R A N S A C ( P C i , 2 , P C i − 1 ) \begin{aligned} &[P^{C_i, S_i}, F_{initial}^{i, i-1}] = RANSAC(P_{initial}^{C_i}, P^{C_i-1})\\ &P^{C_i, S_2} = \Big\{ P_{l, initial}^{C_i}: \Big|P_{l, initial}^{C_i}.F_{initial}^{i, i-1}.P_{l}^{C_i-1}\Big| < \epsilon\Big\}\\ &[P^{C_i}, F_{accurate}^{i, i-1}] = RANSAC(P^{C_i, _2}, P^{C_i-1}) \end{aligned} [PCi,Si,Finitiali,i1]=RANSAC(PinitialCi,PCi1)PCi,S2={Pl,initialCi: Pl,initialCi.Finitiali,i1.PlCi1 <ϵ}[PCi,Faccuratei,i1]=RANSAC(PCi,2,PCi1)
4、最后在④计算一个权重表示照片帧的质量,通过静态点占总匹配的比例计算,在优化阶段使用
Ψ c i = ∣ P C i ∣ F m a x \Psi_{c_i} = \frac{|P^{C_i}|}{F_{max}} Ψci=FmaxPCi

惯性预处理
请添加图片描述

输入:IMU数据流,输出:通过去噪声卷积神经网络DCNN的IMU数据,认为是没有噪声的(合理吗?凭什么)。共有两个卷积神经网络,一个是用于陀螺仪(角速度)去噪声,一个用于加速度去噪声

陀螺仪卷积网络:输入:从i-N到i-1的N个IMU数据序列,输出:经过修正的第i个imu角速度测量数据;
加速度卷积网络:输入:从i-N到i-1的N个IMU数据序列,输出:经过修正的第i个imu加速度测量数据;
网络结构:卷积和全连接两个部分
卷积部分有标签的IMU数据训练用于预测误差,训练好固定住(使用到GELU策略(GELU activation)余弦学习率(cosine schedulers)
全连接部分用带噪声的IMU数据训练,用于预测IMU数据质量
请添加图片描述
由于高频下IMU数据没有真实的值,则将网络给出的结果通过积分到有真实值的地方定义训练误差
δ R ^ i , i + j = ∑ k = i i + j − 1 e x p ( w k ^ ) δ P ^ i , i + j = ∫ ∫ t ∈ [ i , i + j ] e x p ( w t ^ )    a t ^    d t 2 L j ω = ∑ i ρ ( l o g ( δ R i , i + j δ R ^ i , i + j T ) ) L j a = ∑ i ρ ( δ P i , i + j − δ P ^ i , i + j ) L ω = L 16 ω + L 32 ω L a = L 16 a = L 32 a \begin{aligned} & \delta{\hat{R}_{i, i+j}} = \sum_{k=i}^{i+j-1}exp(\hat{w_k}) \\ & \delta{\hat{P}_{i, i+j}} = \int\int_{t\in[i, i+j]} exp(\hat{w_{t}})\;\hat{a_{t}}\;dt^2 \\ & \mathcal{L}_{j}^{\omega} = \sum_{i}\rho \left(log\left(\delta R_{i, i+j} \delta \hat{R}_{i, i+j}^{T}\right)\right) \\ & \mathcal{L}_{j}^{a} = \sum_{i}\rho \left(\delta P_{i, i+j} - \delta \hat{P}_{i, i+j}\right) \\ & \mathcal{L}^{\omega} = \mathcal{L}_{16}^{\omega} + \mathcal{L}_{32}^{\omega} \\ & \mathcal{L}^{a} = \mathcal{L}_{16}^{a} = \mathcal{L}_{32}^{a} \end{aligned} δR^i,i+j=k=ii+j1exp(wk^)δP^i,i+j=t[i,i+j]exp(wt^)at^dt2Ljω=iρ(log(δRi,i+jδR^i,i+jT))Lja=iρ(δPi,i+jδP^i,i+j)Lω=L16ω+L32ωLa=L16a=L32a
其中 δ R ^ i , i + j \delta{\hat{R}_{i, i+j}} δR^i,i+j δ P ^ i , i + j \delta{\hat{P}_{i, i+j}} δP^i,i+j表示真实的旋转和平移变换,网络给出的 δ R i , i + j \delta{R_{i, i+j}} δRi,i+j δ P i , i + j \delta{P_{i, i+j}} δPi,i+j与真实值作差并在一个时间跨度为j的窗口内求和,得到两个误差项 L j ω \mathcal{L}_{j}^{\omega} Ljω L j a \mathcal{L}_{j}^{a} Lja,16步和32步两种情况下的误差项求和得到最终的误差项。

1、经过①网络处理得到IMU去噪声序列 w i ~ \tilde{w_i} wi~ a i ~ \tilde{a_{i}} ai~,用于计算后续的IMU数据权重的数据质量 ζ i ω \zeta_{i}^{\omega} ζiω ζ i a \zeta_{i}^{a} ζia
2、原始的IMU数据经过一个修正矩阵 C ^ ( . ) \hat{C}_{(.)} C^(.)后和 w i ~ \tilde{w_i} wi~以及 a i ~ \tilde{a_{i}} ai~相加得到矫正的角速度和加速度。PS:我猜测 C ^ ( . ) \hat{C}_{(.)} C^(.)是IMU坐标系转换到相机坐标系,网络输出的矫正序列是相对相机坐标系而言的。
C ^ ( . ) = S ( . ) ^ M ( . ) ^ ω i ^ = C ω ^ w i I M U + w i ~ a i ^ = C a ^ a i I M U + a i ~ ζ i = ζ i ω + ζ i a \begin{aligned} & \hat{C}_{(.)} = \hat{S_{(.)}} \hat{M_{(.)}} \\ & \hat{\omega_{i}} = \hat{C_{\omega}}w_{i}^{IMU} + \tilde{w_i} \\ & \hat{a_{i}} = \hat{C_{a}}a_{i}^{IMU}+\tilde{a_{i}}\\ & \zeta_{i} = \zeta_{i}^{\omega}+\zeta_{i}^{a} \end{aligned} C^(.)=S(.)^M(.)^ωi^=Cω^wiIMU+wi~ai^=Ca^aiIMU+ai~ζi=ζiω+ζia
矫正后的数据在②进行预积分
3、最后在☂计算IMU数据权重
Ψ b i = ∑ k ∈ M l , j ζ k m \Psi_{b_i} = \frac{\sum_{k\in M_{l, j}} \zeta_k}{m} Ψbi=mkMl,jζk

B.优化Optimization

这部分就是在误差这里,用网络简化了IMU预积分过程+质量参数影响误差
IMU测量误差
IMU预积分
α b k + 1 b k = ∫ ∫ t ∈ [ t k , t k + 1 ] R t b k ( a ^ t )   d t 2 β b k + 1 b k = ∫ t ∈ [ t k , t k + 1 ] R t b k ( a ^ t )   d t γ b k + 1 b k = ∫ t ∈ [ t k , t k + 1 ] 1 2 Ω ( ω ^ ) γ t b k   d t \begin{aligned} & \alpha_{b_{k+1}}^{b_k} = \int\int_{t\in [t_k, t_{k+1}]}R_{t}^{b_k}(\hat{a}_t)\ dt^{2} \\ & \beta_{b_{k+1}}^{b_k} = \int_{t\in [t_k, t_{k+1}]}R_t^{b_k}(\hat{a}_t)\ dt \\ & \gamma_{b_{k+1}}^{b_k} = \int_{t\in [t_k, t_{k+1}]}\frac{1}{2}\Omega(\hat{\omega})\gamma{_{t}^{b_k}}\ dt \end{aligned} αbk+1bk=t[tk,tk+1]Rtbk(a^t) dt2βbk+1bk=t[tk,tk+1]Rtbk(a^t) dtγbk+1bk=t[tk,tk+1]21Ω(ω^)γtbk dt
其中 a ^ t \hat{a}_t a^t ω ^ \hat{\omega} ω^是加速度和角速度, Ω \Omega Ω表示一种矩阵变换。上式的第三行是四元数的积分计算,通过 Ω \Omega Ω将两个四元数运算转换成矩阵运算
Ω ( ω ) = [ − ⌊ ω ⌋ × ω − ω T 0 ] − ⌊ ω ⌋ × = [ 0 − ω z ω y ω z 0 − ω x − ω y ω x 0 ] \begin{aligned} & \Omega(\omega) = \begin{bmatrix} -{\lfloor\omega \rfloor}_{\times} & \omega \\ -\omega^T & 0 \end{bmatrix} \\ & -{\lfloor\omega \rfloor}_{\times} = \begin{bmatrix} 0 & -\omega_z & \omega_y\\ \omega_z & 0 & -\omega_x\\ -\omega_y & \omega_x & 0 \end{bmatrix} \end{aligned} Ω(ω)=[ω×ωTω0]ω×= 0ωzωyωz0ωxωyωx0
此时我们得到IMU误差如下,基本表现就是“误差”=“两个时刻真实值表示的变换(减号左边部分)” - “IMU积分结果(减号右边部分)”:
r B ( z ^ b k + 1 b k , χ ) = [ δ α b k + 1 b k δ β b k + 1 b k δ θ b k + 1 b k ] = [ R ω b k ( p b k + 1 ω − p b k ω + 1 2 g ω Δ t k 2 − v b k ω ) − α ^ b k + 1 k R ω b k ( v b k + 1 ω + g ω Δ t k − v b k ω ) − β ^ b k + 1 b k 2 [ q b k ω − 1 ⊗ q b k + 1 ω ⊗ ( γ ^ b k + 1 b k ) − 1 ] x y z ] \begin{aligned} & \mathcal{r}_{\mathcal{B}}(\hat{z}_{b_{k+1}}^{b_k}, \chi) = \begin{bmatrix} \delta \alpha_{b_{k+1}}^{b_k} \\ \delta \beta_{b_{k+1}}^{b_k} \\ \delta \theta_{b_{k+1}}^{b_k} \end{bmatrix}\\ &=\begin{bmatrix} R_{\omega}^{b_k}(p_{b_{k+1}}^\omega - p_{b_k}^{\omega} + \frac{1}{2}g^{\omega}\Delta t_{k}^{2} - v_{b_k}^{\omega}) - \hat{\alpha}_{b_{k+1}}^{k} \\ R_{\omega}^{b_k}(v_{b_{k+1}}^{\omega} + g^{\omega}\Delta t_k - v_{b_k}^{\omega}) - \hat{\beta}_{b_{k+1}}^{b_k} \\ 2[q_{b_k}^{\omega -1}\otimes q_{b_{k+1}}^{\omega}\otimes(\hat{\gamma}_{b_{k+1}}^{b_k})^{-1}]_{xyz} \end{bmatrix} \end{aligned} rB(z^bk+1bk,χ)= δαbk+1bkδβbk+1bkδθbk+1bk = Rωbk(pbk+1ωpbkω+21gωΔtk2vbkω)α^bk+1kRωbk(vbk+1ω+gωΔtkvbkω)β^bk+1bk2[qbkω1qbk+1ω(γ^bk+1bk)1]xyz
由于去噪声网络的存在,这里的积分结果应该极大地简化了

视觉测量误差
如下式给出
P l c j = π c − 1 ( [ u l c j v l c j ] ) P l c i = R b c ( R ω b j ( R b i ω ( R c b 1 λ l π c − 1 ( [ u l c i v l c i ] ) + p c b ) + p b i ω − p b j ω ) − p c b ) r c ( z ^ l c j , χ ) = [ b 1 b 2 ] ⋅ ( P l c j − P l c i ∣ ∣ P l c i ∣ ∣ ) \begin{aligned} & \mathcal{P}_{l}^{c_j} = \pi_c^{-1}(\begin{bmatrix} u_l^{c_j} \\ v_l^{c_j}\end{bmatrix}) \\ & \mathcal{P}_{l}^{c_i} = R_b^c(R_\omega^{b_j}(R_{b_i}^{\omega}(R_c^b\frac{1}{\lambda_l}\pi_c^{-1}(\begin{bmatrix} u_l^{c_i} \\ v_l^{c_i}\end{bmatrix})+p_c^b)+p_{b_i}^\omega-p_{b_j}^\omega)-p_c^b) \\ & r_c(\hat{z}_l^{c_j}, \chi) = \begin{bmatrix} b_1 b_2\end{bmatrix} \cdot (\mathcal{P}_{l}^{c_j} - \frac{\mathcal{P}_{l}^{c_i}}{||\mathcal{P}_{l}^{c_i}||}) \end{aligned} Plcj=πc1([ulcjvlcj])Plci=Rbc(Rωbj(Rbiω(Rcbλl1πc1([ulcivlci])+pcb)+pbiωpbjω)pcb)rc(z^lcj,χ)=[b1b2](Plcj∣∣Plci∣∣Plci)
第一个式子将第j张图片的点反投影到归一化相机坐标系
第二个式子将第i张图片的点反投影到相机坐标系(到 λ l \lambda_l λl这),转换到IMU坐标系(到 R c b R_c^b Rcb这),转换到世界坐标系(到 R b i ω R_{b_i}^{\omega} Rbiω这),转换到第j帧的IMU坐标系(到 R ω b j R_\omega^{b_j} Rωbj这),转换到第j帧的相机坐标系(到 R b c R_b^c Rbc这)
第三个式子将在同一个世界坐标系下的两个坐标求差, b 1 b_1 b1 b 2 b_2 b2表示两个坐标所占的权重,作者说得高大上是投影到一个平面上, b 1 b_1 b1 b 2 b_2 b2是平面的基
第三个式子感觉有点问题 P l c j \mathcal{P}_{l}^{c_j} Plcj在归一化相机坐标系下, P l c i \mathcal{P}_{l}^{c_i} Plci在未归一化相机坐标系下,作者将
P l c i \mathcal{P}_{l}^{c_i} Plci除自己的模应该是想让他们都在归一化后的坐标系下,这里的操作应该为除 P l c i \mathcal{P}_{l}^{c_i} Plci的z坐标

结合误差
一个状态窗口内的数据有
χ = [ x 0 , x 1 , . . . x n , x c b , λ 1 , . . . , λ m ] , x k = [ p b k ω , v b k ω , q b k ω ] , ∈ [ 0 , n ] , x c b = [ p c b , q c b ] \begin{aligned} & \chi = [x_0, x_1, ... x_n, x_c^b, \lambda_1, ..., \lambda_m], \\ & x_k = [p_{b_k}^{\omega}, v_{b_k}^{\omega}, q_{b_k}^{\omega}], \in [0, n], \\ & x_c^b = [p_c^b, q_c^b] \end{aligned} χ=[x0,x1,...xn,xcb,λ1,...,λm],xk=[pbkω,vbkω,qbkω],[0,n],xcb=[pcb,qcb]
x k x_k xk表示IMU的状态:位置、速度、朝向; x c b x_c^b xcb表示IMU和相机间的位姿变换; λ l \lambda_l λl表示第l个特征点在窗口内第一次被观测时的深度倒数
最终误差给出如下形式,误差=先验信息(不太懂怎么来的)+IMU误差( Ψ c k \Psi_{c_k} Ψck修正)+相机误差( Ψ b k \Psi_{b_k} Ψbk)修正:
R = ∣ ∣ r p − H p χ ∣ ∣ 2 + Ψ c k ∑ k ∈ B ∣ ∣ r B ( z ^ b k + 1 b k , χ ) ∣ ∣ P b k + 1 b k 2 + Ψ b k ∑ l , j ∈ C ρ ( ∣ ∣ r C ( z ^ l C j , χ ) ∣ ∣ P l C j 2 ) \mathcal{R} = ||r_p - H_p \chi||^2 + \Psi_{c_k}\sum_{k\in \mathcal{B}} || r_{\mathcal{B}}(\hat{z}_{b_{k+1}}^{b_k}, \chi)||_{P_{b_{k+1}}^{b_k}}^{2} + \Psi_{b_k}\sum_{l, j\in \mathcal{C}}\rho(||r_{\mathcal{C}}(\hat{z}_l^{\mathcal{C_j}}, \chi)||_{P_{l}^{\mathcal{C_j}}}^{2}) R=∣∣rpHpχ2+ΨckkB∣∣rB(z^bk+1bk,χ)Pbk+1bk2+Ψbkl,jCρ(∣∣rC(z^lCj,χ)PlCj2)

C.回环检测Loop closure

其实没什么改变,就是把特征点换成了SuperPoint,把回环候选帧的特征点匹配换成了SuperGlue。先通过knn检测闭环,检测到之后用SuperGlue寻找特征点,并且没有用基础矩阵检查静止的会运动物体,因为他们在后续的时候会消失。

总结:
1、对动态语义的进一步处理
2、误差去噪声网络的应用,极大地简化了IMU融合
3、SuperGlue锦上添花

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
In this paper, we focus on the problem of motion tracking in unknown environments using visual and inertial sensors.We term this estimation task visual-inertial odometry (VIO), in analogy to the well-known visual-odometry problem. We present a detailed study of EKF-based VIO algorithms, by comparing both their theoretical properties and empirical performance. We show that an EKF formulation where the state vector comprises a sliding window of poses (the MSCKF algorithm) attains better accuracy, consistency, and computational efficiency than the SLAM formulation of the EKF, in which the state vector contains the current pose and the features seen by the camera. Moreover, we prove that both types of EKF approaches are inconsistent, due to the way in which Jacobians are computed. Specifically, we show that the observability properties of the EKF’s linearized system models do not match those of the underlying system, which causes the filters to underestimate the uncertainty in the state estimates. Based on our analysis, we propose a novel, real-time EKF-based VIO algorithm, which achieves consistent estimation by (i) ensuring the correct observability properties of its linearized system model, and (ii) performing online estimation of the camera-to-IMU calibration parameters. This algorithm, which we term MSCKF 2.0, is shown to achieve accuracy and consistency higher than even an iterative, sliding-window fixed-lag smoother, in both Monte-Carlo simulations and real-world testing. I
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值