文章:DSOL: A Fast Direct Sparse Odometry Scheme
作者:Chao Qu, Shreyas S. Shivakumar, Ian D. Miller and Camillo J. Taylor
编辑:点云PCL
代码:https://github.com/versatran01/dsol.git
来源:arXiv2022
欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。
公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。未经作者允许请勿转载,欢迎各位同学积极分享和交流。
摘要
本文描述了Direct Sparse Odometry Lite(DSOL),这是Direct Sparse Odometry(DSO)的改进版本。我们提出了几种算法和实现上的改进,显著提高了计算速度(平均提升5倍),即使在资源受限的平台上也能发挥作用,速度的提升使我们能够以更高的帧率处理图像,从而在快速运动中获得更好的结果。实现的代码在:https://github.com/versatran01/dsol.git
主要贡献
定位和建图是许多机器人系统的关键组成部分,本研究受到微型空中飞行器的要求的启发,其中有效载荷和功耗限制了传感器和系统的计算能力的选择。对于这些平台来说,视觉是一种具有吸引力的感知方式,因为相机在质量和功耗方面相对较低廉。我们选择在DSO和Stereo-DSO(SDSO)的基础上构建我们的工作,直接的视觉里程计方法最小化光度误差而不是几何误差。在Engel等人的工作中,他们提供了大量实验证据,表明直接和稀疏的组合在准确性和速度方面相对于ORB-SLAM等最先进的基于特征的方法和LSD-SLAM等半稠密直接方法具有独特的优势。计算上的优势在激发本研究的航空环境中尤为重要,其中灵活的机器人通常以每秒10米的速度行驶。我们展示了所提出的方法可以在常见的计算硬件上以高达500Hz的速率运行。对于直接法,运行时间的改进也带来了准确性和稳健性的相应改善:更快的处理时间允许更高的帧率,从而可以更准确地估计中等运动,并以更高的稳健性估计激进的运动。
对于许多机器人应用来说,DSO并不适用,因为它是一种单目方法,没有一致的度量尺度,并且具有延迟的初始化和重新初始化,这对于飞行机器人尤其存在安全问题。因此,我们设计我们的系统可以直接从立体和/或深度图像进行初始化,在本研究中,我们重点关注双目版本,并将我们的系统与SDSO进行评估,SDSO本身是对DSO的改进。其余部分详细描述了所提出的系统,突出了与DSO和SDSO的差异,并解释了导致改进的相关实现选择。我们总结我们的改进如下:
(1)采用逆组合对齐方法来进行帧跟踪;
(2)将新图像与整个窗口进行跟踪,而不是与最后一个关键帧进行跟踪;
(3)提出了与SDSO相比更好的双目光度捆集调整公式;
(4)大大简化了DSO中的关键帧创建和删除标准;
(5)并行化我们的系统以有效利用所有可用的计算资源。
所有这些改变导致了一个简单且快速的直接稀疏视觉里程计系统,我们称之为Direct Sparse Odometry Lite(DSOL)。
图1:从TartanAir数据集中的DSOL结果,绿线是真值轨迹,红线是估计的轨迹。
主要内容
DSOL直接视觉里程计的方法
直接法是一种基于像素级别的图像处理方法,它直接最小化图像间的光度误差,而不是通过特征提取和匹配进行间接估计,这种直接法具有一些优点,如对纹理变化较小的场景具有更好的鲁棒性,能够提供更准确的相机运动估计,并且可以处理非刚性运动和动态场景。
在该系统中,作者采用了两种直接法来实现视觉里程计:直接图像对齐用于帧跟踪和光度捆集调整用于联合优化。具体而言,直接图像对齐是通过最小化当前帧与参考帧之间的光度误差来估计相机的运动,这个过程涉及到在参考帧周围形成一个局部窗口,然后将当前帧的像素点与参考帧上对应的像素点进行对齐,使它们的光度误差最小化,这样就可以得到相机的相对位姿估计。此外还采用了一种简单的基于梯度的异常值剔除方案来处理由于遮挡或移动物体导致的大误差,如图2所示。
图2:异常值剔除。在这个可视化图中,实心方块表示内点特征点,而空心方块表示异常值。上方图像显示了移动物体上的异常值,下方图像显示了由于遮挡导致的异常值。
另一种直接法是光度捆集调整,它用于联合优化多个连续帧之间的相机位姿和稀疏地图。该方法基于光度误差最小化的原理,通过优化问题的最小二乘解来求解相机位姿和地图点的最优估计。光度捆集调整考虑了多个帧之间的相互约束关系,通过优化相机位姿和地图点的参数来最小化所有帧上的光度误差。通过使用所有可用的关键帧,创建了一个更大的虚拟视场(FOV),在对齐过程中可以使用更多的点。如图3所示。
图3:相对于最新关键帧(仅K1)和整个窗口(K0和K1)进行新图像I的跟踪。前者只能跟踪区域1和2的点,而后者还可以利用区域3的点。
通过使用这些直接法,DSOL系统能够以更快的速度处理图像序列,并提供更准确和鲁棒的相机运动估计结果。此外,作者还对系统的实现细节进行了讨论,包括对逆组合对齐方法的采用、对整个窗口而不仅仅是上一个关键帧进行图像跟踪、提出了更好的光度捆集调整公式等等。
图4:PBA(photometric bundle adjustment)的因子图示例,使用3个关键帧。
DSOL系统中的视觉里程计前端
该前端负责管理窗口内的关键帧和特征点,包括它们的创建、初始化和移除。
A.关键帧的创建:在DSOL中,关键帧是根据一定的策略和条件来选择的,首先,当相邻帧之间的运动超过一定阈值时,当前帧将被选为关键帧,其次,当窗口中的关键帧数量超过一定限制时,较旧的关键帧将被移除,以保持窗口的大小。
B. 关键帧初始化:当新的关键帧被选择后,需要初始化其中的特征点。DSOL使用了一种基于光度差异的方法来选择高质量的特征点,通过计算关键帧与当前帧之间的像素差异,选择那些具有明显光度变化的像素作为特征点,并为它们分配初始的3D位置,如图5示意图。
图5:关键帧初始化,具有较大局部梯度的选定点为青色,每个像素周围的彩色方块反映其初始逆深度,双目由立体匹配(粗边框)和局部地图(细边框)进行初始化。
C. 特征点的追踪:在后续帧中,需要追踪已初始化的特征点。DSOL采用了逆向组合方法来进行帧间的特征点追踪。具体而言,通过估计当前帧相对于上一帧的相机位姿,并利用逆向组合方法将上一帧的特征点投影到当前帧中,并与当前帧的图像进行对齐,从而实现特征点的追踪。
图6:该方法在TartanAir上的失败案例数据集,跟踪失败的原因从左到右依次为:重复纹理、遮挡相机和低纹理。
D. 关键帧的移除:在一些情况下,特征点可能会失去追踪或质量下降,这时需要将其移除,DSOL使用了一种简化的方法来判断特征点是否应该被移除,基于两个条件:首先,特征点的光度误差超过一定阈值;其次,特征点在三维空间中的重投影误差超过一定阈值。当特征点满足这些条件时,它们将被标记为需要移除,并在后续的优化过程中被丢弃。
实验
在实验中,作者对DSOL算法进行了广泛的评估,他们使用了不同的数据集和场景,包括室内、室外、静态和动态环境。以下是论文中提到的一些实验结果总结:
1. 准确性:DSOL相比于其他现有的直接方法,在准确性方面表现出色。它能够实现精确的相机轨迹估计和地图重建,并能够应对动态场景和快速运动。
2. 实时性:DSOL在计算速度方面表现出色。通过优化算法和并行计算,DSOL能够在常规计算硬件上以高帧率运行,满足实时应用的需求。
3. 稳健性:DSOL在各种不同的场景下都能够表现出稳健性。它能够处理光照变化、纹理缺失和低纹理区域等挑战,并能够适应多种环境条件。
4. 资源效率:由于DSOL算法的高效性,它能够在资源受限的设备上运行,如嵌入式系统或移动设备。它的低计算和存储需求使其成为在资源有限的环境中部署的理想选择。
图7:所有运行中SDSO与DSOL的累积误差图。
图8:所有268次运行的Trans和Rot APE的误差热图,每个像素表示一个方法的单个运行的一个度量。
图9:来自KITTI和TartanAir的选定序列的SDSO和DSOL的定性结果。
总结
本文提出了一种快速、准确和稳健的直接稀疏里程计(DSOL)方法,适用于资源受限平台上的机器人应用。我们的系统基于DSO和SDSO的思想,通过算法和实现上的多项改进,使其能够处理高帧率的场景,显著的速度提升也得益于在设计时考虑了并行化,从而有效利用了多核处理器,实验结果表明,我们的双目版本在精度和速度方面优于基准的SDSO算法,在具有挑战性的数据集上表现出色,将我们的代码开源,作为对社区的贡献。
更多详细内容后台发送“知识星球”加入知识星球查看更多。
资源
自动驾驶及定位相关分享
【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法
自动驾驶中基于光流的运动物体检测
基于语义分割的相机外参标定
综述:用于自动驾驶的全景鱼眼相机的理论模型和感知介绍
高速场景下自动驾驶车辆定位方法综述
Patchwork++:基于点云的快速、稳健的地面分割方法
PaGO-LOAM:基于地面优化的激光雷达里程计
多模态路沿检测与滤波方法
多个激光雷达同时校准、定位和建图的框架
动态的城市环境中杆状物的提取建图与长期定位
非重复型扫描激光雷达的运动畸变矫正
快速紧耦合的稀疏直接雷达-惯性-视觉里程计
基于相机和低分辨率激光雷达的三维车辆检测
用于三维点云语义分割的标注工具和城市数据集
ROS2入门之基本介绍
固态激光雷达和相机系统的自动标定
激光雷达+GPS+IMU+轮速计的传感器融合定位方案
基于稀疏语义视觉特征的道路场景的建图与定位
自动驾驶中基于激光雷达的车辆道路和人行道实时检测(代码开源)
用于三维点云语义分割的标注工具和城市数据集
更多文章可查看:点云学习历史文章大汇总
SLAM及AR相关分享
TOF相机原理介绍
TOF飞行时间深度相机介绍
结构化PLP-SLAM:单目、RGB-D和双目相机使用点线面的高效稀疏建图与定位方案
开源又优化的F-LOAM方案:基于优化的SC-F-LOAM
【开源方案共享】ORB-SLAM3开源啦!
【论文速读】AVP-SLAM:自动泊车系统中的语义SLAM
【点云论文速读】StructSLAM:结构化线特征SLAM
SLAM和AR综述
常用的3D深度相机
AR设备单目视觉惯导SLAM算法综述与评价
SLAM综述(4)激光与视觉融合SLAM
Kimera实时重建的语义SLAM系统
SLAM综述(3)-视觉与惯导,视觉与深度学习SLAM
易扩展的SLAM框架-OpenVSLAM
高翔:非结构化道路激光SLAM中的挑战
基于鱼眼相机的SLAM方法介绍
3D视觉与点云学习星球:主要针对智能驾驶全栈相关技术,3D/2D视觉技术学习分享的知识星球,将持续进行干货技术分享,知识点总结,代码解惑,最新paper分享,解疑答惑等等。星球邀请各个领域有持续分享能力的大佬加入我们,对入门者进行技术指导,对提问者知无不答。同时,星球将联合各知名企业发布自动驾驶,机器视觉等相关招聘信息和内推机会,创造一个在学习和就业上能够相互分享,互帮互助的技术人才聚集群。
以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除
扫描二维码
关注我们
让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入知识星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。
分享与合作方式:微信“cloudpoint9527”(备注:姓名+学校/公司+研究方向) 联系邮箱:dianyunpcl@163.com。
为开源的伙伴们点赞吧!