ORBSLAM-Altas:多地图SLAM

ORBSLAM-Altas:多地图SLAMORB SLAM Altas 多地图 SLAM 欢迎使用 Markdown 编辑器新的改变功能快捷键合理的创建标题 有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中 居左 居右 SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必不可少的 KaTeX 数学公式新的甘特图功能 丰富你的文章 UML 图表 FLowchart 流程图导出与导入导出导入欢迎使用 Markdown 编辑器你好 这是你第一次使用 Markdown 编辑器所展示的欢迎页 如

这篇博客

ORBSLAM-Altas

这个系统

系统方法

两类子地图

 ORBSLAM-Atlas系统会保留两类子地图:Active map和Non-active map。其中Active map是当前跟踪线程所使用的地图(Active Map >=Local Map),Non-active则是之前跟踪丢失后保留下来的所有地图。如果Active map与Non-active map存在闭环,那么就会将两个存在闭环的地图融合起来,然后系统使用融合后的地图作为新的Active map使用。
 每个子地图都是独立的,它们的第一参考帧也都是独立的。系统使用一个能够适应于所有子地图的DBoW2词袋来描述每一个子地图,以便完成地图融合操作。

 这种做法的好处有:
1、在跟踪丢失后系统通过创建新的地图来继续工作;
2、构建多个子地图可以降低误差的累积;
3、所有子地图融合后获得完整地图。这个融合后的地图相比于ORB-SLAM构建的一整个地图,在精度方面会有所提高(有部分原因是剔除了一些精度较低或是跟踪丢失的轨迹)。







新地图的构建

相机位姿的可观测性

通过相机位姿的误差协方差来估计其位姿的观测性。首先假设 Active map 中的地图点都是精确的,然后用 Ω i , j \Omega _{i,j} Ωi,j表示地图点观测 x i , j x_{i,j} xi,j的不确定性,其中 x i , j x_{i,j} xi,j表示的是地图点 j j j 在第 i i i 个相机上的观测值。
 定义 T ^ i , w ϵ S E ( 3 ) \hat{T}_{i,w} \epsilon SE(3) T^i,wϵSE(3)是当前相机的位姿估计值,用 ε i \varepsilon _{i} εi表示估计值的不确定性( ε i \varepsilon _{i} εi是六维向量且服从均值为0的高斯分布)。然后有以下式子:
在这里插入图片描述
其中 C i C_{i} Ci表示估计位姿的精度, J i , j J_{i,j} Ji,j是第 i 个相机的位姿估计值关于第 j 个地图点的雅可比矩阵。然后通过 公式 (1) 就能判断相机的可观测性了:
在这里插入图片描述



子地图融合

 如果在两个地图之间检测到了闭环,那么就要进行地图融合。然后用融合后的地图替换掉那两个地图。下面介绍具体的融合方法,以及融合后的优化操作。以下用 a , s , m a , s , m asm 下标分别标记:Active map,Non-active map和融合后地图(用 a 地 图 a地图 a表示Active map, s 地 图 s地图 s表示Non-active map, m 地 图 m地图 m表示融合后的地图)。

 1、检测到Active 和Non-active 两地图间的闭环,产生两个匹配的 K F s : K a , K s KFs:Ka,Ks KFsKaKs,以及两个地图间匹配的地图点集合 M a , M s Ma,Ms MaMs
 2、估计两个地图之间的对齐变换矩阵。对齐变换矩阵(在双目情况下属于 S E 3 SE3 SE3,单目则是 S i m 3 Sim3 Sim3)用来完成 s 地 图 s地图 s中地图和关键帧到 a 地 图 a地图 a坐标系的转换。具体分为两步:
  1)通过 M a Ma Ma M s Ms Ms这些匹配的地图点来进行初始估计,并用 RANSAC 算法提高估计值精度。
  2)再根据 M a Ma Ma K s Ks Ks 上的匹配点,构建重投影误差。最后由非线性优化来优化重投影误
  差,以获得最终的位姿估计值。
 3、融合子地图:完成地图对齐后,将两个地图中重叠的地图点进行融合、更新,获得精度更高的地图点。两个子地图的可视图也保留在融合后的 m 地 图 m地图 m中。
 4、在子地图的闭环部分进行局部 BA 优化。在融合后的 m 地 图 m地图 m中,找到 K a Ka Ka K s Ks Ks。根据 a 地 图 a地图 a原有的可视图,确定 a 地 图 a地图 a中哪些 K F s KFs KFs是固定的(不再 Local Map 中)。这些固定的 K F s KFs KFs m 地 图 m地图 m中仍然固定。然后对 m 地 图 m地图 m中剩余的 K F s KFs KFs进行 BA 优化。
 5、对 m 地 图 m地图 m 进行完整的位姿图优化。










 如果是在Active map中检测到闭环,那么就和ORB-SLAM中的操作一样,只对Active map进行闭环操作。

系统线程

 论文还提到了各线程之间的一些关系。地图融合会在一个单独的线程中进行。在融合开始前,会将Local Mapping线程暂停,以防止新的 K F KF KF产生。在地图融合的过程中,跟踪线程会继续使用 Active map 来达到实时工作的目的。当融合结束后,跟踪线程会将融合后的地图作为新的 Active map 来使用。

结尾

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210277.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午7:55
下一篇 2026年3月19日 上午7:55


相关推荐

  • Java中的Map及其使用「建议收藏」

    Java中的Map及其使用「建议收藏」MapMap集合概述和特点概述:将键映射到值的对象一个映射不能包含重复的键每个键最多只能映射到一个值Map接口和Collection接口的不同Map是双列的,Collection是单列的Map的键唯一,Collection的子体系Set是唯一的Map集合的数据结构针对键有效,跟值无关;Collection集合的数据结构是针对元素有效Map集合的功能概述a:添加功能Vput…

    2022年7月8日
    23
  • return跳出双重for循环

    return跳出双重for循环return 是可以跳出双重 for 循环

    2026年3月18日
    2
  • k折交叉验证

    k折交叉验证一般情况将 K 折交叉验证用于模型调优 找到使得模型泛化性能最优的超参值 找到后 在全部训练集上重新训练模型 并使用独立测试集对模型性能做出最终评价 nbsp K 折交叉验证使用了无重复抽样技术的好处 每次迭代过程中每个样本点只有一次被划入训练集或测试集的机会 K 折交叉验证图 如果训练数据集相对较小 则增大 k 值 增大 k 值 在每次迭代过程中将会有更多的数据用于模型训练 能够得到最小偏差 同时算法时间延长 且训练

    2026年3月20日
    1
  • 查看webpack版本_封装webpack

    查看webpack版本_封装webpacknpmwebpack-v转载于:https://www.cnblogs.com/aiyr/p/10562244.html

    2022年8月9日
    9
  • Polar码概述[通俗易懂]

    Polar码概述[通俗易懂]2016年11月18日,在美国内华达州里诺召开的3GPPRAN1#87次会议,确定PolarCode作为5GeMBB(增强移动宽带)场景下控制信道编码方案。2008年,ErdalArikan在国际信息论ISIT会议上首次提出了信道极化(ChannelPolarization)的概念;2009年在“IEEETransactiononInformationTheory”期刊上

    2025年7月29日
    5
  • 用python定时发送邮件

    用python定时发送邮件用 python 定时发送邮件 2020 12 24Python3 6 3 Anacondacust 64 bit 关键词 python 邮件发送 定时一 用 python 实现邮件发送 一 用到的模块 emailType moduleString module email from D Anaconda lib email init py File d anaconda lib email i module email from D Anaconda lib email init py

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号