[论文阅读]VDO-SLAM: A Visual Dynamic Object-aware SLAM System

1 速读

1.1 论文试图解决什么问题?这是否是一个新的问题?

利用光流法解决动态SLAM问题,在原基于特征点的基础上进行扩展,本质上还没有引入物体级别的概念

1.2 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员?

在动态SLAM汇总处整理;

1.3 文章的贡献是什么?

一个动态SLAM框架VDO-LAM;
①利用光流法检测动态;
②构建因子图优化将动态点加入后端优化;
③可以解决遮挡的object创建方法

1.4 文章解决方案的关键是什么

光流对动态的估计+对动态物体的稠密光流得到动态物体的运动(因为动态物体大多时候占据画面一小部分,原特征点不够恢复其运动)

1.5 实验如何设计?实验结果足够论证其效果吗?

语义网络:Mask R-CNN;光流网络:PWC-Net;深度网络:MonoDepth2;特征提取:FAST;
三个误差尺度;
在KITTI上和DynaSLAM2和CubeSLAM做比较:
相机位姿上:效果和Dyna差不多,比Cube好,但是单目情况表现不好因为网络给出的深度信息不准确;
物体跟踪上:选取了一些存在时间较长的物体比较跟踪距离和速度评测;
最后展示map结果;

1.6 数据集是什么?

两个数据集:Oxford Multimotion Dataset(indoor)和 KITTI Tracking

1.7 还会存在什么问题

作者conclusion:
①计算量太大;
我觉得:
②本质上还是基于特征点的SLAM,只不过不是将动态点抛弃而是按照原来优化静态点的思路加入了SLAM过程,没有进行相应的优化或语义处理

2 主要内容

效果图如下:
在这里插入图片描述
上图 红色:相机轨迹;黑色:静态背景点;彩色:移动物体点;
下图 黑色:静态背景点;框+彩色密集点+估计的速度:移动物体;
紫色区域可以看到车头没有被标注进来;

2.1 系统框架

在这里插入图片描述
Pre-processing数据预处理:从图像中得到深度图,并进行语义分割(得到object级信息)+稠密光流估计(用于最大化object上的track point);
Tracking
静态部分track:提取剔除语义部分的特征点用光流track并用于相机位姿估计
动态object track:语义标签动态+场景流检测用于构建动态物体,所有物体被标记(静态部分记为为l=0,动态部分l≠0),根据与上一帧的光流correspondence确定最新帧的中的物体标签(其中与上一帧静态部分构成correspondence的动态物体被认为新出现或者在被遮挡后重新出现,会新建动态物体);动态物体位姿计算没看懂
Mapping
Local Batch优化:在一个滑窗内做局部优化,只优化窗口内的相机位姿和静态结构(作者说也可以加入动态部分,那为什么不加呢?)
Global Batch优化:全局地图保存tracking计算的相机位姿,object运动,内点结构,最后构建出一个factor graph的优化;
From Mapping to Tracking:保存的map信息帮助tracking优化(应该是一些设计代码细节的东西)

2.2 Background and Notation

在这里插入图片描述
H:object位姿变换(文章称为body-frame pose change),T:相机位姿变换
L:object位姿,X:相机位姿(相机坐标系到世界坐标系),m:3D点坐标
左上角表示相对于哪个坐标系,右下角表示在哪个时刻;

①点由object坐标系到世界坐标系的变化为:
m k i = L k ⋅ L k m k i m_k^i = L_k\cdot {^{L_k}m_k^i} mki=LkLkmki②由刚体假设有点在object坐标系下坐标不变(从①推得):
L k m k i = L k − 1 ⋅ m k i = L k − 1 − 1 ⋅ m k − 1 i ^{L_k}m_k^i = L_k^{-1}\cdot m_k^i = L_{k-1}^{-1}\cdot m_{k-1}^i Lkmki=Lk1mki=Lk11mk1i③object相对与上一个object坐标系的位姿变化为:
L k − 1 H k = L k − 1 − 1 L k ^{L_{k-1}}H_k = L_{k-1}^{-1}L_{k} Lk1Hk=Lk11Lk④将②③带入①中得到:
m k i = L k − 1 ⋅ L k − 1 H k ⋅ L k − 1 − 1 ⋅ m k − 1 i m_k^i = L_{k-1}\cdot {^{L_{k-1}}H_k\cdot L_{k-1}^{-1}\cdot m_{k-1}^i} mki=Lk1Lk1HkLk11mk1i最终可以得到两个时刻相同动态点在世界坐标系下的齐次变换表示:
H k = L k − 1 ⋅ L k − 1 H k ⋅ L k − 1 − 1 H_{k} = L_{k-1}\cdot ^{L_{k-1}}H_k\cdot L_{k-1}^{-1} Hk=Lk1Lk1HkLk11即将动态点的位置变换转化为由上一帧的object位姿+当前帧和上一帧的object相对位姿变换表示。这个式子将整个优化过程变成了点与点的关系,是不基于object-pose的model-free的方式;

2.3 Camera Pose and Object Motion Estimation

