Advertisement

Visual-lidar Odometry and Mapping: Low-drift, Robust, and Fast. V-LOAM论文. ICRA2015

阅读量:

4.系统概略

整个系统被分为两部分:

视觉里程计

视觉里程计以图像帧率估计帧间运动,使用的是带有激光雷达辅助的视觉图像。

在这个部分中,特征提取模块提取并且匹配相邻帧的特征点。

深度地图注册depth map registration模块将激光点云和local depthmap关联到一起,为视觉特征提供深度。

帧间运动估计模块使用视觉特征估计运动。

激光雷达里程计

一次sweep扫描定义为一帧,本系统一次扫描持续1s,每完成一次扫描执行一次激光雷达里程计。

帧(sweep)间refinement模块匹配相邻帧的点云来refine估计出来的运动并且消除点云畸变。

帧-地图注册模块匹配点云和已经建好的地图,并发布相对于地图的位姿。

发布出去的位姿是整合了两个里程计的结果,以图像频率发布。

大概就是60hz帧的速度做视觉里程计,1hz的帧率做激光里程计。

当有激光的时候发布refine结果?没有激光的时候等于还是视觉里程计输出的位姿?

5.视觉里程计

通过激光点云的帮助,视觉里程计注册并且维护了一个深度地图depth map,用以估计运动。

计算运动的时候,三种视觉特征会被考虑进去,以深度的来源区分为:1. 深度地图提供深度 2. 根据之前运动估计三角化得到的深度 3. 无深度。

对于一个特征点in I,它可以表示成X_{i}^{k}=^T,第k帧的第i个特征点X。(原文还有个左上标S表示Sensor坐标系)

对于一个不知道深度的特征点,使用标准化坐标表示方式,verline{X}_{i}^{k}=^T,其中eft verline{X}_i^k ight =1

使用刚体运动方程建模帧间运动,R为旋转矩阵T为位移向量,得到:
X^k = R*X^{k-1}+T (再省略一个特征下标i)

当k帧特征点X^k_i深度存在的时候,我们能直接把这距离跟上一帧的点关联。

什么情况特征点的深度是知道的?

然而X^k_i的深度总是未知,因为k-1到k帧的运动还未知,我们没办法从深度地图或者通过运动T三角化获得k帧深度。

通过运动T来三角化特征点以获得深度?一般是我们是通过两帧的特征点对来三角化特征点并且估算T吧?

定义d^k_i=eft  verline{X}^k_i ight ,用dk_i*\overline{X}k_i取代(1)中的X^k_i得到egin{matrix} dk\overline{x}k_i=R_1X^{k-1}+T1  dk\overline{y}k_i=R_2X^{k-1}+T2  dk\overline{z}k_i=R_3X^{k-1}+T3 nd{matrix},第一第三行抵消d,第二第三行抵消d,得到:egin{matrix} d^k= rac{R_1X{k-1}+T1}{\overline{x}k_i}=rac{R_3X{k-1}+T3}{\overline{z}k_i}  d^k= rac{R_2X{k-1}+T2}{\overline{y}k_i}=rac{R_3X{k-1}+T3}{\overline{z}k_i} nd{matrix}

整理成标记成(2)和(3)。

当特征点深度不存在的时候,前一帧X^{k-1}_i后一帧X^k_i的深度都不知道。以相似的方法用d{k-1}_i*\overline{X}{k-1}_idk_i*\overline{X}k_i分别替换掉(1)中的部分。

结合三行消除d,得到:标记为(4).

咋消的d?

上面处理说明,当一个特征具备深度的时候可以给出2-3式,而不具备深度信息的时候只能给出4式。

我们把所有的点提供的等式摞在一起,把运动T用6自由度表示,用LM方法求解。每个点的残差用来提供权重,以减少错误匹配的影响。

当维护深度地图的时候,新收到的激光雷达点云会被加入到地图中。只有摄像头前面的点,并且不是太久的点会被考虑进去。

深度地图会被downsized(how?)以保持固定的点密度,并且投影到最近的相机帧(一旦最近帧和上一帧的转换关系知道)。

深度地图中的点用球坐标系表示(两个角度一个距离),并且以2D KD-tree存储(两个角度为轴)。

当查找特征点的深度的时候,我们找到该点最近的三个深度地图点,构成一个平面,相机光心到该平面的距离就是深度。(跟后来某paper一样做法)

另外,如何有些特征点在地图中找不到深度,但是已经被追踪了一段距离,我们会将这些点用连续图像帧三角化。

下图绿色特征点深度来自深度图,蓝色特征点深度来自三角化

还是不清楚具体流程,盲猜是

求RT

当相机观测到特征点,这时候k和k-1的运动还不知道,

所以通过图像中的特征点匹配关系,找到k-1的对应特征点,如果k-1的点知道深度(上图绿色蓝色),构建2-3式,如果不知道k-1特征点深度(上图红色),构建4式。

摞好所有特征点的公式,带上权重,利用LM求最优RT。

维护深度地图

这时候已经知道k到k-1的运动了,我们把激光雷达的点云投影到深度地图中,用KD tree存储。

当k+1帧来的时候,要在k帧里面找对应特征点的深度(蓝色绿色),这个深度信息就来自于这张更新到了k帧的深度地图。

激光雷达里程计

激光雷达和后面的部分好理解的多。。。有空再写 忙读其他论文去了。

全部评论 (0)

还没有任何评论哟~