论文阅读:Collaborative Visual Inertial SLAM for Multiple Smart Phones
摘要
在大范围、长时间场景的AR应用下,高效和高精度建图至关重要。而多智能终端的联合SLAM算法是多用户AR互动的前提条件。多智能手机联合算法具备完成任务的高效、高鲁棒潜力,并且可以完成单终端无法完成的任务。然而,这种算法依赖于鲁棒的网络通信、高效的定位检测、鲁棒的地图以及高效的多设备信息共享机制。作者提出一种基于多智能终端的联合单目视觉-惯导SLAM算法,主要是应用于多智能手机(IOS)的一体化架构。每个终端可以独立探索环境,运行一个在线的VIO模块,然后发送所有的测量信息到高算力的中央服务器。服务器管理所有接收到的信息,并检测重叠区域,融合及优化地图,并根据需求与每个终端分享信息。我们已经在一部分公共数据集和真实环境下验证了系统的性能,其融合建图的精度与需要更高计算资源的VINS-MONO差不多。
主要贡献
- 提出第一个跨设备、基于多智能移动终端的单目VIO-SLAM。
- 该联合SLAM算法可以获得近似VINS-MONO在PC上的精度表现。
- 提出一个精确、鲁棒的多地图融合算法,通过基于双向重投影误差优化的本地滑窗获得更加精确的转换矩阵。
算法逻辑
- 手机端采用基于关键帧优化的
VINS-Mobile
算法,仅保留其中的VIO
模块和local BA
模块,并针对EuRoc数据集进行了输入适配。适配模块包括去畸变
、读取
和预处理图像
、各测量单元对齐
。 - 手机端通过5个线程管理6个模块,其中第5、6模块均为
communication
模块,由一个线程进行分管。通信模块主要负责将手机端关键帧和对应地图点传输至服务器,每一帧平均包含70个地图点、700个角点和对应的256-bit描述子。考虑到网络负载和丢包现象,将传输关键帧的大数据包分割为4*1024
大小的小包传输,并设置210*1024
的缓冲区。 - 服务器端接收到每个手机端的submap后,自动运行
Place recognition
功能,其中包含两种场景识别策略。一种是单地图场景检测,当检测到相似场景时,如果该终端submap没有融合其他地图,则启动Loop closure
以及Inter-Map BA
。如果检测到地图已经与其他终端融合,或者在服务器地图中检测到相似场景,则触发Multi-Map Fusion
模块。在该模块中,首先会计算两个场景的变换矩阵,再通过Local BA
以及Optimize Pose Graph
进行全局优化。
Multi-Map Fusion
模块逻辑:- 检测到不同地图的相似关键帧后,首先建立本地滑窗。把匹配关键帧
Kc
和Km
的临近关键帧分别提取到2个容器UKc
和UKm
,并将UKm
的地图点全部投影到UKc
上,映射矩阵为Kc
和Km
两帧通过PNP计算出的变换矩阵,并通过三角化的深度阈值筛除不可信的地图点。接下来对所有地图点寻找汉明距离最近的匹配点,通过RANSAC算法计算转换矩阵,将对应匹配点分别放在MPc
和MPm
。之后再通过新的变换矩阵,将UKc
的地图点反投影到UKm
上,再计算一次。 - 通过
Local BA
优化帧与帧之间的变换矩阵,如果优化后的位姿变换小于阈值,则进行地图融合。 - 如果
Local BA
运行,则在之后同步进行Optimize Pose Graph
模块融合多个子地图。纠正的位姿信息重传播给各个子地图序列,并反馈给每个终端。
- 检测到不同地图的相似关键帧后,首先建立本地滑窗。把匹配关键帧
算法结果
传输带宽测试
单移动终端测试
多移动终端测试
参考算法: