DSOL:一种快速的直接稀疏里程计方案

news2024/11/24 9:18:41

文章: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)。

0722adbac406ad8b9b0347a2f4facd09.png

图1:从TartanAir数据集中的DSOL结果,绿线是真值轨迹,红线是估计的轨迹。

主要内容

DSOL直接视觉里程计的方法 

直接法是一种基于像素级别的图像处理方法,它直接最小化图像间的光度误差,而不是通过特征提取和匹配进行间接估计,这种直接法具有一些优点,如对纹理变化较小的场景具有更好的鲁棒性,能够提供更准确的相机运动估计,并且可以处理非刚性运动和动态场景。

在该系统中,作者采用了两种直接法来实现视觉里程计:直接图像对齐用于帧跟踪和光度捆集调整用于联合优化。具体而言,直接图像对齐是通过最小化当前帧与参考帧之间的光度误差来估计相机的运动,这个过程涉及到在参考帧周围形成一个局部窗口,然后将当前帧的像素点与参考帧上对应的像素点进行对齐,使它们的光度误差最小化,这样就可以得到相机的相对位姿估计。此外还采用了一种简单的基于梯度的异常值剔除方案来处理由于遮挡或移动物体导致的大误差,如图2所示。

7dd7c9f8d8c4c7f5c4a8cee469566b5b.png

图2:异常值剔除。在这个可视化图中,实心方块表示内点特征点,而空心方块表示异常值。上方图像显示了移动物体上的异常值,下方图像显示了由于遮挡导致的异常值。

另一种直接法是光度捆集调整,它用于联合优化多个连续帧之间的相机位姿和稀疏地图。该方法基于光度误差最小化的原理,通过优化问题的最小二乘解来求解相机位姿和地图点的最优估计。光度捆集调整考虑了多个帧之间的相互约束关系,通过优化相机位姿和地图点的参数来最小化所有帧上的光度误差。通过使用所有可用的关键帧,创建了一个更大的虚拟视场(FOV),在对齐过程中可以使用更多的点。如图3所示。

7ec73fa4dbc6b616f6fc4852304c56a8.png

图3:相对于最新关键帧(仅K1)和整个窗口(K0和K1)进行新图像I的跟踪。前者只能跟踪区域1和2的点,而后者还可以利用区域3的点。

通过使用这些直接法,DSOL系统能够以更快的速度处理图像序列,并提供更准确和鲁棒的相机运动估计结果。此外,作者还对系统的实现细节进行了讨论,包括对逆组合对齐方法的采用、对整个窗口而不仅仅是上一个关键帧进行图像跟踪、提出了更好的光度捆集调整公式等等。

024c08e24ad7472637f30aa88a99b630.png

图4:PBA(photometric bundle adjustment)的因子图示例,使用3个关键帧。

DSOL系统中的视觉里程计前端

该前端负责管理窗口内的关键帧和特征点,包括它们的创建、初始化和移除。

A.关键帧的创建:在DSOL中,关键帧是根据一定的策略和条件来选择的,首先,当相邻帧之间的运动超过一定阈值时,当前帧将被选为关键帧,其次,当窗口中的关键帧数量超过一定限制时,较旧的关键帧将被移除,以保持窗口的大小。

B. 关键帧初始化:当新的关键帧被选择后,需要初始化其中的特征点。DSOL使用了一种基于光度差异的方法来选择高质量的特征点,通过计算关键帧与当前帧之间的像素差异,选择那些具有明显光度变化的像素作为特征点,并为它们分配初始的3D位置,如图5示意图。 

4b66760df2286446fd4671075e3e4c65.png

图5:关键帧初始化,具有较大局部梯度的选定点为青色,每个像素周围的彩色方块反映其初始逆深度,双目由立体匹配(粗边框)和局部地图(细边框)进行初始化。

C. 特征点的追踪:在后续帧中,需要追踪已初始化的特征点。DSOL采用了逆向组合方法来进行帧间的特征点追踪。具体而言,通过估计当前帧相对于上一帧的相机位姿,并利用逆向组合方法将上一帧的特征点投影到当前帧中,并与当前帧的图像进行对齐,从而实现特征点的追踪。

84f92bfd4b7ba8fe3e1c0c773d141ef6.png

图6:该方法在TartanAir上的失败案例数据集,跟踪失败的原因从左到右依次为:重复纹理、遮挡相机和低纹理。

