论文阅读:C2VIR-SLAM: Centralized Collaborative Visual-Inertial-Range SLAM

news2024/11/27 14:48:25

前言

论文全程为C2VIR-SLAM: Centralized Collaborative Visual-Inertial-Range Simultaneous Localization and Mapping,是发表在MDPI drones(二区,IF=4.8)上的一篇论文。这篇文章使用单目相机、惯性测量单元( IMU )和UWB设备作为每个智能体上的机载传感器,以构建准确高效的集中式协同SLAM系统,并设计了一个全局优化算法,利用视觉位置技术检测到的跨智能体地图匹配信息,以及智能体到智能体的距离信息来优化所有参与者的运动参数,并将局部地图合并成一个全局地图。

一、问题背景

未知静态UWB锚点虽然去除了位置校准过程的要求,但仍然需要进行分布式处理;在大规模应用中,由于UWB设备的有效作用范围有限,也需要不同区域的锚点。UWB信号也会受到干扰。这些因素限制了UWB辅助协同SLAM系统的应用。

与基于UWB的系统相比,基于视觉的协同SLAM需要更少的基础设施建设,并且不受测距测量块的限制。然而,智能体之间需要有共同的视图区域并具有条件不变的位置识别能力才能进行协作,这限制了任务执行的效率。共享的视觉地图也给多智能体系统带来了巨大的通信负担

虽然基于UWB和基于视觉的协同SLAM各有优劣,但研究者们已经提出了几种同时使用UWB和视觉来相互增强[ 4、5]的系统。然而,这些系统主要侧重于利用机载视觉系统来估计未标定的静态UWB锚点的运动和位置,严重依赖锚点进行协作

二、主要假设

1、多无人机集中式协同架构的基本假设

2、VIO、UWB的应用假设条件

三、理论流程

本文提出了一种新颖的集中式协同视觉/惯性/测距SLAM系统( C2VIR-SLAM ),仅依靠机载视觉、惯性和UWB测距设备即可实现精确高效的集中式协同SLAM。对于每个智能体,采用视觉-惯性里程计( VIO )估计运动参数并重建局部地图。同时,VIO估计的参数、本地地图和代理到代理的UWB距离信息被发布到中央服务器。然后服务器对运动参数进行优化,将局部地图合并为全局地图。

提出的C2VIR - SLAM包括四个主要部分:( i )单智能体视觉惯性里程计,它估计智能体的运动并重建被探索局部区域的地图;( ii )智能体之间的距离测量,使用机载UWB设备;( iii )位置识别,它检测所有智能体共享的地图中的回环,并估计参与者之间的相对运动;( iv )协作定位与地图构建,它优化所有智能体的运动参数并构建全局地图。

1、单机器人视觉惯性里程计

(使用VINS-mono)

2、位姿图协同定位

在中心服务器中执行协同定位,并将其建模为位姿图优化问题(结合板载UWB和视觉):

第i个智能体的t个关键帧数据,包含位置向量和四元数。

上述问题包含三个待优化残差。序列残差是指每个智能体内部VIO的相对运动约束。地图匹配残差描述了来自视觉位置识别组件的重定位约束。智能体间测距约束的UWB测距残差。

(1)来自里程计的序列约束

序列残差代表一个智能体的两个连续关键帧之间的变换:

(2)视觉位置识别的地图匹配约束

具体来说,对于一个新的查询关键帧,我们使用DBOW2外观相似度[ 20 ]将其与所有现有的关键帧进行比较。一旦相似度超过一定阈值,则尝试检测两个相似帧之间的循环。查询关键帧上的3D特征点与候选关键帧上的2D特征进行匹配,其中的特征被描述为BRIEF描述符[ 21 ]。然后,使用RANSAC算法通过求解透视N点( Perspective-N-Points,PNP )问题来评估3D - 2D连接[ 22 ]。一旦内点数量超过一定阈值,则被认为是有效的地图匹配约束。通过求解PNP问题,可以得到两个匹配关键帧之间对应的相对位姿,地图匹配残差为:

通过比较( 5 )和( 7 ),我们可以注意到,当顺序约束使用智能体内部的VIO状态时,地图匹配残差可以使用来自不同智能体的运动信息。现有的一些研究表明,将地图匹配残差引入到协同SLAM系统中,可以极大地提高[ 6、7 ]的精度;然而,这要求协作参与者具有共同的浏览地点和识别重叠的视图,这降低了效率,并给视觉识别组件带来了挑战。

(3)板载UWB的相对范围约束

当地图匹配残差需要共同访问的地点时,UWB可以直接测量两个设备之间的距离信息。在这里我们提出将UWB设备刚性地安装在协作代理上,这去除了锚点分布过程,更适合在未探索环境中的应用。

UWB测距模型:

