1.本技术涉及自动驾驶技术和机器人技术领域,尤其是涉及基于已知地图的语义重定位方法、装置、电子设备及介质。
背景技术:2.自动驾驶车辆或移动机器人实现自主定位,需要自动驾驶车辆或移动机器人作为载具,在载具上安装激光雷达、摄像头等传感器来进行建图(mapping)和定位(localization),该过程称为slam(simultaneous localization and mapping)技术。首先,根据传感器提供的环境信息建立地图。地图的类型有多种,一般为2d栅格地图、3d栅格地图、2d点云地图、3d点云地图、几何拓扑地图等;然后,使用建立好的已知地图,通过当前实时采集的传感器数据,确定载具在已知地图中的位置和姿态,实现实时定位。
3.在已知地图上实现定位,首先需要提供载具的初始位置和姿态,通常情况下载具的初始位置和姿态是未知的,在没有人工和外部设备帮助的情况下,需要通过传感器采集的环境信息自主进行位置和姿态判断,这一过程叫做重定位技术或重定位功能。重定位之后得到了载具的初始位置和姿态,在此基础上开始在已知地图上实时定位。除了定位初始时使用重定位功能,在载具行驶的过程中也可能使用到重定位,比如在场景退化导致的定位丢失之后,需要重定位来再次找回载具的位置和姿态,恢复定位。
4.相关技术中,《scan context:egocentric spatial descriptor for place recognition within 3d point cloud map》发表了一篇《一种基于3d点云的场景识别技术》,该技术将3d点云投影到xy平面,以激光雷达为中心建立scan context作为关键帧的描述子(descriptor),以scan context的ringkey为节点建立k-dimensional树(kd-tree)以便后续快速搜索。当设备回到历史某一时刻的坐标位置时,根据当前的scan context的ringkey在kd-tree中快速搜索出多个候选帧,通过旋转的方式进行scan context之间的匹配,若最高的匹配相似度大于预设值,则认为检测到回环,最后将匹配的位姿信息发送给后端。
5.基于scan-context,虽然可以对历史描述子进行快速匹配,完成一部分重定位的功能,但是该技术不具备平移不变性,通过旋转的方式进行scan context匹配只能计算出两帧之间设备的旋转角度,并不能计算出设备在x和y方向的偏移,载具在相同场景的不同位置很难重识别成功,造成重定位的不准确。
技术实现要素:6.为了提高重定位的准确度,本技术提供基于已知地图的语义重定位方法、装置、电子设备及介质。
7.第一方面,本技术提供一种基于已知地图的语义重定位方法,采用如下的技术方案:一种基于已知地图的语义重定位方法,包括:根据当前传感器获取到的点云数据建立子地图;
提取所述子地图中的至少一个所述第一对象,建立每个所述第一对象的描述子;提取获取到的已知地图中的至少一个所述第二对象,建立每个所述第二对象的描述子;将每个所述第一对象的描述子与每个所述第二对象的描述子进行相似度计算;在所有所述第二对象中确定相似度最高的所述第二对象作为配准对象;根据所述配准对象在所述已知地图中的位置以及所述当前传感器在所述子地图中的位姿,生成所述载具在所述已知地图中的位姿。
8.通过采用上述技术方案,在子地图中提取环境中的第一对象并建立每个第一对象的描述子,在已知地图中的环境中提取第二对象并建立第二对象的描述子,将每个所述第一对象的描述子与每个所述第二对象的描述子进行相似度计算,确定与第一对象相似度最高的配准对象,则说明载具已行驶至已知地图相应的已知区域(配准对象在已知地图中的区域),此时,只需要确定载具/当前传感器在子地图中的位姿,即可确定载具/传感器在已知地图中的位姿,且在同一场景中能够识别出载具/传感器在该场景下的不同位置,即实现了重定位。本技术无需依赖外部定位传感器(如gps和rtk等),只需要根据当前传感器采集行驶环境的3d点云数据,即可实现载具在已知地图中的重定位;且通过在载具移动过程中,通过当前传感器采集可行驶区域的3d点云数据,可充分采集环境信息,使得重定位准确度更高。
9.在另一种可能的实现方式中,所述根据当前传感器获取到的点云数据,并建立所述子地图,包括:根据所述当前传感器采集到的点云数据生成可行驶区域;根据所述当前传感器在所述可行驶区域内获取的点云数据,并建立所述子地图。
10.在另一种可能的实现方式中,所述根据所述当前传感器采集到的点云数据生成可行驶区域,包括:根据所述当前传感器采集到的3d点云数据生成2d栅格地图;根据泛洪算法在所述2d栅格地图中生成所述可行驶区域。
11.在另一种可能的实现方式中,所述提取获取到的所述已知地图中的至少一个所述第二对象,建立每个所述第二对象的描述子,包括:提取所述已知地图的语义对象;基于已知地图的建图轨迹以及每个语义对象在所述建图轨迹中的出现频次,在所有所述语义对象中确定至少一个所述第二对象;以所述第二对象为中心建立所述第二对象的描述子。
12.在另一种可能的实现方式中,所述提取所述已知地图的语义对象,包括:将所述已知地图的建图轨迹离散为里程点;以每个所述里程点为中心,在所述已知地图的点云中进行点云分割,以生成分割点云;基于语义分割网络生成每个所述分割点云中每个点的语义标签;根据所述每个点的语义标签识别所述已知地图中的语义对象。
13.在另一种可能的实现方式中,所述根据每个点的语义标签识别已知地图中的语义对象,之后还包括:
若任一语义对象对应范围内带有其他标签的点的数量大于数量阈值,则剔除所述语义对象对应的语义标签。
14.在另一种可能的实现方式中,所述根据每个点的语义标签识别已知地图中的语义对象,之后还包括:剔除所有所述语义对象中的动态对象。
15.在另一种可能的实现方式中,所述基于已知地图的建图轨迹以及每个语义对象在所述建图轨迹中的出现频次,在所有所述语义对象中确定至少一个所述第二对象,包括:获取所述已知地图的建图轨迹对应的里程点,以及每个所述语义对象在每个里程点中的出现频次;确定每个语义对象的可用性评估值、分布平均值和标准差;基于所述每个语义对象的可用性评估值、分布平均值和标准差确定每个所述语义对象的分数;基于所述每个语义对象的分数确定至少一个所述第二对象。
16.在另一种可能的实现方式中,根据所述配准对象在所述已知地图中的位置以及所述当前传感器在所述子地图中的位姿,生成载具在所述已知地图中的位姿,包括:根据每个所述配准对象在所述已知地图的位置以及所述当前传感器在所述子地图中的位姿确定位姿集合;对位姿集合进行聚类生成偏移位姿;根据偏移位姿以及所述当前传感器与载具的位置关系,生成所述载具在所述已知地图中的位姿。
17.在另一种可能的实现方式中,所述根据每个所述配准对象在所述已知地图的位置以及所述当前传感器在所述子地图中的位姿确定位姿集合,包括:确定单个所述配准对象在所述已知地图坐标系中的第一坐标;确定与所述配准对象对应的所述第一对象在所述子地图坐标系的第二坐标;基于所述第一坐标、所述第二坐标以及所述当前传感器在所述子地图中的位姿确定所述当前传感器在所述已知地图中的候选位姿;根据所有所述候选位姿生成位姿集合。
18.在另一种可能的实现方式中,所述第二对象中确定相似度最高的所述第二对象作为配准对象之前,还包括:生成所述第二对象的描述子的环特征向量,根据所述环特征向量构建多维树结构。
19.第二方面,本技术提供一种基于已知地图的语义重定位装置,采用如下的技术方案:一种基于已知地图的语义重定位装置,包括:子地图建立模块,用于根据当前传感器获取到的点云数据建立子地图;第一对象提取模块,用于提取所述子地图中的至少一个所述第一对象,建立每个所述第一对象的描述;第二对象提取模块,用于提取获取到的已知地图中的至少一个所述第二对象,建立每个所述第二对象的描述子;相似度计算模块,用于将每个所述第一对象的描述子与每个所述第二对象的描述子进行相似度计算;确定模块,用于在所有所述第二对象中确定相似度最高的所述第二对象作为配准
对象;重定位模块,用于根据所述配准对象在所述已知地图中的位置以及所述当前传感器在所述子地图中的位姿,生成所述载具在所述已知地图中的位姿。
20.在另一种可能的实现方式中,子地图建立模块在所述根据当前传感器获取到的点云数据,并建立所述子地图时,具体用于:根据所述当前传感器采集到的点云数据生成可行驶区域;根据所述当前传感器在所述可行驶区域内获取的点云数据,并建立所述子地图。
21.在另一种可能的实现方式中,所述子地图建立模块在根据所述当前传感器采集到的点云数据生成可行驶区域时,具体用于:根据所述当前传感器采集到的3d点云数据生成2d栅格地图;根据泛洪算法在所述2d栅格地图中生成所述可行驶区域。
22.在另一种可能的实现方式中,所述第二对象提取模块所述提取获取到的所述已知地图中的至少一个所述第二对象,建立每个所述第二对象的描述子时,具体用于:提取所述已知地图的语义对象;基于已知地图的建图轨迹以及每个语义对象在所述建图轨迹中的出现频次,在所有所述语义对象中确定至少一个所述第二对象;以所述第二对象为中心建立所述第二对象的描述子。
23.在另一种可能的实现方式中,所述第二对象提取模块在所述提取所述已知地图的语义对象时,具体用于:将所述已知地图的建图轨迹离散为里程点;以每个所述里程点为中心,在所述已知地图的点云中进行点云分割,以生成分割点云;基于语义分割网络生成每个所述分割点云中每个点的语义标签;根据所述每个点的语义标签识别所述已知地图中的语义对象。
24.在另一种可能的实现方式中,所述第二对象提取模块还包括剔除模块,所述剔除模块,用于:在所述根据每个点的语义标签识别已知地图中的语义对象之后,若任一语义对象对应范围内带有其他标签的点的数量大于数量阈值,则剔除所述语义对象对应的语义标签。
25.在另一种可能的实现方式中,所述剔除模块在所述根据每个点的语义标签识别已知地图中的语义对象,之后还用于:剔除所有所述语义对象中的动态对象。
26.在另一种可能的实现方式中,所述第二对象提取模块在基于已知地图的建图轨迹以及每个语义对象在所述建图轨迹中的出现频次,在所有所述语义对象中确定至少一个所述第二对象,包括:获取所述已知地图的建图轨迹对应的里程点,以及每个所述语义对象在每个里程点中的出现频次;确定每个语义对象的可用性评估值、分布平均值和标准差;基于所述每个语义对象的可用性评估值、分布平均值和标准差确定每个所述语义对象的分数;基于所述每个语义对象的分数确定至少一个所述第二对象。
27.在另一种可能的实现方式中,所述重定位模块在根据所述配准对象在所述已知地图中的位置以及所述当前传感器在所述子地图中的位姿,生成载具在所述已知地图中的位姿,时,具体用于:根据每个所述配准对象在所述已知地图的位置以及所述当前传感器在所述子地图中的位姿确定位姿集合;对位姿集合进行聚类生成偏移位姿;根据偏移位姿以及所述当前传感器与载具的位置关系,生成所述载具在所述已知地图中的位姿。
28.在另一种可能的实现方式中,所述重定位模块在根据每个所述配准对象在所述已知地图的位置以及所述当前传感器在所述子地图中的位姿确定位姿集合时,具体用于:确定单个所述配准对象在所述已知地图坐标系中的第一坐标;确定与所述配准对象对应的所述第一对象在所述子地图坐标系的第二坐标;基于所述第一坐标、所述第二坐标以及所述当前传感器在所述子地图中的位姿确定所述当前传感器在所述已知地图中的候选位姿;根据所有所述候选位姿生成位姿集合。
29.在另一种可能的实现方式中,所述装置还包括搜索模块,所述在搜索模块用于:第二对象中确定相似度最高的所述第二对象作为配准对象之前,生成所述第二对象的描述子的环特征向量,根据所述环特征向量构建多维树结构。
30.第三方面,本技术提供一种电子设备,采用如下的技术方案:一种电子设备,该电子设备包括:一个或多个处理器;存储器;一个或多个应用程序,其中一个或多个应用程序被存储在存储器中并被配置为由一个或多个处理器执行,所述一个或多个应用程序配置用于:执行上述一种基于已知地图的语义重定位方法。
31.第四方面,本技术提供一种计算机可读存储介质,采用如下的技术方案:一种计算机可读存储介质,包括:存储有能够被处理器加载并执行上述一种基于已知地图的语义重定位方法的计算机程序。
32.综上所述,本技术包括以下至少有益技术效果:在子地图中提取环境中的第一对象并建立每个第一对象的描述子,在已知地图中的环境中提取第二对象并建立第二对象的描述子,将每个所述第一对象的描述子与每个所述第二对象的描述子进行相似度计算,在所有第二对象中确定与第一对象相似度最高的配准对象,则说明载具已行驶至已知地图相应的已知区域(配准对象在已知地图中的区域),此时,只需要确定载具/当前传感器在子地图中的位姿,即可确定载具/传感器在已知地图中的位姿,且在同一场景中能够识别出载具/传感器在该场景下的不同位置,即实现了重定位。本技术无需依赖外部定位传感器(如gps和rtk等),只需要根据当前传感器采集行驶环境的3d点云数据,即可实现载具在已知地图中的重定位;且通过在载具移动过程中,通过当前传感器采集可行驶区域的3d点云数据,可充分采集环境信息,使得重定位准确度更高。
附图说明
33.图1是本技术实施例基于已知地图的语义重定位方法的流程示意图;图2是本技术实施例可行驶区域的示意图;图3是本技术实施例频次分布直方图;图4是本技术实施例确定第二对象的描述子的示意图;图5是本技术实施例根据每个配准对象的描述子以及当前传感器在子地图中的位姿确定位姿集合;图6是本技术实施例基于已知地图的语义重定位装置的方框示意图;图7是本技术实施例电子设备的示意图。
具体实施方式
34.以下结合附图1-7对本技术作进一步详细说明。
35.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
36.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
37.为了方便理解本技术提出的技术方案,首先在此介绍本技术描述中会引入的几个要素。应理解的是,以下介绍仅方便理解这些要素,以期理解本技术实施例的内容,并非一定涵盖所有可能的情况。
38.(1)帧:当前传感器的数据以帧的形式读取,每一帧为某一时刻下的一包完整的传感器数据,帧发送接受频率是由载具所使用的系统决定的;(3)语义对象的描述子:以语义对象为中心,对周围点云类别和分布进行表示的一种形式,是指语义对象的朝向和周围像素信息。
39.(4)环特征向量:将对象的描述子按行求均值得到的列向量;(5)多维树结构:以环特征向量为节点构建的多维树结构,可以加速候选object scan context的搜索;(6)坐标系:本技术使用了直角坐标系和极坐标系,直角坐标系为笛卡尔直角坐标系右手系(向前为x轴,向上为z轴,向左为y轴),极坐标系定义从极轴开始逆时针旋转为极角的正方向;(7)位姿:本技术位姿为物体在2d空间的位置和姿态,位置为相对于地图坐标系x方向和y方向的坐标,相对于地图坐标系为x轴方向为正向的方位角theta;(8)2d栅格地图:在地图坐标系与x,y平面重合的地图数据类型,以x,y方向分布数个正方形栅格,每个栅格大小相等,每个栅格内部保存自定义的一个或多个数据,地图的大小由栅格大小和栅格数量决定;(9)2d栅格地图分辨率:地图中网格的边长,表示为米/栅格(m/grid),分辨率数值越大,2d栅格地图信息表述越粗糙,分辨率数值越小,2d栅格地图信息表述越精细;
(10)slam:实时建图和定位。
40.参照图1,本技术实施例提供了一种基于已知地图的语义重定位方法,由电子设备执行,该方法包括:步骤s101、根据当前传感器获取到的点云数据建立子地图。
41.具体地,当前传感器可以使用3d机械激光雷达、3d固态激光雷达、毫米波雷达、结构光相机、双目视觉相机、单目视觉相机等可以直接或通过算法间接提供环境3d点云信息的传感器。
42.建立子地图的方式为:载具在可行驶区域内行驶,在载具行驶的过程中,基于当前传感器生成点云数据,根据点云数据和slam算法建立子地图。
43.当前传感器的数据需要经过当前传感器相对载具中心的外参转换,将当前传感器数据转换到载具中心,本技术默认当前传感器数据已经过外参转换。
44.步骤s102、提取子地图中的至少一个第一对象,建立每个第一对象的描述子。
45.第一对象为从子地图中筛选得到的语义对象,第一对象的描述子是指对第一对象朝向和周围像素信息,识别语义对象时,使用语义分割或者语义对象检测技术在子地图中标记点云的语义对象信息。例如:3d激光雷达生成的点云可以使用rangenet或者rangenet++构建语义分割网络,摄像头类视觉传感器可以使用视觉语义对象检测的深度学习网络;如果载具同时搭载了视觉摄像头和激光雷达等多传感器,也可以使用多传感器直接的语义信息融合,例如将视觉传感器得到的图像语义信息通过外参转换投影到激光点云上。
46.进一步地,rangenet++网络还可以更换为其他3d点云语义分割网络,比如pointrcnn,pointnet++等等。还可以通过相机收集图像,使用图像语义分割网络处理图像获得语义图像,然后通过外参转换将语义图像投影到3d点云上,最终获得3d语义点云。
47.如果构建的子地图点云带有语义,即构建子地图的slam方法使用了语义相关的技术,如:激光雷达slam中的suma++,建立的点云数据带有语义分割信息,则可直接使用其语义信息。
48.步骤s103、提取获取到的已知地图中的至少一个第二对象,建立每个第二对象的描述子。
49.具体地,已知地图为直接获取的基于传感器建立的带有3d点云信息的地图,地图可以为带有语义标签的3d点云地图。
50.根据已知地图的类型(2d栅格地图、3d栅格地图、2d点云地图、3d点云地图、几何拓扑地图),通过相应的语义分割网络识别出已知地图中的语义对象,第二对象为从已知地图中筛选得到的语义对象,第二对象的描述子是指对第二对象朝向和周围像素信息。
51.步骤s104、将每个第一对象的描述子与每个第二对象的描述子进行相似度计算。
52.具体地,从多个子地图的语义对象以及已知地图的语义对象中筛选出有利于重定位的主对象(即第一对象和第二对象),过滤掉不利于重定位的语义对象,以提高重定位的准确性并降低计算量。
53.具体地,利用筛选出的每个第一对象的描述子与每个第二对象的描述子进行相似度计算的目的是判断第一对象的描述子和第二对象的描述子是否表达同一场景。
54.步骤s105、在所有第二对象中确定相似度最高的第二对象作为配准对象。
55.在每一组第一对象与第二对象进行相似度计算时,确定相似度最高的一组中的第
二对象作为配准对象,此时,配准对象的描述子表达的场景与其对应的第一对象表达的场景为同一场景。
56.步骤s106、根据配准对象在已知地图中的位姿以及当前传感器在子地图中的位姿,生成载具在已知地图中的位姿。
57.确定与第一对象相似度最高的配准对象,则说明载具已行驶至已知地图相应的已知区域(配准对象在已知地图中的区域),此时,只需要确定载具/当前传感器在子地图中的位姿,即可确定载具/传感器在已知地图中的位姿,且在同一场景中能够识别出载具/传感器在该场景下的不同位置,即实现了重定位。本技术无需依赖外部定位传感器(如gps和rtk等),只需要根据当前传感器采集行驶环境的3d点云数据,即可实现载具在已知地图中的重定位;且通过在载具移动过程中,通过当前传感器采集可行驶区域的3d点云数据,可充分采集环境信息,使得重定位准确度更高。
58.值得说明的是,图1仅是一种可能的执行顺序,在本技术实施例中,步骤s102可以在步骤s103之前执行,步骤s102以及步骤s103可以同时执行,步骤s103也可以在步骤s102之前执行,在本技术实施例中不做限定。
59.在一个具体的实施例中,步骤s101包括步骤s111、步骤s112和步骤s113,具体地,步骤s111(图中未示出)、根据当前传感器采集到的点云数据生成可行驶区域。具体包括:根据当前传感器采集到的3d点云数据生成2d栅格地图;根据泛洪算法在2d栅格地图中生成可行驶区域。
60.当前传感器直接或算法间接获得的3d点云数据为pi={p1,p2,...,pn},其中pi为第i帧点云数据,其内包含的点为p1,p2,...,pn共计n个点,p={x,y,z+为每个点在传感器坐标系下的三维空间的x,y,z的坐标值。
61.2d栅格地图表示为:gridmap2d={cell
ij
,i∈[-n
x
,n
x
],j∈[-ny,ny]+,其中celli为一个索引为i和j的栅格值,i为范围从-n
x
到n
x
的整数,j为范围从-ny到ny的整数,r为每个栅格的边长,单位为米;2d栅格分辨率为:0.1米/栅格;使用一帧点云中某点p的x,y值来确定点属于哪个栅格,取x/r的整数部分作为i,取y/r的整数部分作为j,所属的栅格cell
ij
中保存p的z值,代表该栅格的值;如果多个点属于同一个栅格,则取这些点的z值的平均值作为该栅格的值;没有点云点所属的栅格值设为空。
[0062]
使用泛洪算法,以载具中轴线载具前方1米处的栅格为起始点,搜索整张2d栅格地图,泛洪搜索是以所在栅格的4领域或8领域进行遍历,搜索的停止条件为相邻栅格的栅格值相差大于0.1米、遇到空值或者遇到地图边界;泛洪搜索到的所有栅格为可行驶区域,没有搜索到的区域为不可行驶区域。
[0063]
参照图2,为一张2d栅格地图,车辆周围的灰色区域为泛洪搜索出来的区域,即可行驶区域,白色区域为不可行驶区域。
[0064]
步骤s112(图中未示出)、根据当前传感器在可行驶区域内获取的点云数据,并建立子地图。具体地,控制载具行驶的路径规划模块和运动控制模块接收可行驶区域,以使得载具在可行驶区域内行驶,具体地,载具可在可行驶区域内低速行驶(小于15公里/小时)。使用当前传感器在可行驶区域内获取的点云数据以及slam技术建立子地图,设子地图为m
l
,子地图为包含可行驶区域环境3d点云信息的地图。
[0065]
如果slam技术本身带有语义特征提取,则将语义信息标注在点云地图中。建立子
地图完成后,通过slam算法的过程记录载具在子地图中的当前时刻位姿p
os
,此时载具在已知地图上的位置还是未知的。
[0066]
在一个具体的实施例中,步骤s103包括步骤s31、步骤s32和步骤s33,其中:步骤s31(图中未示出)、提取已知地图的语义对象。
[0067]
步骤s32(图中未示出)、基于已知地图的建图轨迹以及每个语义对象在建图轨迹中的出现频次,在所有语义对象中确定至少一个第二对象。
[0068]
步骤s33(图中未示出)、以第二对象为中心建立第二对象的描述子。
[0069]
在一个具体的实施例中,步骤s31包括:步骤s311、步骤s312、步骤s313以及步骤s314,其中:步骤s311(图中未示出)、将已知地图的建图轨迹离散为里程点。假设已知地图的建图轨迹长度为d,建图轨迹上从起点开始每隔1米为一个里程点,总共分成nd个里程点,设第i个里程点为li。
[0070]
步骤s312(图中未示出)、以每个里程点为中心,在已知地图的点云中进行点云分割,以生成分割点云。点云分割的区域为以里程点li为圆心,地图坐标系x-y平面内半径为r的圆,地图点云中的点的x,y值在该圆形区域范围内的点分为一个分割点云,设里程点li对应的分割点云为此实例中r=80米,每个里程点li与每个分割点云对应。
[0071]
步骤s313(图中未示出)、基于语义分割网络生成每个分割点云中每个点的语义标签。
[0072]
步骤s314(图中未示出)、根据每个点的语义标签识别已知地图中的语义对象。使用bfs(广度优先搜索)算法聚类出每个对象物体的具体点云范围,语义对象包括:树木、电线杆、垃圾箱、行人、车辆等。
[0073]
进一步地,bfs(广度优先搜索)算法还可以替换为k-means聚类算法、dbscan聚类算法等其他点云聚类算法,还可以使用基于深度学习的点云聚类方法。
[0074]
步骤s315(图中未示出)、若任一语义对象对应范围内带有其他标签的点的数量大于数量阈值,则剔除该任一语义对象对应的语义标签。
[0075]
步骤s316(图中未示出)、剔除所有语义对象中的动态对象,即剔除可移动对象物体所标记的点云,例如:行人、机动车辆、自行车、水马等,防止这类可移动对象物体在已知地图中存在,而在重定位时场景中没有出现。
[0076]
此时每个里程点li上都存在语义对象及其点云,实现了子地图语义对象的提取。
[0077]
已知地图中包含多个语义对象,由于载具在已知地图中的位置未知,因此无法确定选取已知地图中的哪一帧点云或者哪几帧点云与子地图中的哪一帧点云进行相似性分析。
[0078]
若采用逐帧遍历对比的方式,则计算量较大,因此本技术中,从根据语义对象在整个建图轨迹中的出现频次,筛选出频次满足预设条件的至少一个第二对象,并且确定每个第二对象的描述子(即该第二对象的环境信息);并通过从子地图中筛选出出现频次满足预设条件的第一对象,并且确定每个第一对象的描述子,将子地图中的语义对象和已知地图中的语义对象进行语义筛选。
[0079]
而后,将每个第一对象的描述子与第二对象的描述子进行匹配,即相似度计算,再
次筛选,得到与第一对象的描述子匹配度最高的第二对象,此时,说明载具在子地图中的当前场景与已知地图中包含该第二对象的场景为同一场景,确定载具在子地图中的位置,即可确定载具在已知地图中的场景,减小了重定位时的计算量、提高了效率,确定第二对象具体包括:步骤s321(图中未示出)、获取已知地图的建图轨迹对应的里程点,以及每个语义对象在每个里程点中的出现频次。
[0080]
其中语义对象在每个里程点li中的出现频次为ni。
[0081]
步骤s322(图中未示出)、确定每个语义对象的可用性评估值sr、分布平均值sm和标准差s
σ
。
[0082]
其中,计算每个语义对象的可用性评估值sr的方式为:只有当所有ni都不为0时sr为1,否则sr为0;计算每个语义对象的分布平均值sm的方式为:计算每个语义对象的分布标准差s
σ
的方式为:步骤s323(图中未示出)、每个语义对象可用性评估值为sr、分布平均值sm和标准差s
σ
确定每个语义对象的分数。
[0083]
其中,每个语义对象的分数为s,s=sr(s
m-s
σ
)式(4)步骤s324(图中未示出)、基于每个语义对象的分数确定至少一个第二对象。将所有语义对象按照分数从大到小降序排列,在本技术实施例中,可以选取前5个作为第二对象,所有第二对象构成第二对象合集合om。一般在城区环境下,经过筛选,第二对象主要为:红绿灯、电线杆、路灯杆、交通标识等。园区环境下,第二对象主要为:垃圾箱、树木等。
[0084]
具体地,为了方便表示,在一个具体的实施例中,将里程数与每个语义对象的出现频次采用直方图的方式显示,以里程点li为横坐标,语义对象出现的频次为纵坐标,建立语义对象直方图,进行语义对象筛选,对语义对象进行打分;参照图3,以3种语义对象作为例子:其中语义对象2在某些里程点没有出现,该语义得到的分数s为0;其中语义对象3虽然在所有里程点都出现了,但频次分布不均匀,最终的分数s不会太高;语义对象1分布比语义对象3均匀,分数也会比语义对象3高;得分从大到小排序的话,为语义对象1、语义对象3、语义对象2。
[0085]
参照图4,在一个具体的实施例中,在步骤s33中,以每个里程点li的分割点云中的第二对象为极点,已知地图的坐标系x轴方向为极轴,建立极坐标系。考虑极径小于等于
80米的范围,将80米极径划分为nr等分,本实施例中取nr=20,每等分称为环,将360度极角划分为ns等分,本实施例中取ns=60,每等分称为域,得到1200个环扇形栅格。以极角的大小为横轴、以极径的大小为纵轴建立直角坐标系,对应的产生一个nr×ns
的矩阵,矩阵中每个元素保存对应栅格内分割点云所有点的特征,特征可以取点的z坐标、点云强度、语义标签等,在本实施例中保存的是对应栅格内所有点的z坐标的均值。构建的这种表达方式叫做第二对象的描述子。
[0086]
设已知地图中构建的第二对象的描述子为scg,参照图4,为一个第二对象的描述子的组成示意图,其中sc
ij
为第i个环,第j个域的区域。
[0087]
在一个具体的实施例中,步骤s102包括步骤s21、步骤s22和步骤s23,其中:步骤s21(图中未示出)、提取子地图的语义对象。
[0088]
步骤s22(图中未示出)、基于子地图的建图轨迹以及每个语义对象在子地图建图轨迹中的出现频次,在所有语义对象中确定至少一个第一对象。
[0089]
步骤s23(图中未示出)、以第一对象为中心建立第一对象的描述子。
[0090]
步骤s21与步骤31采用的方式相同;步骤s22与步骤s32采用的步骤相同,生成第一对象om;步骤s23与步骤s33采用的方式相同,此处不再赘述,生成的第一对象的描述子集合为sc
l
;建立第一对象的描述子集合sc
l
中的每个描述子的环特征向量,组成环特征向量集合rk
l
。
[0091]
在一个具体的实施例中,本技术实施例还包括步骤s107,步骤s107设置于步骤s104之前,具体可以包括:生成第二对象的描述子的环特征向量,根据环特征向量构建多维树结构。将第二对象的描述子按行计算均值得到一个nr×
1的列向量,称为一个第二对象的描述子的环特征向量;计算第二对象的描述子集合中的所有描述子的环特征向量,得到环特征向量集合,使用环特征向量集合构建多维树结构tg,以便重定位时快速搜索候选第二对象的描述子。
[0092]
在一个具体的实施例中,步骤s104设置于步骤s107之后,具体可以包括:基于第一对象的描述子集合sc
l
中的每个第一对象的描述子的每个环特征向量在多维树结构tg中搜索,找到相似度最高,即在多维树结构tg中与其距离最近的3个环特征向量,这3个环特征向量所对应的描述子作为候选第二对象的描述子集合scw。
[0093]
将候选第二对象的描述子集合scw中的描述子与对应的子地图的第一对象的描述子集合sc
l
中的描述子匹配,计算得分,具体方法如下:scq表示候选第二对象的描述子scw中的描述子,表示所对应的子地图的第一对象的描述子集合sc
l
中的描述子且向矩阵右方向偏移n个单位,d为两个第二对象的描述子的距离计算表达式,公式如下:两个描述子的相似度分数为d,分数值越小说明两个描述子越相似,计算公式如下:
式中n为偏移量,[-k,k]表示范围从-k到k的偏移量窗口,在本实施例中k=3,分数d是n取[-k,k]中距离d的最小值,此时的n的取值定义为n
*
,n
*
的表达式如下:计算候选第二对象的描述子集合scw中的描述子与对应的子地图的第一对象的描述子集合sc
l
中的描述子的所有相似度分数后,候选第二对象的描述子集合scw中取相似度分数值最小(分数值越小说明两个描述子越相似)的那个描述子称为配准描述子,另外2个舍弃,配准描述子组成配准对象的描述子集合scr,并记录下每个配准对象的描述子的偏移量n
*
。
[0094]
在一种可能的实现方式中,在步骤s106中,具体可以包括步骤s61、步骤s62和步骤s63,其中:步骤s61(图中未示出)、根据每个配准对象在已知地图的位置以及当前传感器在子地图中的位姿确定位姿集合。
[0095]
步骤s62(图中未示出)、对位姿集合进行聚类生成偏移位姿。
[0096]
步骤s63(图中未示出)、根据偏移位姿以及当前传感器与载具的位置关系,生成载具在已知地图中的位姿。
[0097]
其中,步骤s61具体包括步骤s611、步骤s612、步骤s613和步骤s614,其中:参照图5,步骤s611(图中未示出)、确定单个配准对象在已知地图坐标系中的第一坐标。
[0098]
其中,设已知地图的坐标系为cm,第一坐标的表达式为:co(xo,yo,θo),即,配准对象描述子的对象在已知地图坐标系中的位置坐标系为co(xo,yo,θo)。
[0099]
步骤s612(图中未示出)、确定与配准对象对应的第一对象在子地图坐标系的第二坐标。
[0100]
其中,第二坐标的表达式为cc(xc,yc,θc),即,与配准对象对应的第一对象在地图坐标系中的位置坐标系为cc(xc,yc,θc)。
[0101]
其中,当前传感器在在子地图坐标系中的当前坐标,当前坐标的表达式为:p
os
(x
os
,y
os
,θ
os
),当前传感器在子地图中的当前坐标为p
os
(x
os
,y
os
,θ
os
)建立子地图时保留的传感器在子地图中的位姿。
[0102]
步骤s613、基于第一坐标、第二坐标以及当前传感器在子地图中的位姿确定当前传感器在已知地图中的候选位姿。
[0103]
由于配准主对象描述子的对象和与之对应的局部地图主对象描述子的对象为同一对象,所以认为co和cc的位置相同,即xo=xc,yo=yc;由于co的极轴沿着已知地图的坐标系cm的x轴方向,所以角度为0,即θo=0;综上,co、cc坐标系变为co(xo,yo,0),cc(xo,yo,θc)。
[0104]
其中,候选位姿的表达式为:ps(xs,ys,θs),计算候选位姿的方式为:xs=cosθcx
os-sinθcy
os
+xo#(8)ys=sinθcx
os
+cosθcy
os
+yo#(9)θs=arccos(cosθccosθ
s-sinθcsinθs)#(10)
其中θc可以通过偏移量n
*
和ns计算得到。
[0105]
步骤s614(图中未示出)、根据所有候选位姿生成位姿集合。根据步骤s611~步骤s613方法,计算得到所有配准对象的描述子对应的多个表征传感器位姿的候选位姿,组成当前传感器位姿集合gps。
[0106]
在步骤s62中,对位姿集合gps中的坐标x,y和角度θ分布进行聚类,x,y的聚类结果xr,yr,θ聚类的结果θr组成唯一结果:偏移位姿pr(xr,yr,θ)。
[0107]
在步骤s63中,其中,设当前传感器与载具的安装位置关系为水平外参es(xe,ye,θe),则载具在已知地图中的位姿pv为:pv(xv,yv,θv)=(x
r-xe,y
r-ye,θ
r-θe)式(11)即,根据当前传感器在已知地图中的位置,确定载具在已知地图中的位置,得到的重定位结果既包含了载具相对已知地图的位置,又包含了载具的姿态。
[0108]
参照图6,上述实施例从方法流程的角度介绍一种基于已知地图的语义重定位方法,下述实施例从虚拟模块或者虚拟单元的角度介绍了一种基于已知地图的语义重定位装置100,具体详见下述实施例。
[0109]
一种基于已知地图的语义重定位装置100,包括:采用如下的技术方案:子地图建立模块1001,用于根据当前传感器获取到的点云数据建立子地图;第一对象提取模块1002,用于提取子地图中的至少一个第一对象,建立每个第一对象的描述;第二对象提取模块1002,用于提取获取到的已知地图中的至少一个第二对象,建立每个第二对象的描述子;相似度计算模块1004,用于将每个第一对象的描述子与每个第二对象的描述子进行相似度计算;确定模块1005,用于在所有第二对象中确定相似度最高的第二对象作为配准对象;重定位模块1006,用于根据配准对象在已知地图中的位姿以及当前传感器在子地图中的位姿,生成载具在已知地图中的位姿。
[0110]
在一个具体的实施例中,子地图建立模块1001在根据当前传感器获取到的点云数据,并建立子地图时,具体用于:根据当前传感器采集到的点云数据生成可行驶区域;根据当前传感器在可行驶区域内获取的点云数据,并建立子地图。
[0111]
在一个具体的实施例中,子地图建立模块1001在根据当前传感器采集到的点云数据生成可行驶区域时,具体用于:根据当前传感器采集到的3d点云数据生成2d栅格地图;根据泛洪算法在2d栅格地图中生成可行驶区域。
[0112]
在一个具体的实施例中,第二对象提取模块1002提取获取到的已知地图中的至少一个第二对象,建立每个第二对象的描述子时,具体用于:提取已知地图的语义对象;基于已知地图的建图轨迹以及每个语义对象在建图轨迹中的出现频次,在所有语义对象中确定至少一个第二对象;
以第二对象为中心建立第二对象的描述子。
[0113]
在一个具体的实施例中,第二对象提取模块1002在提取已知地图的语义对象时,具体用于:将已知地图的建图轨迹离散为里程点;以每个里程点为中心,在已知地图的点云中进行点云分割,以生成分割点云;基于语义分割网络生成每个分割点云中每个点的语义标签;根据每个点的语义标签识别已知地图中的语义对象。
[0114]
在一个具体的实施例中,第二对象提取模块1002还包括剔除模块,剔除模块,用于:在根据每个点的语义标签识别已知地图中的语义对象之后,若任一语义对象对应范围内带有其他标签的点的数量大于数量阈值,则剔除该任一语义对象对应的语义标签。
[0115]
在一个具体的实施例中,剔除模块在根据每个点的语义标签识别已知地图中的语义对象,之后还用于:剔除所有语义对象中的动态对象。
[0116]
在一个具体的实施例中,第二对象提取模块1002在基于已知地图的建图轨迹以及每个语义对象在建图轨迹中的出现频次,在所有语义对象中确定至少一个第二对象,包括:获取已知地图的建图轨迹对应的里程点,以及每个语义对象在每个里程点中的出现频次;确定每个语义对象的可用性评估值、分布平均值和标准差;基于所有里程点、每个语义对象在里程点中的出现频次、每个语义对象可用性评估值、分布平均值和标准差确定每个语义对象的分数;基于每个语义对象的分数确定至少一个第二对象。
[0117]
在另一种可能的实现方式中,重定位模块1006在根据配准对象在已知地图中的位置以及当前传感器在子地图中的位姿,生成载具在已知地图中的位姿,时,具体用于:根据每个配准对象在已知地图的位置以及当前传感器在子地图中的位姿确定位姿集合;对位姿集合进行聚类生成偏移位姿;根据偏移位姿以及当前传感器与载具的位置关系,生成载具在已知地图中的位姿。
[0118]
在另一种可能的实现方式中,重定位模块1006在根据每个配准对象在已知地图的位置以及当前传感器在子地图中的位姿确定位姿集合时,具体用于:确定单个配准对象在已知地图坐标系中的第一坐标;确定与配准对象对应的第一对象在子地图坐标系的第二坐标;基于第一坐标、第二坐标以及当前传感器在子地图中的位姿确定当前传感器在已知地图中的候选位姿;根据所有候选位姿生成位姿集合。
[0119]
在一个具体的实施例中,装置还包括搜索模块,在搜索模块用于:第二对象中确定相似度最高的第二对象作为配准对象之前,生成第二对象的描述子的环特征向量,根据环特征向量构建多维树结构。
[0120]
本技术实施例还从实体装置的角度介绍了一种电子设备,如图7所示,图7所示的电子设备1100包括:处理器1101和存储器1103。其中,处理器1101和存储器1103相连,如通
过总线1102相连。可选地,电子设备1100还可以包括收发器1104。需要说明的是,实际应用中收发器1104不限于一个,该电子设备1100的结构并不构成对本技术实施例的限定。
[0121]
处理器1101可以是cpu(central processing unit,中央处理器),通用处理器,dsp(digital signal processor,数据信号处理器),asic(application specific integrated circuit,专用集成电路),fpga(field programmable gate array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器1101也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
[0122]
总线1102可包括一通路,在上述组件之间传送信息。总线1102可以是pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。总线1102可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0123]
存储器1103可以是rom(read only memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(random access memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electrically erasable programmable read only memory,电可擦可编程只读存储器)、cd-rom(compact disc read only memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
[0124]
存储器1103用于存储执行本技术方案的应用程序代码,并由处理器1101来控制执行。处理器1101用于执行存储器1103中存储的应用程序代码,以实现前述方法实施例所示的内容。
[0125]
其中,电子设备包括但不限于:移动电话、笔记本电脑、数字广播接收器、pda(个人数字助理)、pad(平板电脑)、pmp(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字tv、台式计算机等等的固定终端。还可以为服务器等。图7示出的电子设备仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
[0126]
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0127]
以上仅是本技术的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。