一种改进的即时定位与地图构建系统 下载: 1143次
1 引言
近几年,随着机器人[1]、无人机、无人车、增强现实[2](AR)和虚拟现实(VR)等行业的发展,即时定位与地图构建(SLAM)技术备受关注。SLAM技术可以实时定位传感器在未知环境中的位姿,并构建由传感器感知的环境的地图。根据系统输入的数据源,可将SLAM技术分为激光雷达SLAM和视觉SLAM等,其中视觉SLAM又包括单目、双目SLAM和RGB-D SLAM(Read-Green-Blue-Dense SLAM)等。根据应用视觉SLAM技术的系统输出的地图类别,又可将SLAM技术又可以分为基于特征的稀疏SLAM[如PTAM[3]( Parallel Tracking and Mapping for Small AR Workspaces),ORB-SLAM2(Oriented FAST Rotated BRIEF SLAM2)[4-5]],半稠密SLAM[如LSD-SLAM[6](Large-Scale Direct Monocular SLAM)]和稠密SLAM (如KinectFusion[7-8]和ElasticFusion[9-10])等。目前,基于特征的稀疏SLAM技术已经趋于成熟,稀疏SLAM技术通常只计算相机位姿,重建稀疏的地图;半稠密SLAM技术可以重建场景的半稠密地图;而稠密SLAM技术可以定位系统,同时重建场景的稠密地图。
PTAM系统是第一个将稀疏SLAM技术应用在小场景AR中的系统,在该系统中,跟踪相机和重构地图分别在两个独立的线程中实现。ORB-SLAM2[4-5]是一个相对完备的SLAM系统,相比于PTAM系统,ORB-SLAM2系统加入了闭环检测和重定位功能,ORB-SLAM2采用第三方位置识别库DBoW2[11](Bags of Binary Words for Fast Place Recognition in Image Sequences)检测闭环候选帧并重定位相机的位姿,当检测到闭环时,闭环线程先执行基础图优化,再执行全局BA(Bundle Adjustment)[4]优化。
2011年,微软公司的消费级RGB-D相机[12-13]Kinect的问世,使得基于RGB-D相机的稠密SLAM技术受到研究人员的广泛关注。KinectFusion是第一个基于RGB-D相机的实时稠密重建系统,该系统采用TSDF[14](Truncated Signed Distance Function)模型融合RGB-D图像序列实时重建环境的稠密表面。TSDF采用等大小的网格表示重建的空间,系统消耗的存储空间随着重建空间体积的扩展不断增大。为了解决TSDF模型消耗存储空间的问题,研究人员提出了改进算法[15-18]。Kintinuous采用循环利用存储空间的方式扩展重建场景的范围[16]。ElasticFusion系统采用Surfel面元模型重建稠密地图[17-18]。 BundleFusion采用传统SFM(Structure From Motion)的方法,将每一帧和所有图像配准,该系统在重建小范围场景时效果较好,但需要两个高性能的GPU(Graphics Processing Unit)才能达到实时的帧率[19]。
通常,基于特征法的稀疏SLAM技术在相机定位精度、计算量和扩展性等方面表现较好,但是特征法在纹理特征较少的环境下容易跟踪失败。稠密配准的方法在运动模糊和低纹理特征的情况下更加稳健,此外稠密SLAM系统生成的稠密地图可以用作机器人导航、避障以及AR场景扫描等场合。结合稀疏和稠密SLAM技术各自的优势和不足,本文将两种方法组合在一起,通过在现有的图优化库g2o[20](General Graph Optimization)中创建新的稠密约束边,同时最小化稀疏特征法的重投影误差和稠密直接法的光度误差,优化相机位姿,并新建稠密建图线程,采用Surfel面元模型融合RGB-D图像序列重建稠密地图,并将重建的结果实时反馈给用户。
2 系统概况
原始的ORB-SLAM2系统中有跟踪线程、局部建图线程和闭环线程。
ORB-SLAM2系统中用来优化相机位姿的第三方图优化库g2o中,只提供了同时优化相机位姿和地图点位置坐标的稀疏约束两元边和只优化相机位姿的稀疏约束一元边,为了能同时最小化直接法的光度误差和特征法的重投影误差以优化相机位姿,在现有的图优化库g2o中新添加了稠密约束一元边,这也是本方法对原系统做的第一处改进。第二处改进是在原系统的跟踪线程中,初始化相机位姿之后,将稠密直接法应用到相机跟踪过程中,结合系统中原有的稀疏特征法,一起优化求解相机位姿。首先使用稠密直接法计算相邻两帧图像之间的相机旋转变换矩阵,再使用改进后的图优化库g2o同时最小化稀疏特征法的重投影误差和稠密直接法的光度误差来优化相机位姿。第三处改进是在原系统中创建了稠密建图线程,可以将相机周围场景的重建结果实时反馈给用户。局部建图线程和闭环检测线程沿用ORB-SLAM2系统中的方法。局部建图线程负责稀疏特征点的生成和选择以及关键帧的选择,并采用局部BA[3]算法优化局部地图中关键帧的相机位姿和地图点的位置坐标。闭环线程负责闭环检测以及检测到闭环后的基础图[4-5]优化和全局BA[4]优化。由于改进后的系统需要生成稠密地图,为了使系统可以实时工作,需要GPU加速计算。改进后的系统在联想笔记本电脑(CPU i7-7700HQ, GPU NVIDIA GeForce GTX 1060 MaxQ)上可以实时运行,实时估计相机位姿并实时生成稠密地图。虽然使用了GPU加速计算,由于生成稠密地图的计算量很大,所以改进后的系统与原ORB-SLAM2系统相比,运行速度还是会慢一些,经实验,改进后的系统可以在装有960及以上规格的GPU的电脑上运行并满足实时性。
2.1 相机位姿估计
在原ORB-SLAM2系统的跟踪线程中,初始化相机位姿之后,只使用第三方图优化库g2o最小化相邻两帧图像匹配点之间的重投影误差来优化相机位姿,而在本文提出的方法中,则是将稠密的直接法应用到求解相机位姿的过程中,使用改进后的图优化库g2o同时最小化稀疏特征法的重投影误差和稠密直接法的光度误差以优化求解相机位姿。在跟踪线程中使用固定速度模型[4]或参考帧模型[5]初始化相机位姿,将上一帧图像中的特征点对应的地图点向当前帧图像投影,在投影点周围寻找匹配点,如果找到的匹配点对数不够,则扩大搜索范围,并利用找到的匹配点在RANSAC(Random Sample Consensus)框架下优化初始化的相机位姿,利用优化之后的位姿搜索更多的匹配点,这些匹配点可以用在后端优化中。构建相邻两帧图像的金字塔模型,在图像金字塔顶部的图像配准中,通过最小化稠密直接法的光度误差得到相邻两帧图像之间相机的旋转变换矩阵,在底层图像金字塔的图像配准中采用改进后的图优化库g2o同时最小化重投影误差和光度误差来优化相机位姿。将上一帧图像对应的地图点根据初始化的相机位姿向当前帧图像投影,在投影点周围寻找匹配点,利用匹配点之间的距离误差构建重投影误差代价方程,表达式为
式中:
式中:
在利用稠密直接法优化相邻两帧图像之间相机的旋转变换矩阵时,先为待配准的两幅图像建立4层图像金字塔模型,按照由粗到精[4],由顶到底的配准方式求解相机位姿。对于图像金字塔顶部的两层图像,将上一帧图像上的像素点根据对应的深度信息逆投影到上一帧图像的相机坐标系下,将上一帧图像相机坐标系下的点,根据初始的相邻两帧图像之间相机的旋转变换矩阵,转换到当前帧图像的相机坐标系下,再根据当前帧图像相机内参矩阵,将相机坐标系下的点投影到当前帧图像上,根据灰度不变假设,利用两帧图像对应点之间的灰度值误差构建光度误差代价方程。利用最小化光度误差代价方程求解两帧图像之间相机的旋转变换。
从图像金字塔模型的第3层图像开始,通过图像配准构建求解当前帧相机位姿的代价方程。光度误差代价方程和当前帧相机位姿的代价方程分别为
式中:
利用固定速度模型[4]或者参考帧模型初始化的相机位姿,分别将上一帧图像对应的世界坐标系下的三维点云和特征点,投影到当前帧图像的相机坐标系下,根据相机内参将相机坐标系下的点投影到当前帧图像上。对于得到的一组稀疏特征点的匹配点,构建对应的重投影误差代价方程,同时为了保证两幅图像对应区域外观不变,根据灰度不变原理构建相邻两帧图像之间的光度误差代价方程。采用改进后的图优化库g2o,同时最小化重投影误差和光度误差代价方程以优化相机位姿。
在优化的过程中总是将上一层图像配准得到的结果作为下一层图像配准的初始值,将第2层图像配准求解的相邻图像之间的相机旋转变换与上一帧图像相机位姿的乘积作为第3层图像配准中相机位姿的初始值,将第4层图像配准求得的相机位姿作为当前帧相机位姿。这种在像素较少的金字塔顶层图像中用于求解两帧图像之间的旋转变换,在像素较多的底层金字塔图像中用于求解6自由度的相机位姿的方法,使求得的相机位姿更稳健,算法的收敛速度也更快[21]。计算相邻两帧图像之间的相机旋转变换用到的光度误差代价方程如(3)式所示,计算当前帧相机位姿用到的重投影误差代价方程和光度误差代价方程分别如(1)式和(4)式所示。
如
现有的图优化库g2o中只提供了如
图 2. 4层图像金字塔模型和改进后的相机位姿求解步骤示意图
Fig. 2. Schematic of four-layer image pyramid model and improved camera pose estimation process
图 3. 图优化库g2o中的一元边和两元边模型。(a)一元边;(b)两元边
Fig. 3. Unary edge and binary edge models in g2o library. (a) Unary edge model; (b) binary edge model
2.2 相机位姿优化
系统中的相机位姿优化是通过图优化库g2o完成的。对于重投影误差,图优化库g2o为每一对匹配点创建一个稀疏约束一元边,如果也为稠密直接法中参与运算的每一个像素点创建一个稠密约束一元边,将大幅度增加计算机负担,降低整个系统的工作效率。为了将稠密的直接法和稀疏的特征法结合到一起求解相机位姿,又不至于使系统的工作效率降低,在图优化库g2o上创建了一条稠密约束一元边,将所有光度误差产生的约束初始化为图优化g2o中新添加的稠密约束一元边。
通过最小化重投影误差和光度误差优化相机位姿的问题本质上是一个非线性最小二乘问题。一个简单的最小二乘问题可以用min
高斯牛顿法[22]是求解非线性最小二乘问题常用的优化算法之一, 该方法的核心思想是将目标函数一阶泰勒展开。非线性函数
式中:
根据高斯牛顿法求解非线性最小二乘问题,下面分别介绍最小化重投影误差和光度误差求解相机位姿的数学公式推导过程。
2.2.1 重投影误差
首先将(1)式中的重投影误差代价方程中目标函数一阶泰勒展开,展开后的形式为
式中:
式中:
图像上2D像素点坐标对相机坐标系下的3D点坐标的偏导数为
相机坐标系下的3D点坐标对当前帧相机位姿增量Δ
根据链式求导法则,得到最终的雅可比矩阵为
重投影误差方程可以转换为高斯牛顿方程,
1) 给定李代数形式的初始相机位姿
2.2.2 光度误差
首先将(4)式中的光度误差代价方程的目标函数一阶泰勒展开,展开后的形式为
式中:
在GPU上计算
式中
2.3 稠密重建
在ORB-SLAM2系统框架下新创建了稠密重建线程,虽然在稠密建图线程中沿用了ElasticFusion系统中将RGB-D图像融合到Surfel面元模型中重建稠密模型的方法,但是在检测到闭环时采用了不同的方法更新重建的稠密模型中的点。在ElasticFusion系统中,检测到全局闭环之后,直接从重建的稠密模型表面按照时间顺序均匀地提取点构建变形图[23],用环路两侧闭环帧图像之间产生的闭环约束优化变形图,将优化之后的变形图作用到重建的稠密模型表面,更新稠密模型上的点。而在改进后的ORB-SLAM2系统中,闭环线程检测到全局闭环之后,先优化基础图中所有结点上关键帧的相机位姿,将环路中积累的误差均匀到每一帧上,使得相机运动轨迹在闭环处闭合,然后再执行全局BA优化。在基础图上均匀地取点,构建新的变形图,在优化变形图时除了使用环路两侧闭环帧图像之间产生的闭环约束,还用到了优化基础图产生的约束,将经过两重约束优化的变形图作用到重建的稠密地图上更新地图中的点。
3 实验结果
3.1 相机运动轨迹评估
使用绝对轨迹误差(ATE)[24]的方法,对DVO SLAM[25],Kintinuous,ElasticFusion,ORB-SLAM2和改进后的ORB-SLAM2系统在TUM RGB-D数据集的办公室场景fr1中的9个图像序列上测试得到的相机运动轨迹分别与对应的标准轨迹进行绝对误差计算,各个系统的绝对误差对比结果如
表 1. 在TUM RGB-D 标准数据集上的相机轨迹对比结果
Table 1. Comparison of camera trajectories on TUM RGB-D benchmark datasets
|
由
3.2 稠密模型精度评估
ICL-NUIM[26]数据集提供了一种评估稠密模型重建精度的方法,ICL-NUIM数据集中包括了4个图像序列,lr_kt0,lr_kt1,lr_kt2,lr_kt3,4个图像序列的重建效果如
图 4. 改进后的ORB-SLAM2系统在4个图像序列上的相机运动轨迹与标准轨迹对比图。(a) fr1/desk图像序列;(b) fr1/desk2图像序列;(c) fr1/plant图像序列;(d) fr1/xyz图像序列
Fig. 4. Comparison between ground truths and real trajectories of cameras generated by improved ORB-SLAM2 system on four frame sequences. (a) fr1/desk frame sequence; (b) fr1/desk2 frame sequence; (c) fr1/plant frame sequence; (d) fr1/xyz frame sequence
表 2. ICL-NUIM数据集中4个图像序列的细节
Table 2. Details of four frame sequences on ICL-NUIM benchmark datasets
|
表 3. 在ICL-NUIM数据集上生成的3D模型对比结果
Table 3. Comparison of 3D models on ICL-NUIM benchmark datasets
|
在lr_kt0序列中重建的场景比较小,由
图 5. 改进后的ORB-SLAM2系统在ICL-NUIM数据集的4个图像序列上的重建结果和相机的运动轨迹。(a) lr_kt0;(b) lr_kt1;(c) lr_kt12;(d) lr_kt3
Fig. 5. Reconstruction results and camera trajectories on four frame sequences by improved ORB-SLAM2 system on ICL-NUIM benchmark datasets. (a) lr_kt0; (b) lr_kt1; (c) lr_kt12; (d) lr_kt3
图 6. Kintinuous,ElasticFusion和改进后的ORB-SLAM2系统在lr_kt3图像序列的闭环处重建结果对比。(a) Kintinuous系统;(b) ElasticFusion系统;(c)改进后的ORB-SLAM2系统
Fig. 6. Comparison of reconstruction results of Kintinuous, ElasticFusion, and improved ORB-SLAM2 systems on closed-loop region of lr_kt3 frame sequence. (a) Kintinuous system; (b) ElasticFusion system; (c) improved ORB-SLAM2 system
4 结论
在ORB-SLAM2系统框架下,将稠密直接法应用到跟踪线程中,结合系统中原有的稀疏特征法,利用加入稠密约束一元边的图优化库g2o联合优化直接法的光度误差和特征法的重投影误差代价方程求解相机位姿。在原系统中创建稠密重建线程,将输入的RGB-D图像融合到Surfel面元模型中生成稠密地图,并实时将重建结果反馈给用户。实验结果表明,所提方法在一定程度上可以提高相机的跟踪精度和稠密场景的重建精度,但是直接法的使用增加了系统的计算负担,为了不降低系统的效率,需要使用GPU加速,但是GPU的使用增加了系统的成本。为此,未来的研究方向将着眼于进一步提高相机位姿的求解精度和降低计算量。
[1] 刘彤, 宗群, 刘朋浩, 等. 基于结构持久图和视觉定位的多机器人编队生成与控制[J]. 信息与控制, 2018, 47(3): 314-323.
Liu T, Zong Q, Liu P H, et al. Generation and control of multi-robot formation based on structural persistence[J]. Information and Control, 2018, 47(3): 314-323.
[2] 郑国强, 周治平. 一种基于视觉即时定位与地图构建的改进增强现实注册方法[J]. 激光与光电子学进展, 2019, 56(6): 061501.
[3] KleinG, MurrayD. Parallel tracking and mapping for small AR workspaces[C]∥2007 6th IEEE and ACM International Symposium on Mixed and Augmented Reality, November 13-16, 2007, Nara, Japan. New York: IEEE, 2007: 10052991.
[4] Mur-Artal R. Montiel J M M, Tardós J D. ORB-SLAM: a versatile and accurate monocular SLAM system[J]. IEEE Transactions on Robotics, 2015, 31(5): 1147-1163.
[5] Mur-Artal R, Tardós J D. ORB-SLAM2: an open-source SLAM system for monocular, stereo, and RGB-D cameras[J]. IEEE Transactions on Robotics, 2017, 33(5): 1255-1262.
[6] EngelJ, SchöpsT, CremersD. LSD-SLAM: large-scale direct monocular SLAM[M] ∥Fleet D, Pajdla T, Schiele B, et al. Computer Vision-ECCV 2014. Lecture Notes in Computer Science. Cham: Springer, 2014, 8690: 834- 849.
[7] Newcombe RA, IzadiS, HilligesO, et al. Kinectfusion: real-time dense surface mapping and tracking[C]∥10th IEEE International Symposium on Mixed and Augmented Reality, ISMAR 2011, October 26-29, 2011, Basel, Switzerland. New York: IEEE, 2011: 127- 136.
[8] IzadiS, Kim D Hilliges O, et al. KinectFusion: real-time 3D reconstruction and interaction using a moving depth camera[C]∥Mixed and augmented reality (ISMAR), 2011 10th IEEE International Symposition, October 26-29, 2011, Basel, Switzerland. New York: IEEE, 2011: 127- 136.
[9] Whelan T. Salas-Moreno R F, Glocker B, et al. ElasticFusion: real-time dense SLAM and light source estimation[J]. The International Journal of Robotics Research, 2016, 35(14): 1697-1716.
[10] WhelanT, LeuteneggerS, Salas-Moreno R F, et al. ElasticFusion: dense SLAM without a pose graph[C]∥11th Robotics: Science and Systems XI, July 13-17, 2015, Rome, Italy. Germany: Schloss Dagstuhl, 2015.
[12] 涂淑琴, 薛月菊, 梁云, 等. RGB-D图像分类方法研究综述[J]. 激光与光电子学进展, 2016, 53(6): 060003.
[13] 贾同, 周忠选, 高海红, 等. 基于红外编码结构光的深度测量方法[J]. 红外与激光工程, 2015, 44(5): 1628-1632.
[14] CurlessB, LevoyM. A volumetric method for building complex models from range images[C]∥The 23rd Annual Conference on Computer Graphics and Interactive Techniques-SIGGRAPH '96, August 4-9, 1996, New York, NY, USA. New York: ACM, 1996: 303- 312.
[15] Nießner M, Zollhöfer M, Izadi S, et al. Real-time 3D reconstruction at scale using voxel hashing[J]. ACM Transactions on Graphics, 2013, 32(6): 169.
[16] Whelan T, Kaess M, Johannsson H, et al. Real-time large-scale dense RGB-D SLAM with volumetric fusion[J]. The International Journal of Robotics Research, 2015, 34(4/5): 598-626.
[17] PfisterH, Zwicker M, van Baar J, et al. Surfels: surface elements as rendering primitives[C]∥The 27th Annual Conference on Computer Graphics and Interactive Techniques - SIGGRAPH '00, July 23-28, 2000, New York, NY, USA. New York: ACM, 2000: 335- 342.
[18] Fu X Y, Zhu F, Wu Q X, et al. Real-time large-scale dense mapping with surfels[J]. Sensors, 2018, 18(5): 1493.
[19] Dai A, Nießner M, Zollhöfer M, et al. BundleFusion: real-time globally consistent 3D reconstruction using on-the-fly surface reintegration[J]. ACM Transactions on Graphics, 2017, 36(3): 24.
[20] KümmerleR, GrisettiG, StrasdatH, et al. g2o: a general framework for graph optimization[C]∥2011 IEEE International Conference on Robotics and Automation, May 9-13, 2011, Shanghai, China. New York: IEEE, 2011: 3607- 3613.
[21] Newcombe RA, Lovegrove SJ, Davison AJ. DTAM: dense tracking and mapping in real-time[C]∥2011 International Conference on Computer Vision, November 6-13, 2011, Barcelona, Spain. New York: IEEE, 2011: 2320- 2327.
[22] 高翔, 张涛, 刘毅, 等. 视觉SLAM十四讲: 从理论到实践[M]. 北京: 电子工业出版社, 2017: 111- 114.
GaoX, ZhangT, LiuY, et al.14 lectures on visual SLAM: from theory to practice[M]. Beijing: Publishing House of Electronics Industry, 2017: 111- 114.
[23] Sumner R W, Schmid J, Pauly M. Embedded deformation for shape manipulation[J]. ACM Transactions on Graphics, 2007, 26(3): 80.
[24] SturmJ, EngelhardN, EndresF, et al. A benchmark for the evaluation of RGB-D SLAM systems[C]∥2012 IEEE/RSJ International Conference on Intelligent Robots and Systems, October 7-12, 2012, Vilamoura, Portugal. New York: IEEE, 2012: 573- 580.
[25] KerlC, SturmJ, CremersD. Dense visual SLAM for RGB-D cameras[C]∥2013 IEEE/RSJ International Conference on Intelligent Robots and Systems, November 3-7, 2013, Tokyo, Japan. New York: IEEE, 2013: 2100- 2106.
[26] HandaA, WhelanT, McDonald J, et al. A benchmark for RGB-D visual odometry, 3D reconstruction and SLAM[C]∥2014 IEEE International Conference on Robotics and Automation (ICRA), May 31-June 7, 2014, Hong Kong, China. New York: IEEE, 2014: 1524- 1531.
孙云雷, 吴清潇. 一种改进的即时定位与地图构建系统[J]. 激光与光电子学进展, 2019, 56(16): 161013. Yunlei Sun, Qingxiao Wu. An Improved Simultaneous Localization and Mapping System[J]. Laser & Optoelectronics Progress, 2019, 56(16): 161013.