在我们的系统中,UWB设备与代理一起安装在载体上。因此,得到的测距为两个对应智能体之间的距离;该测距信息可以作为观测量,通过定义残差项为,对里程计测量的运动参数进行修正

需要注意的是,位姿图优化可能是耗时的,只有在( 4 )式中加入地图匹配残差或UWB测距残差项时才有效。为了提高效率,我们在一个恒定的时间间隔内检查是否存在有效的地图匹配和UWB测量值,只有当在该时间间隔内存在地图匹配残差或UWB测距残差时才进行优化。

3、结合全局光束法平差的地图精化

计算协作代理共享的所有关键帧中所有特征的重投影,并优化状态χ和特征的3D位置,以最小化整体重投影误差。global bundle adjustment (GBA)的目标函数可以表示为:

重投影因子遍历所有关键帧和所有地图点。为了提高效率,GBA仅在有效的位姿图优化后执行。

四、实验方案

1、使用公开的EuRoC数据集(UWB数据模拟得到)

我们使用两个和三个智能体设置不同的序列组合对所提出的系统进行了测试,并将结果与CVI - SLAM [ 6 ]进行了比较,CVI - SLAM是一种最先进的使用视觉和惯性传感器的集中式协作SLAM系统。

2、使用自建的多无人机数据集Testing Zone数据集

Test Zone数据集包含两个实验,每个实验包含一个双智能体飞行。在国家智能网联汽车(中国长沙)试验区,利用两架DJI铸字用的铜字模600Pro无人机在300 m × 200 m的室外区域同时飞行采集数据。

五、创新总结

这篇文章从相比于VIR-SLAM,深挖了协同估计中单独使用UWB的不足(信号直线传播),将无人机群估计的知识与UWB-VIO相结合,总体属于组合创新,但也解决了实际问题。

  • 我们提出在所提出的C2VIR - SLAM系统中使用机载UWB设备,而不是校准或未校准的静态UWB锚点,这就消除了先验锚点分布过程的要求,并随着设备随智能体移动而扩大了UWB的有效范围;
  • 我们设计了一个能够单独或组合使用视觉或机载UWB的系统来进行协作定位和建图;
  • 我们在不同的数据集和不同的系统设置中进行了系统的实验,并全面分析了单独使用视觉、单独使用UWB以及它们的组合在协作中带来的性能改进。

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

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

相关文章

【Amazon】创建Amazon EFS 文件系统并将其挂载到Amazon EC2实例

文章目录 1. Amazon EFS文件系统2. Amazon EFS文件系统工作原理图3. 创建Amazon EFS 文件系统操作步骤3.1 创建安全组3.2 创建 EFS 文件系统3.3 启动 EC2 实例并挂载文件系统 4.清理资源4.1 终止 EC2 实例4.2 删除 EFS 文件系统 5.参考链接 1. Amazon EFS文件系统 Amazon EFS …

水面倒影可视化渲染方法

水面材质在三维可视化场景中的使用非常广泛。水面材质非常重要的一个光学特性就是反射倒影,有了倒影的加持能使水面更加逼真的渲染出来。本文主要讨论水面材质中倒影的渲染方法。 要有倒影,必须先有水面,第一步要做的就是确定水面所在的平面…

关于DCDC电源中的PWM与PFM

在开关电源DCDC中,我们经常会听到PWM模式与PFM模式。 关于,这两种模式,小编在之前的文章中,做过简单的描述。今天就来针对性的就这两种模式展开讲讲。 PWM:脉冲宽度调制,即频率不变,不断调整脉…

静态路由配置过程

静态路由 静态路由简介 路由器在转发数据时,要先在路由表(Routing Table)中在找相应的路由,才能知道数据包应该从哪个端口转发出去。路由器建立路由表基本上有以下三种途径。 (1)直连路由:路由…

pytorch中的激活函数详解

