一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种重定位方法及装置与流程

2022-11-23 10:51:16 来源:中国专利 TAG:


1.本公开涉及机器人领域,特别涉及一种重定位方法及装置。


背景技术:

2.重定位技术是机器人实现自主导航和智能化环境扫描探索的一个重要的前提。由于人为挪动、机器人在未知的区域启动等原因,会导致机器人的初始全局位姿丢失,无法实现后续的路径规划、多车调度等功能,因此,需要对机器人进行重定位,以获取机器人的初始全局位姿。
3.现有的机器人重定位方法大多是通过移动机器人,获取多帧点云数据进行重定位,然而,通过多帧点云数据进行重定位的操作复杂度较大,计算时间较长,且机器人的移动可能会导致机器人发生碰撞等问题。


技术实现要素:

4.本公开提供了一种重定位方法及装置,用以降低重定位的操作复杂度,提高重定位效率,同时避免机器人发生碰撞。
5.本公开实施例提供的具体技术方案如下:
6.第一方面,提供一种重定位方法,应用于重定位装置,包括:
7.获取机器人的激光雷达采集的激光雷达坐标系下的单帧点云数据,并对所述单帧点云数据进行特征提取,得到第一拓扑地图;
8.基于所述第一拓扑地图和第二拓扑地图,得到n个候选位姿,其中,所述第二拓扑地图是基于全局坐标系下构建的栅格地图进行特征提取得到的;
9.根据所述n个候选位姿,确定所述单帧点云数据在所述全局坐标系下的n组坐标,并根据所述n组坐标分别对应的栅格的栅格占据概率,从所述n个候选位姿中确定出所述机器人的目标位姿,其中,所述目标位姿用于表征所述机器人开机时在所述全局坐标系下的位姿,每个栅格的栅格占据概率用于表征相应的栅格内存在物体的概率。
10.本公开实施例中,重定位装置基于单帧点云数据与栅格地图,即可得到机器人开机时在全局坐标系下的位姿,降低了重定位的操作复杂度,提高了重定位效率,且保证了重定位准确率,同时,由于仅需要单帧点云数据,因此无需进行机器人的移动,避免了机器人在移动过程中发生碰撞。
11.可选的,基于所述第一拓扑地图和第二拓扑地图,得到n个候选位姿,包括:
12.基于所述第一拓扑地图中包含的各个第一节点各自对应的第一边长集合,以及基于所述第二拓扑地图中包含的各个第二节点各自对应的第二边长集合,将所述各个第一节点与所述各个第二节点进行匹配;其中,每个第一边长集合包含与对应的第一节点连接的边的边长,每个第二边长集合包含与对应的第二节点连接的边的边长;
13.将匹配成功的第一节点和第二节点,作为目标组,并基于获得的各个目标组,得到n个候选位姿。
14.本公开实施例中,基于第一节点对应的第一边长集合,以及基于第二节点对应的第二边长集合进行节点匹配,使得能够快速、准确地确定出的目标组,从而提高了重定位效率和准确率。
15.可选的,基于所述第一拓扑地图中包含的各个第一节点各自对应的第一边长集合,以及基于所述第二拓扑地图中包含的各个第二节点各自对应的第二边长集合,将所述各个第一节点与所述各个第二节点进行匹配,包括:
16.基于所述第一拓扑地图中包含的各个第一节点,以及所述第二拓扑地图中包含的各个第二节点,得到各个匹配组,其中,每个匹配组中包含节点类型相同的一个第一节点和一个第二节点;
17.针对每个匹配组,若一个匹配组中第一节点对应的第一边长集合,为同一个匹配组中第二节点对应的第二边长集合的子集,则确定所述一个匹配组中的第一节点和第二节点匹配成功。
18.本公开实施例中,通过比较第一节点对应的第一边长集合是否为第二节点对应的第二边长集合的子集,可以能够快速判断出第一节点和第二节点是否匹配,以此提高了重定位效率。
19.可选的,基于所述第一拓扑地图中包含的各个第一节点,以及所述第二拓扑地图中包含的各个第二节点,得到各个匹配组,包括:
20.从所述第一拓扑地图中,依次选取出连接的边的数量最多的第一节点,作为目标多层子图中的一个第一节点,直至所述第一拓扑地图为空,得到目标多层子图,其中,每选取出一个第一节点,将与所述一个第一节点连接的节点从所述第一拓扑地图中删除,所述目标多层子图中每一层中包含一个第一节点;
21.基于所述目标多层子图中包含的各个第一节点,以及所述第二拓扑地图中包含的各个第二节点,得到各个匹配组。
22.本公开实施例中,通过选取出连接的边的数量较多的第一节点,与各个第二节点进行匹配,减少了进行匹配的第一节点的数量,从而降低了计算量,以此提高了重定位效率,同时保证了重定位结果的准确性。
23.可选的,基于获得的各个目标组,得到n个候选位姿,包括:
24.若任意一个目标组中包含的第一节点和第二节点的节点类型为角点,则基于所述任意一个目标组中的第一节点的第一节点坐标,确定第一距离、第二距离和所述机器人的姿态角;其中,所述任意一个目标组中的第一节点为第一线段和第二线段之间的角点,所述第一距离用于表征所述机器人与所述第一线段之间的距离,所述第二距离用于表征所述机器人与所述第二线段之间的距离;
25.基于所述第一距离和所述第二距离,以及基于同一个目标组中的第二节点的第二节点坐标,确定所述机器人在所述全局坐标系下的候选位置;
26.基于所述姿态角,以及所述候选位置,得到候选位姿。
27.本公开实施例中,针对节点类型为角点的节点,通过第一节点的第一节点坐标和第二节点的第二节点坐标确定候选位姿,使得确定出的候选位姿结合了机器人与第一节点之间的相对位置,以此提高了重定位精度。
28.可选的,基于获得的各个目标组,得到n个候选位姿,包括:
29.若任意一个目标组中包含的第一节点和第二节点的节点类型为线段,则基于所述任意一个目标组中的第一节点的第一节点坐标,确定第三距离和所述机器人的姿态角;其中,所述第三距离用于表征所述机器人与第三线段之间的距离;
30.基于同一个目标组中的第二节点的第二节点坐标、所述姿态角、以及所述第三距离,得到所述机器人在所述全局坐标系下的至少一个候选位姿。
31.本公开实施例中,针对节点类型为线段的节点,通过第一节点的第一节点坐标和第二节点的第二节点坐标确定候选位姿,使得确定出的候选位姿结合了机器人与第一节点之间的相对位置,以此提高了重定位精度。
32.可选的,基于所述第一拓扑地图和第二拓扑地图,得到n个候选位姿之后,还包括:
33.根据所述n个候选位姿,分别基于所述第一拓扑地图中包含的各个第一节点在激光雷达坐标系下的第一节点坐标,得到所述各个第一节点在全局坐标系下的第三节点坐标;
34.根据所述各个第一节点的第三节点坐标,确定所述n个候选位姿分别对应的第一匹配得分,其中,所述第一匹配得分是指所述各个第一节点中存在的目标节点的数目,所述目标节点是指与所述第二拓扑地图中,任意一个节点类型相同的第二节点之间的距离,小于或等于预设门限的第一节点;
35.根据所述n个候选位姿各自对应的第一匹配得分,从所述n个候选位姿中选取m个候选位姿;其中,m的取值小于n的取值;
36.根据所述n个候选位姿,分别确定所述单帧点云数据在所述全局坐标系下的坐标,并根据所述n组坐标分别对应的栅格的栅格占据概率,从所述n个候选位姿中确定出所述机器人的目标位姿,包括:
37.根据选取出的m个候选位姿,分别确定所述单帧点云数据在所述全局坐标系下的坐标,并根据所述m组坐标分别对应的栅格的栅格占据概率,从所述m个候选位姿中确定出所述机器人的目标位姿。
38.本公开实施中,通过对n个候选位姿进行匹配校验,从n个候选位姿中选取出m个候选位姿,以此减少后续计算量,提高了重定位效率。
39.可选的,根据所述n个候选位姿,确定所述单帧点云数据在所述全局坐标系下的n组坐标,并根据所述n组坐标分别对应的栅格的栅格占据概率,从所述n个候选位姿中确定出所述机器人的目标位姿,包括:
40.根据所述n个候选位姿,分别将所述单帧点云数据从激光雷达坐标系转换到所述全局坐标系,得到所述全局坐标系下的n组坐标;其中,每个候选位姿对应一组坐标;
41.针对所述n组坐标中的任意一组坐标,若所述任意一组坐标中的任意一个坐标所属的栅格的栅格占据概率大于预设阈值,则将所述任意一组坐标对应的候选位姿的第二匹配得分增加第一设定值,否则将所述任意一组坐标对应的候选位姿的第二匹配得分减去第二设定值;
42.将n个候选位姿中第二匹配得分最高的候选位姿,作为所述机器人的目标位姿。
43.本公开实施中,通过将单帧点云数据与栅格地图匹配,从n个候选位姿中确定出目标位姿,使得确定出的目标位姿结合了单帧点云数据与栅格地图中物体分布情况,从而提高了重定位准确性。
44.可选的,将n个候选位姿中匹配得分最高的候选位姿,作为所述机器人的目标位姿,包括:
45.采用优化算法,对n个候选位姿中匹配得分最高的候选位姿进行优化,得到优化后的候选位姿;
46.将所述优化后的候选位姿作为所述机器人的目标位姿。
47.本公开实施中,通过采用优化算法,对n个候选位姿中匹配得分最高的候选位姿进行优化,从而提高了重定位精度。
48.可选的,还包括:
49.若对所述单帧点云数据进行特征提取后,未得到第一拓扑地图,则根据设置的扩展距离,扩展所述栅格地图的边界,得到扩展地图;
50.将所有解作为候选位姿,得到n个候选位姿,其中,所述所有解为所述机器人在所述扩展地图中全部位置的位姿。
51.本公开实施中,对栅格地图进行扩展,将所有解作为候选位姿,由于考虑到了机器人位于栅格地图的边缘部分的情况,因此,提高了重定位的准确性。
52.第二方面,提供一种重定位装置,包括:
53.提取单元,用于获取机器人的激光雷达采集的激光雷达坐标系下的单帧点云数据,并对所述单帧点云数据进行特征提取,得到第一拓扑地图;
54.匹配单元,用于基于所述第一拓扑地图和第二拓扑地图,得到n个候选位姿,其中,所述第二拓扑地图是基于全局坐标系下构建的栅格地图进行特征提取得到的;
55.确定单元,用于根据所述n个候选位姿,确定所述单帧点云数据在所述全局坐标系下的n组坐标,并根据所述n组坐标分别对应的栅格的栅格占据概率,从所述n个候选位姿中确定出所述机器人的目标位姿,其中,所述目标位姿用于表征所述机器人开机时在所述全局坐标系下的位姿,每个栅格的栅格占据概率用于表征相应的栅格内存在物体的概率。
56.可选的,基于所述第一拓扑地图和第二拓扑地图,得到n个候选位姿时,所述匹配单元具体用于:
57.基于所述第一拓扑地图中包含的各个第一节点各自对应的第一边长集合,以及基于所述第二拓扑地图中包含的各个第二节点各自对应的第二边长集合,将所述各个第一节点与所述各个第二节点进行匹配;其中,每个第一边长集合包含与对应的第一节点连接的边的边长,每个第二边长集合包含与对应的第二节点连接的边的边长;
58.将匹配成功的第一节点和第二节点,作为目标组,并基于获得的各个目标组,得到n个候选位姿。
59.可选的,基于所述第一拓扑地图中包含的各个第一节点各自对应的第一边长集合,以及基于所述第二拓扑地图中包含的各个第二节点各自对应的第二边长集合,将所述各个第一节点与所述各个第二节点进行匹配时,所述匹配单元具体用于:
60.基于所述第一拓扑地图中包含的各个第一节点,以及所述第二拓扑地图中包含的各个第二节点,得到各个匹配组,其中,每个匹配组中包含节点类型相同的一个第一节点和一个第二节点;
61.针对每个匹配组,若一个匹配组中第一节点对应的第一边长集合,为同一个匹配组中第二节点对应的第二边长集合的子集,则确定所述一个匹配组中的第一节点和第二节
点匹配成功。
62.可选的,基于所述第一拓扑地图中包含的各个第一节点,以及所述第二拓扑地图中包含的各个第二节点,得到各个匹配组时,所述匹配单元具体用于:
63.从所述第一拓扑地图中,依次选取出连接的边的数量最多的第一节点,作为目标多层子图中的一个第一节点,直至所述第一拓扑地图为空,得到目标多层子图,其中,每选取出一个第一节点,将与所述一个第一节点连接的节点从所述第一拓扑地图中删除,所述目标多层子图中每一层中包含一个第一节点;
64.基于所述目标多层子图中包含的各个第一节点,以及所述第二拓扑地图中包含的各个第二节点,得到各个匹配组。
65.可选的,基于获得的各个目标组,得到n个候选位姿时,所述匹配单元具体用于:
66.若任意一个目标组中包含的第一节点和第二节点的节点类型为角点,则基于所述任意一个目标组中的第一节点的第一节点坐标,确定第一距离、第二距离和所述机器人的姿态角;其中,所述任意一个目标组中的第一节点为第一线段和第二线段之间的角点,所述第一距离用于表征所述机器人与所述第一线段之间的距离,所述第二距离用于表征所述机器人与所述第二线段之间的距离;
67.基于所述第一距离和所述第二距离,以及基于同一个目标组中的第二节点的第二节点坐标,确定所述机器人在所述全局坐标系下的候选位置;
68.基于所述姿态角,以及所述候选位置,得到候选位姿。
69.可选的,基于获得的各个目标组,得到n个候选位姿时,所述匹配单元具体用于:
70.若任意一个目标组中包含的第一节点和第二节点的节点类型为线段,则基于所述任意一个目标组中的第一节点的第一节点坐标,确定第三距离和所述机器人的姿态角;其中,所述第三距离用于表征所述机器人与第三线段之间的距离;
71.基于同一个目标组中的第二节点的第二节点坐标、所述姿态角、以及所述第三距离,得到所述机器人在所述全局坐标系下的至少一个候选位姿。
72.可选的,基于所述第一拓扑地图和第二拓扑地图,得到n个候选位姿之后,所述匹配单元还用于:
73.根据所述n个候选位姿,分别基于所述第一拓扑地图中包含的各个第一节点在激光雷达坐标系下的第一节点坐标,得到所述各个第一节点在全局坐标系下的第三节点坐标;
74.根据所述各个第一节点的第三节点坐标,确定所述n个候选位姿分别对应的第一匹配得分,其中,所述第一匹配得分是指所述各个第一节点中存在的目标节点的数目,所述目标节点是指与所述第二拓扑地图中,任意一个节点类型相同的第二节点之间的距离,小于或等于预设门限的第一节点;
75.根据所述n个候选位姿各自对应的第一匹配得分,从所述n个候选位姿中选取m个候选位姿;其中,m的取值小于n的取值;
76.根据所述n个候选位姿,分别确定所述单帧点云数据在所述全局坐标系下的坐标,并根据所述n组坐标分别对应的栅格的栅格占据概率,从所述n个候选位姿中确定出所述机器人的目标位姿时,所述确定单元具体用于:
77.根据选取出的m个候选位姿,分别确定所述单帧点云数据在所述全局坐标系下的
坐标,并根据所述m组坐标分别对应的栅格的栅格占据概率,从所述m个候选位姿中确定出所述机器人的目标位姿。
78.可选的,根据所述n个候选位姿,确定所述单帧点云数据在所述全局坐标系下的n组坐标,并根据所述n组坐标分别对应的栅格的栅格占据概率,从所述n个候选位姿中确定出所述机器人的目标位姿时,所述确定单元具体用于:
79.根据所述n个候选位姿,分别将所述单帧点云数据从激光雷达坐标系转换到所述全局坐标系,得到所述全局坐标系下的n组坐标;其中,每个候选位姿对应一组坐标;
80.针对所述n组坐标中的任意一组坐标,若所述任意一组坐标中的任意一个坐标所属的栅格的栅格占据概率大于预设阈值,则将所述任意一组坐标对应的候选位姿的第二匹配得分增加第一设定值,否则将所述任意一组坐标对应的候选位姿的第二匹配得分减去第二设定值;
81.将n个候选位姿中第二匹配得分最高的候选位姿,作为所述机器人的目标位姿。
82.可选的,将n个候选位姿中匹配得分最高的候选位姿,作为所述机器人的目标位姿时,所述确定单元具体用于:
83.采用优化算法,对n个候选位姿中匹配得分最高的候选位姿进行优化,得到优化后的候选位姿;
84.将所述优化后的候选位姿作为所述机器人的目标位姿。
85.可选的,所述确定单元还用于:
86.若对所述单帧点云数据进行特征提取后,未得到第一拓扑地图,则根据设置的扩展距离,扩展所述栅格地图的边界,得到扩展地图;
87.将所有解作为候选位姿,得到n个候选位姿,其中,所述所有解为所述机器人在所述扩展地图中全部位置的位姿。
88.第三方面,提供一种电子设备,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令;所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开第一方面提供的重定位方法。
89.第四方面,提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序用于执行如第一方面所述的方法。
附图说明
90.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
91.图1为本公开实施例中提供的一种重定位方法的流程示意图;
92.图2为本公开实施例中提供的一种第一拓扑地图示意图;
93.图3为本公开实施例提供的一种获得n个候选位姿的流程示意图;
94.图4为本公开实施例提供的一种角度匹配的逻辑示意图;
95.图5为本公开实施例提供的一种线段匹配的逻辑示意图;
96.图6为本公开实施例提供的一种扩展地图的示意图;
97.图7为本公开实施例中提供的一种重定位装置的结构示意图;
98.图8为本公开实施例中提供的电子设备的结构示意图。
具体实施方式
99.针对现有技术中机器人的重定位效率低的问题,为了降低重定位时的操作复杂度,提高重定位效率,在本公开实施例中,提供一种重定位的解决方案。该方案为:获取机器人的激光雷达采集的单帧点云数据,并对单帧点云数据进行特征提取,得到第一拓扑地图;根据第一拓扑地图和基于栅格地图构建第二拓扑地图,得到n个候选位姿;根据n个候选位姿,确定所述单帧点云数据在所述全局坐标系下的n组坐标,并根据n组坐标分别对应的栅格的栅格占据概率,从n个候选位姿中确定出机器人的目标位姿,其中,目标位姿用于表征机器人开机时在全局坐标系下的位置和姿态,栅格的栅格占据概率用于表征栅格内存在物体的概率。
100.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
101.图1为本公开实施中提供的一种可能的重定位方法,具体流程如下:
102.s101、重定位装置获取机器人的激光雷达采集的激光雷达坐标系下的单帧点云数据,并对单帧点云数据进行特征提取,得到第一拓扑地图。
103.本公开实施例中,单帧点云数据可以是机器人开机后激光雷达采集的第一帧点云数据。激光雷达坐标系用于描述物体与激光雷达的相对位置,其中,激光雷达坐标系的原点为激光雷达的几何中心。
104.具体的,重定位装置可以采用但不限于以下方式,对单帧点云数据进行特征提取,得到第一拓扑地图:
105.a1、重定位装置对单帧点云数据进行特征提取,获得各个线段和各个角点。
106.本公开实施例中,线段的提取可以采用但不限于分割合并、区域生长、霍夫变换等方法。在从单帧点云数据中提取线段的过程中,若两条线段之间存在交点,且两条线段之间的夹角满足预设的角度范围,则将该交点作为一个角点。例如,预设的角度范围可以是80
°
至120
°
之间。
107.a2、将提取出的各个线段和各个角点,作为第一拓扑地图中的各个第一节点。
108.本公开实施例中,第一节点对应的节点信息中可以包含但不限于以下信息中的一项或多项:节点标识、节点类型、第一节点坐标、关联的边。其中,节点标识可以采用但不限于号码标识(identity document,id)表示,一个第一节点的节点类型可以是线段或角点,第一节点坐标用于表征第一节点在激光雷达坐标系下的坐标,关联的边用于表征与第一节点连接的边。示例性的,若一个第一节点的节点类型为角点,则第一节点的第一节点坐标为角点的坐标,若一个第一节点的节点类型为线段,则第一节点的第一节点坐标为线段的两个端点(首尾端点)的坐标。
109.下面,以节点i为例进行说明,节点i为第一拓扑地图中包含的各个第一节点中的任意一个第一节点。
110.若节点i的节点类型为角点,那么,节点i对应的节点信息中可以包含:
111.节点i的节点标识、节点i的节点类型、节点i的第一节点坐标、与节点i关联的边,其中,节点i的节点类型表征节点i为角点,节点i的第一节点坐标为(x,y),节点i的关联的边中包含与节点i关联的边的标识。
112.若节点i的节点类型为线段,那么,则节点i对应的节点信息包含:
113.节点i的节点标识、节点i的节点类型、节点i的第一节点坐标、与节点i关联的边、节点i的线段法向量,其中,节点i的节点类型表征节点i为线段,节点i的第一节点坐标为节点i对应的线段的首尾端点的坐标(x0,y0)、(x1,y1),节点i的线段法向量:其中,n
x
用于表征节点i的线段法向量在x轴方向的分量,ny用于表征节点i的线段法向量在y轴方向的分量,节点i的关联的边中包含与节点i关联的边的标识。
114.作为第一种可能的实现方式,重定位装置可以每提取出一个角点或线段后,在第一拓扑地图中添加一个第一节点。作为另一种可能的实现方式,重定位装置也可以提取出各个角点和各个线段之后,在第一拓扑地图中添加各个第一节点。
115.在第一拓扑地图中添加第一节点的过程中,若重定位装置提取出的一个特征是一个角点,则重定位装置将该角点作为第一拓扑地图中的一个第一节点后,生成该角点对应的第一节点的节点标识,设置该角点对应的第一节点的节点类型为角点,将该角点在激光雷达坐标系下的坐标作为该角点对应的第一节点的第一节点坐标,以及将该角点对应的第一节点的关联的边设置为空。
116.以特征a为例,特征a为提取出的任意一个角点,重定位装置将特征a作为第一拓扑地图中的一个第一节点后,生成特征a对应的第一节点的节点标识,生成的节点标识为1,即特征a对应的第一节点为节点1,然后,设置节点1的节点类型为角点,并将特征a在激光雷达坐标系下的坐标(xa,ya)作为节点1的第一节点坐标,以及将节点1的关联的边设置为空。
117.若重定位装置提取出的一个特征是一个线段,则重定位装置将该线段作为第一拓扑地图中的一个第一节点后,生成该线段对应的第一节点的节点标识,设置该线段对应的第一节点的节点类型为线段,将该线段在激光雷达坐标系下的首尾端点的坐标作为该线段对应的第一节点的第一节点坐标,并设置线段法向量,以及将该线段对应的第一节点的关联的边设置为空。
118.以特征b为例,特征b为提取出的任意一个线段,重定位装置将特征b作为第一拓扑地图中的一个第一节点后,生成特征b对应的第一节点的节点标识,生成的节点标识为2,即特征b对应的第一节点为节点2,设置节点2的节点类型为线段,将特征b在激光雷达坐标系下的首尾端点的坐标(x0,y0)、(x1,y1)作为节点2的第一节点坐标,并根据(x0,y0)、(x1,y1)计算得到节点2的线段法向量,以及将节点2的关联的边设置为空。
119.a3、重定位装置根据各个第一节点中节点i和节点j的第一节点坐标,计算得到节点i和节点j之间的距离,并在确定节点i和节点j之间的距离大于预设距离阈值时,在第一拓扑地图中为节点i和节点j之间添加边。
120.本公开实施例中,两个第一节点之间可以通过边进行连接。每个边对应的边信息中至少包含以下信息中的一项或多项:边标识、边类型、边距离、关联的节点。其中,边类型包括但不限于点-点、点-线、平行线、交叉线;边距离用于表征两个第一节点之间的物理距离,边距离也可以称为边长;关联的节点用于表征边连接的两个第一节点。
121.下面,以边x为例进行说明,边x为各个边中的任意一个边。边x对应的边信息中可
以包含:边x的边标识、边x的边类型、边x的边距离、与边x关联的节点。
122.其中,根据边x的边类型,存在但不限于以下几种情况:
123.第一种可能的情况:边x的边类型为点-点,即边x连接两个节点类型均为角点的第一节点,边x的边距离可以表示为:
[0124][0125]
其中,d用于表示边x的边距离,(xa,ya)和(xb,yb)分别为边x连接的两个第一节点的坐标。
[0126]
第二种可能的情况:边x的边类型为点-线,即边x连接的两个第一节点中,一个第一节点的节点类型为线段,另一个第一节点的节点类型为角点,边x的边距离可以表示为:
[0127][0128]
其中,d用于表示边x的边距离,(x0,y0)和(x1,y1)分别为一个第一节点对应的线段的尾端点的坐标,(xa,ya)为另一个第一节点对应的角点的坐标。
[0129]
第三种可能的情况:边x的边类型为平行线,即边x连接的两个节点类型均为线段的第一节点,边x的边距离可以采用上述公式(2)计算得到,其中,(x0,y0)和(x1,y1)分别为一个第一节点对应的线段的首尾端点的坐标,(xa,ya)为另一个第一节点对应的线段的任意一个端点的坐标。
[0130]
第四种可能的情况:边x的边类型为交叉线,即边x连接的两个节点类型均为线段的第一节点。假设,两个第一节点的线段法向量分别为(n
x1
,n
y1
)、(n
x2
,n
y2
)则边x的边距离可以表示为:
[0131][0132]
其中,采用两个第一节点分别对应的线段之间的夹角θ表示边x的边距离,θ∈[0,π)。
[0133]
下文仅以节点i和节点j作为举例,节点i和节点j为各个第一节点中的任意两个第一节点,本公开实施例中,其他第一节点之间均可以通过上述方式进行连接。
[0134]
具体的,根据节点i和节点j的节点类型,存在但不限于以下几种可能的情况:
[0135]
第一种可能的情况:节点i和节点j的节点类型均为角点。此时,预设的距离阈值可以采用预设的角点距离门限值,例如,角点距离门限值为30米。
[0136]
重定位装置根据节点i和节点j的第一节点坐标,采用公式(1),计算得到节点i和节点j之间的距离,若节点i和节点j之间的距离小于或等于预设的角点距离门限值,则确定节点i和节点j之间存在边,然后,在第一拓扑地图中在节点i和节点j之间添加边。
[0137]
将节点i和节点j之间的边称为边ij,重定位装置在第一拓扑地图中为节点i和节点j之间添加边ij之后,还可以为边ij添加对应的边信息。示例性的,边ij的边信息可以包含:边标识、边类型、边距离、关联的节点。
[0138]
示例性的,重定位装置可以采用但不限于以下方式为边ij添加对应的边信息:重
定位装置生成边ij的边标识,设置边ij的边类型为点-点,并将节点i和节点j之间的距离作为边ij的边距离,以及在边ij的关联的节点中添加节点i和节点j的节点标识。相应的,重定位装置可以在节点i和节点j关联的边中添加边ij的边标识。
[0139]
以节点1和节点3为例,参阅图2所示,假设,节点1和节点3为各个第一节点中两个节点类型为角点的第一节点,节点1和节点3的第一节点坐标分别为(10,10)、(10,25)。重定位装置根据节点1的第一节点坐标(10,10)和节点3的第一节点坐标(10,25),采用公式(1)计算得到节点1和节点3之间的距离为15。假设,预设的角点距离门限值为30米,重定位装置确定节点1和节点3之间的距离小于30米,确定节点1和节点3之间存在边,并在第一拓扑地图中节点1和节点3之间添加边。进一步的,重定位装置生成节点1和节点3之间的边的边标识为边3,设置边3的边类型为点-点,并将节点1和节点3之间的距离作为边3的边距离,以及在边3的关联的节点中添加节点1的节点标识和节点3的节点标识。相应的,重定位装置在节点1的关联的边中添加边3的边标识,以及在节点3的关联的边中添加边3的边标识。
[0140]
第二种可能的情况:节点i和节点j的节点类型不同,即,节点i的节点类型为线段,节点j的节点类型为角点,或者,节点i的节点类型为角点,节点j的节点类型为线段。此时,预设的距离阈值可以采用预设的点线距离门限值,例如,点线距离门限值为30米。
[0141]
具体的,重定位装置根据节点i和节点j的第一节点坐标,采用公式(2),计算得到节点i和节点j之间的距离,若节点i和节点j之间的距离小于或等于预设的点线距离门限值,则确定节点i和节点j之间存在边,并在第一拓扑地图中在节点i和节点j之间添加边。
[0142]
将节点i和节点j之间的边称为边ij,重定位装置在第一拓扑地图中为节点i和节点j之间添加边ij之后,还可以为边ij添加对应的边信息。
[0143]
示例性的,重定位装置可以采用但不限于以下方式为边ij添加对应的边信息,包括:生成边ij的边标识,设置边ij的边类型为点-线,并将节点i和节点j之间的距离作为边ij的边距离,以及在边ij的关联的节点中添加节点i和节点j的节点标识。相应的,重定位装置在节点i和节点j关联的边中添加边ij的边标识。
[0144]
以节点1和节点2为例,参阅图2所示,假设,节点1为各个第一节点中一个节点类型为角点的第一节点,节点2为各个第一节点中一个节点类型为线段的第一节点,节点1的第一节点坐标(10,10),节点2的第一节点坐标(15,15)、(2,2)。重定位装置根据节点1的第一节点坐标(10,10),以及根据节点2的第一节点坐标(15,15)、(2,2),采用公式(2)计算得到节点1和节点2之间的距离为0。预设的点线距离门限值为30米,重定位装置确定节点1和节点2之间的距离小于30米,确定节点1和节点2之间存在边,并在第一拓扑地图中节点1和节点2之间添加边。进一步的,重定位装置生成节点1和节点2之间的边的边标识为边1,设置边1的边类型为点-线,并将节点1和节点2之间的距离作为边1的边距离,以及在边1的关联的节点中添加节点1的节点标识和节点2的节点标识。相应的,重定位装置在节点1的关联的边中添加边1的边标识,以及在节点2的关联的边中添加边1的边标识。
[0145]
第三种可能的情况:节点i和节点j的节点类型均为线段。
[0146]
重定位装置根据节点i和节点j的第一节点坐标,采用公式(3),计算得到线段之间的夹角。根据线段之间的夹角的取值,存在以下两种情况:
[0147]
情况a:节点i和节点j对应的线段之间的夹角为0
°
,即节点i对应的线段与节点j对应的线段为平行线。
[0148]
重定位装置根据节点i和节点j的第一节点坐标,采用公式(2)计算得到节点i和节点j之间的距离,并在确定节点i和节点j之间的距离小于或等于预设的点线距离门限值后,确定节点i和节点j之间存在边,并在第一拓扑地图中,在节点i和节点j之间添加边。
[0149]
将节点i和节点j之间的边称为边ij,重定位装置在第一拓扑地图中为节点i和节点j之间添加边ij之后,还可以为边ij添加对应的边信息。
[0150]
示例性的,重定位装置可以采用但不限于以下方式为边ij添加对应的边信息:生成边ij的边标识,设置边ij的边类型为平行线,并将节点i和节点j之间的距离作为边ij的边距离,以及在边ij的关联的节点中添加节点i和节点j的节点标识。相应的,重定位装置在节点i和节点j关联的边中添加边ij的边标识。
[0151]
以节点2和节点5为例,参阅图2所示,假设,节点2、节点5为各个第一节点中两个节点类型为线段的第一节点,重定位装置根据节点2的第一节点坐标,以及根据节点5的第一节点坐标,采用公式(2)计算得到节点1和节点2之间的距离为28米。预设的点线距离门限值为30米,重定位装置确定节点2和节点5之间的距离小于30米,确定节点2和节点5之间存在边,并在第一拓扑地图中在节点2和节点5之间添加边。进一步的,重定位装置生成节点2和节点5之间的边的边标识为边5,设置边5的边类型为平行线,并将节点2和节点5之间的距离作为边5的边距离,以及在边5的关联的节点中添加节点2的节点标识和节点5的节点标识。相应的,重定位装置在节点2的关联的边中添加边5的边标识,以及在节点5的关联的边中添加边5的边标识。
[0152]
情况二:节点i和节点j对应的线段之间的夹角不为0
°
,即节点i与节点j对应的线段为交叉线。
[0153]
重定位装置在确定节点i和节点j对应的线段之间的夹角小于或等于预设的角度门限值时,确定节点i和节点j之间存在边,并在第一拓扑地图中在节点i和节点j之间添加边。
[0154]
将节点i和节点j之间的边称为边ij,重定位装置在第一拓扑地图中为节点i和节点j之间添加边ij之后,还可以为边ij添加对应的边信息。
[0155]
示例性的,重定位装置可以采用但不限于以下方式为边ij添加对应的边信息:生成边ij的边标识,设置边ij的边类型为交叉线,并将线段之间的夹角作为边ij的边距离,以及在边ij的关联的节点中添加节点i和节点j的节点标识。相应的,重定位装置在节点i和节点j关联的边中添加边ij的边标识。
[0156]
以节点4和节点6为例,参阅图2所示,假设,节点4、节点6为各个第一节点中两个节点类型为线段的第一节点,节点4和节点6对应的线段之间的夹角为60
°
。预设的角度门限值为120
°
,重定位装置确定节点4和节点6对应的线段之间夹角小于120
°
,确定节点4和节点6之间存在边,并在第一拓扑地图中在节点4和节点6之间添加边。进一步的,重定位装置生成节点4和节点6之间的边的边标识为边6,设置边6的边类型为交叉线,并将节点4和节点6对应的线段之间的夹角作为边6的边距离,以及在边6的关联的节点中添加节点4的节点标识和节点6的节点标识。相应的,重定位装置在节点4的关联的边中添加边6的边标识,以及在节点6的关联的边中添加边6的边标识。
[0157]
s102、重定位装置基于第一拓扑地图和第二拓扑地图,得到n个候选位姿,其中,第二拓扑地图是基于全局坐标系下构建的栅格地图进行特征提取得到的。
[0158]
本公开实施例中,第二拓扑地图的获取过程与第一拓扑地图的获取过程类似,在此不再赘述。第二拓扑地图中包含各个第二节点,各个第二节点之间通过边连接。
[0159]
具体的,参阅图3所示,执行s102时,可以采用但不限于以下方式:
[0160]
s1021、重定位装置基于第一拓扑地图中包含的各个第一节点各自对应的第一边长集合,以及基于第二拓扑地图中包含的各个第二节点各自对应的第二边长集合,将各个第一节点与各个第二节点进行匹配。
[0161]
其中,每个第一边长集合包含与对应的第一节点连接的边的边长,每个第二边长集合包含与对应的第二节点连接的边的边长。
[0162]
具体的,执行s1021时,包括但不限于以下步骤:
[0163]
s10211、重定位装置基于第一拓扑地图中包含的各个第一节点,以及第二拓扑地图中包含的各个第二节点,得到各个匹配组,其中,每个匹配组中包含节点类型相同的一个第一节点和一个第二节点。
[0164]
在一些实施例中,为了减少计算量,提高重定位效率,执行s10211时,重定位装置可以从第一拓扑地图中,依次选取出连接的边的数量最多的第一节点,作为目标多层子图中的一个第一节点,直至第一拓扑地图为空,得到目标多层子图,其中,每选取出一个第一节点,将与一个第一节点连接的节点从第一拓扑地图中删除,目标多层子图中每一层中包含一个第一节点。
[0165]
例如,参阅图2所示,在第一拓扑地图中存在节点1、节点2、
……
、节点6,首先,重定位装置从第一拓扑地图中,选取出连接的边的数量最多的节点1作为一个第一节点,并将与节点1连接的节点2、节点3、节点4从第一拓扑图中删除。
[0166]
进一步的,重定位装置基于目标多层子图中包含的各个第一节点,以及第二拓扑地图中包含的各个第二节点,得到各个匹配组。
[0167]
本公开实施例中,目标多层子图的层数为k,k为正整数。
[0168]
例如,假设,目标多层子图中包含的第一节点依次为节点1、节点9,第二拓扑地图中包含的节点a、节点b、节点c,那么,重定位装置基于目标多层子图中包含的节点1、节点9,以及第二拓扑地图中包含的节点a、节点b、节点c,得到匹配组1、
……
、匹配组6,其中,匹配组1包含节点1和节点a,匹配组2包含节点1和节点b,匹配组3包含节点1和节点c,匹配组4包含节点9和节点a,匹配组5包含节点9和节点b,匹配组6包含节点9和节点c。
[0169]
参阅图2所示,如果第一拓扑地图中存在一个节点类型为角点的第一节点,则该节点至少连接2个节点类型为线段的第一节点。而节点类型为线段的第一节点可在第一拓扑地图中独立存在,即不连接其他第一点节点。为了减少计算量,从而提高重定位效率,本公开实施例中,从第一拓扑地图中,依次选取出第一节点,获取目标多层子图的过程中,可以先从第一拓扑地图中提取出节点类型为角点的第一节点,当第一拓扑地图中节点类型为角点的第一节点全部删除后,再对第一拓扑地图中节点类型为线段的第一节点进行提取。
[0170]
需要说明的是,在另一些实施例中,重定位装置也可以直接基于第一拓扑地图中包含的各个第一节点,以及第二拓扑地图中包含的各个第二节点,得到各个匹配组。例如,假设,第一拓扑地图中包含的节点1-节点10,以及第二拓扑地图中包含的节点a、节点b、节点c,得到30个匹配组,其中,匹配组1包含节点1和节点a,其他匹配组不再赘述。
[0171]
s10212、针对每个匹配组,若匹配组x中节点i对应的第一边长集合,为匹配组x中
节点j对应的第二边长集合的子集,则重定位装置确定匹配组x中的节点i和节点j匹配成功。
[0172]
匹配组x为各个匹配组中的任意一个匹配组,匹配组x中包含节点i和节点j。
[0173]
以匹配组x为匹配组1为例,匹配组1包含节点1和节点a,节点1为图2所示的第一拓扑地图中的一个第一节点,节点a为第二拓扑地图中一个节点类型为角点的第一节点。与节点1连接的边包括边1、边3、边4,即,节点1对应的第一边长集合中包含与节点1连接的边1、边3、边4的边长,也就是说,节点1对应的第一边长集合中包含与节点1连接的边1、边3、边4的边距离,假设,边1、边3、边4的边距离分别为0、15、0,节点1对应的第一边长集合为{0,15,0},节点a对应的第二边长集合为{0,15,20,0},此时,节点1对应的第一边长集合,为节点a对应的第二边长集合的子集,重定位装置确定匹配组1中的节点1和节点a匹配成功。
[0174]
s1022、重定位装置基于匹配成功的第一节点和第二节点,获得目标组,并基于获得的各个目标组,得到n个候选位姿。
[0175]
下面,仅以目标组x为例进行说明,目标组x为各个目标组中的任意一个目标组,目标组x中包含一个第一节点(节点x1)和一个第二节点(节点x2)。
[0176]
根据节点x1和节点x2的节点类型,存在以下两种可能的情况:
[0177]
第一种可能的情况:节点x1和节点x2的节点类型为角点。
[0178]
具体的,重定位装置基于目标组x中的节点x1的第一节点坐标,确定第一距离、第二距离和机器人的姿态角;其中,目标组x中的节点x1为第一线段和第二线段之间的角点,第一距离用于表征机器人与第一线段之间的距离,第二距离用于表征机器人与第二线段之间的距离;
[0179]
基于第一距离和第二距离,以及基于目标组x中节点x2的第二节点坐标,确定机器人在全局坐标系下的候选位置;
[0180]
基于姿态角,以及候选位置,得到候选位姿。
[0181]
其中,第二节点坐标用于表征相应的第二节点在全局坐标系下的坐标。
[0182]
例如,参阅图4所示,重定位装置基于目标组x中的节点x1的第一节点坐标,确定第一距离为l1、第二距离为l2、机器人的姿态角为θ1,其中,节点x1为线段1和线段2的交点。基于第一距离l1、第二距离l2,以及节点x2的第二节点坐标,确定机器人在全局坐标系下的候选位置1、候选位置2,基于姿态角θ1,以及候选位置1、候选位置2,得到候选位姿1和候选位姿2,其中,候选位姿1为t1=[x1,y1,θ1],候选位姿2为ti=[x2,y2,θ1]。
[0183]
需要说明的是,本公开实施例中,候选位姿也可以称为可能的位姿解,候选位姿ti=[xi,yi,θi],其中,xi表示机器人在全局坐标系下的x轴上的坐标,yi表示机器人在全局坐标系下的y轴上的坐标,θi表示以全局坐标系为参考,激光雷达坐标系与全局坐标系之间的偏移角度,θi也可以理解为机器人在全局坐标系下的朝向。
[0184]
第二种可能的情况:节点x1和节点x2的节点类型为线段。
[0185]
具体的,重定位装置基于目标组x中的节点x1的第一节点坐标,确定第三距离和机器人的姿态角;其中,第三距离用于表征机器人与节点x1对应的第三线段之间的距离;基于目标组x中节点x2的第二节点坐标、姿态角、以及第三距离,得到机器人在全局坐标系下的至少一个候选位姿。
[0186]
例如,参阅图5所示,重定位装置基于目标组x中的节点x1的第一节点坐标,确定第
三距离为l3、机器人的姿态角为θ2,基于目标组x中节点x2的第二节点坐标、姿态角θ2、以及第三距离l3,得到机器人在全局坐标系下的候选位姿1、候选位姿2、
……
、候选位姿n。
[0187]
其中,至少一个候选位姿可以是将节点x1对应的线段,按照设定的滑动步长,从节点x2对应的线段的一端滑动到另一端得到的。
[0188]
本公开实施例中,设定的滑动步长可以根据栅格地图的栅格分辨率(resolution)确定,栅格分辨率包括全局坐标系中两个坐标轴的单位分辨率,x轴的单位分辨率xres和y轴的单位分辨率yres,作为一种举例,xres和yres的取值可以相同,作为另一种举例,xres和yres的取值也可以不相同,本实施例对于栅格分辨率的具体取值不做限定。
[0189]
s103、重定位装置根据n个候选位姿,确定单帧点云数据在全局坐标系下的n组坐标,并根据n组坐标分别对应的栅格的栅格占据概率,从n个候选位姿中确定出机器人的目标位姿,其中,目标位姿用于表征机器人开机时在全局坐标系下的位姿,每个栅格的栅格占据概率用于表征相应的栅格内存在物体的概率。
[0190]
具体的,重定位装置根据n个候选位姿,确定单帧点云数据在全局坐标系下的n组坐标时,可以采用但不限于以下步骤:
[0191]
b1、重定位装置根据n个候选位姿,分别将单帧点云数据从激光雷达坐标系转换到全局坐标系,得到全局坐标系下的n组坐标。其中,每个候选位姿对应一组坐标。
[0192]
本公开实施例中,根据n个候选位姿中的任意一个候选位姿ti=[xi,yi,θi],可以采用以下公式(4)将单帧点云数据从激光雷达坐标系转换到全局坐标系:
[0193]
x

