主要内容

大满贯地图生成器

使用基于激光雷达的SLAM构建二维网格地图

描述

大满贯地图生成器应用程序加载记录的激光雷达扫描和里程计传感器数据,使用同步定位和测绘(SLAM)构建二维占用网格算法。增量扫描匹配对齐并覆盖扫描以构建地图。环路闭合检测通过检测以前访问的位置并调整整个地图来调整车辆里程计的漂移。有时,扫描匹配算法和环路闭合检测需要手动调整。使用应用程序手动对齐扫描和修改循环闭包以提高整体地图精度。您还可以调整SLAM算法设置以改进自动地图构建。

要使用该应用程序,请执行以下操作:

要加载rosbag日志文件,请选择进口>从rosbag进口. 选择rosbag文件并单击打开.这将打开进口选项卡。有关更多信息,请参见导入并过滤一个滤袋

要从工作区加载数据,进口>从工作区进口. 选择您的扫描摆姿势使用提供的下拉列表的变量。中的变量也可以指定SlamapBuilder函数。看到编程使用

使用大满贯的设置调整SLAM算法设置。提供了默认值,但是您的特定传感器和数据可能需要对这些设置进行调整。要调优的最重要的值是关闭循环阈值。有关详细信息,请参阅优化大满贯设置

点击建造开始SLAM地图构建过程。构建过程使用增量扫描匹配对齐地图中的扫描,在访问以前的位置时识别循环闭合,并调整姿势。点击暂停在映射构建过程中的任何时候,手动对齐增量扫描或修改循环闭包。

点击增量匹配要修改当前选定帧的相对姿势并将扫描与上一次扫描对齐,请单击循环关闭修改或忽略当前帧检测到的循环闭包。使用底部的滑块滚动回扫描匹配或循环闭包不准确的区域。您可以修改任意数量的扫描或循环闭包。有关更多信息,请参见修改增量扫描和循环闭包

修改地图后,单击同步更新扫描图中的所有姿势。下面的两个选项同步同步,搜索新的循环闭包,或同步快速,它跳过循环结束搜索,只更新扫描映射。有关更多信息,请参阅同步的地图

当您对地图的外观感到满意时,单击出口到OccupancyGrid将地图导出到m文件或将地图保存在工作区中。该地图以二维概率占用网格的形式输出occupancyMap对象

您可以打开已保存使用的现有应用程序会话公开会议.当你在地图生成器选项卡,您可以保存您的进程到m文件使用保存会话

打开SLAM地图构建程序

  • MATLAB®将来发布:应用程序选项卡,在控制系统设计与分析,点击大满贯地图生成器

  • MATLAB命令窗口:输入SlamapBuilder

例子

全部展开

大满贯地图生成器该应用程序帮助您使用同步定位和映射(SLAM)算法从激光雷达扫描中构建占用网格。通过扫描匹配估计姿势并使用循环闭包进行姿势图优化来构建地图。本示例向您展示了加载激光雷达扫描数据包、过滤数据和构建地图的工作流。通过调整增量扫描匹配和修改循环闭包来调整扫描映射。

加载激光雷达扫描数据

负载的例子.mat将文件导入工作区,其中包含一个变量,扫描的单元格数组利达斯卡纳对象。

负载slamLidarScans.mat

打开应用程序

应用程序选项卡,在控制系统设计与分析,点击大满贯地图生成器

你也可以打电话给SlamapBuilder功能:

SlamapBuilder

导入激光雷达扫描

点击从工作区导入>加载扫描。存储为rosbag的数据可以通过ROS工具箱许可证加载。

选择扫描变量扫描放下。

在工具栏中设置Downsample (%)到10。从数据中均匀采样,减少SLAM算法的计算时间。对于本例,10%是每5次扫描一次。点击应用

使用底部的滑动条或箭头键来预览扫描。

完成导入后,单击关闭。

优化大满贯设置

SLAM算法可以使用大满贯的设置参数应根据传感器规格、环境和应用程序进行调整。在本例中,增加关闭循环阈值200300.增加的阈值降低了接受和使用检测到的循环闭包的可能性。设置优化区间10.每接受第10个闭环,姿态图就会被优化以考虑漂移。

构建地图

过滤数据并设置SLAM算法设置后,单击建造.该应用程序开始处理扫描以构建地图。你应该看到滑块在前进,扫描被覆盖在地图上。估计的机器人轨迹绘制在同一扫描图上。增量扫描匹配显示在增量匹配窗格。每当检测到一个循环闭包时,循环关闭窗格显示两个扫描重叠在一起。

调整扫描匹配或循环闭包

在构建过程中的任何时候,如果您注意到映射被扭曲,或者增量匹配或循环闭包没有出现,请单击暂停选择扫描以进行调整。您也可以在构建过程的最后修改扫描。使用箭头键或滑块导航到文件中第一次发生扭曲的位置。单击增量匹配循环关闭按钮来调整当前显示的扫描姿势。在本节中,坏循环闭包是人为的,仅用于演示目的。

单击循环关闭按钮。这将打开一个选项卡,用于修改循环闭合相对姿势。

要完全忽略循环闭包,请单击忽略.否则,手动修改相对扫描位姿,直到扫描对齐。

点击潘扫描旋转扫描,然后在图中单击并拖动以使两个扫描对齐。点击接受当你完成的时候。您可以对多次扫描进行此操作。

修改增量匹配和循环闭包的扫描姿势后,单击同步应用更改。同步快速如果已经处理了所有扫描,则在不搜索新循环闭包的情况下更新映射,并减少计算时间。

导出占用网格

一旦您同步了更改并完成了地图的构建,您应该会看到一个带有机器人轨迹的完全覆盖的扫描地图。

点击出口占用网格获得你所在环境的最终入住率地图occupancyMap对象指定将映射导出到工作区的变量名。您可以通过在导出和选择之前滚动回所需帧,从扫描子集创建贴图直到当前选定的扫描

呼叫显示在存储地图上可视化占用地图。

显示(myOccMap)

您还可以使用保存SLAM Map Builder应用程序会话保存会话按钮。应用程序将应用程序的当前状态写入.mat以后可以使用公开会议

相关的例子

编程使用

全部展开

slamMapBuilder(袋)打开大满贯地图生成器应用程序中指定的rosbag日志文件A.BagSelection使用rosbag(ROS工具箱)函数。应用程序打开到进口选项卡以过滤您的包中的传感器数据。

slamMapBuilder (sessionFile)打开大满贯地图生成器应用程序从保存的会话文件名,sessionFile.应用程序会话文件通过保存会话按钮在应用程序工具条。

slamMapBuilder(扫描)打开大满贯地图生成器应用并导入中指定的扫描扫描的单元格数组利达斯卡纳对象。该应用程序假设你已经预先过滤了扫描结果,并跳过了导入过程。点击建造开始构建地图。

slamMapBuilder(扫描,姿势)打开大满贯地图生成器应用程序,导入扫描和姿势。扫描的单元格数组指定为利达斯卡纳对象。提出了是一个矩阵[xyθ]向量对应于的位姿扫描.该应用程序假设你已经预先过滤了扫描结果,并跳过了导入过程。点击建造开始构建地图。

更多关于

全部展开

介绍了R2019b