Scan Context

回环检测方法分类

在这里插入图片描述
LEGO-LOAM使用半径搜索的方式进行回环检测,根据当前关键帧的距离和时间戳信息选择候选帧,找到距离当前关键帧一定半径范围内并且时间相隔较远的关键帧作为候选帧进行ICP匹配。这种方法在累计误差不大的情况下可以完成回环,但是在大场景情况下由于不断积累的误差,可能导致无法通过距离搜索回环帧,导致无法完成回环检测。
Scan-context是一种3D点云全局描述子,表示点云的几何信息,因此可以对不同关键帧的SC描述子进行匹配,找到历史关键帧中和当前关键帧相似的点云,从而找到回环帧。它通过各个关键帧点云之间的相似程度搜索回环帧,因此不会受到几何距离的影响,在大场景也下可以完成回环检测的功能。
SC回环检测分为SC描述子的计算、历史帧SC描述子搜索、SC描述子匹配,最终找到当前关键帧的回环帧。
首先计算点云的SC描述子。根据等长的角度和半径距离,将点云分为一个个扇形栅格,计算每个扇形栅格中所有点的最大高度,作为每个栅格的值,最终将3D点云转换为2D矩阵,完成SC描述子的计算。
可以通过公式比较SC描述子矩阵每个对应的列向量,通过相似距离描述两SC描述子的相似程度。在历史关键帧中找到与当前帧最相似的SC描述子,最终找到对应的回环帧。

Scan Context: Egocentric Spatial Descriptor for Place Recognition within 3D Point Cloud Map

前言

Scan-context是基于结构信息的全局定位方法,它不依赖于直方图全集描述子或机器学习方法,直接记录点云的3D结构信息。此外,本文还提出了计算两个Scan-context相似得分的方法以及回环检测的两步搜索方法,使得回环检测不依赖于位置。
SLAM中位置识别为回环检测提供候选帧。
视觉位置识别容易受到光线变化的影响。激光位置识别存在两大难题,当同一位置下不同航向角的描述子要求旋转不变性,另外,描述子必须处理点云中的噪声。直方图可以解决这两个问题,但是直方图只提供了场景中的随机索引,难以直接表达场景详细的结构信息,导致直方图对相同场景有时难以识别。
scan-context是一种基于户外场景识别的3D点云描述子,它将3D的点云信息转换为2D矩阵,它存在以下优点,高效的编码函数,点云结构信息的保留,两步匹配算法。
位置识别方法可根据使用的传感器,分为激光位置识别和视觉位置识别,视觉位置识别存在光照影响的问题,激光位置识别更加健壮。
激光位置识别可以分为本地描述子和全局描述子,本地描述子有PFH、SHOT、shape-context、spin-image,它们首先找到点云中的关键点,将其周围的点放大对应的bin中,并进行编码。本地描述子原本是为3D模型设计的,对点云的稠密性要求较高,然而激光雷达产生的点云,其稠密性随着距离的增加而减小,并且非结构化物体(例如树木)上的点云法线噪声较大,由于本地描述子需要使用点云的法线信息,所以本地描述子不适用于室外的位置识别。
全局描述子不包含关键点检测步骤,其直接描述点云的结构信息。scan-context将3D点云从点云中心开始根据等步长的航向角和半径距离分割为不同的扇形栅格,每个栅格的值是其中所有点的最大高度值,对于没有点的栅格,它的值为零。
scan-context对点云位置的要求很高,当位置差别较小的时候,两个scan-context的相似程度可能很低,因此同时考虑周围一定数量的点云进行编码。

SC得分

对于两帧SC,需要计算两帧的得分描述相似程度。一列一列的比较SC,公式如下
在这里插入图片描述
通过计算两个SC相同序号的列向量之间的点乘与各自膜的乘积,得到相似得分,如果两个列向量完全相同,最后的结果为1,而对应的得分为零,完成所有列的计算并求和之后,最终为两SC的得分,因此得分越低,相似程度越高。列比较对于动态物体的计算效率较高。
SC描述子列向量均值会受到旋转的影响,也就是说,当两SC描述子位于同一位置但是不同的航向角时,两帧SC描述子会存在列方向存在一定的偏移量,之间通过列计算方法两SC描述子无法匹配。因此在进行匹配前,需要计算两SC描述子的偏移量,对其中一个SC描述子进行对应的偏移,保证两SC位于同一航向角后,在进行匹配。首先计算两SC矩阵中每个列向量的均值,将二维矩阵转换为一维向量,然后遍历每一个可能的偏移量,对一维向量偏移之后计算两一维向量的差值,最终选择所有偏移量中差值最小的偏移量,对相应的SC描述子进行偏移再在添加它左右附近的偏移量(一维向量可能损失精度),作为最终偏移后的SC描述子,并且计算的偏移量还可以作为之后ICP匹配的初值。