=cosθi*x sinθi*y xi[0194]y′
=-sinθi*x cosθi*y yi[0195]
其中,(x,y)表示激光雷达坐标系下的点云数据,(x

,y

)表示全局坐标系下的点云数据。
[0196]
b2、重定位装置针对n组坐标中的任意一组坐标,若任意一组坐标中的任意一个坐标所属的栅格的栅格占据概率大于预设阈值,则将任意一组坐标对应的候选位姿的第二匹配得分增加第一设定值,否则将任意一组坐标对应的候选位姿的第二匹配得分减去第二设定值。
[0197]
针对n组坐标中的任意一组坐标,可以采用以下公式(5),计算得到任意一组坐标中任意一个坐标所属的栅格的序号:
[0198][0199][0200]
其中,(id
x
,idy)表示栅格的序号,(x0,y0)表示栅格地图的原点坐标。
[0201]
例如,假设,第一设定值和第二设定值的取值均为1,预设阈值为1,那么,若任意一组坐标中的任意一个坐标所属的栅格的栅格占据概率大于0,则将任意一组坐标对应的候选位姿的第二匹配得分增加1,否则将任意一组坐标对应的第二候选位姿的匹配得分减去1。
[0202]
b3、重定位装置将n个候选位姿中第二匹配得分最高的候选位姿,作为机器人的目
标位姿。
[0203]
其中,目标位姿用于表征机器人开机时在全局坐标系下的位姿,机器人的位姿包括机器人的位置和姿态,以候选位姿ti为例,机器人的位置为(xi,yi),机器人的姿态为θi。
[0204]
示例性的,重定位装置可以按照第二匹配得分的取值,对候选位姿进行排序,得到候选位姿序列,进而从候选位姿序列中选取第二匹配得分最高的候选位姿,作为目标位姿。
[0205]
例如,假设,候选位姿t1、候选位姿t2、候选位姿t3的第二匹配得分的取值分别为30、50、90,则将候选位姿t3作为机器人的目标位姿。
[0206]
在一些实施例中,考虑到候选位姿较多的情况下,计算量较大,为了进一步提高匹配效率,重定位装置在基于第一拓扑地图和第二拓扑地图,得到n个候选位姿之后,还可以从n个候选位姿中,确定出m个候选位姿,进而从m个候选位姿中确定机器人的目标位姿。具体的,从n个候选位姿中,确定出m个候选位姿,可以采用但不限于以下步骤:
[0207]
c1、重定位装置根据n个候选位姿,分别基于第一拓扑地图中包含的各个第一节点在激光雷达坐标系下的第一节点坐标,得到各个第一节点在全局坐标系下的第三节点坐标。
[0208]
执行c1时,可以采用上述公式(4),计算得到第一节点在全局坐标系下的第三节点坐标,在此不再赘述。本公开实施例中,第一节点的第三节点坐标用于表征第一节点在全局坐标系下的坐标。
[0209]
c2、重定位装置根据各个第一节点的第三节点坐标,确定n个候选位姿分别对应的第一匹配得分。
[0210]
其中,第一匹配得分是指第一拓扑地图中包含的各个第一节点中存在的目标节点的数目,目标节点是指:与第二拓扑地图中任意一个节点类型相同的第二节点之间的距离,小于或等于预设门限的第一节点。
[0211]
下面以节点i为例进行说明,节点i为第一拓扑地图中包含的各个第一节点中的任意一个第一节点。
[0212]
具体的,根据节点i的节点类型,存在以下几种情况:
[0213]
情况一:节点i的节点类型为角点。此时,节点i与节点类型相同的第二节点之间的距离可以采用公式(1)计算得到,在此不再赘述。
[0214]
例如,预设门限为2*resolution,若第二拓扑地图中存在与节点i的节点类型相同,且与节点i之间的距离小于或等于2*resolution的第二节点,则将节点i作为一个目标节点。
[0215]
情况二:节点i的节点类型为线段。若节点i的节点类型为线段,节点i与节点类型相同的第二节点之间的距离,也可以理解为节点i与节点类型相同的第二节点之间的夹角,预设门限采用角度门限值。此时,节点i与节点类型相同的第二节点之间的距离可以采用公式(3)计算得到,在此不再赘述。
[0216]
例如,预设门限为1
°
,若第二拓扑地图中存在与节点i的节点类型相同,且与节点i之间的距离小于或等于1
°
的第二节点,则将节点i作为一个目标节点。
[0217]
在一些实施例中,重定位装置还可以将与第二拓扑地图中任意一个节点类型相同的第二节点之间的夹角,小于或等于预设的角度门限值,且第三节点坐标符合预设范围的第一节点作为一个目标节点。假设,节点i的第三节点坐标为(x1’,y1’)、(x2’,y2’),节点类
型为线段的任意一个第二节点的第二节点坐标为(x0,y0)、(x1,y1),第三节点坐标符合预设范围可以是指x1’,x2’∈[min(x0,x1),max(x0,x1)],y1’,y2’∈[min(y0,y1),max(y0,y1)]。
[0218]
c3、重定位装置根据n个候选位姿各自对应的第一匹配得分,从n个候选位姿中选取m个候选位姿。其中,m的取值小于或等于n,m、n均为正整数。
[0219]
示例性的,重定位装置可以对n个候选位姿进行排序,得到候选位姿序列,基于候选位姿序列,得到m个候选位姿。重定位装置可以按照从大到小的顺序对n个候选位姿进行排序。作为另一种可能的实现方式,重定位装置也可以按照从小到大的顺序对n个候选位姿进行排序,本公开对此不作限制。下面仅以按照从大到小排序为例进行说明。
[0220]
例如,假设,m的取值为2,重定位装置得到10个候选位姿,10个候选位姿分别为t1、t2、t3、
……
、t10,重定位根据10个候选位姿各自对应的第一匹配得分,按照从大到小的顺序,对10个候选位姿进行排序,得到候选位姿序列为t10、t2、
……
、t1、t3。重定位装置从候选位姿序列为t10、t2、
……
、t1、t3中,选取t10、t2,进而基于t10、t2,分别确定单帧点云数据在所述全局坐标系下的坐标。
[0221]
在根据n个候选位姿,分别确定单帧点云数据在全局坐标系下的坐标,并根据n组坐标分别对应的栅格的栅格占据概率,从n个候选位姿中确定出机器人的目标位姿的过程中,重定位装置可以根据选取出的m个候选位姿,分别确定单帧点云数据在全局坐标系下的坐标,并根据m组坐标分别对应的栅格的栅格占据概率,从m个候选位姿中确定出机器人的目标位姿。由于根据m个候选位姿确定目标位姿的过程与根据n个候选位姿确定目标位姿的过程相同,在此不再赘述。
[0222]
在一些实施例中,重定位装置在获取到n个候选位姿中第二匹配得分最高的候选位姿后,可以直接将该候选位姿直接作为机器人的目标位姿。
[0223]
作为另一些实施例中,考虑到获取到的n个候选位姿中第二匹配得分最高的候选位姿的精度为resolution,为保证重定位结果的准确性,获取机器人的目标位姿时,还可以采取但不限于以下步骤:
[0224]
重定位装置采用优化算法,对n个候选位姿中第二匹配得分最高的候选位姿进行优化,得到优化后的候选位姿;将优化后的候选位姿作为机器人的目标位姿。
[0225]
本公开实施例中,优化算法可以采用但不限于迭代最近点(iterative closest point,icp)算法、相关性匹配(correlation scan match,csm)算法等激光帧-地图的匹配算法。
[0226]
例如,重定位装置采用icp算法,对n个候选位姿中第二匹配得分最高的候选位姿tbest进行优化,得到优化后的候选位姿,将优化后的候选位姿作为机器人的目标位姿。
[0227]
在一些实施例中,考虑到采集到的单帧点云数据中,各个点云数据可能是离散分布的,因此,重定位装置无法从单帧点云数据中提取出线段,进而,无法获得第一拓扑地图,因此,本公开实施中,针对未提取出第一拓扑地图的情况,获取n个候选位姿时,重定位装置可以采用但不限于以下方式:
[0228]
若重定位装置对单帧点云数据进行特征提取后,未得到第一拓扑地图,则根据设置的扩展距离,扩展栅格地图的边界,得到扩展地图;将所有解作为候选位姿,得到n个候选位姿,其中,所有解为机器人在扩展地图中全部位置的位姿。
[0229]
需要说明的是,本公开实施例中,扩展距离可以根据栅格地图的栅格分辨率设置,例如,假设,栅格地图的栅格分辨率为resolution,扩展距离可以是resolution,也可以是2*resolution,本公开对此不作限制。
[0230]
例如,假设,栅格地图的栅格分辨率为resolution,设置的扩展距离为d,d的取值为resolution,参阅图6所示,若重定位装置对单帧点云数据进行特征提取后,未能得到第一拓扑地图,则根据设置的扩展距离d,扩展栅格地图的边界,得到扩展地图。
[0231]
扩展地图的左下角的坐标为(xd,yd),扩展地图的长宽分别为w,h,在x轴方向上的单位步长为resolution,总步长为nd=w/resolution;
[0232]
在y轴方向上的单位步长为resolution,总步长为nh=h/resolution;
[0233]
每个位置处的单位角度步长总角度步长为na=2π/δa。
[0234]
因此,所有解的数目为nd*nh*na个,其中,任意一个解t=[xd i*resolution,yd j*resolution,k*δa],其中,i∈[0,nd],j∈[0,nh],k∈[0,na]。
[0235]
需要说明的是,若重定位装置未得到第一拓扑地图,进而根据第一拓扑地图,与第二拓扑地图进行匹配的过程中,可以将每个解的第一匹配得分设置为0。
[0236]
综上所述,本公开实施例中,重定位装置对机器人的激光雷达采集的单帧点云数据进行特征提取,得到第一拓扑地图后,基于全局坐标系下构建的栅格地图进行特征提取得到的第二拓扑地图,以及基于第一拓扑地图,得到n个候选位姿,然后,根据n个候选位姿,确定单帧点云数据在全局坐标系下的n组坐标,并根据n组坐标分别对应的栅格的栅格占据概率,从n个候选位姿中确定出机器人的目标位姿,其中,目标位姿用于表征机器人开机时在全局坐标系下的位置和姿态,栅格的栅格占据概率用于表征栅格内存在物体的概率。
[0237]
这样,本公开实施例中,重定位装置基于单帧点云数据与栅格地图,即可得到机器人开机时在全局坐标系下的位姿,降低了重定位的操作复杂度,提高了重定位效率,且保证了重定位准确率,同时,由于仅需要单帧点云数据,因此无需进行机器人的移动,避免了机器人在移动过程中发生碰撞。
[0238]
基于同一发明构思,参阅图7所示,其为本公开实施例中提供的一种重定位装置,该重定位装置700中至少包括:提取单元701、匹配单元702和确定单元703。
[0239]
提取单元701,用于获取机器人的激光雷达采集的激光雷达坐标系下的单帧点云数据,并对所述单帧点云数据进行特征提取,得到第一拓扑地图;
[0240]
匹配单元702,用于基于所述第一拓扑地图和第二拓扑地图,得到n个候选位姿,其中,所述第二拓扑地图是基于全局坐标系下构建的栅格地图进行特征提取得到的;
[0241]
确定单元703,用于根据所述n个候选位姿,确定所述单帧点云数据在所述全局坐标系下的n组坐标,并根据所述n组坐标分别对应的栅格的栅格占据概率,从所述n个候选位姿中确定出所述机器人的目标位姿,其中,所述目标位姿用于表征所述机器人开机时在所述全局坐标系下的位姿,每个栅格的栅格占据概率用于表征相应的栅格内存在物体的概率。
[0242]
可选的,基于所述第一拓扑地图和第二拓扑地图,得到n个候选位姿时,所述匹配单元702具体用于:
[0243]
基于所述第一拓扑地图中包含的各个第一节点各自对应的第一边长集合,以及基于所述第二拓扑地图中包含的各个第二节点各自对应的第二边长集合,将所述各个第一节点与所述各个第二节点进行匹配;其中,每个第一边长集合包含与对应的第一节点连接的边的边长,每个第二边长集合包含与对应的第二节点连接的边的边长;
[0244]
将匹配成功的第一节点和第二节点,作为目标组,并基于获得的各个目标组,得到n个候选位姿。
[0245]
可选的,基于所述第一拓扑地图中包含的各个第一节点各自对应的第一边长集合,以及基于所述第二拓扑地图中包含的各个第二节点各自对应的第二边长集合,将所述各个第一节点与所述各个第二节点进行匹配时,所述匹配单元702具体用于:
[0246]
基于所述第一拓扑地图中包含的各个第一节点,以及所述第二拓扑地图中包含的各个第二节点,得到各个匹配组,其中,每个匹配组中包含节点类型相同的一个第一节点和一个第二节点;
[0247]
针对每个匹配组,若一个匹配组中第一节点对应的第一边长集合,为同一个匹配组中第二节点对应的第二边长集合的子集,则确定所述一个匹配组中的第一节点和第二节点匹配成功。
[0248]
可选的,基于所述第一拓扑地图中包含的各个第一节点,以及所述第二拓扑地图中包含的各个第二节点,得到各个匹配组时,所述匹配单元702具体用于:
[0249]
从所述第一拓扑地图中,依次选取出连接的边的数量最多的第一节点,作为目标多层子图中的一个第一节点,直至所述第一拓扑地图为空,得到目标多层子图,其中,每选取出一个第一节点,将与所述一个第一节点连接的节点从所述第一拓扑地图中删除,所述目标多层子图中每一层中包含一个第一节点;
[0250]
基于所述目标多层子图中包含的各个第一节点,以及所述第二拓扑地图中包含的各个第二节点,得到各个匹配组。
[0251]
可选的,基于获得的各个目标组,得到n个候选位姿时,所述匹配单元702具体用于:
[0252]
若任意一个目标组中包含的第一节点和第二节点的节点类型为角点,则基于所述任意一个目标组中的第一节点的第一节点坐标,确定第一距离、第二距离和所述机器人的姿态角;其中,所述任意一个目标组中的第一节点为第一线段和第二线段之间的角点,所述第一距离用于表征所述机器人与所述第一线段之间的距离,所述第二距离用于表征所述机器人与所述第二线段之间的距离;
[0253]
基于所述第一距离和所述第二距离,以及基于同一个目标组中的第二节点的第二节点坐标,确定所述机器人在所述全局坐标系下的候选位置;
[0254]
基于所述姿态角,以及所述候选位置,得到候选位姿。
[0255]
可选的,基于获得的各个目标组,得到n个候选位姿时,所述匹配单元702具体用于:
[0256]
若任意一个目标组中包含的第一节点和第二节点的节点类型为线段,则基于所述任意一个目标组中的第一节点的第一节点坐标,确定第三距离和所述机器人的姿态角;其中,所述第三距离用于表征所述机器人与第三线段之间的距离;
[0257]
基于同一个目标组中的第二节点的第二节点坐标、所述姿态角、以及所述第三距
离,得到所述机器人在所述全局坐标系下的至少一个候选位姿。
[0258]
可选的,基于所述第一拓扑地图和第二拓扑地图,得到n个候选位姿之后,所述匹配单元702还用于:
[0259]
根据所述n个候选位姿,分别基于所述第一拓扑地图中包含的各个第一节点在激光雷达坐标系下的第一节点坐标,得到所述各个第一节点在全局坐标系下的第三节点坐标;
[0260]
根据所述各个第一节点的第三节点坐标,确定所述n个候选位姿分别对应的第一匹配得分,其中,所述第一匹配得分是指所述各个第一节点中存在的目标节点的数目,所述目标节点是指与所述第二拓扑地图中,任意一个节点类型相同的第二节点之间的距离,小于或等于预设门限的第一节点;
[0261]
根据所述n个候选位姿各自对应的第一匹配得分,从所述n个候选位姿中选取m个候选位姿;其中,m的取值小于n的取值;
[0262]
根据所述n个候选位姿,分别确定所述单帧点云数据在所述全局坐标系下的坐标,并根据所述n组坐标分别对应的栅格的栅格占据概率,从所述n个候选位姿中确定出所述机器人的目标位姿时,所述确定单元703具体用于:
[0263]
根据选取出的m个候选位姿,分别确定所述单帧点云数据在所述全局坐标系下的坐标,并根据所述m组坐标分别对应的栅格的栅格占据概率,从所述m个候选位姿中确定出所述机器人的目标位姿。
[0264]
可选的,根据所述n个候选位姿,确定所述单帧点云数据在所述全局坐标系下的n组坐标,并根据所述n组坐标分别对应的栅格的栅格占据概率,从所述n个候选位姿中确定出所述机器人的目标位姿时,所述确定单元703具体用于:
[0265]
根据所述n个候选位姿,分别将所述单帧点云数据从激光雷达坐标系转换到所述全局坐标系,得到所述全局坐标系下的n组坐标;其中,每个候选位姿对应一组坐标;
[0266]
针对所述n组坐标中的任意一组坐标,若所述任意一组坐标中的任意一个坐标所属的栅格的栅格占据概率大于预设阈值,则将所述任意一组坐标对应的候选位姿的第二匹配得分增加第一设定值,否则将所述任意一组坐标对应的候选位姿的第二匹配得分减去第二设定值;
[0267]
将n个候选位姿中第二匹配得分最高的候选位姿,作为所述机器人的目标位姿。
[0268]
可选的,将n个候选位姿中匹配得分最高的候选位姿,作为所述机器人的目标位姿时,所述确定单元703具体用于:
[0269]
采用优化算法,对n个候选位姿中匹配得分最高的候选位姿进行优化,得到优化后的候选位姿;
[0270]
将所述优化后的候选位姿作为所述机器人的目标位姿。
[0271]
可选的,所述确定单元703还用于:
[0272]
若对所述单帧点云数据进行特征提取后,未得到第一拓扑地图,则根据设置的扩展距离,扩展所述栅格地图的边界,得到扩展地图;
[0273]
将所有解作为候选位姿,得到n个候选位姿,其中,所述所有解为所述机器人在所述扩展地图中全部位置的位姿。
[0274]
在介绍了本公开示例性实施方式的一种重定位方法及装置之后,接下来,介绍根
据本公开的另一示例性实施方式的电子设备。
[0275]
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为系统、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
[0276]
在一些可能的实施方式中,根据本公开的电子设备可以至少包括至少一个处理器、以及至少一个计算机存储介质。其中,计算机存储介质存储有程序代码,当程序代码被处理器执行时,使得处理器执行本说明书上述描述的根据本公开各种示例性实施方式的重定位方法中的步骤。例如,处理器可以执行如图1、3中所示的步骤。
[0277]
下面参照图8来描述根据本公开的这种实施方式的电子设备800。图8所示的电子设备800仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
[0278]
如图8所示,电子设备800以通用电子设备的形式表现。电子设备800的组件可以包括但不限于:上述至少一个处理器801、上述至少一个计算机存储介质802、连接不同系统组件(包括计算机存储介质802和处理器801)的总线803。
[0279]
总线803表示几类总线结构中的一种或多种,包括计算机存储介质总线或者计算机存储介质控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
[0280]
计算机存储介质802可以包括易失性计算机存储介质形式的可读介质,例如随机存取计算机存储介质(ram)821和/或高速缓存存储介质822,还可以进一步包括只读计算机存储介质(rom)823。
[0281]
计算机存储介质802还可以包括具有一组(至少一个)程序模块824的程序/实用工具825,这样的程序模块824包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0282]
电子设备800也可以与一个或多个外部设备804(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与电子设备800交互的设备通信,和/或与使得该电子设备800能与一个或多个其它电子设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口805进行。并且,电子设备800还可以通过网络适配器806与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器806通过总线803与用于电子设备800的其它模块通信。应当理解,尽管图中未示出,可以结合电子设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
[0283]
在一些可能的实施方式中,本公开提供的重定位方法方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本公开各种示例性实施方式的重定位方法中的步骤。
[0284]
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非
穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取计算机存储介质(ram)、只读计算机存储介质(rom)、可擦式可编程只读计算机存储介质(eprom或闪存)、光纤、便携式紧凑盘只读计算机存储介质(cd-rom)、光计算机存储介质件、磁计算机存储介质件、或者上述的任意合适的组合。
[0285]
程序产品可以采用便携式紧凑盘只读计算机存储介质(cd-rom)并包括程序代码,并可以在电子设备上运行。然而,本公开的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0286]
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0287]
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、rf等等,或者上述的任意合适的组合。
[0288]
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言-诸如java、c 等,还包括常规的过程式程序设计语言-诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户电子设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户电子设备上部分在远程电子设备上执行、或者完全在远程电子设备或服务器上执行。在涉及远程电子设备的情形中,远程电子设备可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户电子设备,或者,可以连接到外部电子设备(例如利用因特网服务提供商来通过因特网连接)。
[0289]
应当注意,尽管在上文详细描述中提及了装置的若干模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
[0290]
此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
[0291]
本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘计算机存储介质、cd-rom、光学计算机存储介质等)上实施的计算机程序产品的形式。
[0292]
本公开是参照根据本公开的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到
通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0293]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读计算机存储介质中,使得存储在该计算机可读计算机存储介质中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0294]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0295]
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献