SLAM回环及优化

简介: SLAM回环及优化

0. 前言


随着路径的不断延伸,机器人的建图过程会存在不断地累计误差。而传统的以gmapping为代表的使用粒子滤波进行定位的slam建图方式。以及ORB-SLAM为代表包含的局部优化和全局优化来调整外。但是这些处理方式只能减缓误差累计的程度,无法消除,而现在最为常用消除累计误差的方法就是利用回环检测来优化位姿。


当新的关键帧加入到优化模型时,在关键帧附近进行一次局部优化。


b6a800b32fa44d7a801fa3bd6f570574.png


在全局优化中,所有的关键帧(除了第一帧)和三维点都参与优化。


9b5da5bf5661492abece170df3206fbe.png


1. 回环检测


回环检测作为近年来slam行业必备的部分,是指机器人识别曾到达某场景,使得地图闭环的能力。


8ee259ad7fef476689446b1572740759.png


回环检测之所以能成为一个难点,是因为:如果回环检测成功,可以显著地减小累积误差,帮助机器人更精准、快速的进行避障导航工作。而错误的检测结果可能使地图变得很糟糕。因此,回环检测在大面积、大场景地图构建上是非常有必要的 。


词袋模型(bag of words,BoW)早期是一种文本表征方法,后引入到计算机视觉领域,逐渐成为一种很有效的图像特征建模方法。它通过提取图像特征,再将特征进行分类构建视觉字典,然后采用视觉字典中的单词集合可以表征任一幅图像。


换句话说,通过BOW可以把一张图片表示成一个向量。这对判断图像间的关联很有帮助,所以目前比较流行的回环解决方案都是采用的BoW及其基础上衍生的算法IAB-MAP、FAB-MAP是在滤波框架下计算回环概率,RTAB-MAP采用关键帧比较相似性,DLoopDetector(在DBoW2基础上开发的回环检测库)采用连续帧的相似性检测判断是否存在回环。


回环检测主要由BoW模块、算法模块、验证模块三部分组成。


词袋模型(BoW模块)


每一帧都可以用单词来描述,也就是这一帧中有哪些单词,这里只关心了有没有,而不必关心具体在哪里。只有两帧中单词种类相近才可能构成回环。


(a)图像预处理,假设训练集有M MM幅图像,将图像标准化为p a t c h patchpatch,统一格式和规格;

(b)特征提取,假设M MM幅图像,对每一幅图像提取特征,共提取出N NN个SIFT特征;

(c)特征聚类,采用K-means算法把N NN个对象分为K KK个簇 (视觉单词表),使簇内具有较高的相似度,而簇间相似度较低;


749391e7eecb40878c2196cc84bc3937.png


(d)统计得到图像的码本,每幅图像以单词表为规范对该幅图像的每一个SIFT特征点计算它与单词表中每个单词的距 离,最近的加1,便得到该幅图像的码本;还需要码本矢量归一化,因为每一幅图像的SIFT特征个数不定,所以需要归一化。


326ca2a3b7994eba8cd266122fc7ffc7.png


…详情请参照古月居


相关文章
|
12月前
|
自然语言处理 监控 搜索推荐
CAP 快速部署项目体验评测
在体验过程中,我选择了 RAG 模板,整体部署较为顺畅,CAP 平台的一键部署功能简化了配置步骤。但也遇到了环境依赖、模型加载速度和网络配置等挑战。性能测试显示响应速度较快,高并发时表现稳定。二次开发使用 Flask 和 Vue,调试顺利,功能正常运行。建议 CAP 增加 NLP、推荐系统、IoT 应用和开源项目集成等模板,以提升模板库的丰富度。
|
机器学习/深度学习 计算机视觉 网络架构
【GhostNet】复现CVPR2020| 保证模型轻量化的同时,提升网络的性能表现
【GhostNet】复现CVPR2020| 保证模型轻量化的同时,提升网络的性能表现
1070 0
【GhostNet】复现CVPR2020| 保证模型轻量化的同时,提升网络的性能表现
|
机器学习/深度学习
神经网络各种层的输入输出尺寸计算
神经网络各种层的输入输出尺寸计算
718 1
|
8月前
|
机器学习/深度学习 计算机视觉
RT-DETR改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制
RT-DETR改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制
606 10
RT-DETR改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制
|
8月前
|
机器学习/深度学习 编解码 BI
RT-DETR改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用
RT-DETR改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用
237 0
RT-DETR改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用
|
11月前
|
存储 缓存 算法
RAID 的镜像是一种冗余技术
镜像是冗余技术的一种,通过在不同磁盘上创建数据的完整副本,提供数据保护。这种方法无需额外计算和校验,故障恢复迅速,支持并发读取,提高读I/O性能,但写入性能受影响。镜像技术虽提供高数据安全性,却需双倍存储空间,成本较高,适用于关键数据保护。此外,镜像可通过“拆分”实现几乎零备份窗口的数据备份。
241 4
|
安全 C++ 开发者
C++ 11新特性之shared_ptr
C++ 11新特性之shared_ptr
195 0
|
存储 数据采集 缓存
数据仓库设计的最佳实践
【6月更文挑战第16天】构建高效数据仓库的关键实践包括:明确业务与数据需求、选择适应的\[数据模型\](星型、雪花或事实星座)、设计优化的物理存储结构以提升查询与存储效率、保障数据质量与一致性、优化查询性能、以及确保可扩展性和灵活性。这些实践帮助企业应对数据增长,支持精准分析。
|
机器学习/深度学习 人工智能 vr&ar
光流法相关论文-LK光流法,HS光流法,Farneback光流法,FlowNet: 端到端的深度光流估计, RAFT: 结构化的光流估计
光流法相关论文-LK光流法,HS光流法,Farneback光流法,FlowNet: 端到端的深度光流估计, RAFT: 结构化的光流估计
739 0
|
搜索推荐 Java 开发者
【实战指南】Java异常处理新高度:自定义异常,打造个性化的错误管理体系!
【6月更文挑战第19天】在Java中,自定义异常允许开发人员针对特定业务需求创建新的异常类型,增强代码可读性和维护性,特别是在大型项目中。它使错误处理更精确,避免通用异常的模糊性,提升程序稳定性。创建自定义异常需继承`Exception`或`RuntimeException`,提供有意义的构造函数,并注意序列化ID。使用时,通过`throw`抛出并在`try-catch`块中捕获。设计上,异常命名应明确,携带相关信息,避免过度使用,且保持一致性。自定义异常是构建健壮错误处理体系的关键。
433 1