使用激光雷达数据构建地图并使用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

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

目录
相关文章
|
27天前
|
机器学习/深度学习 算法 Python
随机森林算法是一种强大的集成学习方法,通过构建多个决策树并综合其结果进行预测。
随机森林算法是一种强大的集成学习方法,通过构建多个决策树并综合其结果进行预测。本文详细介绍了随机森林的工作原理、性能优势、影响因素及调优方法,并提供了Python实现示例。适用于分类、回归及特征选择等多种应用场景。
54 7
|
1月前
|
存储 编解码 负载均衡
数据分片算法
【10月更文挑战第25天】不同的数据分片算法适用于不同的应用场景和数据特点,在实际应用中,需要根据具体的业务需求、数据分布情况、系统性能要求等因素综合考虑,选择合适的数据分片算法,以实现数据的高效存储、查询和处理。
|
1月前
|
存储 缓存 算法
分布式缓存有哪些常用的数据分片算法?
【10月更文挑战第25天】在实际应用中,需要根据具体的业务需求、数据特征以及系统的可扩展性要求等因素综合考虑,选择合适的数据分片算法,以实现分布式缓存的高效运行和数据的合理分布。
|
29天前
|
JSON 算法 数据挖掘
基于图论算法有向图PageRank与无向图Louvain算法构建指令的方式方法 用于支撑qwen agent中的统计相关组件
利用图序列进行数据解读,主要包括节点序列分析、边序列分析以及结合节点和边序列的综合分析。节点序列分析涉及节点度分析(如入度、出度、度中心性)、节点属性分析(如品牌、价格等属性的分布与聚类)、节点标签分析(如不同标签的分布及标签间的关联)。边序列分析则关注边的权重分析(如关联强度)、边的类型分析(如管理、协作等关系)及路径分析(如最短路径计算)。结合节点和边序列的分析,如子图挖掘和图的动态分析,可以帮助深入理解图的结构和功能。例如,通过子图挖掘可以发现具有特定结构的子图,而图的动态分析则能揭示图随时间的变化趋势。这些分析方法结合使用,能够从多个角度全面解读图谱数据,为决策提供有力支持。
|
1月前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
85 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
2月前
|
机器学习/深度学习 人工智能 算法
"拥抱AI规模化浪潮:从数据到算法,解锁未来无限可能,你准备好迎接这场技术革命了吗?"
【10月更文挑战第14天】本文探讨了AI规模化的重要性和挑战,涵盖数据、算法、算力和应用场景等方面。通过使用Python和TensorFlow的示例代码,展示了如何训练并应用一个基本的AI模型进行图像分类,强调了AI规模化在各行业的广泛应用前景。
36 5
|
1月前
|
存储 JSON 算法
TDengine 检测数据最佳压缩算法工具,助你一键找出最优压缩方案
在使用 TDengine 存储时序数据时,压缩数据以节省磁盘空间是至关重要的。TDengine 支持用户根据自身数据特性灵活指定压缩算法,从而实现更高效的存储。然而,如何选择最合适的压缩算法,才能最大限度地降低存储开销?为了解决这一问题,我们特别推出了一个实用工具,帮助用户快速判断并选择最适合其数据特征的压缩算法。
55 0
|
2月前
|
人工智能 算法 前端开发
无界批发零售定义及无界AI算法,打破传统壁垒,累积数据流量
“无界批发与零售”是一种结合了批发与零售的商业模式,通过后端逻辑、数据库设计和前端用户界面实现。该模式支持用户注册、登录、商品管理、订单处理、批发与零售功能,并根据用户行为计算信用等级,确保交易安全与高效。
|
2月前
|
前端开发 算法 JavaScript
无界SaaS模式深度解析:算力算法、链接力、数据确权制度
私域电商的无界SaaS模式涉及后端开发、前端开发、数据库设计、API接口、区块链技术、支付和身份验证系统等多个技术领域。本文通过简化框架和示例代码,指导如何将核心功能转化为技术实现,涵盖用户管理、企业店铺管理、数据流量管理等关键环节。
|
2月前
|
机器学习/深度学习 算法 数据处理
EM算法对人脸数据降维(机器学习作业06)
本文介绍了使用EM算法对人脸数据进行降维的机器学习作业。首先通过加载ORL人脸数据库,然后分别应用SVD_PCA、MLE_PCA及EM_PCA三种方法实现数据降维,并输出降维后的数据形状。此作业展示了不同PCA变种在人脸数据处理中的应用效果。
41 0