机器人建图算法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