D. 关键帧的移除:在一些情况下,特征点可能会失去追踪或质量下降,这时需要将其移除,DSOL使用了一种简化的方法来判断特征点是否应该被移除,基于两个条件:首先,特征点的光度误差超过一定阈值;其次,特征点在三维空间中的重投影误差超过一定阈值。当特征点满足这些条件时,它们将被标记为需要移除,并在后续的优化过程中被丢弃。

实验

在实验中,作者对DSOL算法进行了广泛的评估,他们使用了不同的数据集和场景,包括室内、室外、静态和动态环境。以下是论文中提到的一些实验结果总结:

1. 准确性:DSOL相比于其他现有的直接方法,在准确性方面表现出色。它能够实现精确的相机轨迹估计和地图重建,并能够应对动态场景和快速运动。

2. 实时性:DSOL在计算速度方面表现出色。通过优化算法和并行计算,DSOL能够在常规计算硬件上以高帧率运行,满足实时应用的需求。

3. 稳健性:DSOL在各种不同的场景下都能够表现出稳健性。它能够处理光照变化、纹理缺失和低纹理区域等挑战,并能够适应多种环境条件。

4. 资源效率:由于DSOL算法的高效性,它能够在资源受限的设备上运行,如嵌入式系统或移动设备。它的低计算和存储需求使其成为在资源有限的环境中部署的理想选择。

7c7fec34102c7ecfd852f75bb4397a13.png

图7:所有运行中SDSO与DSOL的累积误差图。

82dd123b2eb1a1a88d8da17c9d74f795.png

图8:所有268次运行的Trans和Rot APE的误差热图,每个像素表示一个方法的单个运行的一个度量。

4289a37ababa74b67ef38ba10e349618.png

图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。

为开源的伙伴们点赞吧!

2ed40a010a12e2a48a1f8106257be6f1.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/566896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elastic 发布 Elasticsearch Relevance Engine™ — 为 AI 革命提供高级搜索能力

作者:Matt Riley 今天我们将向大家介绍 Elasticsearch Relevance Engine™(ESRE™),这是一种创建高度相关的 AI 搜索应用程序的新功能。ESRE 建立在 Elastic 在搜索领域的领导地位以及超过两年的机器学习研究和开发基础之上。Elas…

Java agent入门及demo示例(附源码)

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党 背景 继之前我们研究了下skywalking是什么以及skywalking如何监控skywalking 我们并没有探讨过多的skywalking原理 实际上skywalking的实现原理就是java的agent…

Android 12系统源码_窗口管理(一)WindowManagerService的启动流程

前言 WindowManagerService是Android系统中重要的服务,它是WindowManager的管理者,WindowManagerService无论对于应用开发还是Framework开发都是重要的知识点,究其原因是因为WindowManagerService有很多职责,每个职责都会涉及重要…

RabbitMQ发送方确认机制

1、前言 RabbitMQ消息首先发送到交换机,然后通过路由键【routingKey】和【bindingKey】比较从而将消息发送到对应的队列【queue】上。在这个过程有两个地方消息可能会丢失: 消息发送到交换机的过程。消息从交换机发送到队列的过程。 而RabbitMQ提供了…

中国移动董宁:深耕区块链的第八年,我仍期待挑战丨对话MVP

区块链技术对于多数人来说还是“新鲜”的代名词时,董宁已经成为这项技术的老朋友。 董宁2015年进入区块链领域,现任中国移动研究院技术总监、区块链首席专家。作为“老友”,董宁见证了区块链技术多个爆发式增长和平稳发展的阶段,…

基于STC8G1K08A的水压检测系统

基于STC8G1K08A的水压检测系统 前言先来一饱眼福设计和硬件的选型压力传感器选择单片机的选择WIFI透传模块选择 核心代码的开发STC8G1K08A单片机代码读取水压传感器的电压计算对应电压水的压力值猪场水压正常、漏水、喝光水提醒功能的实现 数据通过ESP8266上报到云端代码的实现…

低功耗定时器(LPTIMER)

概述 LPTIM 是运行在Always-On 电源域下的16bits 低功耗定时/计数器模块。通过选择合适的工作时钟,LPTIM 在在各种低功耗模式下保持运行,并且只消耗很低的功耗。LPTIM 甚至可以在没有内部时钟的条件下工作,因此可实现休眠模式下的外部脉冲计数…

新手怎么玩转Linux

Linux是一个非常强大、灵活和可定制的操作系统,这使得它成为了程序员的首选操作系统之一。程序员喜欢使用Linux的原因有以下几点:开源、稳定性、安全性、命令行界面、社区支持。那么新手改如何玩转Linux呢?跟着我一起来看看吧。 以下是对新…

