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

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

目录
相关文章
|
18天前
|
存储 编解码 负载均衡
数据分片算法
【10月更文挑战第25天】不同的数据分片算法适用于不同的应用场景和数据特点,在实际应用中,需要根据具体的业务需求、数据分布情况、系统性能要求等因素综合考虑,选择合适的数据分片算法,以实现数据的高效存储、查询和处理。
|
18天前
|
存储 缓存 算法
分布式缓存有哪些常用的数据分片算法?
【10月更文挑战第25天】在实际应用中,需要根据具体的业务需求、数据特征以及系统的可扩展性要求等因素综合考虑,选择合适的数据分片算法,以实现分布式缓存的高效运行和数据的合理分布。
|
30天前
|
机器学习/深度学习 人工智能 算法
"拥抱AI规模化浪潮:从数据到算法,解锁未来无限可能,你准备好迎接这场技术革命了吗?"
【10月更文挑战第14天】本文探讨了AI规模化的重要性和挑战,涵盖数据、算法、算力和应用场景等方面。通过使用Python和TensorFlow的示例代码,展示了如何训练并应用一个基本的AI模型进行图像分类,强调了AI规模化在各行业的广泛应用前景。
30 5
|
22天前
|
存储 JSON 算法
TDengine 检测数据最佳压缩算法工具,助你一键找出最优压缩方案
在使用 TDengine 存储时序数据时,压缩数据以节省磁盘空间是至关重要的。TDengine 支持用户根据自身数据特性灵活指定压缩算法,从而实现更高效的存储。然而,如何选择最合适的压缩算法,才能最大限度地降低存储开销?为了解决这一问题,我们特别推出了一个实用工具,帮助用户快速判断并选择最适合其数据特征的压缩算法。
30 0
|
1月前
|
人工智能 算法 前端开发
无界批发零售定义及无界AI算法,打破传统壁垒,累积数据流量
“无界批发与零售”是一种结合了批发与零售的商业模式,通过后端逻辑、数据库设计和前端用户界面实现。该模式支持用户注册、登录、商品管理、订单处理、批发与零售功能,并根据用户行为计算信用等级,确保交易安全与高效。
|
1月前
|
前端开发 算法 JavaScript
无界SaaS模式深度解析:算力算法、链接力、数据确权制度
私域电商的无界SaaS模式涉及后端开发、前端开发、数据库设计、API接口、区块链技术、支付和身份验证系统等多个技术领域。本文通过简化框架和示例代码,指导如何将核心功能转化为技术实现,涵盖用户管理、企业店铺管理、数据流量管理等关键环节。
|
1月前
|
机器学习/深度学习 算法 数据处理
EM算法对人脸数据降维(机器学习作业06)
本文介绍了使用EM算法对人脸数据进行降维的机器学习作业。首先通过加载ORL人脸数据库,然后分别应用SVD_PCA、MLE_PCA及EM_PCA三种方法实现数据降维,并输出降维后的数据形状。此作业展示了不同PCA变种在人脸数据处理中的应用效果。
33 0
|
1月前
|
存储 算法 搜索推荐
算法进阶之路:Python 归并排序深度剖析,让数据排序变得艺术起来!
算法进阶之路:Python 归并排序深度剖析,让数据排序变得艺术起来!
72 0
|
2月前
|
存储 算法 测试技术
预见未来?Python线性回归算法:数据中的秘密预言家
【9月更文挑战第11天】在数据的海洋中,线性回归算法犹如智慧的预言家,助我们揭示未知。本案例通过收集房屋面积、距市中心距离等数据,利用Python的pandas和scikit-learn库构建房价预测模型。经过训练与测试,模型展现出较好的预测能力,均方根误差(RMSE)低,帮助房地产投资者做出更明智决策。尽管现实关系复杂多变,线性回归仍提供了有效工具,引领我们在数据世界中自信前行。
50 5