1 激活函数介绍 1.1 什么是激活函数 激活函数是神经网络中引入的非线性函数,用于捕获数据中的复杂关系。它来自动物界的灵感,动物的神经元会接受来自对它有作用的其他神经元的信号,当然这些信号对该神经元的作用大小不同(即具有不…

最火web大屏可视化编辑器

前言: 乐吾乐Le5le大屏可视化设计器,零代码实现物联网、工业智能制造等领域的可视化大屏、触摸屏端UI以及工控可视化的解决方案。同时也是一个Web组态工具,支持2D、3D等多种形式,用于构建具有实时数据展示、监控预警、丰富交互的组…

【nowcoder】BM4 合并两个排序的链表

题目: 题目分析: 题目分析转载 代码实现: package BMP4;import java.util.List;class ListNode {int val;ListNode next null;public ListNode(int val) {this.val val;} } public class BM4 {/*** 代码中的类名、方法名、参数名已经指定…

rust tokio select!宏详解

rust tokio select!宏详解 简介 本文介绍Tokio中select!的用法,重点是使用过程中可能遇到的问题,比如阻塞问题、优先级问题、cancel safe问题。在Tokio 中,select! 是一个宏,用于同时等待多个异步任务,并在其中任意一…

jenkins流水线(pipline)实例

1、pipline 语法介绍 声明式的pipeline语法格式 1. 所有的声明都必须包含在pipeline{}中 2. 块只能有节段,指令,步骤或者赋值语句组成 3. 阶段:agent,stages,post,steps 4. 指令:environment&a…

独乐乐不如众乐乐(二)-某汽车零部件厂商IC EMC企业规范

前言:该汽车零部件厂商关于IC EMC的规范可能是小编看过的企业标准里要求最明确的一份企业标准了,充分说明了标准方法不是死的,可以灵活应用。 先看看这份规范的抬头: 与其他企业规范一样,该汽车零部件厂商的IC EMC规范…

设计模式精讲:掌握单例模式的实现与优化

掌握单例模式的实现与优化 一、引言:如何学习设计模式?二、前置知识:对象的创建的销毁2.1、拷贝构造2.2、拷贝赋值构造2.3、移动构造2.4、移动赋值构造 三、单例模式的定义四、单例模式的实现与优化4.1、版本一4.2、版本二4.3、版本三4.4、版…

Java PriorityQueue

一般情况下, 我们使用队列是为了能够建造队列的先进先出 (First-In-First-Out) 模式的, 达到一种资源的公平分配, 先到达的任务 (元素) 先处理, 但有时需要在队列中基于优先级处理对象。 存入队列中的任务 (元素) 具有优先级, 需要根据优先级修复里面的数据。而在 JDK 1.5 引入…

python爬虫进阶篇(异步)

学习完前面的基础知识后,我们会发现这些爬虫的效率实在是太低了。那么我们需要学习一些新的爬虫方式来进行信息的获取。 异步 使用python3.7后的版本中的异步进行爬取,多线程虽然快,但是异步才是爬虫真爱。 基本概念讲解 1.什么是异步&…

光线追踪-Peter Shirley的RayTracing In One Weekend系列教程(book1-book3)代码分章节整理

自己码完了一遍了,把代码分章节整理了一下,可以按章节独立编译,运行, 也可以直接下载编译好的release版本直接运行。 项目地址: Github: https://github.com/disini/RayTracingInOneWeekendChaptByChapt ​ ​ ​ ​

【赠书第8期】工程效能十日谈

文章目录 前言 1 工程效能十日谈 1.1 制定清晰的目标和计划 1.2 引入先进的技术和工具 1.3 建立有效的沟通机制 1.4 灵活应对变化 1.5 确保资源充足 1.6 进行有效的风险管理 1.7 进行持续的监控和评估 1.8 优化团队合作 1.9 注重质量管理 1.10 进行项目总结和反思 …

【Amazon】安装Cloudwatch代理监控EC2

文章目录 一、实验概要二、实验操作步骤2.1 创建 CloudWatch 代理运行角色2.2 安装 CloudWatch 代理软件包2.3 使用 CloudWatch代理收集指标2.4 CloudWatch指标收集确认 三、参考链接 一、实验概要 使用 CloudWatch 代理从 Amazon EC2 实例和本地服务器中收集指标、日志和跟踪信…

NetSuite 应用性能管理器(APM)

前段时间,我们发过一个文章谈系统健康检查。 NetSuite ERP系统健康检查-CSDN博客文章浏览阅读119次。“健康检查”本质上是属于信息化持续改善的组成部分。如果说信息化是一个持续不断的过程的话,那么“健康检查”就是持续不断的PDCA中的Check那一环。h…

pygame加载图像,并让小球做平抛运动

文章目录 load转换和存储自由落体 在游戏设计中,图像显示是必不可少的功能,pygame中的image模块便用于加载图像。 load 通过load函数,可以加载多种图像格式,如下表所示 旧版本bmp, gpeg, png, pcx, tiff, xpmc, lbm(以及pbm, p…

CountDownLatch实战应用——批量数据多线程协调异步处理(主线程执行事务回滚)

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: CountDownLatch实战应用——批量数据多线程协调异步处理(主线程执行事务…

MIT 6.824 -- MapReduce Lab

MIT 6.824 -- MapReduce Lab 环境准备实验背景实验要求测试说明流程说明 实验实现GoLand 配置代码实现对象介绍协调器启动工作线程启动Map阶段分配任务执行任务 Reduce 阶段分配任务执行任务 终止阶段 崩溃恢复 注意事项并发安全文件转换golang 知识点 测试 环境准备 从官方gi…