CN115861560B - 一种构建地图的方法、装置、存储介质及电子设备 - Google Patents
一种构建地图的方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN115861560B CN115861560B CN202310110796.5A CN202310110796A CN115861560B CN 115861560 B CN115861560 B CN 115861560B CN 202310110796 A CN202310110796 A CN 202310110796A CN 115861560 B CN115861560 B CN 115861560B
- Authority
- CN
- China
- Prior art keywords
- point cloud
- node
- data structure
- binary tree
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本说明书公开了一种构建地图的方法、装置、存储介质及电子设备。首先,获取点云数据以及三维地图对应的二叉树数据结构。其次,针对每个点云点,根据该点云点的三维坐标,遍历二叉树数据结构,确定在二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层。而后,根据该点云点对应的父节点的三维坐标以及该点云点所处的节点层对应的坐标维度,将该点云点插入到二叉树数据结构中,得到更新后的二叉树数据结构。最后,根据更新后的二叉树数据结构,构建三维地图。本方法可以提高构建三维地图的效率。
Description
技术领域
本说明书涉及计算机技术领域,尤其涉及一种构建地图的方法、装置、存储介质及电子设备。
背景技术
三维地图更能够详细的描述三维空间环境,可以为无人设备提供定位、导航、避障等服务。
目前,三维地图的表示形式通常为三维点云地图,但是,三维点云地图中提供了大量不必要的细节,所占据的存储空间较多,导致构建三维地图的效率较慢。
因此,如何提高构建三维地图的效率,则是一个亟待解决的问题。
发明内容
本说明书提供一种构建地图的方法、装置、存储介质及电子设备,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种构建地图的方法,包括:
获取点云数据以及三维地图对应的二叉树数据结构,所述点云数据中包含有各点云点的三维坐标,所述二叉树数据结构中包含有各节点以及各节点层,每个节点对应一个点云点的三维坐标,不同的节点层设有不同的坐标维度;
针对每个点云点,根据该点云点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层;
根据该点云点对应的父节点的三维坐标以及该点云点所处的节点层对应的坐标维度,将该点云点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构;
根据所述更新后的二叉树数据结构,构建三维地图。
可选地,针对每个点云点,根据该点云点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层,具体包括:
确定三维地图对应的地图范围;
针对每个点云点,若确定该点云点的三维坐标位于所述地图范围内,根据该点云点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层。
可选地,在根据所述更新后的二叉树数据结构,构建三维地图之前,所述方法还包括:
针对所述二叉树数据结构中的每个节点,若确定该节点对应的三维坐标位于所述地图范围外,将该节点标记为已删除节点。
可选地,根据该点云点对应的父节点的三维坐标以及该点云点所处的节点层对应的坐标维度,将该点云点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构,具体包括:
若在该点云点所处的节点层对应的坐标维度下,该点云点的坐标值小于该点云点对应的父节点的坐标值,则构造左子节点,将所述左子节点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构;
若在该点云点所处的节点层对应的坐标维度下,该点云点的坐标值不小于该点云点对应的父节点的坐标值,则构造右子节点,将所述右子节点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构。
可选地,针对每个点云点,根据该点云点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层,具体包括:
将三维空间按照设定尺寸进行划分,确定各体素块以及各体素块的质心对应的三维坐标;
针对每个点云点,根据该点云点的三维坐标,确定该点云点所在的体素块,并根据该点云点所在的该体素块内的各节点对应的三维坐标、该点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该点云点所在的体素块内的各节点与该体素块的质心之间的距离,以及确定该点云点与该体素块的质心之间的距离;
根据该点云点所在的体素块内的各节点与该体素块的质心之间的距离,以及该点云点与该体素块的质心之间的距离,确定目标点;
根据所述目标点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中所述目标点的父节点以及所述目标点所处的节点层。
可选地,根据该点云点所在的该体素块内的各节点对应的三维坐标、该点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该点云点所在的体素块内的各节点与该体素块的质心之间的距离,以及确定该点云点与该体素块的质心之间的距离,具体包括:
根据该点云点所在的该体素块内的各节点,构建该体素块对应的点云点集合,并删除所述二叉树数据结构中位于该体素块内的各节点;
根据该体素块对应的点云点集合中的各点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该体素块对应的点云点集合中的各点云点与该体素块的质心之间的距离;
根据该点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该点云点与该体素块的质心之间的距离。
可选地,删除所述二叉树数据结构中位于该体素块内的各节点,具体包括:
针对每个节点,根据该节点对应的子树中的各节点的三维坐标,确定该节点对应的空间范围,并根据所述设定尺寸以及该体素块的质心对应的三维坐标,确定该体素块对应的空间范围;
若确定该节点对应的空间范围包含在该体素块对应的空间范围内,则将该节点对应的子树中的各节点标记为已删除节点;
若确定该节点在该体素块对应的空间范围内,则将该节点标记为已删除节点。
可选地,根据所述更新后的二叉树数据结构,构建三维地图,具体包括:
根据所述更新后的二叉树数据结构中的左子树的有效节点的数量以及右子树的有效节点的数量之间的比值,确定所述更新后的二叉树数据结构对应的平衡度,所述有效节点用于表示标记为未删除节点的节点;
若所述平衡度不满足预设条件,则重新划分二叉树数据结构中的各节点,得到重划分后的二叉树数据结构,并根据所述重划分后的二叉树数据结构,构建三维地图。
可选地,根据所述更新后的二叉树数据结构,构建三维地图,具体包括:
根据所述更新后的二叉树数据结构中的已删除节点的数量在节点总数中的占比,确定所述更新后的二叉树数据结构对应的无效度;
若所述无效度不满足预设条件,则重新划分二叉树数据结构中的各节点,得到重划分后的二叉树数据结构,并根据所述重划分后的二叉树数据结构,构建三维地图。
可选地,重新划分二叉树数据结构中的各节点,得到重划分后的二叉树数据结构,具体包括:
根据所述更新后的二叉树数据结构中的各有效节点,构建点云点集合,并删除所述更新后的二叉树数据结构中标记为已删除节点的各节点,得到空白二叉树数据结构;
根据所述点云点集合中的各点云点在各坐标维度下的分布范围,确定所述空白二叉树数据结构中的各节点层对应的坐标维度;
针对每个节点层中的每个点云点集合,将该点云点集合中的各点云点在该节点层对应的坐标维度下的坐标值进行排序,从该点云点集合中提取排序序号为中位数的点云点,作为该点云点集合对应的中位数点云点;
将该点云点集合对应的中位数点云点插入到所述空白二叉树数据结构中,得到重划分后的二叉树数据结构。
可选地,根据所述点云点集合中的各点云点在各坐标维度下的分布范围,确定所述空白二叉树数据结构中的各节点层对应的坐标维度,具体包括:
针对每个点云点集合,根据该点云点集合中的各点云点的三维坐标,确定该点云点集合中的各点云点在各坐标维度下的分布范围,并根据该点云点集合中的各点云点在各坐标维度下的分布范围,确定分布范围最大的坐标维度,作为该节点层对应的坐标维度。
可选地,确定每个节点层中的每个点云点集合,具体包括:
针对每个节点层中的每个点云点集合,按照该点云点集合对应的中位数点云点在该节点层对应的坐标维度下的坐标值,对该点云点集合中的各点云点进行划分,构建下一节点层中的各节点对应的点云点集合。
本说明书提供了一种构建地图的装置,包括:
获取模块,用于获取点云数据以及三维地图对应的二叉树数据结构,所述点云数据中包含有各点云点的三维坐标,所述二叉树数据结构中包含有各节点以及各节点层,每个节点对应一个点云点的三维坐标,不同的节点层设有不同的坐标维度;
确定模块,用于针对每个点云点,根据该点云点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层;
插入模块,用于根据该点云点对应的父节点的三维坐标以及该点云点所处的节点层对应的坐标维度,将该点云点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构;
构建模块,用于根据所述更新后的二叉树数据结构,构建三维地图。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述构建地图的方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述构建地图的方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
在本说明书提供的构建地图的方法中,获取点云数据以及三维地图对应的二叉树数据结构,点云数据中包含有各点云点的三维坐标,所述二叉树数据结构中包含有各节点以及各节点层,每个节点对应一个点云点的三维坐标,不同的节点层设有不同的坐标维度。其次,针对每个点云点,根据该点云点的三维坐标,遍历二叉树数据结构,确定在二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层。而后,根据该点云点对应的父节点的三维坐标以及该点云点所处的节点层对应的坐标维度,将该点云点插入到二叉树数据结构中,得到更新后的二叉树数据结构。最后,根据更新后的二叉树数据结构,构建三维地图。
从上述的构建地图的方法中可以看出,本方法可以根据该点云点对应的父节点的三维坐标以及该点云点所处的节点层对应的坐标维度,将该点云点插入到二叉树数据结构中,得到更新后的二叉树数据结构。最后,根据更新后的二叉树数据结构,构建三维地图。本方法可以提高构建三维地图的效率。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书实施例提供的构建地图的方法的流程示意图;
图2为本说明书实施例提供的确定目标点的流程示意图;
图3为本说明书实施例提供的删除节点的流程示意图;
图4为本说明书实施例提供的构建地图的装置的结构示意图;
图5为本说明书实施例提供的电子设备的结构示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书实施例提供的构建地图的方法的流程示意图,具体包括以下步骤:
S100:获取点云数据以及三维地图对应的二叉树数据结构,所述点云数据中包含有各点云点的三维坐标,所述二叉树数据结构中包含有各节点以及各节点层,每个节点对应一个点云点的三维坐标,不同的节点层设有不同的坐标维度。
在本说明书实施例中,本说明书提供的构建地图的方法的执行主体可以是服务器、台式电脑等电子设备,也可以是无人设备,亦或是安装在无人设备上的服务器。为了便于描述,下面仅以无人设备为执行主体,对本说明书提供的构建地图的方法进行说明。这里提到的无人设备可以是指机器人,无人车等设备。
在本说明书实施例中,无人设备可以获取点云数据以及三维地图对应的二叉树数据结构。这里提到的点云数据中包含有各点云点的三维坐标,三维坐标为(X,Y,Z)。
需要说明的是,点云数据可以是通过无人设备上的激光雷达传感器进行采集到,激光雷达传感器可以向周围发射激光信号,通过收集在物体表面反射后的激光信号,确定点云数据中的各点云点的三维坐标、深度、入射角等信息。
在本说明书实施例中,无人设备可以在运动的过程中采集到不同时刻的点云数据。因此,无人设备需要先确定出自身的位姿变化,再根据自身的位姿变化,确定采集到的不同时刻的点云数据之间的位置关系。
其中,无人设备确定自身的位姿变化的方法有多种。例如,基于单/双目相机的视觉里程计方法(orbslam、orbslasm2、DSO、SVO等)。再例如,基于单/双目相机和惯性测量单元传感器的视觉-惯性里程计方法(vins-fusion、orbslam3、ICE-BA等)。再例如,依赖激光雷达的雷达里程计方法(Fast-LIO、Fast-LOAM等)。
在本说明书实施例中,由于无人设备是基于传感器坐标系采集点云数据,这与三维地图中的参考坐标系不同。因此,无人设备可以根据自身的位姿变化,将传感器坐标下的点云数据转换为三维地图中的参考坐标系下的点云数据。这里提到的三维地图中的参考坐标系可以是指大地坐标系、空间坐标系等坐标系。
在本说明书实施例中,三维地图对应的二叉树数据结构中包含有各节点以及各节点层,每个节点对应一个点云点的三维坐标,不同的节点层设有不同的坐标维度。这里提到的节点层可以是指在二叉树数据结构中,节点位于二叉树数据结构中的深度。例如,若从二叉树数据结构中的根节点开始,则根节点为第1层,根节点的子节点为第2层,依此类推。若某一个节点位于第L层,则其子节点位于第L+1层。这里提到的坐标维度可以是指三维坐标(X,Y,Z)中的X轴、Y轴、Z轴中的任意一个。
其中,二叉树数据结构中的各节点层对应的坐标维度可以是根据专家经验预先确定出的。例如,按照设定的循环顺序进行循环,循环顺序可以是X轴、Y轴、Z轴。也就是说,若节点层1对应的坐标维度为X轴,那么,节点层2对应的坐标维度为Y轴,节点层3对应的坐标维度为Z轴,节点层4对应的坐标维度为X轴,节点层5对应的坐标维度为Y轴,节点层6对应的坐标维度为Z轴,•••,以此类推。再例如,循环顺序可以是X轴、X轴、Y轴、Y轴、Z轴、Z轴。本说明书不对各节点层对应的坐标维度的循环顺序进行限定。
S102:针对每个点云点,根据该点云点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层。
S104:根据该点云点对应的父节点的三维坐标以及该点云点所处的节点层对应的坐标维度,将该点云点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构。
在本说明书实施例中,针对每个点云点,无人设备可以根据该点云点的三维坐标,遍历二叉树数据结构,确定在二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层。
然后,无人设备可以根据该点云点对应的父节点的三维坐标以及该点云点所处的节点层对应的坐标维度,将该点云点插入到二叉树数据结构中,得到更新后的二叉树数据结构。
具体的,若在该点云点所处的节点层对应的坐标维度下,该点云点的坐标值小于该点云点对应的父节点的坐标值,则构造左子节点,将左子节点插入到二叉树数据结构中,得到更新后的二叉树数据结构。
若在该点云点所处的节点层对应的坐标维度下,该点云点的坐标值不小于该点云点对应的父节点的坐标值,则构造右子节点,将右子节点插入到二叉树数据结构中,得到更新后的二叉树数据结构。
例如,假设该点云点对应的三维坐标为(、、),该点云点对应的父节点对应的三维坐标为(、、),该点云点所处的节点层对应的坐标维度为X轴。若,则构造左子节点,插入到二叉树数据结构中。若, 则构造右子节点,插入到二叉树数据结构中。
在实际应用中,为了避免三维地图占据的内存过大,导致索引速度降低,无人设备可以预先设定三维地图的地图范围,并且,三维地图以无人设备所在的位置为中心点,随着无人设备的移动,三维地图的地图范围也会发生变化。无人设备可以将点云数据中位于三维地图的地图范围内的点云点插入到二叉树数据结构中,舍弃位于三维地图的地图范围内的点云点,以降低三维地图占据的内存,提高索引速度。
在本说明书实施例中,无人设备可以确定三维地图对应的地图范围。
然后,针对每个点云点,若确定该点云点的三维坐标位于地图范围内,根据该点云点的三维坐标,遍历二叉树数据结构,确定在二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层。
若确定该点云点的三维坐标位于地图范围外,舍弃该点云点。
进一步的,无人设备可以将二叉树数据结构中位于三维地图的地图范围外的节点从二叉树数据结构中删除。
具体的,无人设备可以根据二叉树数据结构中的各节点对应的三维坐标,确定二叉树数据结构中的各节点对应的三维坐标是否位于三维地图的地图范围外,将位于三维地图的地图范围外的节点从二叉树数据结构中删除。
在实际应用中,无人设备采集到的点云数据中通常包含有大量的点云点,将各点云点插入到二叉树数据结构中,会导致一个体素块内存在多个节点。而一个体素块内存在一个节点就可以确定该体素块所在的空间内是否存在障碍物。因此,无人设备可以从各点云点以及二叉树数据结构中筛选出目标点,再将目标点插入到二叉树数据结构中,以降低三维地图占据的内存,提高索引速度。
在本说明书实施例中,无人设备可以将三维空间按照设定尺寸进行划分,确定各体素块以及各体素块的质心对应的三维坐标。这里提到的设定尺寸可以是人为设定的,通过不同的设定尺寸,调整三维地图的精细程度。例如,设定尺寸越小,三维地图的精细程度越高。这里提到的体素块可以是指正方体,三维地图是由若干个矩阵式连接的正方体构成的。
其次,针对每个点云点,无人设备可以根据该点云点的三维坐标,确定该点云点所在的体素块,并根据该点云点所在的该体素块内的各节点对应的三维坐标、该点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该点云点所在的体素块内的各节点与该体素块的质心之间的距离,以及确定该点云点与该体素块的质心之间的距离。这里提到的距离的计算方法可以是指欧式距离、余弦相似度等方法。
具体的,无人设备可以根据该点云点所在的该体素块内的各节点,构建该体素块对应的点云点集合,并删除二叉树数据结构中位于该体素块内的各节点。
其次,无人设备可以根据该体素块对应的点云点集合中的各点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该体素块对应的点云点集合中的各点云点与该体素块的质心之间的距离。
然后,无人设备可以根据该点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该点云点与该体素块的质心之间的距离。
例如,无人设备可以将位于该体素块内的二叉树数据结构中的各节点对应的三维坐标拷贝到点云点集合中,确定该体素块内的各点云点与该体素块的质心之间的欧式距离。并确定该体素块内的各节点与该体素块的质心之间的欧式距离。
接着,无人设备可以根据该点云点所在的体素块内的各节点与该体素块的质心之间的距离,以及该点云点与该体素块的质心之间的距离,确定目标点。
最后,无人设备可以根据目标点的三维坐标,遍历二叉树数据结构,确定在二叉树数据结构中目标点的父节点以及目标点所处的节点层。
图2为本说明书实施例提供的确定目标点的流程示意图。
在图2中,无人设备可以针对每个点云点,确定点云点Ai所在体素块Pi。根据点云点Ai对应的三维坐标以及体素块Pi的质心对应的三维坐标,确定点云点Ai与体素块Pi的质心之间的欧式距离Di。
无人设备可以确定体素块Pi中的二叉树数据结构的各节点。根据各节点对应的三维坐标以及体素块Pi的质心对应的三维坐标,确定各节点与体素块Pi的质心之间的欧式距离di,将点云点Ai与体素块Pi的质心之间的欧式距离Di、各节点与体素块Pi的质心之间的欧式距离di进行排序,得到距离最小的节点或点云点,作为目标点。
然后,无人设备可以删除体素块Pi中的二叉树数据结构的各节点,将目标点插入二叉树数据结构中。
在实际应用中,无人设备除了需要将点云数据中的各点云点插入到二叉树数据结构中,还需要对二叉树数据结构中的部分节点进行删除。但是,无人设备每次对二叉树数据结构中的一两个节点进行删除,会降低构建地图的速度。因此,无人设备可以将二叉树数据结构中需要进行删除的节点进行标记,若确定二叉树数据结构中标记为已删除的节点的数量占节点总数的占比大于设定阈值,再统一删除二叉树数据结构中的标记为已删除的节点。
在本说明书实施例中,针对每个节点,无人设备可以根据该节点对应的子树中的各节点的三维坐标,确定该节点对应的空间范围,并根据设定尺寸以及该体素块的质心对应的三维坐标,确定该体素块对应的空间范围。
若确定该节点对应的空间范围包含在该体素块对应的空间范围内,则将该节点对应的子树中的各节点标记为已删除节点。当然,若该节点对应的子树中的节点数量大于设定数量阈值,无人设备可以直接将该节点对应的子树中的各节点进行删除。
若确定该节点在该体素块对应的空间范围内,则将该节点标记为已删除节点。具体如图3所示。
图3为本说明书实施例提供的删除节点的流程示意图。
在图3中,若节点Ai对应的子树的空间范围与体素块Pi对应的空间范围无交集,结束删除节点。
若节点Ai对应的子树的空间范围与体素块Pi对应的空间范围有交集,删除节点Ai对应的子树,结束删除节点。
若节点Ai在体素块Pi对应的空间范围的外部,将节点Ai标记为已删除节点。继续确定节点Ai的子节点对应的子树的空间范围与体素块Pi对应的空间范围之间的关系,直到确定与体素块Pi对应的空间范围无交集,或确定与体素块Pi对应的空间范围有交集,删除节点Ai对应的子树,结束删除节点为止。
例如,该节点对应的子树的所有节点的三维坐标中的最大值和最小值、、、、、。该节点对应的三维坐标为(、、)。该节点对应的空间范围为(、、、、、)。该体素块对应的空间范围为(、、、、、)。
若小于或大于或小于或大于或小于或大于,则该节点对应的空间范围与该体素块对应的空间范围无交集,不再对二叉树数据结构中的各节点进行标记。
若小于,大于,小于,大于,小于,大于,则该节点对应的空间范围包含在该体素块对应的空间范围内或该节点对应的空间范围与该体素块对应的空间范围相同,将该节点对应的子树中的各节点标记为已删除节点或删除该节点对应的子树中的各节点,不再对二叉树数据结构中的各节点进行标记。
若小于,大于,小于,大于,小于,大于,且该节点的标记为未删除节点,则该节点在该体素块对应的空间范围内,将该节点标记为已删除节点。继续确定该节点的子节点对应的子树的空间范围与体素块Pi对应的空间范围之间的关系,直到确定与该体素块对应的空间范围无交集,或确定与该体素块对应的空间范围有交集,删除该节点对应的子树,结束删除节点为止。
S106:根据所述更新后的二叉树数据结构,构建三维地图。
在本说明书实施例中,无人设备可以根据更新后的二叉树数据结构,构建三维地图。
在实际应用中,服务器将点云数据中的各点云点插入到二叉树数据结构中,可能会导致二叉树中的左子树的深度与右子树的深度差距较大,这会导致遍历二叉树的速度较慢,降低了索引速度。因此,服务器可以重新构建二叉树数据结构,使得二叉树数据结构中的左子树的深度与右子树的深度相接近,提高遍历二叉树的速度,以提高索引速度。
在本说明书实施例中,无人设备可以根据更新后的二叉树数据结构中的左子树的有效节点的数量以及右子树的有效节点的数量之间的比值,确定更新后的二叉树数据结构对应的平衡度,这里提到的有效节点用于表示标记为未删除节点的节点。这里提到的平衡度可以是指左子树的有效节点的数量与右子树的有效节点的数量两者中的较大值与较小值的比值。
若平衡度不满足预设条件,则重新划分二叉树数据结构中的各节点,得到重划分后的二叉树数据结构,并根据重划分后的二叉树数据结构,构建三维地图。这里提到的预设条件可以是指平衡度大于设定平衡度阈值,则认为平衡度不满足预设条件。
需要说明的是,通过调节设定平衡度阈值可在地图索引速度和建图耗时之间做权衡。也就是说,设定平衡度阈值越高,地图索引速度越慢,但是,由于建图的要求降低,不用频繁的重新划分二叉树数据结构中的各节点,降低了建图耗时。而设定平衡度阈值越低,地图索引速度越块,但是,由于建图的要求较高,需要频繁的重新划分二叉树数据结构中的各节点,提高了建图耗时。
在实际应用中,无人设备可以将二叉树数据结构中需要进行删除的节点进行标记,若确定二叉树数据结构中标记为已删除的节点的数量占节点总数的占比大于设定阈值,再统一删除二叉树数据结构中的标记为已删除的节点。
在本说明书实施例中,无人设备可以根据更新后的二叉树数据结构中的已删除节点的数量在节点总数中的占比,确定更新后的二叉树数据结构对应的无效度。这里提到的无效度可以是指已删除节点的数量与节点总数的比值。
若无效度不满足预设条件,则重新划分二叉树数据结构中的各节点,得到重划分后的二叉树数据结构,并根据重划分后的二叉树数据结构,构建三维地图。这里提到的预设条件可以是指无效度大于设定无效度阈值,则认为无效度不满足预设条件。
需要说明的是,通过调节设定有效度阈值可在二叉树数据结构更新的实时性、地图索引速度、地图占据内存与建图耗时之间做权衡。也就是说,设定无效度阈值越高,二叉树数据结构中的已删除节点越多,二叉树数据结构更新的实时性越慢,地图索引速度越慢,地图占据内存越多,但是,由于建图的要求降低,不需要频繁的重新划分二叉树数据结构中的各节点,降低了建图耗时。
而设定无效度阈值越低,二叉树数据结构中的已删除节点越少,二叉树数据结构更新的实时性越快,地图索引速度越快,地图占据内存越少,但是,由于建图的要求提高,需要频繁的重新划分二叉树数据结构中的各节点,提高了建图耗时。
具体的,无人设备可以根据更新后的二叉树数据结构中的各有效节点,构建点云点集合,并删除更新后的二叉树数据结构中标记为已删除节点的各节点,得到空白二叉树数据结构。
其次,无人设备可以根据点云点集合中的各点云点在各坐标维度下的分布范围,确定空白二叉树数据结构中的各节点层对应的坐标维度。
而后,针对每个节点层中的每个点云点集合,无人设备可以将该点云点集合中的各点云点在该节点层对应的坐标维度下的坐标值进行排序,从该点云点集合中提取排序序号为中位数的点云点,作为该点云点集合对应的中位数点云点。
最后,无人设备可以将该点云点集合对应的中位数点云点插入到空白二叉树数据结构中,得到重划分后的二叉树数据结构。
其中,无人设备可以针对每个点云点集合,根据该点云点集合中的各点云点的三维坐标,确定该点云点集合中的各点云点在各坐标维度下的分布范围,并根据该点云点集合中的各点云点在各坐标维度下的分布范围,确定分布范围最大的坐标维度,作为该节点层对应的坐标维度。
进一步的,针对每个节点层中的每个点云点集合,无人设备可以按照该点云点集合对应的中位数点云点在该节点层对应的坐标维度下的坐标值,对该点云点集合中的各点云点进行划分,构建下一节点层中的各节点对应的点云点集合。
例如,无人设备可以根据更新后的二叉树数据结构中的各有效节点,构建点云点集合。无人设备可以根据点云点集合中的各节点对应的三维坐标,确定X轴的坐标范围、Y轴的坐标范围、Z轴的坐标范围。从X轴的坐标范围、Y轴的坐标范围、Z轴的坐标范围中确定出坐标范围最大的坐标轴。
若确定X轴的坐标范围最大,将该点云点集合中的各点云点的X轴的坐标值进行排序,查找出排序序号为中位数的点云点,构造该点云点在二叉树数据结构中的第一节点层的节点。
然后,无人设备可以根据排序序号为中位数的点云点的坐标值X1,将点云点集合中X轴的坐标值小于X1的点云点,放入第二节点层的左子树对应的点云点集合,并将点云点集合中X轴的坐标值大于X1的点云点,放入第二节点层的右子树对应的点云点集合。
接着,无人设备可以根据第二节点层的左子树对应的点云点集合中的各节点对应的三维坐标,确定X轴的坐标范围、Y轴的坐标范围、Z轴的坐标范围。从X轴的坐标范围、Y轴的坐标范围、Z轴的坐标范围中确定出坐标范围最大的坐标轴。若Y轴的坐标范围最大,将第二节点层的左子树对应的点云点集合中的各点云点的Y轴的坐标值进行排序,查找出排序序号为中位数的点云点,构造该点云点在二叉树数据结构中的第二节点层中的左子树的节点。
同样的,按照相同的方法,无人设备可以根据第二节点层的右子树对应的点云点集合中的各节点对应的三维坐标,确定X轴的坐标范围、Y轴的坐标范围、Z轴的坐标范围。从X轴的坐标范围、Y轴的坐标范围、Z轴的坐标范围中确定出坐标范围最大的坐标轴。若Y轴的坐标范围最大,将第二节点层的右子树对应的点云点集合中的各点云点的Y轴的坐标值进行排序,查找出排序序号为中位数的点云点,构造该点云点在二叉树数据结构中的第二节点层中的右子树的节点。以此类推,构造在二叉树数据结构中的各节点层,从而,构建二叉树数据结构。
从上述过程中可以看出,本方法可以根据该点云点对应的父节点的三维坐标以及该点云点所处的节点层对应的坐标维度,将该点云点插入到二叉树数据结构中,得到更新后的二叉树数据结构。最后,根据更新后的二叉树数据结构,构建三维地图。本方法可以提高构建三维地图的效率。
以上为本说明书的一个或多个实施例提供的构建地图的方法,基于同样的思路,本说明书还提供了相应的构建地图的装置,如图4所示。
图4为本说明书实施例提供的构建地图的装置的结构示意图,具体包括:
获取模块400,用于获取点云数据以及三维地图对应的二叉树数据结构,所述点云数据中包含有各点云点的三维坐标,所述二叉树数据结构中包含有各节点以及各节点层,每个节点对应一个点云点的三维坐标,不同的节点层设有不同的坐标维度;
确定模块402,用于针对每个点云点,根据该点云点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层;
插入模块404,用于根据该点云点对应的父节点的三维坐标以及该点云点所处的节点层对应的坐标维度,将该点云点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构;
构建模块406,用于根据所述更新后的二叉树数据结构,构建三维地图。
可选地,所述确定模块402具体用于,确定三维地图对应的地图范围,针对每个点云点,若确定该点云点的三维坐标位于所述地图范围内,根据该点云点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层。
可选地,所述插入模块404具体还用于,针对所述二叉树数据结构中的每个节点,若确定该节点对应的三维坐标位于所述地图范围外,将该节点标记为已删除节点。
可选地,所述插入模块404具体用于,若在该点云点所处的节点层对应的坐标维度下,该点云点的坐标值小于该点云点对应的父节点的坐标值,则构造左子节点,将所述左子节点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构,若在该点云点所处的节点层对应的坐标维度下,该点云点的坐标值不小于该点云点对应的父节点的坐标值,则构造右子节点,将所述右子节点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构。
可选地,所述确定模块402具体用于,将三维空间按照设定尺寸进行划分,确定各体素块以及各体素块的质心对应的三维坐标,针对每个点云点,根据该点云点的三维坐标,确定该点云点所在的体素块,并根据该点云点所在的该体素块内的各节点对应的三维坐标、该点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该点云点所在的体素块内的各节点与该体素块的质心之间的距离,以及确定该点云点与该体素块的质心之间的距离,根据该点云点所在的体素块内的各节点与该体素块的质心之间的距离,以及该点云点与该体素块的质心之间的距离,确定目标点,根据所述目标点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中所述目标点的父节点以及所述目标点所处的节点层。
可选地,所述确定模块402具体用于,根据该点云点所在的该体素块内的各节点,构建该体素块对应的点云点集合,并删除所述二叉树数据结构中位于该体素块内的各节点,根据该体素块对应的点云点集合中的各点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该体素块对应的点云点集合中的各点云点与该体素块的质心之间的距离,根据该点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该点云点与该体素块的质心之间的距离。
可选地,所述确定模块402具体用于,针对每个节点,根据该节点对应的子树中的各节点的三维坐标,确定该节点对应的空间范围,并根据所述设定尺寸以及该体素块的质心对应的三维坐标,确定该体素块对应的空间范围,若确定该节点对应的空间范围包含在该体素块对应的空间范围内,则将该节点对应的子树中的各节点标记为已删除节点,若确定该节点在该体素块对应的空间范围内,则将该节点标记为已删除节点。
可选地,所述构建模块406具体用于,根据所述更新后的二叉树数据结构中的左子树的有效节点的数量以及右子树的有效节点的数量之间的比值,确定所述更新后的二叉树数据结构对应的平衡度,所述有效节点用于表示标记为未删除节点的节点,若所述平衡度不满足预设条件,则重新划分二叉树数据结构中的各节点,得到重划分后的二叉树数据结构,并根据所述重划分后的二叉树数据结构,构建三维地图。
可选地,所述构建模块406具体用于,根据所述更新后的二叉树数据结构中的已删除节点的数量在节点总数中的占比,确定所述更新后的二叉树数据结构对应的无效度,若所述无效度不满足预设条件,则重新划分二叉树数据结构中的各节点,得到重划分后的二叉树数据结构,并根据所述重划分后的二叉树数据结构,构建三维地图。
可选地,所述构建模块406具体用于,根据所述更新后的二叉树数据结构中的各有效节点,构建点云点集合,并删除所述更新后的二叉树数据结构中标记为已删除节点的各节点,得到空白二叉树数据结构,根据所述点云点集合中的各点云点在各坐标维度下的分布范围,确定所述空白二叉树数据结构中的各节点层对应的坐标维度,针对每个节点层中的每个点云点集合,将该点云点集合中的各点云点在该节点层对应的坐标维度下的坐标值进行排序,从该点云点集合中提取排序序号为中位数的点云点,作为该点云点集合对应的中位数点云点,将该点云点集合对应的中位数点云点插入到所述空白二叉树数据结构中,得到重划分后的二叉树数据结构。
可选地,所述构建模块406具体用于,针对每个点云点集合,根据该点云点集合中的各点云点的三维坐标,确定该点云点集合中的各点云点在各坐标维度下的分布范围,并根据该点云点集合中的各点云点在各坐标维度下的分布范围,确定分布范围最大的坐标维度,作为该节点层对应的坐标维度。
可选地,所述构建模块406具体用于,针对每个节点层中的每个点云点集合,按照该点云点集合对应的中位数点云点在该节点层对应的坐标维度下的坐标值,对该点云点集合中的各点云点进行划分,构建下一节点层中的各节点对应的点云点集合。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的构建地图的方法。
本说明书还提供了图5所示的电子设备的结构示意图。如图5所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的构建地图的方法。
当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (14)
1.一种构建地图的方法,其特征在于,包括:
获取点云数据以及三维地图对应的二叉树数据结构,所述点云数据中包含有各点云点的三维坐标,所述二叉树数据结构中包含有各节点以及各节点层,每个节点对应一个点云点的三维坐标,不同的节点层设有不同的坐标维度;
针对每个点云点,根据该点云点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层;
根据该点云点对应的父节点的三维坐标以及该点云点所处的节点层对应的坐标维度,将该点云点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构,其中,若在该点云点所处的节点层对应的坐标维度下,该点云点的坐标值小于该点云点对应的父节点的坐标值,则构造左子节点,将所述左子节点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构;若在该点云点所处的节点层对应的坐标维度下,该点云点的坐标值不小于该点云点对应的父节点的坐标值,则构造右子节点,将所述右子节点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构;
根据所述更新后的二叉树数据结构,构建三维地图,其中,以二叉树数据结构中的左子树的深度与右子树的深度相接近为目标,重新划分所述更新后的二叉树数据结构中的各节点,得到重划分后的二叉树数据结构,并根据所述重划分后的二叉树数据结构,构建三维地图。
2.如权利要求1所述的方法,其特征在于,针对每个点云点,根据该点云点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层,具体包括:
确定三维地图对应的地图范围;
针对每个点云点,若确定该点云点的三维坐标位于所述地图范围内,根据该点云点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层。
3.如权利要求2所述的方法,其特征在于,在根据所述更新后的二叉树数据结构,构建三维地图之前,所述方法还包括:
针对所述二叉树数据结构中的每个节点,若确定该节点对应的三维坐标位于所述地图范围外,将该节点标记为已删除节点。
4.如权利要求1所述的方法,其特征在于,针对每个点云点,根据该点云点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层,具体包括:
将三维空间按照设定尺寸进行划分,确定各体素块以及各体素块的质心对应的三维坐标;
针对每个点云点,根据该点云点的三维坐标,确定该点云点所在的体素块,并根据该点云点所在的该体素块内的各节点对应的三维坐标、该点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该点云点所在的体素块内的各节点与该体素块的质心之间的距离,以及确定该点云点与该体素块的质心之间的距离;
根据该点云点所在的体素块内的各节点与该体素块的质心之间的距离,以及该点云点与该体素块的质心之间的距离,确定目标点;
根据所述目标点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中所述目标点的父节点以及所述目标点所处的节点层。
5.如权利要求4所述的方法,其特征在于,根据该点云点所在的该体素块内的各节点对应的三维坐标、该点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该点云点所在的体素块内的各节点与该体素块的质心之间的距离,以及确定该点云点与该体素块的质心之间的距离,具体包括:
根据该点云点所在的该体素块内的各节点,构建该体素块对应的点云点集合,并删除所述二叉树数据结构中位于该体素块内的各节点;
根据该体素块对应的点云点集合中的各点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该体素块对应的点云点集合中的各点云点与该体素块的质心之间的距离;
根据该点云点对应的三维坐标以及该体素块的质心对应的三维坐标,确定该点云点与该体素块的质心之间的距离。
6.如权利要求5所述的方法,其特征在于,删除所述二叉树数据结构中位于该体素块内的各节点,具体包括:
针对每个节点,根据该节点对应的子树中的各节点的三维坐标,确定该节点对应的空间范围,并根据所述设定尺寸以及该体素块的质心对应的三维坐标,确定该体素块对应的空间范围;
若确定该节点对应的空间范围包含在该体素块对应的空间范围内,则将该节点对应的子树中的各节点标记为已删除节点;
若确定该节点在该体素块对应的空间范围内,则将该节点标记为已删除节点。
7.如权利要求1所述的方法,其特征在于,根据所述更新后的二叉树数据结构,构建三维地图,具体包括:
根据所述更新后的二叉树数据结构中的左子树的有效节点的数量以及右子树的有效节点的数量之间的比值,确定所述更新后的二叉树数据结构对应的平衡度,所述有效节点用于表示标记为未删除节点的节点;
若所述平衡度不满足预设条件,则重新划分二叉树数据结构中的各节点,得到重划分后的二叉树数据结构,并根据所述重划分后的二叉树数据结构,构建三维地图。
8.如权利要求1所述的方法,其特征在于,根据所述更新后的二叉树数据结构,构建三维地图,具体包括:
根据所述更新后的二叉树数据结构中的已删除节点的数量在节点总数中的占比,确定所述更新后的二叉树数据结构对应的无效度;
若所述无效度不满足预设条件,则重新划分二叉树数据结构中的各节点,得到重划分后的二叉树数据结构,并根据所述重划分后的二叉树数据结构,构建三维地图。
9.如权利要求5或6所述的方法,其特征在于,重新划分二叉树数据结构中的各节点,得到重划分后的二叉树数据结构,具体包括:
根据所述更新后的二叉树数据结构中的各有效节点,构建点云点集合,并删除所述更新后的二叉树数据结构中标记为已删除节点的各节点,得到空白二叉树数据结构;
根据所述点云点集合中的各点云点在各坐标维度下的分布范围,确定所述空白二叉树数据结构中的各节点层对应的坐标维度;
针对每个节点层中的每个点云点集合,将该点云点集合中的各点云点在该节点层对应的坐标维度下的坐标值进行排序,从该点云点集合中提取排序序号为中位数的点云点,作为该点云点集合对应的中位数点云点;
将该点云点集合对应的中位数点云点插入到所述空白二叉树数据结构中,得到重划分后的二叉树数据结构。
10.如权利要求9所述的方法,其特征在于,根据所述点云点集合中的各点云点在各坐标维度下的分布范围,确定所述空白二叉树数据结构中的各节点层对应的坐标维度,具体包括:
针对每个点云点集合,根据该点云点集合中的各点云点的三维坐标,确定该点云点集合中的各点云点在各坐标维度下的分布范围,并根据该点云点集合中的各点云点在各坐标维度下的分布范围,确定分布范围最大的坐标维度,作为该节点层对应的坐标维度。
11.如权利要求9所述的方法,其特征在于,确定每个节点层中的每个点云点集合,具体包括:
针对每个节点层中的每个点云点集合,按照该点云点集合对应的中位数点云点在该节点层对应的坐标维度下的坐标值,对该点云点集合中的各点云点进行划分,构建下一节点层中的各节点对应的点云点集合。
12.一种构建地图的装置,其特征在于,包括:
获取模块,用于获取点云数据以及三维地图对应的二叉树数据结构,所述点云数据中包含有各点云点的三维坐标,所述二叉树数据结构中包含有各节点以及各节点层,每个节点对应一个点云点的三维坐标,不同的节点层设有不同的坐标维度;
确定模块,用于针对每个点云点,根据该点云点的三维坐标,遍历所述二叉树数据结构,确定在所述二叉树数据结构中该点云点对应的父节点以及该点云点所处的节点层;
插入模块,用于根据该点云点对应的父节点的三维坐标以及该点云点所处的节点层对应的坐标维度,将该点云点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构,其中,若在该点云点所处的节点层对应的坐标维度下,该点云点的坐标值小于该点云点对应的父节点的坐标值,则构造左子节点,将所述左子节点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构;若在该点云点所处的节点层对应的坐标维度下,该点云点的坐标值不小于该点云点对应的父节点的坐标值,则构造右子节点,将所述右子节点插入到所述二叉树数据结构中,得到更新后的二叉树数据结构;
构建模块,用于根据所述更新后的二叉树数据结构,构建三维地图,其中,以二叉树数据结构中的左子树的深度与右子树的深度相接近为目标,重新划分所述更新后的二叉树数据结构中的各节点,得到重划分后的二叉树数据结构,并根据所述重划分后的二叉树数据结构,构建三维地图。
13.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~11任一项所述的方法。
14.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310110796.5A CN115861560B (zh) | 2023-02-09 | 2023-02-09 | 一种构建地图的方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310110796.5A CN115861560B (zh) | 2023-02-09 | 2023-02-09 | 一种构建地图的方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115861560A CN115861560A (zh) | 2023-03-28 |
CN115861560B true CN115861560B (zh) | 2023-05-16 |
Family
ID=85658021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310110796.5A Active CN115861560B (zh) | 2023-02-09 | 2023-02-09 | 一种构建地图的方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115861560B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130165A (zh) * | 2020-09-15 | 2020-12-25 | 北京三快在线科技有限公司 | 一种定位方法、装置、介质及无人设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102682103B (zh) * | 2012-04-28 | 2014-03-26 | 北京建筑工程学院 | 一种面向海量激光雷达点云模型的三维空间索引方法 |
US10438092B2 (en) * | 2018-01-31 | 2019-10-08 | Analytical Graphics, Inc. | Systems and methods for converting massive point cloud datasets to a hierarchical storage format |
CN113936082A (zh) * | 2021-10-18 | 2022-01-14 | 中国南方电网有限责任公司超高压输电公司 | 点云数据渲染方法、装置、设备及存储介质 |
-
2023
- 2023-02-09 CN CN202310110796.5A patent/CN115861560B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112130165A (zh) * | 2020-09-15 | 2020-12-25 | 北京三快在线科技有限公司 | 一种定位方法、装置、介质及无人设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115861560A (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018113604A1 (zh) | 虚拟地图中的瓦片地图生成方法、更新方法和装置 | |
CN111260726A (zh) | 一种视觉定位方法及装置 | |
CN111882611B (zh) | 一种地图构建方法及装置 | |
CN116740361B (zh) | 一种点云分割方法、装置、存储介质及电子设备 | |
CN111288971B (zh) | 一种视觉定位方法及装置 | |
CN111797906B (zh) | 基于视觉和惯性里程定位的方法及装置 | |
US11860846B2 (en) | Methods, systems and apparatus to improve spatial-temporal data management | |
CN114419291A (zh) | 一种点云数据压缩和解压方法及装置 | |
CN113674424B (zh) | 一种电子地图绘制的方法及装置 | |
CN115861560B (zh) | 一种构建地图的方法、装置、存储介质及电子设备 | |
WO2017058260A1 (en) | Geo-positioning information indexing | |
CN114332189A (zh) | 一种高精地图构建方法、装置、存储介质及电子设备 | |
CN112329547A (zh) | 一种数据处理方法及装置 | |
CN116740114B (zh) | 一种基于凸包检测的目标物边界拟合方法及装置 | |
CN116721118B (zh) | 一种基于点云的飞行器安全降落点的选择方法及装置 | |
CN115880685B (zh) | 一种基于votenet模型的三维目标检测方法和系统 | |
CN118053153A (zh) | 一种点云数据的识别方法、装置、存储介质及电子设备 | |
CN114153204B (zh) | 一种行驶轨迹的修复方法及修复装置 | |
CN117974990A (zh) | 一种基于注意力机制和特征增强结构的点云目标检测方法 | |
CN116088489B (zh) | 一种栅格地图的更新方法及装置 | |
CN117315968A (zh) | 一种交通信号灯朝向的确定方法及装置 | |
Behmann et al. | Probabilistic 3d point cloud fusion on graphics processors for automotive (poster) | |
CN114049450A (zh) | 面向断链场景的局部地图构建方法及装置 | |
CN117094248A (zh) | 原位环境下航天流场大数据的自动化分析方法和装置 | |
CN117218305A (zh) | 道路压盖关系的确定方法、装置、设备、介质及产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |