首个基于地面纹理的单目SLAM,复杂光照环境中也能精准定位

论文题目:
Monocular Simultaneous Localization and Mapping using Ground Textures

论文作者:
Kyle M. Hart, Brendan Englot, Ryan P. O’Shea, John D. Kelly, David Martinez

导读: 本文是发布在ICRA 2023的论文,是首个基于地面纹理的单目SLAM系统。本文介绍了一种无需事先构建地图即可实时在线SLAM的解决方案。通过使用朝下的单目相机捕获地面纹理图像,即使在环境特征稀疏或光照条件复杂的情况下也能提供可靠的定位信息。©️【深蓝AI】编译

1. 介绍

即使在缺乏显著特征和光照条件复杂的情况下,某些地面纹理也能提供可靠的定位信息。现有的基于地面纹理的定位方法虽然有效,但它们通常需要预先构建好的地图作为参照。为了减少对预构建地图的依赖,研究者提出了一种全新的在线地面纹理SLAM系统,该系统能够在没有事先已知地图的情况下实现SLAM,从而缩短初始设置时间,并增强了系统在变化环境中的鲁棒性。

该研究的主要贡献在于:

●开发了首个仅使用单目相机实现在线地面纹理SLAM(同时定位与建图)系统的解决方案。

●在地面纹理领域提出了一个独特的算法,利用已知的地面纹理图像深度信息,在估计重叠图像之间的变换以及识别循环闭合区域时提高准确性。

●在最近的数据集上进行了实验验证,结果显示该系统在某些地面纹理场景下可以达到厘米级别的定位精度。

2. 相关工作

目前的单目相机SLAM系统,有的结合了其他传感器如惯性测量单元或激光雷达的数据来增强定位与建图性能,而另一些则仅依赖于单目视觉信息。在图像比较方面,有直接法和间接法之分:直接法通过像素强度直接对比图像,间接法则利用关键点(如ORB、SIFT等算法检测出的图像显著点)进行匹配。地图存储上也有区别,包括密集型地图(保存全部图像信息)和稀疏型地图(仅存储关键点及其描述符)。本文提出的地面纹理SLAM系统属于间接-稀疏类别。
针对地面纹理定位的方法,尽管所有特征处于同一深度,从而消除了深度估计问题,但现有技术通常局限于已知环境地图下的定位。这类方法通常采集多幅覆盖整个操作区域的地面图像,并在运行时搜索预先构建的地图以找到最相似的匹配图像。大多数此类方法同样采用关键点和描述符进行图像处理,例如“Micro GPS”系统采用投票策略结合RANSAC估计图像间变换。

3. 提出的方法

在这里插入图片描述
图1 | 系统结构图。主要由两个子结构构成:局部里程计(蓝色框)用于和上一帧图像进行对比,回环检测(黄色框)用来和之前所有相似照片的对比。输入数据(红色框),通用处理步骤(绿色),迭代间存储的信息(灰色)©️【深蓝AI】编译

3.1 图像处理流程

接收到图像后,首先使用ORB算法提取关键点和描述子,然后将这些基于像素的关键点转换为地面坐标系下的实际空间点在本系统中,由于已知相机与地面之间的距离d(由外参标定矩阵确定),因此能够明确地将这些关键点投影到真实世界中。使用以下公式即可将像素点投影到米制单位:

随后,将这些三维向量通过同质变换进一步转换到机器人参考系下,即进行坐标系转换:

考虑到所有点都在同一地平面上,Z分量可以忽略,因此最终得到的是二维点集。在完成了关键点的投影及坐标转换后,系统会丢弃原始基于像素的关键点信息,仅保留投影后的关键点及其相应的描述符,用于后续SLAM流程中的局部里程计估计以及回环检测等环节。

3.2 局部里程计

Keypoint Matching:针对当前图像中的每一个关键点,使用FLANN方法寻找与前一帧图像中最相似的关键点对。相似性判断基于关键点描述符之间的距离得分,采用比值测试来决定是否为有效匹配。如果当前关键点与其在前一帧图像中找到的最近邻和次近邻之间的距离得分之比低于一个阈值(如0.7),则认为这两个关键点是一对匹配成功的对应点。

