使用激光雷达数据构建地图并使用SLAM算法估计车辆轨迹

简介: 使用激光雷达数据构建地图并使用SLAM算法估计车辆轨迹。

一、前言
处理来自安装在车辆上的传感器的 3-D 激光雷达数据,以逐步构建地图并使用同步定位和映射 (SLAM) 估计车辆的轨迹。除了 3D 激光雷达数据外,惯性导航传感器 (INS) 还用于帮助构建地图。以这种方式构建的地图可以促进车辆导航的路径规划,也可以用于本地化。

二、概述
根据激光雷达数据构建地图(自动驾驶工具箱)示例使用 3D 激光雷达数据和 IMU 读数逐步构建车辆穿越环境的地图。虽然此方法可构建局部一致的地图,但它仅适用于绘制小区域的地图。在较长的序列中,漂移累积成一个显著的误差。为了克服此限制,此示例识别以前访问过的地方,并尝试使用图形 SLAM 方法校正累积的漂移。

三、加载和浏览记录的数据
此示例中使用的数据是 Velodyne SLAM 数据集的一部分,表示近 6 分钟的记录数据。将数据下载到临时目录。

注意:此下载可能需要几分钟时间。

使用该函数以时间表的形式从创建的文件夹中读取数据。激光雷达捕获的点云以PNG图像文件的形式存储。提取变量中的点云文件名列表。要从图像文件中读取点云数据,请使用该函数。此函数采用图像文件名并返回 对象。INS 读数直接从配置文件中读取并存储在变量中。

可视化点云。车辆穿越由两个环路组成的路径。在第一个循环中,车辆进行一系列转弯并返回起点。在第二个循环中,车辆沿着另一条路线进行一系列转弯,然后再次返回起点。
1.png

四、使用里程计构建地图
首先,使用根据激光雷达数据构建地图(自动驾驶工具箱)示例中介绍的方法构建地图。该方法包括以下步骤:

这种增量构建地图并估计车辆轨迹的方法称为里程计。
使用对象跨多个视图存储和管理数据。视图集由一组连接的视图组成。
2.png

视图集对象 现在包含视图和连接。在“视图”表中,该变量指定每个视图相对于第一个视图的绝对姿势。在 的表中,变量指定连接视图之间的相对约束,变量为每个边指定与连接关联的不确定性。

现在,使用创建的视图集构建点云图。使用 将视图绝对姿势与视图集中的点云对齐。指定格网大小以控制地图的分辨率。映射将作为对象返回。

请注意,使用此方法遍历的路径会随时间漂移。虽然沿着第一个环路回到起点的路径似乎是合理的,但第二个环路从起点明显漂移。累积漂移导致第二个环路在距离起点几米的地方终止。

仅使用测程法构建的地图是不准确的。显示带有遍历路径的构建点云图。请注意,第二个循环的映射和遍历路径与第一个循环不一致。

五、使用姿势图优化纠正漂移
图形SLAM是一种广泛使用的技术,用于解决里程计中的漂移。图形SLAM方法以增量方式创建一个图形,其中节点对应于车辆姿势,边缘表示约束连接姿势的传感器测量值。这样的图称为姿势图。姿势图包含由于测量中的噪声或不准确而对相互矛盾的信息进行编码的边缘。然后优化构建图中的节点,以找到能够最佳解释测量值的车辆姿势集。这种技术称为姿势图优化。

若要从视图集创建姿势图,可以使用 函数。此函数为每个视图创建一个节点,并为视图集中的每个连接创建一个边。要优化姿势图,您可以使用优化姿势图(导航工具箱)功能。

有助于图形SLAM在校正漂移方面的有效性的一个关键方面是准确检测循环,即以前访问过的地方。这称为闭环检测或位置识别。向与环闭合对应的姿态图添加边,可以为连接的节点姿态提供相互矛盾的测量,这可以在姿态图优化期间解决。

可以使用描述符来检测环路闭合,这些描述符表征激光雷达传感器可见的局部环境描述符就是这样一种描述符,可以使用 函数从点云计算。此示例使用 对象来管理与每个视图对应的扫描上下文描述符。它使用对象函数通过两阶段描述符搜索算法检测循环闭包。在第一阶段,它计算环键子描述符以查找潜在的循环候选者。在第二阶段,它通过阈值扫描上下文距离将视图分类为循环闭包。
3.png

通过从视图集创建姿势图。姿势图是一个二合图对象,具有:

除了连续视图之间的测程连接外,视图集现在还包括闭环连接。例如,请注意第二个循环遍历和第一个环遍历之间的新连接。这些是环闭合连接。这些可以标识为图中终端节点不连续的边。

4.png

使用 优化姿势图。显示具有优化姿势的视图集。请注意,检测到的循环现已合并,从而产生更准确的轨迹。
5.png

优化视图集中的绝对姿势现在可用于构建更精确的地图。使用功能将视图集点云与优化的视图集绝对姿势对齐到单个点云图中。指定网格大小以控制所创建的点云图的分辨率。

7.png

虽然精度仍可提高,但此点云图的精度要高得多。

目录
相关文章
|
16天前
|
人工智能 数据可视化 算法
算法金 | 让数据讲故事:数据可视化的艺术与科学,几乎是每个领域都需要掌握的技能
本文探讨了数据可视化的重要性,强调了其在决策中的作用。数据可视化应清晰传达信息,避免误导,如错误的颜色对比、过多数据、省略基线、偏见性文字和不合适图表类型。建议使用高对比色,限制图表数据量,正确选择图表类型,并注意相关性与因果的区分。此外,要警惕3D图形的误解和过度展示信息。好的可视化能提升决策效率。
17 6
算法金 | 让数据讲故事:数据可视化的艺术与科学,几乎是每个领域都需要掌握的技能
|
5天前
|
机器学习/深度学习 算法 数据可视化
m基于PSO-LSTM粒子群优化长短记忆网络的电力负荷数据预测算法matlab仿真
在MATLAB 2022a中,应用PSO优化的LSTM模型提升了电力负荷预测效果。优化前预测波动大,优化后预测更稳定。PSO借鉴群体智能,寻找LSTM超参数(如学习率、隐藏层大小)的最优组合,以最小化误差。LSTM通过门控机制处理序列数据。代码显示了模型训练、预测及误差可视化过程。经过优化,模型性能得到改善。
22 6
|
7天前
|
机器学习/深度学习 算法 Python
机器学习算法的比较与选择是在实际应用中非常重要的一步,不同的算法适用于不同的问题和数据特征。
机器学习算法的比较与选择是在实际应用中非常重要的一步,不同的算法适用于不同的问题和数据特征。
|
13天前
|
算法
使用k-近邻算法构建手写识别系统(kNN)
使用k-近邻算法构建手写识别系统(kNN)
20 9
|
12天前
|
机器学习/深度学习 数据采集 算法
机器学习入门:算法与数据的探索之旅
【6月更文挑战第13天】本文介绍了机器学习的基础,包括算法和数据处理的重要性。机器学习算法分为监督学习(如线性回归、决策树)、非监督学习(如聚类、降维)和强化学习。数据处理涉及数据清洗、特征工程、数据分割及标准化,是保证模型性能的关键。对于初学者,建议学习基础数学、动手实践、阅读经典资料和参与在线课程与社区讨论。
|
11天前
|
算法 前端开发 Java
探讨Java中递归构建树形结构的算法
探讨Java中递归构建树形结构的算法
8 1
|
11天前
|
机器学习/深度学习 算法
m基于PSO-GRU粒子群优化长门控循环单元网络的电力负荷数据预测算法matlab仿真
摘要: 在MATLAB 2022a中,对比了电力负荷预测算法优化前后的效果。优化前为"Ttttttt111222",优化后为"Tttttttt333444",明显改进体现为"Tttttttttt5555"。该算法结合了粒子群优化(PSO)和长门控循环单元(GRU)网络,利用PSO优化GRU的超参数,提升预测准确性和稳定性。PSO模仿鸟群行为寻找最优解,而GRU通过更新门和重置门处理长期依赖问题。核心MATLAB程序展示了训练和预测过程,包括使用'adam'优化器和超参数调整,最终评估并保存预测结果。
17 0
|
18天前
|
算法 搜索推荐
数据结构和算法——快速排序(算法概述、选主元、子集划分、小规模数据的处理、算法实现)
数据结构和算法——快速排序(算法概述、选主元、子集划分、小规模数据的处理、算法实现)
10 0
|
19天前
|
存储 算法
数据结构和算法学习记录——特殊线性表之队列-队列的概念、队列结构体类型定义 、基本接口函数、初始化函数、销毁队列函数、入队列函数、判断队列是否为空、出队列函数、读取队头队尾的数据 、计算队列数据个数
数据结构和算法学习记录——特殊线性表之队列-队列的概念、队列结构体类型定义 、基本接口函数、初始化函数、销毁队列函数、入队列函数、判断队列是否为空、出队列函数、读取队头队尾的数据 、计算队列数据个数
14 0
|
19天前
|
算法
数据结构和算法学习记录——复习静态顺序表的两个接口函数(在指定位置插入数据,在指定位置删除数据)
数据结构和算法学习记录——复习静态顺序表的两个接口函数(在指定位置插入数据,在指定位置删除数据)
10 0

热门文章

最新文章