《论文笔记》Multi-UAV Collaborative Monocular SLAM
时间:2017
作者:
实现条件:
多agent+一中心服务器。每一个agent自带单目摄像头,中心服务器可与所有agent通信。agent没有任何先验知识。不考虑任何的传输延时所带来的不良影响。
分工
agent工作:采集数据+建立局部地图+传送数据
服务器工作:place recognition(位置识别),map fusion(地图融合),bundle adjustment(束调整)
注:agent和server通信频率不是固定的
物理结构:
多资源有限无人机(配置单目摄像头,单机ORB-SLAM2算法)+中心资源控制
中心型相较于分布式优点(在节点资源有限情况下):
1)保持数据一致性、避免重复计算信息
2)大计算任务/对时延不敏感任务交给server,资源有限初计算关键任务
理论结构:
agent包括:
1)VO:用来处理图像信息,形成KF
2)Communication:与server进行通信(帧的传输)
3)Local map:通过VO方式自身维护局部地图,设置最多k个KF,通过Trimming过程决定维护的k个KF(有缓冲区机制)
server包括:
1)agent Handler(数量同agent):包括communication(帧的传输)和Intra-MapPlicae(匹配自身的Server Map)。解决数据传输和数据转换的问题
2)Global Map Stack:用于存储每个agent的Server Map(初始化数量与agent相同),单一agent反馈信息改进该agent对应的Server Map,多agent遇到特征点相同时Server Map彼此融合。
3)Place Recognition Database:存储所有agent采集的所有关键帧,用于进行匹配,为匹配数据库(因agent资源有限,每个agent只能保存N个KF,而数据库不限制)
4)Inter-Map Place(匹配其他的Server Map, 匹配成功说明两个Server Map可融合)
5)Map Fusion:地图融合模块,操作对象是Server Map(两层:单一agent融合,多agent融合)
6)Global BA:对全局地图进行优化。发生Global BA有两种情况:(1)map fusion (2)检测到回环。发生Global BA过程中传输来的KF不予考虑。
通信模型:
1)server→agent
2)agent→server→agent(当server识别到agent有共同特征时,利用已知的其他agent信息反馈给原agent)
agent和server基于ROS的消息传递机制进行通信,对实时性没有要求。无线网络传输,连接时一切正常,agent和server断开连接时不再交流。为了传输时减少loss,设置信息阈值,进行切割。
agent发给server有确认接受机制,两类信息:Ppred和Ppar,用当前信息用于确保agent上一个发给server的成功接受。对于server发给agent的信息不用确认接受机制
本文创新点及思想:
提出了一种协同SLAM框架可实现更好的感知。试验使用单目视觉SLAM完成,每个agent采集数据,数据以KF(keyframe关键帧)为数据结构基本单位。采集一帧后传给server。由server做place recognition,如果从两帧中提取到大量相同特征认为两agent走过相同地方。用B的经验传给A,用A的经验传给B以实现agent之间的交流(同时发生),强化agent的局部地图完整。同时server处会进行一次BA(bundle adjustment,束调整)。利用两帧数据强化全局地图中这部分的细节。
实验证明:
上图agentB(蓝)形成自己的识别轨迹,agentA(黑)形成的轨迹被用于加强B的轨迹。可明显看出左侧红色点分布更密集,说明此处B的缺失数据被A进行补齐。实现了更好的全局地图。
备注:
1.KF(Key Frame)和MP(Map Point)之间的关系?
每次agent采集到的数据叫帧(frame),tracking thread会决定frame是否为KF(Key Frame)。local map中将每个KF作为一个点,两个KF若有多个匹配MP则将两个KF进行连线,组成graph
2.Trimming机制:若缓冲区为空,则取之前最新的k-1个KF+新到KF。若缓冲区满,则优先排除(借助serve)从其余agent处传递来的KF,若排除全部其余agent仍大于K,按时间排列,扔掉旧的。k的大小看资源条件。越大越健壮
3.server mapping分了三个步骤:(1)把KF送到三个操作KF的部分 (2)在KF和MP之间建立联系 (3)进行KF rejection
4.KF rejection:也叫redundarcy dectection,用于处理同一位置不同视角,减少KF的冗余度,以便更好的Global BA。不是全部情况都发生,只有需要Global BA的时候才有。思想是使server map越小越好
5.Sim(3)-transformation发生情况有两种:(1) agent发给server KF时,经过转化进入server map stack (2)map merging时,两个来自server map stack的map合并
6.关于这篇文章还有一个扩展的版本:CCM-SLAM: Robust and Efficient Centralized Collaborative Monocular SLAM for Robotic Teams。两篇文章的作者相同,这篇相比本文谈到这个篇幅更多,介绍了更多的实现细节,没有太多新的东西。本篇博客的内容一部分参考这个。
配套资料:
源码网址:https://github.com/VIS4ROB-lab/ccm_slam
示例视频网址:https://www.youtube.com/watch?v=L9rHht8fE5E
因作者水平有限,如有错误之处,请在评论区下方指出,谢谢!
《论文笔记》Multi-UAV Collaborative Monocular SLAM相关推荐
- 【论文笔记】SA-LOAM:Semantic-aided LiDAR SLAM with Loop Closure
[论文笔记]SA-LOAM:Semantic-aided LiDAR SLAM with Loop Closure ~~~ ~~~~ 基于 LiDAR 的 SLAM 系统无疑比其他系统更准确 ...
- 论文笔记(Neural Collaborative Filtering)
神经协同过滤 论文链接:Neural Collaborative Filtering, WWW'17 原理:融合 GMF 和 MLP 1. 摘要 虽然最近的一些研究使用深度学习作为推荐,但他们主要是用 ...
- 《论文笔记》Collaborative Monocular SLAM with Multiple Micro Aerial Vehicles
时间:2013 作者: 工作方式: 多agent(资源受限,但能自主完成VO)+中心化server(无限资源) 协同感知原理: server为每个agent创建一个local map,出现交集 ...
- 论文笔记【Neural Collaborative Filtering】
标题 * 表示未完成 论文原文 本文使用基于神经网络的模型来分析 user 和 item 的潜在特征,最终设计出了一个基于神经网络的协同过滤通用框架(NCF).此框架融合了线性MF和非线性MLP模型. ...
- 论文笔记:Neural Collaborative Filtering(NCF)
前言 论文链接:https://arxiv.org/abs/1708.05031 github:https://github.com/yihong-chen/neural-collaborative- ...
- 论文笔记-Towards Scene Understanding-Unsupervised Monocular Depth Estimation
论文信息 标题: Towards Scene Understanding: Unsupervised Monocular Depth Estimation with Semantic-aware Re ...
- 论文笔记:Neural Collaborative Filtering
一.基本信息 论文题目:<Neural Collaborative Filtering> 发表时间:WWW 2017 作者及单位: 二.摘要 In recent years, deep n ...
- 论文笔记-Digging Into Self-Supervised Monocular Depth Estimation
论文信息 标题: Digging Into Self-Supervised Monocular Depth Estimation 作者:Clement Godard, Oisin Mac Aodha, ...
- 论文笔记《Item-based Collaborative Filtering Recommendation Algorithms》基于物品的协同过滤算法
这是一篇很经典的论文,2001年发表的.如果你已经很熟悉基于item的CF,那么这篇论文看起来就很舒适,很简单. 读完这篇论文还是能收获很多实验设计上知识,实验严谨性和论证.值得一读.
最新文章
- PHP利用Gearman来处理并行多进程问题
- ksql中定义的本体在dataModel中不存在
- sysbench 性能测试
- WEB标准页面CSS命名参考
- vue项目没有router文件夹_vueRouter没有报错,但是页面渲染空白
- 这些 JS 中强大的操作符,总有几个你没听说过
- Jenkins远程命令执行漏洞(CVE-2018-1000861复现)
- 如何给MindSpore添加一个新的硬件后端?快速构建测试环境!
- python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
- 如何对动态创建控件进行验证以及在Ajax环境中的使用
- CAF(C++ actor framework)使用随笔(unbecome与keep_behavior用法)
- 基于遥感图像的船舶目标识别技术
- msvcr100.dll丢失修复方法
- 【python基础】h5py库的基本使用
- c语言如何开发应用程序,怎样用c语言编写软件?如许多小的程序。
- 基于微信小程序的毕业设计题目(32)求职招聘小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
- 2021年下半年软考真题软件设计师真题答案(上午题)
- 基于JAVA高速公路收费管理计算机毕业设计源码+数据库+lw文档+系统+部署
- vbs 合并 excel 表格
- java制作海报一:java使用Graphics2D 在图片上写字,文字换行算法详解
热门文章
- 开篇-----勉励篇
- NOI大纲 CSP初赛篇·知识大纲 CSP-入门级-NOI大纲
- 1.9 编程基础之顺序查找 01 查找特定的值 python AC
- mysql内存报警_[MySQL生产环境] Innodb存储引擎内存报警问题处理过程_MySQL
- 基于JavaFX实现的数据库学生管理系统
- Python笔记-类的单例模式及重载打印
- 信息安全工程师笔记-入侵检测技术原理与应用
- C++ opengl 深度缓冲区
- C/C++认识标准win32应用程序
- django 配置mysql_Django配置MySQL数据库方法