-
摘要: 从提高机器人视觉同时定位与地图构建(Visual simultaneous localization and mapping,VSLAM)算法的实时性出发,在VSLAM的视觉里程计中提出一种自适应特征地图配准的算法.首先,针对视觉里程计中特征地图信息冗余、耗费计算资源的问题,划分特征地图子区域并作为结构单元,再根据角点响应强度指标大小提取子区域中少数高效的特征点,以较小规模的特征地图配准各帧:针对自适应地图配准时匹配个数不满足的情况,提出一种区域特征点补充和特征地图扩建的方法,快速实现该情形下当前帧的再次匹配:为了提高视觉里程计中位姿估计的精度,提出一种帧到帧、帧到模型的g2o(General graph optimization)特征地图优化模型,更加有效地更新特征地图的内点和外点.通用数据集的实验表明,所提方法的定位精度误差在厘米级,生成的点云地图清晰、漂移少,相比于其他算法,具有更好的实时性、定位精度以及建图能力.Abstract: An improved visual simultaneous localization and mapping (VSLAM) algorithm based on the adaptive feature map is proposed in order to enhance real-time performance. The feature map is divided into sub-regions and structural units are employed to reduce computation cost. After that the most effective feature points, sorted by corner response intensity, are extracted and matched with the current frame. In the case that the adaptive map features are not enough for registration, a method of adding more region feature point supplements and extending the feature map is also proposed, which enables re-matching ability for the visual odometry system. A frame-to-frame and frame-to-map graph optimization method is also implemented to effectively update the internal and external points in the feature map. The results in public dataset show that the location accuracy error of the proposed method is centimeter and that the point cloud map is clear and has less drift. Compared with the original one, the proposed method has better real-time performance, positioning accuracy and the ability to build maps.
-
随着机器人技术的深入发展, 基于视觉的同时定位与地图构建(Visual simultaneous localization and mapping, VSLAM)的技术具有越来越多的应用[1-2]. VSLAM技术同时需要机器人的三维环境信息和对应的轨迹信息, 因此VSLAM技术对机器人的定位实时性和精度要求较高.
目前, 机器人精确的位姿估计主要依靠轮式里程计(Wheel odometry)[3]、全球定位系统(GPS)[4]、惯性导航系统(Inertial measurement unit, IMU)[5]以及视觉里程计(Visual odometry, VO)[6-9]等.随着稀疏矩阵和非线性优化理论的完善, 基于VO技术的SLAM得到越来越广泛的发展[10-12], 出现了一些经典的实现方案, 如LSD-SLAM、ORB-SLAM、RGBD-SLAM等算法. VO主要是基于视觉原理, 通过相邻两帧的图像信息计算相机的相对位姿.一般而言, SLAM的VO计算主要分为两类.一类是基于稀疏特征点的VO, 另一类是稠密的方法.基于稀疏特征的VO根据SIFT (Scale invariant feature transform)、SURF (Speeded up robust features)、ORB等特征点的匹配建立帧间联系.比如, Henry等[12]利用RANSAC求解两帧图像间的变换矩阵, 然后利用迭代最近点算法(Iterative closest point, ICP)求解两帧深度图像间的最优变换; Endres等[13]等在RANSAC求解变换矩阵的基础上, 通过图优化器g2o优化当前帧的位姿(RGBD-SLAM-V2), 得到了全局一致的地图; Huang等[11]借鉴立体视觉里程计, 设计了一套基于Kinect的视觉里程计(Fast odometry from vision, FOVIS); 为了提高位姿估计的精度, Dryanovski等[14]提出了一种帧到特征地图的视觉里程计(Fast visual odometry, FVO), 实现了单帧对特征地图点的位姿估计.高翔等[15]在FVO基础上, 提出了一种g2o (General graph optimization)优化的帧到特征地图的视觉里程计, 为后端和建图提供了更准确的位姿信息. Cao等[16]在提取的关键帧的重叠区域, 通过块匹配重建重叠区域, 提取了少于5%的关键帧, 有效地构建了关键帧的地图匹配. Martins等[17]提出了一种基于RGB和ICP点对平面误差项调节的激活函数, 有效降低了前端视觉里程计的误差影响, 但是付出了更多运算时间. Wadenbäck等[18]利用相邻两帧的平面特征, 简化了参数, 提高了效率, 但是不适合复杂的场景.稠密方法最早是由Steinbrücker等[19]提出的, 在图像一致性的假设下, 相比于特征点法能够充分利用像素信息, 但缺点是需要耗费大量计算资源, 通常需要GPU加速.
综上所述, 目前已有方法的视觉里程计大多还是精度不够, 或者对硬件要求较高.为此, 本文在帧到特征地图配准的基础上, 针对特征地图数据量大、耗费计算资源的缺陷, 提出一种自适应特征地图的改进SLAM算法.首先, 以划分的特征地图的子区域为最小单元, 根据特征角点响应强度提取少量高效的特征点, 并进行各帧配准; 其次, 为应对小规模地图出现的配准失踪的情况, 提出一种子区域特征点补充和特征地图扩建的方法, 快速实现当前帧的再次匹配; 最后, 为了进一步提高VO的位姿估计精度, 增加特征地图优化环节, 且在该环节中提出一种帧到帧、帧到特征地图的局部图优化模型, 并通过g2o实现了相机位姿和地图特征点的同时优化.
1. VSLAM算法框架
本文通过图优化的方式实现VSLAM算法, 主要包括三部分:视觉里程计、图优化以及地图构建, 其中视觉里程计是利用本文提出的自适应特征地图匹配完成, 框架如图 1所示.
1.1 视觉里程计
视觉里程计(VO)的主流方法是特征点法, 但是该方法仍存在各帧特征点错误匹配率高的问题.为了提高VO的计算精度、减少误匹配, 本文在VSLAM的框架中, 加入了自适应特征地图, 将各帧与自适应规模的特征地图配准, 在减少计算量的同时, 提高了VO的位姿估计精度.
常用的特征点有: SIFT、SURF、ORB等[15, 20], 考虑到实时性要求, 本文选择ORB算子进行特征提取与匹配. ORB算子于2011年由Rublee等[21]提出, 其保持了特征具有的旋转和尺度不变性的同时, 速度效率提升明显.在ORB的基础上结合汉明距离, 利用BruteForceMatcher匹配特征地图与各帧的特征点, 并针对误匹配、匹配点数不足的情形, 分别利用区域特征点补充和地图扩建的方式再次匹配各帧特征点; 最后, 利用匹配的特征点计算内点和变换矩阵, 并计算帧间相对运动距离.
1.2 图优化
VO完成后, 可通过位姿图优化相机位姿, 常用的方法有:基于非线性的最小二乘优化、基于松弛的优化方法、随机梯度下降法以及流行优化方法.前三类方法都在欧氏空间下计算但实际的相机位姿表达是非欧氏空间的, 利用此类方法容易产生欧氏空间的奇异值, 因此, 可用四元数表示相机位姿并通过流行空间优化位姿. g2o是Kümmerle等[22]提出的一种用于优化流行空间的开源工具包, 具有更高的效率和开发精度.本文在VSLAM算法中, 为了进一步提高各帧位姿的精度, 不仅利用g2o进行后端图优化[15], 而且在前端也利用g2o优化特征地图的内外点以及前端位姿估计.
1.3 地图构建
三维空间表示有很多方法, 主要为3D点云图和3D octomap[23]地图. 3D点云图在表示地图环境时清楚、直观, 但是冗余信息较多且占据大量内存, 不适合复杂的环境和终生SLAM (Life-long SLAM)算法.相反3D octomap地图则避免了上述缺点, 通过较小的内存空间直观的表示地图中占据、空闲和未知区域, 更有利于机器人的导航和路径规划.
2. 自适应特征地图构建和帧到帧、帧到模型的g2o的特征地图优化
视觉里程计是通过帧间的匹配信息估计相机的位姿变化, 为了提高VO的位姿估计精度, 一般将当前帧与历史帧集做特征点匹配, 但是需要多次匹配且计算量大, 耗费了大量计算资源.本文在Dryanovski提出的模型[14]基础上, 以较小规模维护特征地图.首先, 针对小规模特征地图配准失踪的情况, 补充子区域特征点和特征地图扩建, 在保证位姿精度的同时缩短了运算时间; 其次, 提出一种帧到帧、帧到特征地图的图优化模型更新当前帧的位姿和地图特征点位置.
2.1 自适应特征地图构建
在不考虑光照、遮挡的特殊情况下, 特征地图的特征点是丰富的, 除了特征地图与各帧匹配的特征点, 大部分特征点是冗余的, 例如地图中不在当前帧视野内或者视野角度过大的特征点等.为此, 本文从VSLAM的实时性出发, 研究如何维护一个低规模的特征地图, 使得满足各帧的正确匹配点集, 以及提出一种未满足配准时当前帧的快速再次配准的方法.
2.1.1 特征地图构建
假设Kinect在第$k$时刻采集的数据集为$I_k$, 设利用特征提取和相机投影模型得到的特征点集为${L_k}({l_i}, i = 1, \cdots, n)$, 其中每个特征点为${l_i}$ = {${{p}_i^{[L]}, {R}_i^{[L]}}$}, ${\pmb {p}}_i^{[L]} = [x, y, z]$为第$i$个特征点在相机坐标系下的位置向量, 具体计算见式(1); $R_i^{[L]}$是从OpenCV的SIFT库检测到的该特征点的角点响应强度, 表征该特征点的角点强度大小.
$ \begin{equation} {\pmb {p}}_i^{[L]} = [x, y, z]= \begin{cases} {z = d}\\ {x = \dfrac{{u - {c_x}}}{{{f_x}}}z} \\ {y = \dfrac{{v - {c_y}}}{{{f_y}}}z} \end{cases} \end{equation} $
(1) 式中, $[u, v]$为第$i$个特征点的像素位置, ${f_x}, {f_y}, {c_x}, {c_y}$为相机内参, $d$为Kinect采集的对应像素深度值.
同理, 构造特征地图$M = [{m_i}]$, 特征点.不仅包含第$i$个特征点的位置向量和特征角点响应强度, 还有该特征点的ORB描述子$d_i^{[L]}$, 以及历史匹配次数$t_i^{[L]}$.另外, 需要强调的是, 特征地图初始化是由最初的前$k-1$个时刻的特征点组成, 并且全部都是以世界坐标系为参考(本文以第一帧为世界坐标系).随着相机运动, 需要往地图里实时添加新的特征点.为了能够让VO做得更快、节约计算资源, 利用VSLAM中已有的关键帧线程, 直接将距离当前帧近的关键帧的特征点添加到特征地图中, 当特征地图达到一定规模之后, 再把距离当前帧远的特征点筛除, 具体过程如下:
步骤1. 设帧间的旋转向量${\pmb {r}}$和平移向量${\pmb {t}}$, 可求解出各帧间的相对运动距离: .利用$D$添加特征地图:
1) 若${D_{\min }} \le D \le {D_{\max }}$, 则;
2) 若$D < {D_{\min }}$, 则$Fram{e_{{\rm{curr}}}} \ne Fram{e_{{\rm{key}}}}$;
3) 若$D > {D_{\max }}$, 则$Fram{e_{{\rm{curr}}}} \ne Fram{e_{{\rm{key}}}}$.其中, $Fram{e_{{\rm{curr}}}}$是当前帧, $Fram{e_{{\rm{key}}}}$是关键帧, ${D_{{\rm{min}}}}$、${D_{{\rm{max}}}}$分别是两帧之间的最小和最大的运动距离, 只有满足条件(1)的当前帧才被选作关键帧, 该关键帧的特征点才能被添加至特征地图中.
步骤2. 设特征地图中特征点个数为$\varpi$, 特征地图规模阈值为$\gamma$, 当$\varpi\geq\gamma$时, 将特征地图中最早添加的帧丢掉.
2.1.2 自适应的特征地图维护
特征地图中冗余特征点的匹配的计算量是巨大的, 一般CPU无法满足SLAM的实时性要求.为此, 本文提出一种自适应规模的特征地图用于帧间匹配, 该特征地图以较小的规模快速地计算各帧配准, 即使未能正常匹配, 该特征地图也能通过子区域特征点补充和轨迹预测的地图扩建方法快速再次匹配, 具体地图构维护如下:
1) 剔除特征地图中不在视野内的点
首先, 设帧间相对运动距离为, 其中${{T}_i}$为第$i$帧相对世界坐标系的变换矩阵.不妨先假设当前帧的帧间相对运动${T}_{i, i+1}$与前一帧的帧间运动${{T}_{i-1, i}}$相等, 则第$i$+1帧的位姿初步估计为${{T}_{i+1}}$ = ${{T}_{i-1, i}}$ ${{T}_i}$.其次, 利用该位姿剔除特征地图中不在视野内的特征点, 该算法用伪代码表示:
计算地图特征点${{\pmb {p}}^M}$在位姿${{T}_{i+1}}$下的像素位置:
$ d\left[ {\begin{array}{*{20}{c}} u\\ v\\ 1 \end{array}} \right] = K{T_{i + 1}}{{\pmb {p}}^{\left[ M \right]}} $
If $(u > 0~\& \&~ u < {\rm{length}}\_\rm{rgb})$ Then
If $(v > 0~\& \&~ v < {\rm{width}}\_\rm{rgb})$
保留该特征点${\pmb {p}}^{[M]}$;
End If
End If
上述算法中, length_rgb, width_rgb分别为各帧图像的长、宽.需要注意的是, 由于当前的位姿估计不准确, 一般将视野比例扩大.因此, 通过上述算法能够初步从特征地图中提取出在第$i$+1帧视野内的特征点.
2) 基于视野区域分块的特征地图构建
由于特征地图是由各参考帧为地图贡献的一些信息组成, 那么在相同的视野区域内, 不同参考帧贡献的信息就存在冗余.为了剔除冗余信息, 本文对视野区域内的特征地图分块, 依据角点响应强度$R_i^M$($R_i^M$越大, 该特征点被匹配的概率越高)对地图子区域中的特征点排序, 然后将部分角点强度大的特征点集作为特征地图, 具体步骤为:
步骤1. 对每帧图像区域分块, 即均匀地将图像分成$m$ $\times$ $n$块, 并对各子区域编号见图 2所示; 再根据特征点的像素位置, 将特征点标记到对应的子区域中.
步骤2. 利用${R_i^{[M]}}$对子区域中的特征点排序, 并从各子区域中提取$\theta {D_j}~(0 < \theta < 1)$个特征点组成第$i$+1帧的特征地图, 其中$D_j$是$j$区域的特征点个数, $\theta$为区域特征有效因子.
按照上述算法构建的特征地图, 有效地利用了各参考帧中易被匹配的特征点, 在保证位姿估计精度的同时缩减了运算时间, 但是在该算法中$\theta$的取值受到大小两端的限制, 若$\theta$取值过大将造成地图中特征信息冗余、匹配时间增加, 不能满足实时性的要求, 若取值过小则不能充分利用特征地图信息, 造成当前帧与特征地图配准个数偏少, 计算的位姿偏差, 甚至视觉里程计追踪丢失的情况.因此$\theta$的取值应适宜, 依据经验常选取为[0.5~0.7] (具体特征地图的有效因子实验见第3.2节), 但是实际工况复杂, 很有可能相邻两帧之间的旋转、平移距离较远或者一些相机旋转抖动的特殊情况, 造成当前帧与减小规模后的特征地图匹配点数偏少, 甚至VO追踪丢失.为此, 本文对此类情形进一步讨论, 研究各帧配准点较少时的特征地图的扩充方法.
3)配准点较少时的特征地图扩充
设定各帧与特征地图的配准个数为$q$, 配准阈值为$\lambda$, 则造成当前帧与特征地图配准个数$q$小于$\lambda$的原因可能是: a)取值偏小, 造成特征地图中对当前帧的有效特征数量偏少; b)当前帧的帧间运动$T_{i, i+1}$与前一帧的帧间运动$T_{i-1, i}$相等的假设不成立, 即帧间运动相差较大, 造成特征地图中保留的是假视野内的特征点.
对于a)情形, 虽然特征地图与当前帧的配准点数较少, 但是匹配得到的配准点是正确的, 根据当前帧与特征地图的配准点分布, 从对应的子区域和相邻子区域中补充历史匹配次数$t_i^L$多的特征点($t_i^L$越大, 该特征点被匹配的概率越高).由于各子区域的位置分布不同, 其补充特征点的方式也不相同, 如图 3所示.其中图 3(a)是当配准点分布在对应的视野边界角区域(对应图 1中1, $n$, $m$, $mn$子区域)时的地图特征点补充方式, 基于子区域特征点补充的最大原则, 考虑到边界角区域相邻边较少, 在该区域的特征点补充从边相邻1, 3区域以及角相邻的2区域补充; 图 3(b)是配准点分布在边界区域时的特征点补充方式, 直接从边相邻区域1, 2, 3补充; 同理, 图 3(c)是配准点在中间区域时的特征点补充方式, 直接从边相邻区域1, 2, 3, 4补充.
针对a)情形, 按照图 3的补充方式能够有效地补充地图特征点, 再将补充的特征点与当前帧做匹配, 加上首次的配准点, 就能够快速完成当前帧的特征点匹配.
当然a)的地图特征补充方式是不适合b)情形的.当第$i$+1帧的帧间运动$T_{i, i+1}$与前一帧的帧间运动$T_{i-1, i}$相差较大, 则之前假设$T_{i, i+1}$$=$$T_{i-1, i}$而构建的特征地图是不合适的.为此, 本文提出一种基于位姿预测的特征地图扩建方法.首先提出一种简单有效的位姿预测, 利用预测的位姿寻找对应地图中的视野区域, 再将该区域的特征点与当前帧匹配, 具体过程如下:
i) 增大地图视野.设地图视野缓冲长度$\beta$, 将地图视野分别从长宽两端增加为length_rgb + $2\beta$, width_rgb + $2\beta$, 然后按照1)中步骤剔除特征地图中不在视野内的特征点, 则增大的地图视野见图 4所示, 其中$p$, $e$, $b$, $w$分别作为特征地图的增大区域的标记, 其编号按照顺时针方向编排.
ii) 位姿估计.虽然实际中相邻帧的变换矩阵$T_{i, i+1}$$\neq$$T_{i-1, i}$, 但是因为实际中各帧的采样频率较高(以TUM RGB-D Benchmark数据集为例, 采样频率为20至30 FPS (帧/秒)), 相邻帧的变换矩阵差别较小, 在假设$T_{i, i+1}$$\doteq$$T_{i-1, i}$的条件下获取的视野范围是与实际帧的视野范围有部分重叠, 在该重叠视野区域下获得的当前帧与特征地图的配准点是有效的.为了最大程度获取正确视野内的地图特征点, 可利用已有配准点在特征地图的分布, 粗略地估计当前帧位置可能的最大化运动方向, 再将最大化运动方向的地图视野内特征点扩建为特征地图.
图 5是配准点分布在不同区域的地图扩建方式, 其中图 5(a)是配准点分布在视野边界角区域(对应图 1中编号为1, $n$, $mn-m+1$, $mn$的子区域)时的地图扩建方式.基于地图扩建的最大原则, 由于该配准点在视野的左边界角区域, 只是基于该区域的配准点估计该帧的最大位姿运动方向如图 5(a)中箭头方向, 那么包含该配准点的最大视野应包含边相邻和角相邻1, 2, 3区域, 因此该区域的扩建地图应包围相邻的1, 2, 3区域. 图 5(b)是配准点在边界区域时的特征地图扩建方式, 当配准点位于边界区域时, 那么该配准点的最大视野应包含图中1, 2, 3区域, 因此从边相邻区域1, 2, 3扩建地图. 图 5(c)是配准点对应第二层边界角区域时的特征地图扩建方式, 从最大位姿运动考虑, 该地图特征点补充从1, 2, 3, 4, 5区域补充, 但是因为该配准点是在第二层边界角区域, 相对于图 5(a)、图 5(b)的地图扩建的面积应该线性减少, 面积计算见式(2).同理, 图 5(d)是配准点在中间区域时的地图扩建方式, 直接从边相邻区域1, 2, 3, 4补充, 地图扩建面积的计算见式(2).
$ \begin{align} &{S_{{\rm{expansion}}}} = \nonumber\\&\quad\left\{ \begin{array}{*{20}{l}} {\beta ^2} + 2\beta n, {\rm{inlier}}(i) \in \{ 1, n, mn - m + 1, mn\} \\ 3\beta n, \;\;\quad \qquad ~\quad \hfill{\rm{inlier}}(i) \in {S_1} \cup {S_2} \cup {S_3} \cup {S_4}\\ \left[\dfrac{{{\rm{layer}}(i)}}{{{\rm{layers}}}}\beta\right ]^2 + 4\dfrac{{{\rm{layer}}(i)}}{{{\rm{layers}}}}\beta n, \quad \hfill {\rm{inlier}}(i) \in {S_5}\\ 3\dfrac{{{\rm{layer}}(i)}}{{{\rm{layers}}}}\beta n, \qquad \qquad \quad \quad \hfill{\rm{inlier}}(i) \in {\rm{others}} \end{array} \right. \end{align} $
(2) 其中, $\beta$是地图视野缓冲长度, $n$是特征地图子区域的边长, inlier($i$)表示第$i$配准点所在的子区域编号, layer($i$)为第$i$配准点最靠近视野边界所在的层数, layers是视野中心到视野边界的层数, ${S_1}, {S_2}, {S_3}, {S_4}$为边界区域编号的集合, 分别为: , ${S_2} = \{ 2n, 3n, \cdots, mn - n\} $, ${S_4} = \{ n + 1, 2n + 1, \cdots, (m - 2)n + 1\}$, ${S_5}$是第二层边界角区域编号的集合, 即: ${S_5} = \{ n + 2, 2n - 1, mn - n - m + 2, mn - n - 1\} $.
针对b)情况, 按照图 5的特征地图扩建方法能够有效地补充正确视野下的特征点, 然后再将这部分特征点与当前帧做匹配, 加上之前匹配的配准点, 就能够完成当前帧的特征点匹配. 图 6给出了各帧的视觉里程计的配准流程, 其中pnp表示匹配的特征点数, $\lambda$是各帧配准点个数的阈值, curr代表当前帧, update是更新配准点所在的子区域编号.
2.2 基于帧到帧、帧到模型的g2o的特征地图的更新
本文构建的自适应特征地图与当前帧做视觉里程计, 极大地缩短了匹配时间, 但付出了匹配精度下降的代价, 为了提高位姿估计精度, 减少累积漂移的问题, 本文引入Kummerle提出的g2o图优化算法, 提出一种帧到帧、帧到模型的g2o优化特征地图和相机位姿的优化算法.
首先, 通过改进的特征地图与当前帧的视觉里程计, 计算出转换矩阵, 见式(3)所示.
$ \begin{equation} \begin{pmatrix} {{R}_L^{M}}&{{t}_L^M}\\ 0&1 \end{pmatrix} ={{T}_L^M} \end{equation} $
(3) 根据该转换矩阵, 将当前帧与特征地图建立起对应关系, 并定义当前帧与特征地图匹配的特征点为内点, 未建立对应关系的特征点称为外点, 因此特征地图点的更新分为内点更新和外点更新.
外点的更新则是将各帧中未建立关系的特征点利用式(4)和式(5)转换为世界坐标系下的三维空间点, 然后直接导入特征地图中.
$ \begin{equation} {{\pmb {p}}_w} = {{T}_L^M}{{\pmb {p}}_c} \end{equation} $
(4) $ \begin{equation} d\left[ {\begin{array}{*{20}{c}} u\\ v\\ 1 \end{array}} \right] = {K}{{\pmb {p}}_c} \end{equation} $
(5) 其中, $[u, v]$是当前帧中外点的像素坐标, $d$是Kinect测定的深度, $K$为相机内参, ${{\pmb {p}}_c}, {{\pmb {p}}_w}$是该外点对应相机坐标系和世界坐标系的坐标.
分析式(4)和式(5), 在不考虑Kinect外在干扰的情况下, $K$、$d$可认为是常量, 则该外点的世界坐标值只与当前帧的转换矩阵${{T}_L^M}$相关, 即更新的外点的精度直接取决于当前帧的位姿估计.因此, 本文通过图优化器g2o构建最小二乘问题, 然后寻找最优的相机位姿, 使它最小化, 如式(6)所示.
$ {\xi ^*} = \arg \mathop {\min }\limits_\xi \frac{1}{2}\sum\limits_{i = 1}^n {\left\| {{u_i} - \frac{1}{{{d_i}}}K\exp \left( {{{\xi }^ \wedge }} \right){p_i}} \right\|_2^2} $
(6) 其中, $K$为相机内参, $\xi$是相机位姿(${R}, {t}$)对应的李代数, 也称为g2o中的节点, ${{\pmb {u}}_i}$是第$i$个外点的像素坐标, ${{\pmb {p}}_i}$是第$i$个外点的世界坐标, "$^\wedge$"表示反对称矩阵, g2o中每个3D点在相机中的投影, 以观测方程来描述: ${z_j} = h({{ ξ}} , {{{p}}_j})$, 具体的g2o优化示意图如图 7所示.
对于内点的更新, 通常的做法是与外点的更新一样, 但是这样构建的g2o约束条件较少, 优化的精度不明显.为此, 本文将地图点作为优化变量考虑进来, 为了提高g2o的优化精度, 建立了当前帧与相邻的关键帧(为了方便叙述, 称其为历史关键帧)以及特征地图点的约束关系, 提出一种帧到帧、帧到模型的g2o优化模型, 其基本思想将当前帧与历史关键帧建立匹配关系, 因为历史关键帧中除了特征点还有各自的位姿信息, 这样能够与当前帧建立更丰富的约束关系, 有利于提高g2o的优化精度.
考虑到VSLAM的实时性要求, 为了建立当前帧与历史关键帧的特征点对应关系, 本文在特征地图点更新的过程中标记特征点的来源帧信息, 这样在VO中, 若当前帧与特征地图匹配成功, 由于配准点具有标记的历史关键帧信息, 即可建立当前帧与历史关键帧的特征点匹配关系, 再构建当前帧与历史关键帧的优化问题, 并通过g2o求解, 具体过程为:
步骤1. 建立投影关系(假设参考帧的相机位姿为单位矩阵);
$ {d_{ref}}\left[ {\begin{array}{*{20}{c}} {{u_{ref}}}\\ 1 \end{array}} \right] = K{\pmb {p}_i};{d_L}\left[ {\begin{array}{*{20}{c}} {{u_L}}\\ 1 \end{array}} \right] = K\exp \left( {{\xi }_L^ \wedge } \right){\pmb {p}_i} $
(7) $ \begin{equation} {{{{ ξ}} }}_L^{} = {{{ {{ ξ}} }}_{ref}} \circ \Delta {{{{ ξ}} }}_{ref, ref + 1}^{} \circ \cdots^{} \circ\Delta {{{{ ξ}} }}_{L - 1, L}^{} \end{equation} $
(8) $ \begin{equation} \Delta {{{ {{ ξ}} }}_{i, j}} = {{{{ ξ}} }}_i^{ - 1} \circ {{{{{ ξ}} }}_j} = \ln (\exp({( - {{{{{ ξ}} }}_i})^ \wedge })\exp({{{{ ξ}} }}_j^ \wedge )) \end{equation} $
(9) 其中, $L$表示当前帧, $ref$表示历史关键帧, 即: $ref = L - 1, L - 1, \cdots, L - c$, $c$为历史关键帧的数目, ${{{{{ ξ}} }}_i}, {{{{{ ξ}} }}_j}$分别表示第$i$和第$j$个相机位姿, $\Delta {{{{{ ξ}} }}_{i, j}}$表示${{{{{ ξ}} }}_i}$和${{{{{ ξ}} }}_j}$之间的运动, ${d_{ref}}, {d_L}$是对应像素的深度, ${{{p}}_i}$是世界坐标, ${{{u}}_{ref}}, {{{u}}_L}$是两个相机坐标下的像素坐标, $K$是相机内参.
步骤2. 在图优化中, 构建一个优化问题并利用图去求解.这里优化问题可以表示成对所有特征点的误差求和, 构建最小二乘优化如下:
$ \begin{array}{*{20}{l}} {\mathop {\min }\limits_{P,\;{\xi _L}} \sum\limits_{i = 1}^N {{{\left\| {\frac{1}{{{d_{ref}}}}K{\pmb {p}_i} - {{\left[ {{u_{ref}},1} \right]}^{\rm{T}}}} \right\|}^2} + } }\\ {\quad \quad \quad \quad {{\left\| {\frac{1}{{{d_L}}}K\exp \left( {\xi _L^ \wedge } \right){\pmb {p}_i} - {{[{\pmb {u}_L},1]}^{\rm{T}}}} \right\|}^2}} \end{array} $
(10) 步骤3. 构建内点g2o图优化, 再加上外点g2o的位姿优化, 本文的特征地图g2o优化如图 8所示.
在本文构造的内外点更新优化模型中, 由于考虑了当前帧与历史关键帧的匹配关系, 增加了更多的约束, 提高了g2o的优化精度, 但是特征点在坐标转换中也会存在误差, 因此当前帧与历史关键帧的匹配不宜过多, 根据经验选取历史关键帧的数目$c=1, 2, 3$, 优化效果较好.
3. 实验与分析
所有实验均是在ubuntu14.04系统下完成, 电脑配置如下: CPU (2.0 GHZ Intel i7), 运行内存8 GB.实验数据分别来自于TUM RGB-D Benchmark数据集[24], 实验主要做了三方面验证: 1)不同算法的特征地图规模对比; 2)验证了配准不满足时的特征地图补充方法的有效性; 3)比较了RGBD-SLAM2、FVO、文献[15]的算法、本文改进FVO算法(1) (未使用帧到帧、帧到模型的g2o优化)以及本文改进FVO算法(2) (包含帧到帧、帧到模型的g2o优化)对VSLAM的实时性、特征地图累计规模、轨迹精度、建图的效果.另外, 由于本文是对视觉里程计的改进, 为了弱化后端对前端的优化, 在全部的VSLAM算法中保留较少的关键帧, 设定关键帧的参数为: ${\rm{min\_translation = 0}}{\rm{.25}}$, ${\rm{min\_rotation = 0}}{\rm{.25}}$, 以对比前端视觉里程计的改进效果.
3.1 改进的特征地图规模对比
特征地图的难点是维护它的规模, 一旦地图规模太大, 匹配会消耗大量时间.以fr1-room数据为例, 图 9对比了RGBD-SLAM2、FVO、文献[15]算法以及本文算法(区域特征有效因子$\theta=0.3$)每帧匹配的特征地图规模以及累计地图规模.
由图 9可知, 相比于RGBD-SLAM-V2、文献[15]算法的地图数据量大、信息冗余以及部分帧特征规模波动较大的缺点, 本文算法利用区域特征提取、子区域特征补充、特征地图扩建的方法, 保证了地图规模稳定在(200~400)的较低区间, 有效地实现了低规模地图的位姿估计.此外, 从累计地图规模分析, 本文算法的地图规模约占RGBD-SLAM-V2算法的1/5 (文献[15]算法的1/3), 减少了内存、缩短了匹配时间, 满足了实时性要求.
3.2 配准不满足时特征地图补充方法的有效性验证
本文以小规模的特征地图配准, 为了应对过程中可能出现配准点数较少的情形, 本节验证此情形下特征地图补充方法的有效性.区域特征有效因子是算法中控制地图规模的参数, 本节通过设定不同的来控制特征地图的规模, 以fr1-room数据为例, 图 10给出了一组不同值的VSLAM的轨迹误差对比曲线.
分析图 10可知, 随着区域特征有效因子的降低、特征地图规模逐渐减小, 造成位姿轨迹误差越大.分析改进前的轨迹误差曲线, 可以发现$\theta$从0.72开始, 轨迹误差逐渐增大, 至$\theta$为0.32时, 轨迹误差大于1 m, 而通过改进后的特征地图在$\theta$为[1-0.23]范围内, 轨迹误差都小于0.2 m, 避免了因$\theta$取值较小造成的轨迹误差, 有效地降低了特征地图的规模, 在保证VO位姿精度的前提下减小了匹配时间.此外, 不同复杂程度的场景中, 最佳的$\theta$值是不相等的, 如果每次都通过大量实验寻找最佳$\theta$值, 不仅费时费力, 而且也不满足实际的需要, 而通过本文的特征地图补充方法, 延长了$\theta$值的有效区间, 弱化了$\theta$的取值.
3.3 VSLAM的实时性分析
实时性是VSLAM中十分重要的性能指标, 本文利用TUM RGB-D Benchmark[19]中的数据集fr1-xyz, fr1-360, fr1-room, fr2-large-no-loop (flnp), fr1-desk, fr1-desk2, fr1-long-office-household验证本文算法的实时性优势, 表 1给出了RGBD-SLAM2、FVO、文献[15]算法、本文改进算法(1) (未使用特征地图优化)以及本文改进算法(2) (使用特征地图优化)的实时性和特征地图规模比较.其中, $k$表示特征地图的累计特征点个数.
表 1 不同算法的实时性、特征地图累计规模比较Table 1 Comparison of real time and feature map cumulative size of each algorithm$T$(ms), $k$(个) RGBD-SLAM-V2 FVO 文献[15] 本文算法(1) 本文算法(2) fr1-xyz $52.31/11.88 \times {10^5}$ $44.11/6.12 \times {10^5}$ $46.07/6.13 \times {10^5}$ ${\bf{43.54}}/{\bf{3.03{\rm{ \times }}{10^5}}}$ $43.81/{\bf{3.03{\rm{ \times }}{10^5}}}$ fr1-360 $59.86/11.09 \times {10^5}$ $51.90/6.37 \times {10^5}$ $55.54/6.37 \times {10^5}$ ${\bf{49.14}}/{\bf{3.08{\rm{ \times }}{10^5}}}$ $49.71/{\bf{3.08{\rm{ \times }}{10^5}}}$ fr1-room $48.07/9.14 \times {10^5}$ $40.17/5.59 \times {10^5}$ $46.70/5.59 \times {10^5}$ ${\bf{39.24}}/{\bf{2.55{\rm{ \times }}1{0^5}}}$ $40.26/{\bf{2.55{\rm{ \times }}{10^5}}}$ fr1-desk $50.69/9.37 \times {10^5}$ ${\bf{43.86}}/5.65 \times {10^5}$ $47.32/5.63 \times {10^5}$ $43.95/{\bf{2.73{\rm{ \times }}{10^5}}}$ $44.32/{\bf{2.73{\rm{ \times }}{10^5}}}$ fr1-desk2 $56.32/10.36 \times {10^5}$ $47.80/6.22 \times {10^5}$ $53.92/6.22 \times {10^5}$ ${\bf{46.51}}/{\bf{2.95{\rm{ \times }}{10^5}}}$ $47.95/{\bf{2.95{\rm{ \times }}{10^5}}}$ flfh $240.45/38.74 \times {10^5}$ $186.43/17.86 \times {10^5}$ $197.80/17.86 \times {10^5}$ ${\bf{181.89}}/{\bf{8.72{\rm{ \times }}{10^5}}}$ $183.14/{\bf{8.72{\rm{ \times }}{10^5}}}$ flnp $301.11/43.47 \times {10^5}$ $255.96/21.55 \times {10^5}$ $269.35/21.55 \times {10^5}$ ${\bf{248.07}}/{\bf{11.66{\rm{ \times }}{10^5}}}$ $249.51/{\bf{11.66{\rm{ \times }}{10^5}}}$ 经分析, RGBD-SLAM2是帧与多个参考帧的视觉里程计模型, 由于需要多次匹配, 计算复杂、耗费资源; FVO是帧与模型的位姿估计, 只需要一次匹配, 缩短了时间, 但是易累积漂移; 文献[15]算法是以FVO为基础, 通过g2o优化得到了与实际一致的位姿估计, 但是构建的特征地图仍然存在冗余特征点, 而本文算法自适应维护特征地图规模, 可以发现, 无论是否对特征地图g2o优化, 本文算法在帧到特征地图的配准中, 相比于其他算法都是运算时间最快、需要的地图特征点的规模是最小的, 尤其在数据量大的flnp场景中, 本文算法的实时性更加突出.
3.4 的建图和定位精度分析
以fr1-room数据为例, 图 11是上述算法构建的3D点云地图, 对比发现:利用RGBD-SLAM2、文献[15]算法构建的3D点云地图存在冗余点和漂移点, 图中桌子、电脑、椅子以及门轮廓都不是很清楚, 特别是在图右边部分, 由于关键帧的参数设置较高, 此处的关键帧数量较少, 图 11(a)、图 11(b)中右边白色边框的电脑无法构建, 相比于图 11(a)、图 11(b), 本文算法在关键帧参数设置相同条件下, 构建的点云图的冗余点和漂移点则明显要少一些, 且图中电脑、桌子、椅子等轮廓更加清楚, 右边部分白色边框的电脑也能正常显现. 图 11(d)是由帧到帧、帧到模型的g2o优化后的本文改进算法, 相比于图 11(c), 图 11(d)中漂移点和冗余点更少, 特别是在墙壁窗台处的围栏能够更好地重合, 没有重影.因此, 由本文改进的算法相比于其他算法, 在3D点云地图的构建具有更好的精度.
图 12是不同算法计算的轨迹对比图, 其中Ground truth是TUM计算机视觉组利用路径捕捉系统得到的fr1-room场景的摄像机运动轨迹, 可以认为是真实路径, Estimated是利用RGBD-SLAM-V2、文献[15]算法、本文改进算法(未使用特征地图优化)以及本文改进算法(使用特征地图优化)计算得到的运动轨迹(设定关键帧的参数为: ${\rm{min\_translation = 0}}{\rm{.05}}$, ${\rm{min\_rotation = 0}}{\rm{.05}}$, Difference是Ground truth与Estimate轨迹的误差.对比可知:相对于图 12(a)、图 12(b)点云图, 由本文算法构建的图 12(c)和图 12(d)的轨迹误差Difference区域更小, 而相对于图 12(c), 图 12(d)使用了帧到帧、帧到模型的g2o特征地图优化, 该模型在求解较大旋转和平移的位姿中更加准确, 如图中黑色标记处.此外, 表 2给出了不同算法在不同数据集下的位姿估计精度, 其中$E$表示与真实轨迹的绝对误差(Absolute trajectory error, ATE).
表 2 不同算法的轨迹误差对比Table 2 Comparison of trajectory errors of different algorithms$E$ (m) RGBD-SLAM2 FVO 文献[15] 本文算法(1) 本文算法(2) fr1-xyz 0.019 0.024 0.017 0.016 ${\bf{0.013}}$ fr1-360 0.018 0.022 ${\bf{0.017}}$ 0.018 ${\bf{0.017}}$ fr1-room 0.239 0.286 0.073 0.082 ${\bf{0.072}}$ fr1-desk 0.038 0.084 0.026 0.028 ${\bf{0.025}}$ fr1-desk2 0.092 0.157 0.039 0.042 ${\bf{0.032}}$ flfh 0.466 0.764 0.228 0.241 ${\bf{0.151}}$ flnp 0.836 0.988 0.381 0.411 ${\bf{0.188}}$ 由表 2知, RGBD-SLAM-V2的帧到帧模型配准, 位姿精度较高, 但消耗了大量的计算资源; FVO的帧与地图的配准虽然提高了位姿估计效率, 但是位姿估计精度较低、容易长期累积漂移; 文献[15]在FVO的基础上, 通过g2o优化得到了精度更高的位姿, 但是构建的特征地图仍然存在特征点冗余的问题, 本文算法一方面通过子区域分块、特征点补充与地图扩建的方式自适应维护地图规模, 使得帧到特征地图的位姿估计兼顾了实时性和精度, 另一方面提出了帧到帧、帧到模型的g2o特征地图更新方式, 进一步提高了位姿估计的精度, 消除了累计误差.经表 2对比可知, 本文算法在有无特征地图优化的情况下, 都具有较好的精度和稳定性, 而且在配准速度上, 本文算法要明显好于RGBD-SLAM2、文献[15]的算法, 更有利于用户的实时体验.
3.5 失效分析
虽然所提算法在上述测试集中表现较好, 但也存在测试集失效的情况.例如比较困难的TUM中freiburg2-slam数据集, 该视频总长40.07 m. 图 13是利用本文算法测试该数据集的轨迹误差图和3D点云地图.
可以发现, 测试结果与实际轨迹相比误差较大, 平均误差值为0.4 m, 特别是在场景中急转弯的部分, 特征点提取、匹配十分困难, 造成VO中出现多数误匹配.本文虽然针对此类场景出现特征匹配不足的情形, 会依据仅有的匹配成功的特征点, 通过地图子区域以及地图扩建的方式补偿特征点匹配, 但是在freiburg2-slam数据集中补偿效果不明显.分析原因是初次匹配的特征点存在误匹配, 由于地图子区域特征点补充和特征地图扩建都是依赖于初次匹配的特征点对, 如果初次匹配点存在误差, 则本文改进方法亦效果不佳.由此可见, 首次的区域地图特征点提取尤为重要.在算法中, 首次地图构建提取的是ORB特征中角点响应强度大的部分, 这些特征点用于VO匹配效果较好, 但是对于特征缺失的环境或有快速运动和转弯出现的情形应用性不强, TUM中freiburg2-slam的数据集就是这样的环境.针对此类场景, 为了进一步提升所提算法的鲁棒性, 下一步将尝试利用多种评估特征方法融合更高效的特征点.
4. 结论
VSLAM算法要求实时精确估计机器人的位姿, 本文针对现有视觉里程计方法位姿估计精度不够, 或者对硬件要求较高的缺陷, 提出了一种自适应特征地图配准的VSLAM算法.首先对特征地图划分子区域, 利用角点响应强度提取不同子区域中高效的特征点, 解决特征地图计算量大, 耗费计算资源的问题.其次, 对于出现的配准失败的情形, 提出一种区域特征点补充和特征地图扩建的算法, 实现该情形下对应帧的快速再次匹配.最后, 在VO中引入g2o图优化以更新特征地图点, 并提出一种帧到帧、帧到模型的g2o特征地图优化模型, 实现了对内点和外点的同时更新, 提高了位姿估计的精度.通用数据集实验表明, 本文提出的VSLAM算法, 在保证实时性前提下, 具有较好的定位精度和建图能力.
-
表 1 不同算法的实时性、特征地图累计规模比较
Table 1 Comparison of real time and feature map cumulative size of each algorithm
$T$(ms), $k$(个) RGBD-SLAM-V2 FVO 文献[15] 本文算法(1) 本文算法(2) fr1-xyz $52.31/11.88 \times {10^5}$ $44.11/6.12 \times {10^5}$ $46.07/6.13 \times {10^5}$ ${\bf{43.54}}/{\bf{3.03{\rm{ \times }}{10^5}}}$ $43.81/{\bf{3.03{\rm{ \times }}{10^5}}}$ fr1-360 $59.86/11.09 \times {10^5}$ $51.90/6.37 \times {10^5}$ $55.54/6.37 \times {10^5}$ ${\bf{49.14}}/{\bf{3.08{\rm{ \times }}{10^5}}}$ $49.71/{\bf{3.08{\rm{ \times }}{10^5}}}$ fr1-room $48.07/9.14 \times {10^5}$ $40.17/5.59 \times {10^5}$ $46.70/5.59 \times {10^5}$ ${\bf{39.24}}/{\bf{2.55{\rm{ \times }}1{0^5}}}$ $40.26/{\bf{2.55{\rm{ \times }}{10^5}}}$ fr1-desk $50.69/9.37 \times {10^5}$ ${\bf{43.86}}/5.65 \times {10^5}$ $47.32/5.63 \times {10^5}$ $43.95/{\bf{2.73{\rm{ \times }}{10^5}}}$ $44.32/{\bf{2.73{\rm{ \times }}{10^5}}}$ fr1-desk2 $56.32/10.36 \times {10^5}$ $47.80/6.22 \times {10^5}$ $53.92/6.22 \times {10^5}$ ${\bf{46.51}}/{\bf{2.95{\rm{ \times }}{10^5}}}$ $47.95/{\bf{2.95{\rm{ \times }}{10^5}}}$ flfh $240.45/38.74 \times {10^5}$ $186.43/17.86 \times {10^5}$ $197.80/17.86 \times {10^5}$ ${\bf{181.89}}/{\bf{8.72{\rm{ \times }}{10^5}}}$ $183.14/{\bf{8.72{\rm{ \times }}{10^5}}}$ flnp $301.11/43.47 \times {10^5}$ $255.96/21.55 \times {10^5}$ $269.35/21.55 \times {10^5}$ ${\bf{248.07}}/{\bf{11.66{\rm{ \times }}{10^5}}}$ $249.51/{\bf{11.66{\rm{ \times }}{10^5}}}$ 表 2 不同算法的轨迹误差对比
Table 2 Comparison of trajectory errors of different algorithms
$E$ (m) RGBD-SLAM2 FVO 文献[15] 本文算法(1) 本文算法(2) fr1-xyz 0.019 0.024 0.017 0.016 ${\bf{0.013}}$ fr1-360 0.018 0.022 ${\bf{0.017}}$ 0.018 ${\bf{0.017}}$ fr1-room 0.239 0.286 0.073 0.082 ${\bf{0.072}}$ fr1-desk 0.038 0.084 0.026 0.028 ${\bf{0.025}}$ fr1-desk2 0.092 0.157 0.039 0.042 ${\bf{0.032}}$ flfh 0.466 0.764 0.228 0.241 ${\bf{0.151}}$ flnp 0.836 0.988 0.381 0.411 ${\bf{0.188}}$ -
[1] Garcia-Fidalgo E, Ortiz A. Vision-based topological mapping and localization methods:a survey. Robotics and Autonomous Systems, 2015, 64:1-20 doi: 10.1016/j.robot.2014.11.009 [2] Carlone L, Tron R, Daniilidis K, Dellaert F. Initialization techniques for 3D SLAM: a survey on rotation estimation and its use in pose graph optimization. In: Proceedings of the 2015 IEEE International Conference on Robotics and Automation. Seattle, WA, USA: IEEE, 2015. 4597-4604 [3] Merriaux P, Dupuis Y, Vasseur P, Savatier X. Wheel odometry-based car localization and tracking on vectorial map. In: Proceedings of the 17th International Conference on Intelligent Transportation Systems. Qingdao, China: IEEE, 2014. 1890-1891 [4] Shen J L, Tick D, Gans N. Localization through fusion of discrete and continuous epipolar geometry with wheel and IMU odometry. In: Proceedings of the 2011 American Control Conference. San Francisco, CA, USA: IEEE, 2011. 1292-1298 [5] Ohno K, Tsubouchi T, Shigematsu B, Yuta S. Differential GPS and odometry-based outdoor navigation of a mobile robot. Advanced Robotics, 2004, 18(6):611-635 doi: 10.1163/1568553041257431 [6] Fuentes-Pacheco J, Ruiz-Ascencio J, Rendón-Mancha J M. Visual simultaneous localization and mapping:a survey. Artificial Intelligence Review, 2015, 43(1):55-81 http://d.old.wanfangdata.com.cn/NSTLQK/NSTL_QKJJ0229524923/ [7] Endres F, Hess J, Sturm J, Cremers D, Burgard W. 3-D mapping with an RGB-D camera. IEEE Transactions on Robotics, 2014, 30(1):177-187 http://cn.bing.com/academic/profile?id=3a3af2654b557b27453ea4c4dfb2e7ab&encoded=0&v=paper_preview&mkt=zh-cn [8] Scaramuzza D, Fraundorfer F. Visual odometry. IEEE Robotics and Automation Magazine, 2011, 18(4):80-92 doi: 10.1109/MRA.2011.943233 [9] Nister D, Naroditsky O, Bergen J. Visual odometry. In: Proceedings of the 2004 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. Washington, DC, USA: IEEE, 2004. I-652-I-659 [10] Kerl C, Sturm J, Cremers D. Robust odometry estimation for RGB-D cameras. In: Proceedings of the 2013 IEEE International Conference on Robotics and Automation. Karlsruhe, Germany: IEEE, 2013. 3748-3754 [11] Huang A S, Bachrach A, Henry P, Krainin M, Maturana D, Fox D, et al. Visual odometry and mapping for autonomous flight using an RGB-D camera. In: Proceedings of International Symposium on Robotics Research. Cham, Germany: Springer, 2017. 235-252 [12] Henry P, Krainin M, Herbst E, Ren X, Fox D. RGB-D mapping: using depth cameras for dense 3D modeling of indoor environments. In: Proceedings of Experimental Robotics. Berlin, Heidelberg, Germany: Springer, 2014. 477-491 [13] Endres F, Hess J, Engelhard N, Sturm J, Cremers D, Burgard W. An evaluation of the RGB-D SLAM system. In: Proceedings of the 2012 IEEE International Conference on Robotics and Automation. Saint Paul, MN, USA: IEEE, 2012. 1691-1696 [14] Dryanovski I, Valenti R G, Xiao J Z. Fast visual odometry and mapping from RGB-D data. In: Proceedings of the 2013 IEEE International Conference on Robotics and Automation. Karlsruhe, Germany: IEEE, 2013. 2305-2310 [15] 高翔, 张涛, 刘毅, 颜沁睿.视觉SLAM十四讲:从理论到实践.北京:电子工业出版社, 2017. 140-150Gao Xiang, Zhang Tao, Liu Yi, Yan Qin-Rui. Fourteen the Visual SLAM from Theory to Practice. Beijing:Electronic Industry Press, 2017. 140-150 [16] Cao T Y, Cai H Y, Fang D M, Huang H, Liu C. Keyframes global map establishing method for robot localization through content-based image matching. Journal of Robotics, 2017, 2017: Article ID 1646095 [17] Martins R, Fernandez-Moral E, Rives P. Adaptive direct RGB-D registration and mapping for large motions. In: Proceedings of the 2016 Asian Conference on Computer Vision ACCV 2016: Computer Vision - ACCV 2016. Cham, Germany: Springer, 2017. 191-206 [18] Wadenbäck M, Aström K, Heyden A. Recovering planar motion from homographies obtained using a 2.5-point solver for a polynomial system. In: Proceedings of the 23rd IEEE International Conference on Image Processing (ICIP). Phoenix, AZ, USA: IEEE, 2016. 2966-2970 [19] Steinbrücker F, Sturm J, Cremers D. Real-time visual odometry from dense RGB-D images. In: Proceedings of the 2011 IEEE International Conference on Computer Vision Workshops. Barcelona, Spain: IEEE, 2011. 719-722 [20] 李弋星, 刘士荣, 仲朝亮, 王坚.基于改进关键帧选择的RGB-D SLAM算法.大连理工大学学报, 2017, 57(4):411-417 http://d.old.wanfangdata.com.cn/Periodical/dllgdxxb201704012Li Yi-Xing, Liu Shi-Rong, Zhong Chao-Liang, Wang Jian. RGB-D SLAM algorithm based on improved key-frame selection. Journal of Dalian University of Technology, 2017, 57(4):411-417 http://d.old.wanfangdata.com.cn/Periodical/dllgdxxb201704012 [21] Rublee E, Rabaud V, Konolige K, Bradski G. ORB: an efficient alternative to SIFT or SURF. In: Proceedings of the 2011 International Conference on Computer Vision. Barcelona, Spain: IEEE, 2011. 2564-2571 [22] Kümmerle R, Grisetti G, Strasdat H, Konolige K, Burgard W. g2o: a general framework for graph optimization. In: Proceedings of the 2011 IEEE International Conference on Robotics and Automation. Shanghai, China: IEEE, 2011. 3607-3613 [23] Hornung A, Wurm K M, Bennewitz M, Stachniss C, Burgard W. OctoMap:an efficient probabilistic 3D mapping framework based on octrees. Autonomous Robots, 2013, 34(3):189-206 http://d.old.wanfangdata.com.cn/Periodical/jsjyy201705042 [24] Sturm J, Engelhard N, Endres F, Burgard W, Cremers D. A benchmark for the evaluation of RGB-D SLAM systems. In: Proceedings of the 2012 IEEE/RSJ International Conference on Intelligent Robots and Systems. Vilamoura, Portugal: IEEE, 2012. 573-580 期刊类型引用(12)
1. 蔡明珠,刘肖燕,唐志伟. 基于多传感器融合SLAM的ROS服务机器人研究. 实验室研究与探索. 2024(02): 65-70 . 百度学术
2. 梁循,李志莹,蒋洪迅. 基于图的点云研究综述. 计算机研究与发展. 2024(11): 2870-2896 . 百度学术
3. 江浩玮,陈孟元,袁学超. 融合混合注意力实例分割的视觉同步定位与建图算法. 激光与光电子学进展. 2023(10): 414-423 . 百度学术
4. 徐斌,杨东勇. 基于边缘计算的移动机器人视觉SLAM方法. 高技术通讯. 2023(09): 1000-1008 . 百度学术
5. 孙沁璇,苑晶,张雪波,高远兮. PLVO:基于平面和直线融合的RGB-D视觉里程计. 自动化学报. 2023(10): 2060-2072 . 本站查看
6. 龚云,徐昊天,吕鸣雨. 室内剔除行人特征点的视觉SLAM算法. 西安科技大学学报. 2023(06): 1195-1206 . 百度学术
7. 方娟,方振虎. 基于目标检测网络的动态场景下视觉SLAM优化. 北京工业大学学报. 2022(05): 466-475 . 百度学术
8. 周风余,顾潘龙,万方,尹磊,贺家凯. 多运动视觉里程计的方法与技术. 山东大学学报(工学版). 2021(01): 1-10 . 百度学术
9. 戴天虹,李志成. 基于优化列文伯格-马夸尔特法的SLAM图优化. 哈尔滨理工大学学报. 2021(02): 68-74 . 百度学术
10. 赵明富,曹利波,宋涛,刘帅,罗宇航. 针对间断纹理环境中的图像特征追踪和匹配算法研究. 半导体光电. 2020(01): 128-134+140 . 百度学术
11. 刘瑞军,王向上,张晨,章博华. 基于深度学习的视觉SLAM综述. 系统仿真学报. 2020(07): 1244-1256 . 百度学术
12. 陈甲伟,刘英,於亚斌,杨雨图,王德镇. 基于节点优简算法的实木板材自动搬运系统. 计算机集成制造系统. 2020(09): 2522-2530 . 百度学术
其他类型引用(22)
-