Transform Estimation:根据匹配好的关键点对,在地面上进行投影,并通过M-Estimator方法在因子图中构建一个因子,用以估计两个相邻位姿之间的变换矩阵。在这个过程中,系统利用GTSAM库中的表达式图形特征优化技术,估计出X、Y平移以及yaw旋转角度这三个参数。

3.3 回环检测

视觉词袋得分: 通过构建一个基于之前观测到的地面纹理图像描述符数据库,系统可以查询当前图像的描述符,并计算与历史记录中的匹配度。只有当得分超过预先设定的阈值时,该区域才会被认为是潜在的回环。

关键点匹配数量: 系统进一步检查潜在回环区域内的关键点是否能成功匹配。若匹配的关键点数量不足预设阈值,则会丢弃这一候选回环。

协方差参数: 对满足前两个条件的候选回环,系统会估计出它们之间的变换矩阵以及相关的协方差矩阵。根据协方差的最大特征值计算得出一个衡量不确定性大小的分数,只有当这个分数低于设定的阈值时,才认为这是一个有效且可靠的回环闭合事件。

4. 实验和结果

为了验证所提出的基于单目相机的地面纹理SLAM方法的有效性,研究者使用了HD Ground Texture数据集进行实验。这个数据集包含了多个不同的环境场景,并且在每个环境中都有多条由朝下视角摄像机捕捉到的路径图像序列。图3展示了该数据集中一些代表性的样本图像。

在这里插入图片描述
图2 | 展示的是来自HD Ground Texture数据集中的部分样本纹理,该数据集遵循CC BY-SA 4.0协议授权使用[25]。数据集中包含了多种不同地面纹理的环境场景。在每个特定纹理环境中,都记录了多个连续观察序列。每一个观察序列由一张无失真的图像及其对应的拍摄时刻的真实世界位置信息组成。©️【深蓝AI】编译

为了更准确地评估系统的性能和建立基准,研究者还利用了先进的Micro GPS定位系统对相同的图像序列进行位姿估计。Micro GPS是一种基于已知地图信息来估计机器人位置的先进定位技术,在测试过程中为各种纹理环境均使用了其默认参数设置。

在这里插入图片描述
图3|展示了在不同路径和纹理条件下,系统所计算的平移平均绝对误差。©️【深蓝AI】编译

虽然Micro GPS定位系统通常在精度上优于本文的SLAM系统,但需要注意的是,它是一种依赖于预先构建地图的定位方法。这意味着,在没有预先获取地图的情况下,Micro GPS无法独立完成同时定位与建图的任务,而本文的单目地面纹理SLAM系统则能够在无需预先地图的前提下进行实时定位并创建环境地图。

另外,图5呈现了一种特定纹理环境下一条完整路径上的结果,该图可以直观地看出回环闭合作用对于纠正累积漂移的有效性。

在这里插入图片描述
图4|展示了针对浴室瓷砖(Bathroom Tiles)测试路径1纹理和序列的示例结果。其中,红色虚线代表了前述所述SLAM系统在该场景下的表现,即包含了回环闭合校正功能的完整解决方案。而蓝色点状线则表示了经过修改、不执行任何回环闭合校正操作的系统版本的结果。©️【深蓝AI】编译

在这里插入图片描述
图5|展示了图像对之间的三个阈值得分与这些图像之间真实世界距离的关系。©️【深蓝AI】编译

只有实际距离较短的图像对才能重叠并形成有效的回环闭合,如图所示。对于(a)和(b)两个指标,分数越高表示匹配度越好;而对于©这个指标,则是分数越低表明匹配得越好。

在这里插入图片描述
表1|对比了本文的地面纹理SLAM系统与Micro GPS定位系统[18]在不同序列中,按总路径长度标准化后的平移平均绝对误差(MAE)以及旋转平均绝对误差。©️【深蓝AI】编译

