admin管理员组

文章数量:1630200

CCM-SLAM论文阅读笔记

整体框架结构


如图所示:单智能体只负责采集图像数据,运行实时视觉里程计VO以估计当前位姿和环境地图,由于单智能体计算资源有限,负责生成的局部地图只包含当前N个最近的关键帧。服务器负责地图管理、地点识别、地图融合和全局BA优化。所有局部地图使用本地里程计框架,地图信息在从一个本地里程计到另一个本地里程计框架的相对坐标中进行交换。CCM-SLAM不假设任何关于智能体初始位置的先验信息或配置,所有智能体独立运行,直到位置识别模块检测到两张地图之间的重叠区域,才允许关联两张地图中涉及到的测量数据。

通信

服务器和智能体之间的双向通信是基于无线网络建立的,采用的通信协议能够处理一定的网络干扰,例如延迟和消息丢失。服务器和智能体都运行各自的通信模块,该模块完成地图信息之间的交换并监视信息交换中的潜在错误。

系统模块

基于关键帧的VO(视觉里程计)

前端是基于ORB-SLAM2的前端实现的,通过跟踪局部地图中ORB特征点来估计智能体的帧间运动,同时,这些特征点也被存储为3D地图点。在最具代表性的帧(即关键帧)与地图点之间采取位姿图方式进行存储,CCM-SLAM在单个局部地图限制为固定数量的N个关键帧,以确保服务器能够进行实时的BA优化。

局部地图

局部地图的本质是将连续的关键帧连接到相应的地图点,两个关键帧之间通过无向边连接,地图点到关键帧之间的权重由这些关键帧的共享地图点数所决定。对于当前位姿图的优化,根据设置的N个关键帧数量对局部地图进行裁剪。将VO最后创建的关键帧定义为当前关键帧,表示当前智能体的位置。如果局部地图中关键帧数量超过了N,则只保留当前帧与前N-1帧在局部地图中。在从本地局部地图中删除关键帧之前,会验证服务器是否确认收到了此关键帧,但为了防止通信中断造成数据丢失,本地可以保留最多B个关键帧的缓冲区(文章中设置的B=N)。当服务器确认收到该缓冲区中关键帧后,该缓冲区就会被清空。若缓冲区也被填满,则智能体通过删除关键帧来保持自身存储N+B个关键帧的上限,优先删除最初由其他智能体创建的关键帧,因为这些关键帧已经被存储在服务器的地图栈中。

服务器地图栈

服务器地图栈包含当前与智能体处理程序相关联的所有服务器地图,地图结构与局部地图结构相同,但没有帧数限制。初始化系统时,将为系统中每个智能体创建一个服务器地图,并由其相应的处理程序进行管理。系统进行任务期间,合并两个局部地图时,两个地图都将从地图栈中删除,由一个包含两个地图信息的新服务器地图代替,这个新地图将与所有智能体的地图处理程序进行关联,参与地图融合。

智能体处理程序

服务器中的智能体处理程序管理相应智能体到达服务器的地图。对于每一个智能体处理程序,它会初始化一个通信模块,在服务器地图栈中为相应的智能体创建一个服务器地图,创建一个地图管理、地图位置识别模块,每个模块并行运行在一个单独的线程中。此外,它还提供了一个接口来修改与智能体的依赖关系,因为当两个服务器地图融合时,对融合中涉及的所有智能体的所有模块,关联的服务器地图将被新的服务器地图替换。另外,与智能体相关的每个处理程序都拥有一个Sim3转换,负责将局部地图转换到服务器地图的坐标下。

通信模块

在智能体端,通信模块跟踪地图中的所有变换,比如任何添加和更改的关键帧和地图点,并将这些信息转为发送到服务器的消息。由于地图不断变化,消息的发布速率限制为最大值,由于每条新消息都包含上条信息的任何更改,消息的大小也是有限的,以防止在到服务器的连接中断几秒钟的情况下将过大的地图信息打包成一条消息。在消息打包过程中,为防止出现资源竞争,视觉里程计VO无法访问本地地图,因此较大的消息可能会长时间阻塞影响跟踪。在这种情况下,需要发送到服务器的消息被分段发送。

在服务器端,服务器发送给智能体每一条消息都包含了与当前关键帧关联性最强的k个关键帧以及观察到的地图点。这K个关联性最强的关键帧是基于它们的协方差权重来选择的,并不考虑这些关键帧是来自哪一个智能体,智能体用这k个关键帧来增强局部地图。在服务器端,消息发布的速率也被限制在最大速率,以限制网络带宽要求和智能体端处理接收信息所需的计算量,通过调整速率和参数k,通信流量可以适应网络中可用的最大带宽。

服务器与智能体端之间的关键帧和地图点位置信息的交换都使用相对坐标,若交换绝对坐标则会导致智能体端的比例漂移或服务器上的闭环:在优化期间到达的关键帧将不可避免的与优化图不对齐。在全局BA期间,服务器地图被锁定,传入的关键帧在输入缓冲区排队,发生闭环时,回路两端对齐,导致地图部分的位姿发生变化。由于输入缓冲区的数据不会参与到闭环

本文标签: 笔记论文ccmSLAM