二维局部网格图

版本1.0.0.0 (1.15 MB) 此前
此代码是2D局部网格地图的Matlab实现

1.8 k下载

更新8月31日

查看许可协议

在本实验中,移动机器人周围L × L米的环境以网格的形式呈现。数据是通过安装在机器人前面的二维激光测距仪(LRF)来扫描水平面来获取的。2D激光测距仪每次读数提供180点,每度1点。超过40米的距离数据不予考虑,因为它可能包含激光束穿过玻璃或镜子反射引起的错误测量。直接使用局部网格内的激光命中点计算局部网格,插值局部网格外(> 10m)和阈值内(< 40m)的点,转而使用局部网格边界上的点。所需的端点输入到布里森汉姆的线算法,以指示空闲和占用的细胞。Bresenham的直线算法决定了在二维网格上应该选择哪些单元格,以在激光原点和终点之间形成一条近似的直线。局部网格图边界上的端点用于确定空闲单元,位于网格内的端点用于确定空闲单元和已占用单元。为了获得一致的局部地图,需要不断地将新的局部网格集成到以前的局部网格地图中。这是通过在新的计算网格上旋转和平移之前的网格地图来完成的。 The difference between the robot poses in two consecutive frames is used to compute the transformation matrix. The odometry data provides robot's pose. The robot pose is defined by (x, y, \theta) where x and y are coordinates relative to some known start point and \theta is the robot's heading. After transformation, it is needed to update the map values. Free and occupancy counters are defined, and counter values are updated using Reflectation mapping policy: C = hit /(hit + miss). Where hit represents the number of times a beam ended in that cell while miss stands for the number of times a beam passed through that grid cell.
---------------------------------------------------------------
输入:激光距离数据(L)和估计里程(X)
输出为:局部占用网格图
其功能是:
Init -初始化映射
Mp -建立当前的局部网格地图从激光数据
PRC -加载和预处理数据
显示网格图、激光点、机器人位置和当前机器人方向
TRNS -在映射t上变换映射t-1
更新-更新当前本地地图
---------------------------------------------------------------
该代码运行在Linux/Windows与MATLAB R2013a
它需要“Piotr的图像和视频工具箱版本3.01”进行转换
“本地化”的数据集。data”包含在内,因此您可以简单地运行Demo.m
这项工作中使用的数据来自Mohan Sridharan博士的机器人课程
在这里你可以看到视频的结果:
https://www.youtube.com/watch?v=FYkHxVOPGgA&index=1&list=PL3j0riEbsbtJKZ22PbRU7JeL3BlHz4UpH

引用作为

Alireza(2022)。二维局部网格图(//www.tatmou.com/matlabcentral/fileexchange/52749-2d-local-grid-map), MATLAB中央文件交换。检索

MATLAB版本兼容性
用R2013a创建
与任何版本兼容
平台的兼容性
窗户 macOS Linux
致谢

启发:Bresenham的线

社区寻宝

在MATLAB Central中寻找宝藏,并了解社区如何帮助您!

开始狩猎!