在这里插入图片描述
图6|显示了一条代表性轨迹上的回环闭合事件,以红色线条表示。这些回环闭合是在机器人运动过程中通过系统识别出的,在图像中以蓝色线条展示机器人的各个位姿。©️【深蓝AI】编译

在这里插入图片描述
图7|展示了一系列有效回环闭合图像对之间的不同估计变换。为了清晰说明,每种纹理选取了一条路径上的图像对进行展示。在图中还画出了一个y=x直线作为理想结果的参考线©️【深蓝AI】编译

在这里插入图片描述
图8|展示了本文所提出的完整SLAM系统以及Micro GPS定位系统的处理速度对比,针对多种不同序列进行了绘制。 ©️【深蓝AI】编译

5. 结论

本文介绍了一种创新的地面纹理SLAM系统,该系统仅利用一台校准过的朝下视角单目相机就能实现有效运作。这是首个在无需预先构建地图的情况下,在地面纹理领域提供完整在线SLAM功能的系统。当系统接收到新的图像时,会检测图像中的关键点,并利用已知的相机位置信息将这些关键点投影到地面上。随后,系统采用鲁棒性M-estimator方法来估计机器人在两帧图像之间经历的地面二维变换。为了提高整体定位精度,回环闭合环节采用了三个阈值来识别和确认重新访问过的区域。实验结果表明,该系统在多种不同地面纹理上表现出可靠性能。在适用于该系统的地面纹理环境下,本系统为快速搭建机器人导航提供了途径,无需事先提供先验地图。

编译|蒙牛二锅头

审核|Los

移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【EFK】基于K8S构建EFK+logstash+kafka日志平台

基于K8S构建EFKlogstashkafka日志平台 一、常见日志收集方案1.1、EFK1.2、ELK Stack1.3、ELK filbeat1.4、其他方案 二、EFK组件介绍2.1、Elasticsearch组件2.2、Filebeat组件【1】 Filebeat和beat关系【2】Filebeat是什么【3】Filebeat工作原理【4】传输方案 2.3、Logstash组件…

Carla自动驾驶仿真八:两种查找CARLA地图坐标点的方法

文章目录 前言一、通过Spectator获取坐标二、通过道路ID获取坐标总结 前言 CARLA没有直接的方法给使用者查找地图坐标点来生成车辆,这里推荐两种实用的方法在特定的地方生成车辆。 一、通过Spectator获取坐标 1、Spectator(观察者)&#xf…

实战Kafka的部署

目录 一、环境准备 二、安装配置jdk8 (1)Kafka、Zookeeper(简称:ZK)运行依赖jdk8 三、安装配置ZK (1)安装 (2)配置 四、配置Kafka (1)配置…

SpringBoot整合rabbitmq-扇形交换机队列(三)

说明:本文章主要是Fanout 扇形交换机的使用,它路由键的概念,绑定了页无用,这个交换机在接收到消息后,会直接转发到绑定到它上面的所有队列。 大白话:广播模式,交换机会把消息发给绑定它的所有队…

day06_菜单管理(查询菜单,添加菜单,添加子菜单,修改菜单,删除菜单,角色分配菜单,查询菜单,保存菜单,动态菜单)

文章目录 1 菜单管理1.1 表结构介绍1.2 查询菜单1.2.1 需求说明1.2.2 页面制作1.2.3 后端接口SysMenuSysMenuControllerSysMenuServiceMenuHelperSysMenuMapperSysMenuMapper.xml 1.2.4 前端对接sysMenu.jssysMenu.vue 1.3 添加菜单1.3.1 需求说明1.3.3 页面制作1.3.3 后端接口…

类加载的过程以及双亲委派模型

类加载,指的是java进程运行的时候,需要把.class文件从硬盘,读取到内存,并进行一系列的校验解析的过程。(.class文件 > 类对象,硬盘 > 内存) 类加载的过程,类加载的过程其实是在…

探索Sora:AI视频模型的创新与未来展望

✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向) 🐳博客主页: 开源中国、稀土掘金、51cto博客、博客园、知乎、简书、慕课网、CSDN 🔔如果文章对您些帮助请👉关…