①相机位姿估计
最小化重投影误差,静态点的重投影误差,计算相机位姿X:
e e g o i = p k i − π ( X k − 1 m k − 1 i ) , m   b e l o n g   t o   s t a t i c ; e_{ego}^i =p_k^i-\pi(X_{k}^{-1}m_{k-1}^{i}), m\ belong\ to\ static; eegoi=pkiπ(Xk1mk1i),m belong to static;②目标运动估计
最小化object上点的重投影误差,计算齐次变换H:
e o b j i = p k i − π ( X k − 1 H k m k − 1 i ) = p k i − π ( G k m k − 1 i ) , m   b e l o n g   t o   o b j e c t ; e_{obj}^i = p_k^i - \pi(X_k^{-1}H_km_{k-1}^i) = p_k^i - \pi(G_km_{k-1}^i),m\ belong\ to\ object; eobji=pkiπ(Xk1Hkmk1i)=pkiπ(Gkmk1i)m belong to object;③联合光流估计
将原匹配点 p k i p_k^i pki转换成光流的结果,重投影误差变成了:
e e g o i = p k − 1 i + ϕ k − 1 i − π ( X k − 1 m k − 1 i ) , m   b e l o n g   t o   s t a t i c ; e_{ego}^i =p_{k-1}^i+\phi_{k-1}^i-\pi(X_{k}^{-1}m_{k-1}^{i}), m\ belong\ to\ static; eegoi=pk1i+ϕk1iπ(Xk1mk1i),m belong to static;最终的cost方程为优化光流项+重投影误差项,即结合了光流的结果以应对一些复杂动态场景;
这是关于相机位姿的,目标运动和光流结合同理;

2.4 Graph Optimisation

四个误差
①青色圈:运动平滑误差,认为物体速度不会突变:
e s m o o t h l , k = ( H k − 1 l ) − 1 H k l e_{smooth}^{l,k} = (H_{k-1}^l)^{-1}H_{k}^l esmoothl,k=(Hk1l)1Hkl②橙色圈:里程计误差,之前估计的相机位姿作为约束参与位姿优化:
e o d e m e t r y k = ( X k − 1 − 1 X k ) − 1 T k e_{odemetry}^k=(X_{k-1}^{-1}X_k)^{-1}T_k eodemetryk=(Xk11Xk)1Tk③洋红色圈:运动模型误差,由其次变换表示的运动存在的误差:
e m o t i o n i , j , k = m k i − H k l m k − 1 i e_{motion}^{i,j,k} = m_k^i - H_{k}^{l}m_{k-1}^i emotioni,j,k=mkiHklmk1i④白色圈:3D点观测误差,因为不管动静,map中的信息都是一堆点,z为测量深度值:
e p o i n t i , k = X k − 1 m k i − z k i e_{point}^{i,k} = X_k^{-1}m_k^i - z_k^i epointi,k=Xk1mkizki最终误差:从左到右为①②③④
m θ i n ∑ l , k ρ ( ∣ ∣ e s m o o t h l , k ∣ ∣ ∑ z 2 ) + ∑ k ρ ( ∣ ∣ e o d e m e t r y k ∣ ∣ ∑ o 2 ) + ∑ i , j , k ρ ( ∣ ∣ e m o t i o n i , j , k ∣ ∣ ∑ g 2 ) + ∑ i , k ρ ( ∣ ∣ e p o i n t i , k ∣ ∣ ∑ z 2 ) \underset{\theta} min\sum_{l,k}\rho(||e_{smooth}^{l, k}||_{\sum_z}^2) + \sum_{k}\rho(||e_{odemetry}^{k}||_{\sum_o}^2) \\+ \sum_{i,j,k}\rho(||e_{motion}^{i,j, k}||_{\sum_g}^2) + \sum_{i,k}\rho(||e_{point}^{i, k}||_{\sum_z}^2) θminl,kρ(∣∣esmoothl,kz2)+kρ(∣∣eodemetryko2)+i,j,kρ(∣∣emotioni,j,kg2)+i,kρ(∣∣epointi,kz2)待优化参数列表:从左到右为3D点坐标,相机位姿,齐次变换
θ = { θ X , θ M , θ H } \theta = \{\theta_X, \theta_M, \theta_H\} θ={θX,θM,θH}
因子图
在这里插入图片描述
蓝色:静态点;黑色:相机位姿;红色:动态点;绿色:齐次变换;
黑色圈:globalmap给的先验约束;橙色圈:odemestry约束;白色圈:观测约束;洋红色圈:点运动约束;object运动平滑约束:青色;

3 实验

三个误差尺度:
①平移误差 E t E_t Et:位姿变换E中的平移部分,用L2范数表示;
②旋转误差 E r E_r Er:位姿变换E中的旋转部分;
③object速度误差:运动前在两帧之间的运动向量就是速度:
v ≈ m k i − m k − 1 i = ( H k − I ) m k − 1 i = t k − ( I − R k ) m k − 1 i v \approx m_k^i - m_{k-1}^i = (H_k - I)m_{k-1}^i\\ =t_k - (I-R_k)m_{k-1}^i vmkimk1i=(HkI)mk1i=tk(IRk)mk1i对于一个object的速度,用其质心坐标 c k − 1 = 1 n ∑ m k − 1 i c_{k-1}=\frac{1}{n}\sum m_{k-1}^i ck1=n1mk1i的速度误差表示:
v ≈ 1 n ∑ i = 1 n ( t k − ( I − R k ) m k − 1 i ) = t k − ( I − R k ) c k − 1 v \approx \frac{1}{n}\sum_{i=1}^n(t_k - (I-R_k)m_{k-1}^i)\\ = t_k - (I-R_k)c_{k-1} vn1i=1n(tk(IRk)mk1i)=tk(IRk)ck1

问题

1.一直提到的inliner的具体意义是什么?
2.没有太理解object跟object上的点是什么样的关系;
这里应该没有完整的object概念,文中的object就是为了好说明原理,实质上是点云;

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值