• 《论文笔记》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

    因作者水平有限,如有错误之处,请在评论区下方指出,谢谢!

  • 相关阅读:
    DNS放大攻击初探
    Windows PHP 将 WORD转PDF,执行完成后 释放进程
    面试:系统启动流程简介
    WEB自动化-04-Cypress 测试用例编写和组织
    立方体IV(暑假每日一题 10)
    深入理解控制反转IOC和依赖注入
    H5页面获取用户位置信息方案及测试流程
    自动化运维中间件架构概况
    Docker Compose具体应用
    YOLOv8改进策略:COC-YOLO,强势助力小目标检测 | ICIP 2023
  • 原文地址:https://blog.csdn.net/gls_nuaa/article/details/125526481