Meta 开源语音 AI 模型支持 1,100 多种语言

自从ChatGPT火爆以来,各种通用的大型模型层出不穷,GPT4、SAM等等,本周一Meta 又开源了新的语音模型MMS,这个模型号称支持4000多种语言,并且发布了支持1100种语言的预训练模型权重,最主要的是这个模型不仅支…

行业报告 | 2022文化科技十大前沿应用趋势(上)

文 | BFT机器人 前言 Introduction 文化科技是文化科技融合过程中诞生的系列新技术成果,是文化强国和科技强国两大战略的交又领域。2012 年 8月,科技部会同中宣部、财政部、文化部、广电总局、新闻出版总署发布《文化科技创新工程纲要》,开启…

为何AI无法完全理解人类情感?GPT-4能否理解人类的情绪?

在科幻小说和电影里,我们经常看到超级AI人工智能机器人可以理解、感知甚至模拟人类的情感,但在现实世界中,我们距离这个目标还有一段相当长的距离,即使是强大的GPT-4甚至未来的GPT-5。过高夸大AI的体验和性能,往往并不…

gin框架返回json

一、使用gin web框架开发的两种模式: 前端浏览器去请求服务器,服务器把完整的HTML文件的内容返回给前端浏览器Vue、reactor等前端框架都自己提前定义好模板,后端(服务器)只需要返回JSON格式的数据给前端框架即可&…

如何在MyEclipse中使用JavaScript编写代码?

MyEclipse v2022.1.0正式版下载 JavaScript 项目 在 MyEclipse 2021 及更高版本中,JavaScript 支持对大多数 JavaScript 源代码都是开箱即用的——不需要特殊的 JavaScript Eclipse 项目或 JavaScript facet。但是,我们建议使用jsconfig.json文件来指定…

SAP 物料主数据基本数据1视图 参数有效值 字段的作用测试 <转载>

原文链接:https://blog.csdn.net/weixin_40672823/article/details/104773643 1.在物料主数据基本数据1视图中有个字段 参数有效值 如下图 有什么用途? 这个字段作用主要用在 BOM里面,官方说明如下 看说明很难理解下面通过一个业务实例来说明 业务要…

HOOPS平台助力Xometry数字化转型:即时报价产品实现三维模型轻量化、Web端可视化!

所属行业:制造业 挑战:为在线客户的制造平台提供流畅的客户体验、支持使用多种类型CAD文件格式的不同客户群、根据模型提供准确的报价和可制造性反馈、快速准确地可视化定制零 解决方案: HOOPS Platform 提供web端和移动设备的3D数据转换、…

擎创技术流 | 一文读懂eBPF对kubernetes可观测的重要性

一、云原生技术发展的背景与问题 当前,云原生技术主要是以容器技术为基础围绕着 Kubernetes的标准化技术生态,通过标准可扩展的调度、网络、存储、容器运行时接口来提供基础设施,同时通过标准可扩展的声明式资源和控制器来提供运维能力。两层…

Servlet【最复杂的hello world】

目录 一、Hello World 1.创建项目 2.引入依赖 3.创建目录 4.编写代码 4.1 继承 HttpServlet 父类,重写 doGet 方法 4.2 在 doGet 中编写代码,打印 hello world 4.3 给 HelloServlet 加上注解 4.4 完整代码 5.打包代码 6.部署 7.验证程序 二…

分享一个403界面给大家

先看效果图&#xff08;说明&#xff1a;小鬼影会飘来飘去&#xff0c;长时间停留会有小惊喜&#xff0c;具体大家跑一下就知道&#xff09;&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UT…

depends_on 解决 docker 容器依赖问题

如果你经常使用docker-compose启动服务的话&#xff0c;可能会遇到下面的问题&#xff1a;服务 B 依赖服务 A&#xff0c;需要服务 A 先启动&#xff0c;再启动服务 B 举个例子&#xff0c;在部署 kafka 集群的时候&#xff0c;需要启动两个kafka&#xff0c;并使用zookeeper做…

基于云计算和物联网技术开发的智慧校园云平台源码

智慧校园系统是利用物联网和云计算&#xff0c;强调对教学、科研、校园生活和管理的数据采集、智能处理、为管理者和各个角色按需提供智能化的数据分析、教学、学习的智能化服务环境。它包含“智慧环境、智慧学习、智慧服务、智慧管理”等层面的内容。 文末获取联系 它描绘的是…