编程语言
首页 > 编程语言> > 机器人建图算法1、基础的地图结构和建图类型

机器人建图算法1、基础的地图结构和建图类型

作者:互联网

机器人建图算法1、基础的地图结构和建图类型

前言

路径规划先得有地图,因此建图是必不可少的。

常用的地图有2D和3D地图,2D地图计算量小,适用于快速验证规划算法;而对真实世界的模拟则需要3D地图,能够表征更多信息,但计算量也较大。2D地图中的实时稠密算法放到3D中运行可能就很慢了。

2D地图

拓扑地图Graph

与图论紧密相关的一种地图,由节点和边组成(可带权),适用于表征图中各个位置之间的关系。

在这里插入图片描述

栅格地图Grids

栅格地图,或者叫网格地图,由相互连接的正方形网格组成的地图,A*、Dijkstra等grid search based算法使用的地图,通过grid坐标确定位置
在这里插入图片描述

多边形地图

通过多边形表征障碍物,将多边形顶点与起终点按规则相互连接得到的图。适用于进行简单的避障规划。

在这里插入图片描述

导航网格图

通过不规则多边形表征可行区域形成的图,如下图中有色区域所示。无空间占据的部分(白色部分)就是障碍物。

在这里插入图片描述
除此之外其实还有很多建图方法,比如voroni图等等…

3D地图

有一点需要明确,无论是2D地图还是3D地图,虽然图上的最小元素表示形式不同,但是能够储存的信息其实非常多,比如位置、属性、距离等等。

并且不同地图对各种地图信息的表达能力事实上有很大的区别。

3D栅格地图

与之前的2D栅格地图类似,3D栅格是由正方体网格紧密排列的地图。通常这些正方体具有一个occupancy属性,以表征该位置是否具有障碍物。

3D栅格地图是稠密的,因此非常占内存,计算量也很大。坐标的计算可以通过索引完成(x, y, z坐标或者linear global坐标)。

在这里插入图片描述

八叉树地图Octomap

将一个大正方体连续对半分3次,得到8个中正方体,从中正方体再连续对半分3次,又可以得到8个小正方体。上一层的正方体与下一层的8个正方体连接,形成了一个八叉树。

如果某个位置上完全没有障碍物或者是大块的障碍物,那么可以用该位置上的大正方体表示,如果某个位置上是小障碍物,那就把大正方体切分到刚好可以包含这个障碍物的小正方形。这样就可以减少计算量,节约内存。

在这里插入图片描述

点云地图

将点云中的每个点按位置投射到三维空间中形成的地图,一般借助激光雷达或者RGBD相机进行感知和建图。

由于点云一般较密集,因此该点云地图也很消耗内存,计算量较大,并且在连续的状态空间中,不好处理。

在这里插入图片描述

体素地图(体素哈希)

Paper:Real-time 3D Reconstruction at Scale using Voxel Hashing
通过哈希表存储3D地图,该3D地图最小的组成元素是体素voxel,即固定大小的正方体;每个体素存储一个SDF、颜色和权重;固定数目紧密有序堆积的体素(原文是888个)组成体素块voxel blocks;数个相邻的体素块组成世界。

在这里插入图片描述

TSDF地图,ESDF地图

TSDF(Truncated Signed Distance Field)截断符号距离场。TSDF地图的每个元素中,储存了光束方向上的障碍表面的截断符号距离,符号表示障碍物的内外,截断表示当距离超过阈值时不再变化。因此TSDF值为0的表面就是障碍物表面。
在这里插入图片描述

ESDF(Euclidean Signed Distance Functions)欧式符号距离场。ESDF地图的每个元素,储存了到最近的障碍物的欧氏距离。

在这里插入图片描述

后记

下次解读论文:
Improved updating of Euclidean distance maps and Voronoi diagrams 关于ESDF地图的建立和更新方法。

标签:正方体,障碍物,机器人,地图,算法,栅格,建图,体素,3D
来源: https://blog.csdn.net/qq_41035283/article/details/120641004