一种栅格地图构建方法、栅格地图构建装置及电子设备与流程

文档序号:32662932发布日期:2022-12-24 00:09阅读:28来源:国知局
一种栅格地图构建方法、栅格地图构建装置及电子设备与流程

1.本技术属于导航技术领域,尤其涉及一种栅格地图构建方法、栅格地图构建装置、电子设备及计算机可读存储介质。


背景技术:

2.栅格地图一般由机器人在进行即时定位与地图构建(simultaneous localization and mapping,slam)时,依赖机器人所搭载的二维激光雷达对障碍物的测距数据来生成。然而,二维激光雷达通常只能扫描到与自身处于同一水平面高度的测距数据。因此,受限于二维激光雷达的放置高度,处于不同高度平面的空间障碍无法在栅格地图中体现,导致当前的栅格地图有较大的局限性。


技术实现要素:

3.本技术提供了一种栅格地图构建方法、栅格地图构建装置、电子设备及计算机可读存储介质,可针对不同高度平面的空间障碍实现栅格地图的高效构建。
4.第一方面,本技术提供了一种栅格地图构建方法,包括:
5.针对三维探测设备当前已采集的每个点云关键帧,根据预设的高度区间生成与点云关键帧对应的虚拟线束测距结果;
6.根据各个点云关键帧所分别对应的三维探测设备的位姿及各个点云关键帧所分别对应的虚拟线束测距结果,维护栅格地图结构表,栅格地图结构表用于描述环境栅格地图中的各个栅格的状态;
7.根据栅格地图结构表,更新环境栅格地图。
8.第二方面,本技术提供了一种栅格地图构建装置,包括:
9.生成模块,用于针对三维探测设备当前已采集的每个点云关键帧,根据预设的高度区间生成与点云关键帧对应的虚拟线束测距结果;
10.维护模块,用于根据各个点云关键帧所分别对应的三维探测设备的位姿及各个点云关键帧所分别对应的虚拟线束测距结果,维护栅格地图结构表,栅格地图结构表用于描述环境栅格地图中的各个栅格的状态;
11.更新模块,用于根据栅格地图结构表,更新环境栅格地图。
12.第三方面,本技术提供了一种电子设备,上述电子设备包括存储器、处理器以及存储在上述存储器中并可在上述处理器上运行的计算机程序,上述处理器执行上述计算机程序时实现如上述第一方面的方法的步骤。
13.第四方面,本技术提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现如上述第一方面的方法的步骤。
14.第五方面,本技术提供了一种计算机程序产品,上述计算机程序产品包括计算机程序,上述计算机程序被一个或多个处理器执行时实现如上述第一方面的方法的步骤。
15.本技术与现有技术相比存在的有益效果是:不再通过二维探测设备生成栅格地
图,而是利用三维探测设备的空间感知能力,通过三维探测设备生成栅格地图。具体地,针对三维探测设备当前已采集的每个点云关键帧,可先根据预设的高度区间生成与点云关键帧对应的虚拟线束测距结果,然后再根据各个点云关键帧所分别对应的三维探测设备的位姿及各个点云关键帧所分别对应的虚拟线束测距结果,维护栅格地图结构表,该栅格地图结构表用于描述环境栅格地图中的各个栅格的状态,最后可根据栅格地图结构表,更新环境栅格地图。可以理解,上述过程在构建栅格地图时,充分考虑到了感兴趣的高度区间内的障碍物对栅格地图的影响,且无需高算力支撑,能够在普通的平台运行环境下,针对不同高度平面的空间障碍实现栅格地图的高效实时构建。
16.可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
17.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
18.图1是本技术实施例提供的栅格地图构建方法的实现流程示意图;
19.图2是本技术实施例提供的第三目标元素的判断流程示意图;
20.图3是本技术实施例提供的栅格地图构建装置的结构框图;
21.图4是本技术实施例提供的电子设备的结构示意图。
具体实施方式
22.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
23.为了说明本技术所提出的技术方案,下面通过具体实施例来进行说明。
24.本技术实施例所提出的栅格地图构建方法可应用于电子设备,该电子设备可以是机器人,也可以是与机器人建立通讯连接的服务器,还可以是与机器人建立通讯连接且能够进行数据处理操作的其它设备,此处不对该电子设备的类型作出限定。
25.下面以机器人为例,对本技术实施例所提出的栅格地图构建方法作出说明。请参阅图1,该栅格地图构建方法的实现流程详述如下:
26.步骤101,针对三维探测设备当前已采集的每个点云关键帧,根据预设的高度区间生成与点云关键帧对应的虚拟线束测距结果。
27.机器人身上一般搭载有三维探测设备。仅作为示例,该三维探测设备可以是三维激光雷达等具备空间感知能力的探测传感器,此处不对该三维探测设备的具体类型作出限定。
28.在需要构建环境栅格地图时,机器人可触发其slam系统运行,初始化一预设尺寸的环境栅格地图及栅格地图结构表,并自主控制自身在环境内移动。具体地,slam系统运行
后,可根据三维探测设备采集到第一帧关点云键帧时的位姿来设定地图的原点,其中,该位姿包括:位置及其朝向,该位置具体指的是在指定平面(一般为地平面)下的二维坐标;也即,可认为三维探测设备采集到第一帧点云关键帧时,其自身所处的位置即为地图的原点位置。
29.机器人在环境中移动的过程中,可根据其惯性测量单元(imu)或其它传感器对自身的移动进行监测。一旦监测到自身移动满足预设的移动条件,例如移动的距离达到预设的距离阈值,或者移动的角度达到预设的角度阈值时,即可触发三维探测设备对环境进行一次探测,由此获得新的一帧点云关键帧,以及三维探测设备探测得到该点云关键帧时的位姿。也即,每一帧点云关键帧,均有对应的位姿信息,该位姿信息由于表示三维探测设备在采集该点云关键帧时的位姿。
30.可以理解的是,由于三维探测设备通常被固定于机器人身上,因而在已知三维探测设备的位姿后,该机器人的位姿也已被确定。为方便后续描述,可将三维探测设备的位姿与机器人的位姿相等价。也即,可认为三维探测设备的位置即为机器人的位置,且三维探测设备的朝向即为机器人的朝向。
31.可以理解的是,随着机器人的移动,在有需求时,环境栅格地图及栅格地图结构表的尺寸可对应有增加,并且环境栅格地图及栅格地图结构表的尺寸始终保持同步,此处不再赘述。
32.为实现栅格地图的实时构建,每次机器人通过三维探测设备采集获得一帧新的点云关键帧后,即可触发步骤101及后续各步骤的执行,以使得环境栅格地图能够根据最新的点云关键帧得以更新。实际应用过程中,为了节省算力,机器人在获得第1帧点云关键帧时,可生成与该第1帧点云关键帧对应的虚拟线束测距结果并存储于存储空间;因而,机器人在获得第2帧点云关键帧时,第1帧点云关键帧对应的虚拟线束测距结果已存储于存储空间,本次只需生成与该第2帧点云关键帧对应的虚拟线束测距结果并存储于存储空间即可;以此类推,机器人在获得第n帧点云关键帧时,前n帧点云关键帧对应的虚拟线束测距结果已经存储于存储空间,本次只需生成与该第n帧点云关键帧对应的虚拟线束测距结果并存储于存储空间即可。也即,针对三维探测设备当前已采集的每个点云关键帧,机器人虽然都需生成对应的虚拟线束测距结果,但实际生成的时机可以不统一,具体为:针对任一点云关键帧,机器人可以在获得该点云关键帧后,立即根据预设的高度区间生成与该点云关键帧对应的虚拟线束测距结果,其中,该高度区间起到对点云关键帧中的点进行初步筛选的作用。
33.步骤102,根据各个点云关键帧所分别对应的三维探测设备的位姿及各个点云关键帧所分别对应的虚拟线束测距结果,维护栅格地图结构表。
34.其中,栅格地图结构表用于描述环境栅格地图中的各个栅格的状态。具体地,栅格共有如下三种状态:占据、空闲及未知。针对任一点云关键帧来说,机器人可根据该点云关键帧所对应的三维探测设备的位姿及虚拟线束测距结果,在栅格地图结构表中生成该点云关键帧所对应的二维的虚拟线束。根据该虚拟线束的路径,机器人可对栅格地图结构表中的各个栅格的状态进行维护。本技术实施例中,可以将栅格地图结构表理解为临时的栅格地图。
35.需要注意的是,当机器人关注的高度区间有着较大的跨度时,为保障后续环境栅格地图的准确度,机器人可考虑维护两个或多个栅格地图结构表,不同栅格地图结构表用
于描述环境栅格地图中的各个栅格在不同高度范围下的状态,且不同栅格地图结构表所表示的地图大小范围完全相同。
36.步骤103,根据栅格地图结构表,更新环境栅格地图。
37.当机器人关注的高度区间的跨度较小时,机器人可维护一个栅格地图结构表;这种情况下,栅格地图结构表本身可与环境栅格地图相等价,也即栅格地图结构表所表示的各栅格的状态,即为环境栅格地图中对应的各栅格的状态。当机器人关注的高度区间的跨度较大时,机器人通常可维护两个或多个栅格地图结构表;这种情况下,机器人可对已维护的各个栅格地图结构表进行融合,并根据融合的结果更新环境栅格地图。
38.具体地,前文已说明了栅格地图结构表类似于临时的栅格地图,因而此处以机器人维护有两个栅格地图结构表,分别为map1及map2为例,通过下表1对融合时所采用的策略进行示例:
[0039][0040]
表1
[0041]
其中,map指的是融合后所得的环境栅格地图。由上表1可知,针对有着相同索引的栅格来说,如果该栅格在map1和/或map2中的状态为占据,则该栅格在map中的最终状态也为占据;如果该栅格在map1和map2中的状态均为未知,则该栅格在map中的最终状态也为未知;如果该栅格在map1中的状态为空闲且在map2中的状态为空闲或未知,或者,该栅格在map2中的状态为空闲且在map1中的状态为空闲或未知,则该栅格在map中的最终状态为空闲。
[0042]
在一些实施例中,考虑到机器人可采用相同的流程生成各个点云关键帧所对应的虚拟线束测距结果,因而,为便于理解,此处以任一点云关键帧为例,对该点云关键帧所对应的虚拟线束测距结果的生成过程进行说明。该生成过程包括:
[0043]
步骤1011,根据三维探测设备的属性,确定虚拟线束的数量及虚拟线束的角分辨率。
[0044]
三维探测设备的属性包括:该三维探测设备的一条水平扫描线的激光点数量和水平角分辨率。本技术实施例中,虚拟线束的数量等同于该激光点数量,为便于后续说明,将该虚拟线束的数量记作h_num;类似地,虚拟线束的角分辨率同样等同于该水平角分辨率,为便于后续说明,将该虚拟线束的角分辨率记作h_res。一般而言,虚拟线束的数量及角分辨率满足以下关系:
[0045]
步骤1012,创建数组。
[0046]
其中,数组的元素数量等同于虚拟线束的数量,且数组中的各个元素的值均被初始化为无穷大infinity。需要注意的是,本技术实施例不对数组的数量作出限定,机器人可根据自身所关注的高度区间的跨度,创建一定数量的数组。
[0047]
具体地,当机器人仅关注较高的障碍物时,可对应创建与该较高的障碍物相关联的第一数组。为便于描述,可将该较高的障碍物记作第一障碍物。可以理解,后续根据第一数组,机器人也仅会生成对应的一个栅格地图结构表。
[0048]
具体地,当机器人仅关注较低的障碍物时,可对应创建与该较低的障碍物相关联的第二数组。为便于描述,可将该较低的障碍物记作第二障碍物。可以理解,后续根据第二数组,机器人也仅会生成对应的一个栅格地图结构表。
[0049]
显然,第一障碍物作为较高的障碍物,第二障碍物作为较低的障碍物,该第一障碍物的高度必然高于该第二障碍物的高度;也即,第一障碍物属于非低矮障碍物,第二障碍物属于低矮障碍物。
[0050]
具体地,当机器人不仅关注较低的障碍物,而且还关注较高的障碍物时,机器人可对应创建第一数组及第二数组。可以理解,后续根据第一数组及第二数组,机器人可对应生成两个栅格地图结构表,分别为:针对第一障碍物(也即非低矮障碍物)的第一栅格地图结构表,以及针对第二障碍物(也即低矮障碍物)的第二栅格地图结构表。
[0051]
为便于后续说明,第一数组可被记作range[h_num],第二数组可被记作low_range[h_num]。
[0052]
步骤1013,根据高度区间、角分辨率及点云关键帧,对数组进行更新,更新后的数组用于表征虚拟线束测距结果。
[0053]
机器人可先通过高度区间,对点云关键帧的各个点进行初步的筛选。之后,机器人可再对筛选后所保留的点进行进一步筛选处理,并根据进一步筛选的结果对数组进行更新。
[0054]
以前文所提出的第一数组及第二数组为例:更新后的第一数组可用于表征虚拟线束打在第一障碍物(非低矮障碍物)上所得的测距结果;更新后的第二数组可用于表征虚拟线束打在第二障碍物(低矮障碍物)上所得的测距结果。
[0055]
通过上述过程,机器人可通过数组的形式,获得有限数量的虚拟线束的测距结果。并且,在更新数组的过程中,机器人会对点云关键帧中的点进行筛选,能够避免机器人对算力的过多需求,保障该过程在算力较低的平台上也能够实现。
[0056]
在一些实施例中,步骤1013具体包括:
[0057]
a1、从点云关键帧中,筛选出候选点,候选点为:处于高度区间的点。
[0058]
机器人可对点云关键帧中的点进行遍历,以判断各点是否处于已设定的高度区间。可以理解,处于高度区间内的点才是机器人感兴趣的点,因而,处于高度区间的点可被机器人确定为候选点,由此可筛除掉地面上的点及机器人明显不关心的点。具体地,以任一点为例,该点的坐标可表示为(x,y,z)。其中,x表示该点在三维探测设备的x轴上,相对三维探测设备的偏移量;y表示该点在三维探测设备的y轴上,相对三维探测设备的偏移量;z表示该点在三维探测设备的z轴上,相对三维探测设备的偏移量(也即相对三维探测设备的高度);xy平面一般与指定平面(也即地平面)平行。则,机器人可将该点的坐标z值与已设定的高度区间相比对,以确定该点是否为候选点。
[0059]
在机器人既关注第一障碍物,又关注第二障碍物的情况下,高度区间的跨度通常较大。考虑到第一障碍物及第二障碍物所对应的障碍物高度不同,因而为实现相对精确的筛选,可根据该高度区间,分别为第一障碍物及第二障碍物再对应设置各自所感兴趣的高
度区间,具体为:针对第一障碍物(也即第一数组),可根据已设定的高度区间及第一障碍物的一般高度再对应设定第一高度区间;针对第二障碍物(也即第二数组),可根据已设定的高度区间及第二障碍物的一般高度再对应设定第二高度区间。可以理解,通过这种方式,可分别为第一数组及第二数组筛选出更具针对性的候选点。
[0060]
仅作为示例,在高度区间为[z
01
,z
02
]的情况下,第一高度区间可以是[z
03
,z
02
],第二高度区间可以是[z
01
,z
04
],其中,z
03
>z
01
,z
04
<z
02
,且z
04
>z
03
。其中,z
04
>z
03
的原因为:本技术实施例关注的第二障碍物(也即低矮障碍物)需要在z
03
高度以上无障碍;但如果仅关注z
01
至z
03
这一高度区间内的点,机器人就无法得知该点所对应的障碍物在z
03
高度以上是否确实无障碍;基于此,针对第二障碍物来说,机器人关注的高度区间可有所放宽,以避免将第一障碍物上的点错误的识别为第二障碍物上的点。
[0061]
a2、计算每个候选点相对三维探测设备的朝向角度,以及每个候选点相对三维探测设备的投影距离。
[0062]
投影距离指的是:候选点投影在指定平面后与三维探测设备的间隔距离,也即候选点与三维探测设备在指定平面的间隔距离,其中,该指定平面具体为三维探测设备的xy平面(可等价于地平面)。以候选点的坐标被表示为(x,y,z)为例,该候选点相对三维探测设备的朝向角度可通过以下公式计算而得:其中,orient为计算所得的朝向距离;该候选点相对三维探测设备的投影距离可通过以下公式计算而得:其中,horizon_range为计算所得的投影距离。
[0063]
a3、根据每个候选点相对三维探测设备的朝向角度,每个候选点相对三维探测设备的投影距离及角分辨率,对第一数组及第二数组进行更新。
[0064]
具体地,可通过如下过程对第一数组进行更新:
[0065]
b1、基于针对第一数组所筛选出的每个候选点,根据候选点相对三维探测设备的朝向角度及角分辨率,计算与候选点对应的第一索引值。
[0066]
候选点所对应的第一索引值可通过以下公式计算而得:其中,index1即为计算所得的第一索引值,orient及h_res在前文已有释义,此处不再赘述。
[0067]
b2、将第一目标元素的值与候选点相对三维探测设备的投影距离进行比对。
[0068]
其中,第一目标元素为:第一索引值在第一数组中所指示的元素。也即,机器人可将候选点所对应的horizon_range与range[index1]进行比对。
[0069]
b3、若候选点相对三维探测设备的投影距离小于第一目标元素的值,则将第一目标元素的值更新为候选点相对三维探测设备的投影距离。
[0070]
也即,当候选点所对应的horizon_range<range[index1]时,机器人可将range[index1]的值更新为该horizon_range。相对应的,当候选点所对应的horizon_range≥range[index1]时,机器人可不对range[index1]的值进行更新。
[0071]
可以理解,在针对所有的候选点均执行了步骤b1-b3后,该第一数组中的任一元素的值最终可被更新为:对应的朝向角度下的候选点的最小投影距离。
[0072]
具体地,可通过如下过程对第二数组进行更新:
[0073]
c1、创建容器。
[0074]
其中,与已创建的数组类似,容器的元素数量等同于虚拟线束的数量。但需要注意的是,容器中的元素具体为小顶堆结构实现的优先级队列,该优先级队列在后续用于存储属于同一朝向角度orient下的所有候选点的数值对;该数值对由候选点所对应的投影距离及高度所组成,可表示为(horizon_range,z)。可以理解,该容器中的每个元素初始为空(也即每个优先级队列初始为空)。
[0075]
为便于后续说明,容器可被记作vec_priority_queue[h_num]。
[0076]
c2、根据每个候选点相对三维探测设备的朝向角度及角分辨率,分别计算与每个候选点对应的第二索引值。
[0077]
其中,针对任一候选点,该候选点所对应的第二索引值可通过以下公式计算而得:其中,index2即为计算所得的第二索引值,orient及h_res在前文已有释义,此处不再赘述。
[0078]
c3、针对每个第二索引值,根据投影距离由小至大的顺序,将第二索引值所对应的各个候选点的数值对插入第二目标元素,第二目标元素为:第二索引值在容器中所指示的元素。
[0079]
前文已描述了,本技术实施例考虑的候选点的数值对,具体包括该候选点的投影距离及高度。可以理解,通过本步骤,每个元素(也即每个优先级队列)实际存储的是:属于同一朝向角度orient下的所有候选点的(horizon_range,z)数值对,且以投影距离由小至大的顺序作为这些数值对在元素(也即优先级队列)中的排序。最终,每个元素(也即每个优先级队列)的队头存储的是:对应朝向角度orient下,投影距离最小的候选点(也即在xy平面上距离三维探测设备最近的候选点)的(horizon_range,z)数值对。
[0080]
仅作为示例,p1、p2、p3及p4这四个候选点所对应的第二索引值相同,均为8,则可将这四个候选点的数值对插入元素vec_priority_queue[8]中。假定p1的数值对为(horizon_range1,z1),p2的数值对为(horizon_range2,z2),p3的数值对为(horizon_range3,z3),p4的数值对为(horizon_range4,z4),且horizon_range3<horizon_range2<horizon_range1<horizon_range4,则插入顺序为:p3的数值对-p2的数值对-p1的数值对-p4的数值对。又由于队列的特性为:在队尾进行插入的操作,因而,元素vec_priority_queue[8]中所包含的数值对的排序等同于各数值对的插入顺序。最终,在元素vec_priority_queue[8]中,p3的数值对在队头,p2的数值对处于队列的第二位,p3的数值对处于队列的第三位,p4的数值对在队尾。
[0081]
c4、从容器中,筛选出第三目标元素。
[0082]
针对容器中的任一元素,可判断该元素处于队头的数据对是否满足预设的筛选条件。若满足,则该元素可被确定为第三目标元素。可以理解,机器人可预先对该筛选条件予以设定,该筛选条件主要用于确定每个元素处于队头的数值对所对应的候选点是否真的来自第二障碍物(也即低矮障碍物)。
[0083]
考虑到第一障碍物及第二障碍物之间最主要的差别在于高度,因而,针对容器中的每个元素,机器人可根据该元素的第一目标数值对中的高度及预设的高度阈值,确定该
元素是否为第三目标元素,其中,第一目标数值对为:该元素中,处于队头的数值对。可以理解,该高度阈值具体为:机器人所关注的第二障碍物的最大高度。
[0084]
在一些实施例中,请参阅图2,为实现精准筛选,针对容器中的任一元素,机器人可通过如下过程判断其是否为第三目标元素:
[0085]
c41、检测元素的第一目标数值对中的高度是否大于高度阈值。若是,则执行步骤c47,若否,则执行步骤c42。
[0086]
其中,第一目标数值对为:处于队头的数值对。记第一目标数值对中的高度为height_nearest,则在height_nearest>h时,执行步骤c47,否则执行步骤c42。其中,h为高度阈值。
[0087]
c42、检测元素中是否存在第二目标数值对。若是,则执行步骤c43,若否,则执行步骤c48。
[0088]
其中,第二目标数值对为:元素中处于第i位的数值对,其中,i初始为2。
[0089]
c43、检测第二目标数值对与第一目标数值对的投影距离差异是否小于预设的第一差异阈值。若是,则执行步骤c45,若否,则执行步骤c44。
[0090]
记第二目标数值对中的投影距离为range_i,第一目标数值对的投影距离为range_nearest,则在range_i-range_nearest<d1时,执行步骤c45,否则执行步骤c44。其中,d1为第一差异阈值。
[0091]
c44、检测第二目标数值对与第一目标数值对的投影距离差异是否大于预设的第二差异阈值。若是,则执行步骤c48,若否,则执行步骤c46。
[0092]
在range_i-range_nearest>d2时,执行步骤c48,否则执行步骤c46。其中,d2为第二差异阈值。需要注意的是,第二差异阈值大于第一差异阈值,也即d2>d1。
[0093]
c45、检测第二目标数值对中的高度是否大于高度阈值。若是,则执行步骤c47,若否,则执行步骤c46。
[0094]
记第二目标数值对中的高度为height_i,则在height_i>h时,执行步骤c47,否则执行步骤c46。
[0095]
c46、对i进行更新,并跳转执行步骤c42。
[0096]
其中,更新的操作具体为:i自增1,也即i=i+1。
[0097]
c47、确定元素不为第三目标元素。
[0098]
c48、确定元素为第三目标元素。
[0099]
c5、针对容器中的每个第三目标元素,将第四目标元素的值更新为第三目标元素中处于队头的数值对中的投影距离,其中,第四目标元素为:第二数组中,与第三目标元素的索引值相同的元素。
[0100]
记筛选出的第三目标元素为vec_priority_queue[x],则可将vec_priority_queue[x]中处于队头的数值对(也即第一目标数值对)中的投影距离赋予low_range[x]。
[0101]
仅作为示例,若通过步骤c4,将前文所示出的vec_priority_queue[8]确定为了第三目标元素,则可将vec_priority_queue[8]中处于队头的数值对中的投影距离horizon_range3赋予low_range[8],也即low_range[8]的值被更新为了horizon_range3。
[0102]
在一些实施例中,为实现对栅格地图结构表的有效维护,步骤102具体包括:
[0103]
步骤1021,针对每个点云关键帧,根据点云关键帧所对应的三维探测设备的位姿
及虚拟线束测距结果,确定虚拟线束的路径。
[0104]
在使用数组表征虚拟线束测距结果时,数组的不同元素与不同朝向角度相对应,每个元素的值为:对应朝向角度下的虚拟线束打在障碍物上所得的测距结果。基于此,针对每个点云关键帧,可根据该点云关键帧所对应的三维探测设备的位姿及数组中的一个元素,确定一条虚拟线束的路径。其中,该路径的起点为:该三维探测设备的位姿所指示的位置;该路径的终点为:在该元素对应的朝向角度下,与该起点间隔目标距离的位置,该目标距离为该元素的值。随后,机器人可根据路径的起点及终点,结合布雷森汉姆直线算法(bresenham’s line algorithm)生成虚拟线束的路径,由此获知虚拟线束所穿过的所有栅格。
[0105]
步骤1022,根据各条虚拟线束的路径,维护栅格地图结构表。
[0106]
可以理解,对于任一条虚拟线束的路径来说,其终点即为该虚拟线束的击中点(也即击中的障碍物所在的点)。基于此,可根据各条虚拟线束的路径,对栅格地图结构表进行维护,具体为:
[0107]
在栅格为某一虚拟线束所穿过的栅格的情况下,若该栅格的状态原本为未知,则机器人可在栅格地图结构表中,将该栅格的状态更新为空闲;若该栅格的状态原本不为未知,则机器人可将该栅格的击中次数减1。
[0108]
在栅格为某一虚拟线束的终点(也即击中点)所对应的栅格的情况下,机器人可将该栅格的击中次数加1。
[0109]
对于每个栅格,当该栅格的击中次数大于预设的次数阈值时,机器人可在栅格地图结构表中,将该栅格的状态更新为占据;当该栅格的击中次数小于或等于该次数阈值时,机器人可在栅格地图结构表中,将该栅格的状态更新为空闲。
[0110]
可以理解,栅格地图结构表中,所有栅格的状态初始为未知,且所有栅格的击中次数初始为0。
[0111]
在机器人生成有第一数组的情况下,机器人可根据每个点云关键帧所对应的第一数组,以及每个点云关键帧所对应的三维探测设备的位姿,维护第一栅格地图结构表;可将该第一栅格地图结构表理解为:基于第一障碍物(非低矮障碍物)所得的临时的栅格地图。
[0112]
类似地,在机器人生成有第二数组的情况下,机器人可根据每个点云关键帧所对应的第二数组,以及每个点云关键帧所对应的三维探测设备的位姿,维护第二栅格地图结构表;可将该第二栅格地图结构表理解为:基于第二障碍物(低矮障碍物)所得的临时的栅格地图。
[0113]
在一些实施例中,当机器人在环境中移动至一个之前已经到达过的位置后,可触发回环矫正操作,该回环矫正操作可对所有点云关键帧所对应的三维探测设备的位姿进行矫正。在矫正完成后,机器人可再次触发步骤102及103的执行,以使得栅格地图结构表能够根据矫正后的三维探测设备的位姿进行更新,帮助获得更准确的环境栅格地图。
[0114]
由上可见,本技术实施例不再通过二维探测设备生成栅格地图,而是利用三维探测设备的空间感知能力,通过三维探测设备生成栅格地图。具体地,针对三维探测设备当前已采集的每个点云关键帧,可先根据预设的高度区间生成与点云关键帧对应的虚拟线束测距结果,然后再根据各个点云关键帧所分别对应的三维探测设备的位姿及各个点云关键帧所分别对应的虚拟线束测距结果,维护栅格地图结构表,该栅格地图结构表用于描述环境
栅格地图中的各个栅格的状态,最后可根据栅格地图结构表,更新环境栅格地图。可以理解,上述过程在构建栅格地图时,充分考虑到了感兴趣的高度区间内的障碍物对栅格地图的影响,且无需高算力支撑,能够在普通的平台运行环境下,针对不同高度平面的空间障碍实现栅格地图的高效实时构建。
[0115]
对应于上文所提供的栅格地图构建方法,本技术实施例还提供了一种栅格地图构建装置。如图3所示,该栅格地图构建装置3包括:
[0116]
生成模块301,用于针对三维探测设备当前已采集的每个点云关键帧,根据预设的高度区间生成与点云关键帧对应的虚拟线束测距结果;
[0117]
维护模块302,用于根据各个点云关键帧所分别对应的三维探测设备的位姿及各个点云关键帧所分别对应的虚拟线束测距结果,维护栅格地图结构表,栅格地图结构表用于描述环境栅格地图中的各个栅格的状态;
[0118]
更新模块303,用于根据栅格地图结构表,更新环境栅格地图。
[0119]
在一些实施例中,生成模块301,包括:
[0120]
线束参数确定子模块,用于根据三维探测设备的属性,确定虚拟线束的数量及虚拟线束的角分辨率;
[0121]
数组创建子模块,用于创建数组,其中,数组的元素数量等同于虚拟线束的数量,且数组中的各个元素的值均被初始化为无穷大;
[0122]
测距结果更新子模块,用于根据高度区间、角分辨率及点云关键帧,对数组进行更新,更新后的数组用于表征虚拟线束测距结果。
[0123]
在一些实施例中,数组包括:与第一障碍物相关联的第一数组,以及与第二障碍物相关联的第二数组,其中,第一障碍物的高度高于第二障碍物的高度;测距结果更新子模块,包括:
[0124]
筛选单元,用于从点云关键帧中,筛选出候选点,候选点为:处于高度区间的点;
[0125]
计算单元,用于计算每个候选点相对三维探测设备的朝向角度,以及每个候选点相对三维探测设备的投影距离,投影距离为:候选点投影在指定平面后与三维探测设备的间隔距离;
[0126]
更新单元,用于根据每个候选点相对三维探测设备的朝向角度,每个候选点相对三维探测设备的投影距离及角分辨率,对第一数组及第二数组进行更新。
[0127]
在一些实施例中,更新单元包括:
[0128]
第一索引值计算子单元,用于针对每个候选点,根据候选点相对三维探测设备的朝向角度及角分辨率,计算与候选点对应的第一索引值;
[0129]
比对子单元,用于将第一目标元素的值与候选点相对三维探测设备的投影距离进行比对,其中,第一目标元素为:第一索引值在第一数组中所指示的元素;
[0130]
第一更新子单元,用于若候选点相对三维探测设备的投影距离小于第一目标元素的值,则将第一目标元素的值更新为候选点相对三维探测设备的投影距离。
[0131]
在一些实施例中,更新单元包括:
[0132]
容器创建子单元,用于创建容器,其中,容器的元素数量等同于虚拟线束的数量,容器中的元素为队列,且容器的每个元素初始为空;
[0133]
第二索引值计算子单元,根据每个候选点相对三维探测设备的朝向角度及角分辨
率,分别计算与每个候选点对应的第二索引值;
[0134]
容器更新子单元,用于针对每个第二索引值,根据投影距离由小至大的顺序,将第二索引值所对应的各个候选点的数值对插入第二目标元素,数值对包括投影距离及高度,第二目标元素为:第二索引值在容器中所指示的元素;
[0135]
元素筛选子单元,用于从容器中,筛选出第三目标元素,其中,第三目标元素中处于队头的数值对满足预设的筛选条件;
[0136]
第二更新子单元,用于针对容器中的每个第三目标元素,将第四目标元素的值更新为第三目标元素中处于队头的数值对中的投影距离,其中,第四目标元素为:第二数组中,与第三目标元素的索引值相同的元素。
[0137]
在一些实施例中,元素筛选子单元,具体用于针对容器中的每个元素,根据元素的第一目标数值对中的高度及筛选条件,确定元素是否为第三目标元素,其中,第一目标数值对为:元素中处于队头的数值对,筛选条件根据预设的高度阈值而设定。
[0138]
在一些实施例中,维护模块302,包括:
[0139]
虚拟线束确定子模块,用于针对每个点云关键帧,根据点云关键帧所对应的三维探测设备的位姿及虚拟线束测距结果,确定虚拟线束的路径;
[0140]
结构表维护子模块,用于根据各条虚拟线束的路径,维护栅格地图结构表。
[0141]
由上可见,本技术实施例不再通过二维探测设备生成栅格地图,而是利用三维探测设备的空间感知能力,通过三维探测设备生成栅格地图。具体地,针对三维探测设备当前已采集的每个点云关键帧,可先根据预设的高度区间生成与点云关键帧对应的虚拟线束测距结果,然后再根据各个点云关键帧所分别对应的三维探测设备的位姿及各个点云关键帧所分别对应的虚拟线束测距结果,维护栅格地图结构表,该栅格地图结构表用于描述环境栅格地图中的各个栅格的状态,最后可根据栅格地图结构表,更新环境栅格地图。可以理解,上述过程在构建栅格地图时,充分考虑到了感兴趣的高度区间内的障碍物对栅格地图的影响,且无需高算力支撑,能够在普通的平台运行环境下,针对不同高度平面的空间障碍实现栅格地图的高效实时构建。
[0142]
对应于上文所提供的栅格地图构建方法,本技术实施例还提供了一种电子设备。请参阅图4,本技术实施例中的电子设备4包括:存储器401,一个或多个处理器402(图4中仅示出一个)及存储在存储器401上并可在处理器上运行的计算机程序。其中:存储器401用于存储软件程序以及单元,处理器402通过运行存储在存储器401的软件程序以及单元,从而执行各种功能应用以及数据处理,以获取上述预设事件对应的资源。具体地,处理器402通过运行存储在存储器401的上述计算机程序时实现以下步骤:
[0143]
针对三维探测设备当前已采集的每个点云关键帧,根据预设的高度区间生成与点云关键帧对应的虚拟线束测距结果;
[0144]
根据各个点云关键帧所分别对应的三维探测设备的位姿及各个点云关键帧所分别对应的虚拟线束测距结果,维护栅格地图结构表,栅格地图结构表用于描述环境栅格地图中的各个栅格的状态;
[0145]
根据栅格地图结构表,更新环境栅格地图。
[0146]
假设上述为第一种可能的实施方式,则在第一种可能的实施方式作为基础而提供的第二种可能的实施方式中,根据预设的高度区间生成与点云关键帧对应的虚拟线束测距
结果,包括:
[0147]
根据三维探测设备的属性,确定虚拟线束的数量及虚拟线束的角分辨率;
[0148]
创建数组,其中,数组的元素数量等同于虚拟线束的数量,且数组中的各个元素的值均被初始化为无穷大;
[0149]
根据高度区间、角分辨率及点云关键帧,对数组进行更新,更新后的数组用于表征虚拟线束测距结果。
[0150]
在上述第二种可能的实施方式作为基础而提供的第三种可能的实施方式中,数组包括:与第一障碍物相关联的第一数组,以及与第二障碍物相关联的第二数组,其中,第一障碍物的高度高于第二障碍物的高度;根据高度区间、角分辨率及点云关键帧,对数组进行更新,包括:
[0151]
从点云关键帧中,筛选出候选点,候选点为:处于高度区间的点;
[0152]
计算每个候选点相对三维探测设备的朝向角度,以及每个候选点相对三维探测设备的投影距离,投影距离为:候选点投影在指定平面后与三维探测设备的间隔距离;
[0153]
根据每个候选点相对三维探测设备的朝向角度,每个候选点相对三维探测设备的投影距离及角分辨率,对第一数组及第二数组进行更新。
[0154]
在上述第三种可能的实施方式作为基础而提供的第四种可能的实施方式中,第一数组的更新过程包括:
[0155]
针对每个候选点,根据候选点相对三维探测设备的朝向角度及角分辨率,计算与候选点对应的第一索引值;
[0156]
将第一目标元素的值与候选点相对三维探测设备的投影距离进行比对,其中,第一目标元素为:第一索引值在第一数组中所指示的元素;
[0157]
若候选点相对三维探测设备的投影距离小于第一目标元素的值,则将第一目标元素的值更新为候选点相对三维探测设备的投影距离。
[0158]
在上述第三种可能的实施方式作为基础而提供的第五种可能的实施方式中,第二数组的更新过程包括:
[0159]
创建容器,其中,容器的元素数量等同于虚拟线束的数量,容器中的元素为队列,且容器的每个元素初始为空;
[0160]
根据每个候选点相对三维探测设备的朝向角度及角分辨率,分别计算与每个候选点对应的第二索引值;
[0161]
针对每个第二索引值,根据投影距离由小至大的顺序,将第二索引值所对应的各个候选点的数值对插入第二目标元素,数值对包括投影距离及高度,第二目标元素为:第二索引值在容器中所指示的元素;
[0162]
从容器中,筛选出第三目标元素,其中,第三目标元素中处于队头的数值对满足预设的筛选条件;
[0163]
针对容器中的每个第三目标元素,将第四目标元素的值更新为第三目标元素中处于队头的数值对中的投影距离,其中,第四目标元素为:第二数组中,与第三目标元素的索引值相同的元素。
[0164]
在上述第五种可能的实施方式作为基础而提供的第六种可能的实施方式中,从容器中,筛选出第三目标元素,包括:
[0165]
针对容器中的每个元素,根据元素的第一目标数值对中的高度及筛选条件,确定元素是否为第三目标元素,其中,第一目标数值对为:元素中处于队头的数值对,筛选条件根据预设的高度阈值而设定。
[0166]
在上述第一种可能的实施方式作为基础而提供的第七种可能的实施方式中,根据各个点云关键帧所分别对应的三维探测设备的位姿及各个点云关键帧所分别对应的虚拟线束测距结果,维护栅格地图结构表,包括:
[0167]
针对每个点云关键帧,根据点云关键帧所对应的三维探测设备的位姿及虚拟线束测距结果,确定虚拟线束的路径;
[0168]
根据各条虚拟线束的路径,维护栅格地图结构表。
[0169]
应当理解,在本技术实施例中,所称处理器402可以是中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0170]
存储器401可以包括只读存储器和随机存取存储器,并向处理器402提供指令和数据。存储器401的一部分或全部还可以包括非易失性随机存取存储器。例如,存储器401还可以存储设备类别的信息。
[0171]
由上可见,本技术实施例不再通过二维探测设备生成栅格地图,而是利用三维探测设备的空间感知能力,通过三维探测设备生成栅格地图。具体地,针对三维探测设备当前已采集的每个点云关键帧,可先根据预设的高度区间生成与点云关键帧对应的虚拟线束测距结果,然后再根据各个点云关键帧所分别对应的三维探测设备的位姿及各个点云关键帧所分别对应的虚拟线束测距结果,维护栅格地图结构表,该栅格地图结构表用于描述环境栅格地图中的各个栅格的状态,最后可根据栅格地图结构表,更新环境栅格地图。可以理解,上述过程在构建栅格地图时,充分考虑到了感兴趣的高度区间内的障碍物对栅格地图的影响,且无需高算力支撑,能够在普通的平台运行环境下,针对不同高度平面的空间障碍实现栅格地图的高效实时构建。
[0172]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将上述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0173]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0174]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者外部设备软件和电子硬件的结合来实现。这些功能究
竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0175]
在本技术所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,上述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0176]
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0177]
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关联的硬件来完成,上述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,上述计算机程序包括计算机程序代码,上述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。上述计算机可读存储介质可以包括:能够携带上述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机可读存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,上述计算机可读存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读存储介质不包括是电载波信号和电信信号。
[0178]
以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1