SLAM基础知识:前端和后端

在SLAM中前端和后端是被经常提到的一个概念。但是对于前端和后端的理解有着不同的看法,我的理解是:

**前端:**前端负责处理传感器数据,特征提取,进行状态估计和地图构建的初步步骤。

**后端:**后端接受不同时刻的里程计信息,以及回环检测信息,对它们进行优化,得到全局一致的轨迹和地图。

也就是说前端 一般是为了得到当前帧 的一个粗糙的位姿估计,而后端 则是一个规模更大(多帧之间的约束、回环、IMU等其他约束)的优化系统。

以LOAM系列为例:

特征提取、匹配、scan-to-map中利用高斯牛顿求解ICP问题进行状态估计,这些都属于前端部分;回环检测、因子图优化部分则属于后端。

以Fast-LIO系列为例:

在基于滤波的SLAM算法中,使用迭代卡尔曼滤波(Iterative Kalman Filtering)来求解当前帧状态量的步骤通常属于SLAM系统的前端部分。

如果我们把后端看做是一个全局优化或者多个时刻的里程计优化的话,那么因为Fast-LIO系列没有回环,则认为没有后端只有前端。

以ORB-SLAM系列为例:

ORB-SLAM2主要有3大线程,分别是跟踪线程,局部建图线程以及回环检测线程。跟踪线程仅优化当前帧位姿,属于前端视觉里程计部分;局部建图线程会一起优化当前帧及其共视关键帧的位姿和地图点,属于后端优化部分;回环检测线程会优化全局位姿也属于后端优化部分。

相关推荐
智者知已应修善业7 小时前
【求中位数】2024-1-23
c语言·c++·经验分享·笔记·算法
地平线开发者7 小时前
PTQ 量化数值范围与优化
算法·自动驾驶
sali-tec7 小时前
C# 基于halcon的视觉工作流-章68 深度学习-对象检测
开发语言·算法·计算机视觉·重构·c#
测试人社区-小明8 小时前
智能弹性伸缩算法在测试环境中的实践与验证
人工智能·测试工具·算法·机器学习·金融·机器人·量子计算
罗西的思考8 小时前
【Agent】MemOS 源码笔记---(5)---记忆分类
人工智能·深度学习·算法
qq_4335545411 小时前
C++数位DP
c++·算法·图论
AshinGau12 小时前
Softmax 与 交叉熵损失
神经网络·算法
似水এ᭄往昔12 小时前
【C++】--AVL树的认识和实现
开发语言·数据结构·c++·算法·stl
栀秋66612 小时前
“无重复字符的最长子串”:从O(n²)哈希优化到滑动窗口封神,再到DP降维打击!
前端·javascript·算法
xhxxx12 小时前
不用 Set,只用两个布尔值:如何用标志位将矩阵置零的空间复杂度压到 O(1)
javascript·算法·面试