Python进阶学习:Pandas--查看DataFrame中每一列的数据类型

Python进阶学习:Pandas–查看DataFrame中每一列的数据类型 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希…

数据库子父结构表,树状结构数据进行递归查询

表结构: 三个字段如图所示,目标是获取每条数据的根id(父id为0的数据根id就是自己的id,否则一直根据父id去查找一直找到父id为0的数据,此数据的id就是根id) 业务中实际的解决办法: 新加一个字段进行存储&…

Python + Google AI 自动修复 Sonar Bug 实践

前言 在工作中总会遇到种种不期而至的需求,比如前段时间突然要修复所有 Sonar Bug,涉及各种琐碎的代码风格问题,包括但不限于语法不规范、废弃注释等问题。这些项目都已经持续开发几年了,Sonar 上的问题层出不穷,各种…

如何在Linux使用Docker部署Nexus容器并实现公网访问本地仓库【内网穿透】

文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus Nexus是一个仓库管理工具,用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关,可…

【airtest】自动化入门教程(一)AirtestIDE

目录 一、下载与安装 1、下载 2、安装 3、打开软件 二、web自动化配置 1、配置chrome浏览器 2、窗口勾选selenium window 三、新建项目(web) 1、新建一个Airtest项目 2、初始化代码 3、打开一个网页 四、恢复默认布局 五、新建项目&#xf…

流程图怎么画?只需这几步就可以搞定!

你在工作中有没有遇到过下面这些问题: 思维混乱,想快速厘清一个项目的逻辑; 想让客户轻松接受自己的设计构思/产品理念等; 产品流程总是百密一疏,经常遗漏了某种用户需求; 想让小伙伴们快速理解一件事&…

软件项目验收测试报告-软件项目验收流程

对甲方而言,项目验收是正式接受项目成果,将项目从建设转为运营。对于乙方来说,则意味着项目的结束,项目资源的释放。 项目验收是项目收尾的重要环节,依据招投标文件、合同对测评相关要求内容、项目章程和项目过程中的…

LATEX中将表格序号和标题放置在两列/一列【已解决】

目录 LATEX中将表格序号和标题放置在两列 LATEX中将表格序号和标题放置在一列 LATEX中将表格序号和标题放置在两列 每个期刊对于表格的要求不一样,发现期刊要求表格的序号列和标题列是两行且标题大写,如下图所示 而我的表格是这样 解决方法: …

使用Haproxy搭建Web群集

1、Haproxy概述。 Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx。相比较而言,LVS性能最好,但是搭建相对复杂;Nginx的upstream模块支持群集功能,但是对群集节点健康检查功…

AI未来10年展望

人工智能(AI)在过去十年中迅速发展,其未来有望取得更加引人注目的发展。 在本文中,我们将探讨人工智能的未来 10 年以及我们对未来十年的期望。 我们将解决一些关键问题,以全面概述人工智能的未来。 1、10年后AI会发展…

前端配置开发环境,新电脑配置前端开发环境,Vue开发环境配置的详细过程(前端开发环境配置,电脑重置后配置前端开发环境)

简介:有时候,我们需要在新电脑 或者 电脑重置后,配置前端开发环境,具体都需要安装什么软件和插件,这里来记录一下(文章适合新手和小白,大佬可以带过)。 ✨前端开发环境,需…

前端架构: 脚手架之包管理工具的案例对比及workspaces特性的使用与发布过程

npm的workspaces 特性 1 )使用或不使用包管理工具的对比 vue-cli 这个脚手架使用 Lerna 管理,它的项目显得非常清晰在 vue-cli 中包含很多 package 点开进去,每一个包都有package.json它里面有很多项目,再没有 Lerna 之前去维护和…

重生奇迹MU攻略教学

1:前提是人物等级到80级,没有80级不能使用。 2:杀怪范围,大家不用改,就8吧,但是有时候也会跑很远。 3:技能近战使用,我作为战士,点了和不点没区别。 4:然后…