两步搜索算法

保存所有关键帧的SC描述子,为了找到当前关键帧的回环候选帧,需要在当前所有关键帧SC描述子中找到与当前关键帧SC描述子最相似的,由于直接计算SC描述子的相似得分时间复杂度较高,为了降低计算复杂度,需要采取特殊方法,将搜索问题分为两步,首先通过SC描述子行向量均值进行搜索,然后在其中比较与当前SC描述子的相似得分,最终根据最相似的SC描述子找到对应的回环帧。
使用行向量均值,将二维矩阵转换为一维向,由于行向量均值不会受到旋转的影响,两SC矩阵的行向量均值的差值越小,说明它们的匹配程度越高,因此可以使用不同SC矩阵的行向量均值进行粗匹配。对于每个关键帧SC描述子计算它的行向量均值,并保存至KD树中,根据行向量均值的差值,在KD树中找到与当前SC描述子最相似的几个SC描述子作为候选帧,然后对每一个候选帧进行偏移量计后,与当前关键帧SC描述子进行匹配,最终根据相似程度最高的SC描述子找到对应的回环帧。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 这个错误提示意味着无法扫描默认的文档上下文。这通常发生在文档生成工具(如Sphinx)中,因为它无法找到文档的相关上下文信息。 要解决这个问题,你可以尝试以下几个步骤: 1. 确认文档是否存在并且位于正确的位置。 2. 确认文档格式是否正确。例如,在Sphinx中,文档应该使用reStructuredText格式。 3. 确认文档是否已经正确配置,包括正确设置文档上下文信息。 4. 尝试重新生成文档并检查错误是否已经解决。 5. 如果以上步骤都失败了,你可以考虑搜索相关的错误解决方案或者向相应的文档工具社区或论坛提问寻求帮助。 希望这些步骤能帮助你解决这个问题! ### 回答2: 这个错误信息说明出现了扫描文档上下文默认值的错误。在机器学习和自然语言处理中,文档扫描是非常常见的操作,它可以帮助我们了解文档中的关键词、语义和主题等信息。然而,当出现“unable to scan documentation context default”的错误信息时,可能会导致我们无法完成扫描。 这个错误信息通常与文档扫描代码中的某些问题有关,可能是在代码中指定了无效的文档上下文参数或没有正确安装依赖包等。为了解决这个问题,以下是一些可能的解决办法: 1. 检查参数是否正确:检查文档扫描代码中指定的文档上下文参数是否正确,如确保指定了正确的文件路径、文档编码、语言等,如果有任何问题,请进行更正。 2. 安装必要的依赖包:确保所需的文档扫描库已经正确地安装在你的系统中,如nltk、pandas等。如果尚未安装,请使用pip等工具安装它们。 3. 确认是否有足够的资源:确保你的计算机具有足够的内存和计算资源来完成文档扫描任务,尤其是对于大规模的文本数据集。如果你的计算机资源较少,可以尝试使用分布式计算方法来处理任务。 4. 检查运行日志:如有任何问题,请检查代码运行日志以了解更多信息,通常代码中会提供一些错误提示和排错信息。 总之,无法扫描文档上下文默认值这个错误信息可能与文档扫描代码的某些问题有关,如果你按照上述解决方案进行了尝试,但仍然无法解决这个问题,请参考代码文档和在线资源,或与相关的开发人员进行联系以获得更多的帮助。 ### 回答3: “Unable to scan documentation context default”是指在使用某些程序时,出现无法扫描默认文档上下文的错误提示。通常情况下,这可能是因为程序无法找到或访问相应的文档或文档路径遭到损坏或更改所导致的。 在解决这个问题时,首先需要确认程序是否已正确安装并已启动。如果程序已安装但无法正常启动,则需要检查是否存在已知的故障或其他问题。可以在程序官网或相关社区社区寻找其他用户的帮助或建议。如果这些方法无法解决问题,则需要检查程序的配置文件,以确定文档路径是否正确。 此外,也可以尝试重新安装程序或更新程序到最新版本,以确保不会发生版本不兼容或其他问题。如果一切正常并且程序仍无法扫描文档,则可以考虑使用其他工具来替代。例如,在文档处理方面,可以尝试使用Microsoft Office或Google Docs等替代工具,而在代码编辑方面,可以尝试使用Visual Studio Code或Atom等其他软件。 总之,“Unable to scan documentation context default”问题可能由多种原因引起,但可以通过检查程序是否正确安装、配置和更新版本来解决。同样,也建议在使用其他工具时保持灵活,以确保能够在遇到问题时快速切换到替代工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值