本发明涉及点云数据处理技术领域,具体地,涉及一种道路点云数据处理方法及系统。
背景技术:
在无人驾驶技术中,高精度定位是极其重要的组成部分,而在目前的技术中,精度最高的定位方法还是基于三维点云地图的定位方法。本申请发明人在实现本发明的过程中发现,现有技术具有以下缺陷:三维点云地图数据量很大,给地图的传输和保存带来了较大的困难。
技术实现要素:
本发明实施例的目的是提供一种道路点云数据处理方法及系统,解决了现有技术中三维点云地图数据量大,难于传输的问题,降低了地图数据的大小。
为了实现上述目的,本发明实施例提供一种道路点云数据处理方法,包括:
获取道路点云数据和与所述道路点云数据对应的同时刻的车辆位置数据;
根据所述道路点云数据和所述车辆位置数据,通过slam算法得到车辆位姿;
根据所述车辆位姿,计算得到三维点云地图数据;
在所述三维点云地图数据中,提取与多个预设形状参数中每个预设形状参数对应的重复结构数据,得到提取后的三维点云地图数据,所述提取后的三维点云地图数据中不包含所述多个预设形状参数中每个预设形状参数对应的重复结构数据;
确定压缩后的三维点云地图数据,所述压缩后的三维点云地图数据包括所述提取后的三维点云地图数据、所述多个预设形状参数以及每个重复结构数据对应的变换矩阵。
可选的,所述根据所述道路点云数据和所述车辆位置数据,通过slam算法得到车辆位姿包括:
根据相邻两帧的道路点云数据,得到所述道路点云数据中的各个相邻两帧的车辆位姿变换;
根据所述车辆位置数据,获取在不同时刻同一位置的车辆位姿变换;
根据所述各个相邻两帧的车辆位姿变换和所述不同时刻同一位置的车辆位姿变换,通过位姿图优化算法得到所述车辆在所有帧的车辆位姿。
可选的,所述根据所述车辆位姿,计算得到三维点云地图数据包括:
根据
可选的,所述在所述三维点云地图数据中,提取与多个预设形状参数中每个预设形状参数对应的重复结构数据,得到提取后的三维点云地图数据包括:
在所述三维点云地图数据中,选择多个领域子集,通过ransac算法对多个预设形状参数中的每一个预设形状参数进行拟合;
当拟合成功时,确定所述多个预设形状参数中的每一个预设形状参数对应的重复结构数据;
在所述三维点云地图数据中,提取所述重复结构数据对应的道路点云数据,得到提取后的三维点云地图数据。
可选的,所述重复结构为平面、线段、圆柱、圆锥或圆环面中的至少一种。
可选的,所述每个重复结构数据对应的变换矩阵为通过所述变换矩阵将所述每个重复结构数据转换为所述三维点云地图数据中的道路点云数据。
本发明实施例还提供一种道路点云数据处理系统,包括:
获取单元,用于获取道路点云数据和与所述道路点云数据对应的同时刻的车辆位置数据;
第一计算单元,用于根据所述道路点云数据和所述车辆位置数据,通过slam算法得到车辆位姿;
第二计算单元,用于根据所述车辆位姿,计算得到三维点云地图数据;
第三计算单元,用于在所述三维点云地图数据中,提取与多个预设形状参数中每个预设形状参数对应的重复结构数据,得到提取后的三维点云地图数据,所述提取后的三维点云地图数据中不包含所述多个预设形状参数中每个预设形状参数对应的重复结构数据;
处理单元,用于确定压缩后的三维点云地图数据,所述压缩后的三维点云地图数据包括所述提取后的三维点云地图数据、所述多个预设形状参数以及每个重复结构数据对应的变换矩阵。
可选的,所述获取单元包括gps系统、惯性测量装置imu和激光雷达装置,其中,所述gps系统和imu用于获取车辆位置数据,所述激光雷达装置用于获取道路点云数据。
可选的,所述第一计算单元包括:
第一计算模块,用于根据相邻两帧的道路点云数据,得到所述道路点云数据中的各个相邻两帧的车辆位姿变换;
第二计算模块,用于根据所述车辆位置数据,获取在不同时刻同一位置的车辆位姿变换;
第三计算模块,用于根据所述各个相邻两帧的车辆位姿变换和所述不同时刻同一位置的车辆位姿变换,通过位姿图优化算法得到所述车辆在所有帧的车辆位姿。
可选的,所述第二计算单元用于根据
可选的,所述第三计算单元包括:
拟合模块,用于在所述三维点云地图数据中,选择多个领域子集,通过ransac算法对多个预设形状参数中的每一个预设形状参数进行拟合;
重复结构确定模块,用于当拟合成功时,确定所述多个预设形状参数中的每一个预设形状参数对应的重复结构数据;
提取模块,用于在所述三维点云地图数据中,提取所述重复结构数据对应的道路点云数据,得到提取后的三维点云地图数据。
通过上述技术方案,通过获取道路点云数据和与所述道路点云数据对应的同时刻的车辆位置数据,根据slam算法得到车辆位姿,然后根据所述车辆位姿,计算得到三维点云地图数据,在所述三维点云地图数据中,提取与多个预设形状参数中每个预设形状参数对应的重复结构数据,得到提取后的三维点云地图数据,并确定压缩后的三维点云地图数据,所述压缩后的三维点云地图数据包括所述提取后的三维点云地图数据、所述多个预设形状参数以及每个重复结构数据对应的变换矩阵。本发明实施例解决了现有技术中三维点云地图数据量大,难于传输和保存的问题,压缩后的三维点云地图数据在向无人车传输时,传输速度快。
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1是本发明实施例提供的一种道路点云数据处理方法的流程图;
图2是本发明实施例提供的位姿图的示例图;
图3是本发明实施例提供的opengl中的茶壶模型的示例图;
图4是本发明实施例提供的一种道路点云数据处理系统的示意图;
图5是本发明实施例提供的一种道路点云数据处理系统中第一计算单元的示意图;
图6是本发明实施例提供的一种道路点云数据处理系统中第三计算单元的示意图。
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
三维点云地图多用于无人车的定位、感知和决策等过程中,无人车通过三维点云地图可以定位当前位置,并预先知道车道情况,当发现有与地图中不一致的地方时,判断为障碍物,从而绕行,或者在到达路口转弯之前,决定并道并限速等等,以上过程均基于三维点云地图来实现,因此对三维点云地图进行处理,对无人车至关重要,尤其在将三维点云地图进行压缩处理后,再给无人车传输时,传输数据量变小,传输速度加快。
本发明实施例提供一种道路点云数据处理方法,如图1所示,所述方法包括如下步骤:
s101、获取道路点云数据和与所述道路点云数据对应的同时刻的车辆位置数据。
将gps系统、imu(internationalmathematicalunion,惯性测量装置)和激光雷达装置安装在车辆上,并按照预设路线行进,从而可以通过所述gps系统和imu获取车辆位置数据,所述激光雷达装置获取道路点云数据,且所述道路点云数据与同时刻的车辆位置数据相对应。
s102、根据所述道路点云数据和所述车辆位置数据,通过slam算法得到车辆位姿。
利用现有技术中的slam算法,根据所述道路点云数据和所述车辆位置数据,通过逐帧的点云配准、回环检测和位姿图优化,最终得到车辆位姿。
具体计算如下:
1)逐帧的点云配准是根据相邻两帧的道路点云数据,得到所述道路点云数据中的各个相邻两帧的车辆位姿变换。
车辆在ti时刻得到道路点云数据pi,在ti+1时刻得到道路点云数据pi+1,通过迭代最近点(icp)算法算出ti时刻和ti+1时刻的变换矩阵ti,通过ti就可以将pi+1投影到ti时刻的坐标系中,又由于对所有的相邻帧都会进行配准,因此就可以将道路点云数据投到任意一个时刻的坐标系下。
例如,在道路点云数据中可通过k最近邻算法查找对应点集,并优化成本函数,即公式(1)。
其中,np是相邻两帧的个数,
然后,更新
2)根据所述车辆位置数据,获取在不同时刻同一位置的车辆位姿变换。
其中,所述车辆位置数据包括车辆位置和朝向。
由于逐帧的点云配准会存在累计误差,因此还需要做回环检测来减小这个误差。
首先将车辆位置数据表示为一个三维点集m,每个点包含xyz坐标以及得到该位置的时间信息,用xyz部分构建kdtreet。
对m中每一个点mi,用t进行搜索半径,查找半径为参数。(1)如果返回结果不为空,并且返回集合中存在结果点mj的时间与查询点mi的时间间隔大于一个阈值,该阈值为预设参数,则认为找到一个回环,用点对(mi,mj)表示。(2)若返回结果为空,或返回集合中任意一点的时间与mi的时间间隔都不满足上述阈值,则为没有发现回环。遍历所有点,找到所有的回环,并用(mi,mj)对应的道路点云数据(pi,pj)调用逐帧的点云配准中使用的算法进行配准,得到它们之间的变换矩阵tij,即获取在不同时刻同一位置的车辆位姿变换。
3)根据所述各个相邻两帧的车辆位姿变换和所述不同时刻同一位置的车辆位姿变换,通过位姿图优化算法得到所述车辆在所有帧的车辆位姿。
如图2所示,将车辆的位姿表示为位姿图中的顶点,即xi,每个顶点都为6维向量,[x,y,z,r,p,h](平移+旋转),而eij是图中的边,边表示了顶点间的约束。那么位姿图优化就是求解公式(2)和(3):
其中(i,j)就是图中的边。e(xi,xj,zij)是一个向量的度量函数,用来衡量待优化的参数xi和xj满足约束zij的程度。zij是点云配准出来的变换矩阵,而ωij是zij对应的信息矩阵,通过优化就能得到x*,即得到所述车辆在所有帧的车辆位姿。
s103、根据所述车辆位姿,计算得到三维点云地图数据。
其中,根据
s104、在所述三维点云地图数据中,提取与多个预设形状参数中每个预设形状参数对应的重复结构数据,得到提取后的三维点云地图数据,所述提取后的三维点云地图数据中不包含所述多个预设形状参数中每个预设形状参数对应的重复结构数据。
在所述三维点云地图数据中提取重复结构数据,对应的重复结构例如马路牙子、电线杆、绿化带等,可将这些重复结构设置为预设形状参数,例如平面、线段、圆柱、圆锥或圆环面等,基本思路是在所述三维点云地图数据中,选择多个领域子集,通过ransac算法对多个预设形状参数中的每一个预设形状参数进行拟合,当拟合成功时,确定所述多个预设形状参数中的每一个预设形状参数对应的重复结构数据,在所述三维点云地图数据中,提取所述重复结构数据对应的道路点云数据,得到提取后的三维点云地图数据。
例如,以平面为例,三个点可以定义一个平面,那么基于ransac算法的过程:
(1)在邻域点集中随机选择3个点pi,pj,pk,拟合一个平面。计算方法为首先计算平面的法向量n,n=(pi-pj)*(pi-pk)。然后平面就可以用点法式表示为(pi,n)。
(2)计算邻域点集中所有点到该平面的距离,如果距离小于某一阈值,则为内点,否则,为外点。内点比例为内点的个数与邻域点集的个数的比值。如果该比例大于当前最优值,则将当前的平面参数和内点比例保存,最优值初始时为零,一次迭代后将当前最优值替换为当前内点比例。
(3)重复上述过程,直到达到最大迭代次数,所述最大迭代次数为预先设置,例如为一千次。如果最优的内点比例大于某一阈值,则认为形状拟合成功。
则上述过程为以平面为例,在所述三维点云地图数据中对预设形状参数进行拟合,得到一个对应的重复结构,接着重复上面的过程,查找出所有对应的重复结构,然后在所述三维点云地图数据中将与所述重复结构数据对应的所有点云数据提取出来,得到提取后的三维点云地图数据,则所述提取后的三维点云地图数据中不包含所述多个预设形状参数中每个预设形状参数对应的重复结构数据。
之后,还需要一个逆变换把一个重构结构数据的重新转化为三维点云地图中的道路点云数据。
例如,与opengl类似,以茶壶模型为例,在opengl中通过一个变换矩阵t(r|t)对该模型进行变换,使其出现在空间中的不同位置,如图3所示。
如果在空间中检测到了3个相同的物体,但由于其位置和朝向不同,会导致拟合出来的物体参数也有所差异,那么就需要将这3个物体的参数都保存下来。而如果有变换矩阵,只需要保存一个物体参数即可。
类似的,在本发明实施例中,由于一个重复结构数据,例如一个电线杆在所述三维点云地图数据中会有上万个点云数据来表示,那么多个电线杆对应的点云数据就是十万多个,在传输三维点云地图数据时,就会是很大的数据量,因此,提取后的三维点云数据传输速度就会很快。
s105、确定压缩后的三维点云地图数据,所述压缩后的三维点云地图数据包括所述提取后的三维点云地图数据、所述多个预设形状参数以及每个重复结构数据对应的变换矩阵。
最终得到的压缩后的三维点云地图数据包括所述提取后的三维点云地图数据、所述多个预设形状参数以及每个重复结构数据对应的变换矩阵,与数万个点云数据相比,所述多个预设形状参数以及每个重复结构数据对应的变换矩阵只是占几个字节,因此传输的数据量变小,提高了传输速度。
相应地,本发明实施例还提供一种道路点云数据处理系统40,如图4所示,所述系统包括:
获取单元41,用于获取道路点云数据和与所述道路点云数据对应的同时刻的车辆位置数据;
第一计算单元42,用于根据所述道路点云数据和所述车辆位置数据,通过slam算法得到车辆位姿;
第二计算单元43,用于根据所述车辆位姿,计算得到三维点云地图数据;
第三计算单元44,用于在所述三维点云地图数据中,提取与多个预设形状参数中每个预设形状参数对应的重复结构数据,得到提取后的三维点云地图数据,所述提取后的三维点云地图数据中不包含所述多个预设形状参数中每个预设形状参数对应的重复结构数据;
处理单元45,用于确定压缩后的三维点云地图数据,所述压缩后的三维点云地图数据包括所述提取后的三维点云地图数据、所述多个预设形状参数以及每个重复结构数据对应的变换矩阵。
通过获取道路点云数据和与所述道路点云数据对应的同时刻的车辆位置数据,根据slam算法得到车辆位姿,然后根据所述车辆位姿,计算得到三维点云地图数据,在所述三维点云地图数据中,提取与多个预设形状参数中每个预设形状参数对应的重复结构数据,得到提取后的三维点云地图数据,并确定压缩后的三维点云地图数据,所述压缩后的三维点云地图数据包括所述提取后的三维点云地图数据、所述多个预设形状参数以及每个重复结构数据对应的变换矩阵。本发明实施例解决了现有技术中三维点云地图数据量大,难于传输和保存的问题,压缩后的三维点云地图数据在向无人车传输时,传输速度快。
可选的,所述获取单元41包括gps系统、imu和激光雷达装置,其中,所述gps系统和imu用于获取车辆位置数据,所述激光雷达装置用于获取道路点云数据。
可选的,如图5所示,所述第一计算单元42包括:
第一计算模块51,用于根据相邻两帧的道路点云数据,得到所述道路点云数据中的各个相邻两帧的车辆位姿变换;
第二计算模块52,用于根据所述车辆位置数据,获取在不同时刻同一位置的车辆位姿变换;
第三计算模块53,用于根据所述各个相邻两帧的车辆位姿变换和所述不同时刻同一位置的车辆位姿变换,通过位姿图优化算法得到所述车辆在所有帧的车辆位姿。
可选的,所述第二计算单元43用于根据
可选的,如图6所示,所述第三计算单元44包括:
拟合模块61,用于在所述三维点云地图数据中,选择多个领域子集,通过ransac算法对多个预设形状参数中的每一个预设形状参数进行拟合;
重复结构确定模块62,用于当拟合成功时,确定所述多个预设形状参数中的每一个预设形状参数对应的重复结构数据;
提取模块63,用于在所述三维点云地图数据中,提取所述重复结构数据对应的道路点云数据,得到提取后的三维点云地图数据。
上述道路点云数据处理系统40中的各个单元的具体实现过程,可参加上述道路点云数据处理方法的处理过程。
以上结合附图详细描述了本发明实施例的可选实施方式,但是,本发明实施例并不限于上述实施方式中的具体细节,在本发明实施例的技术构思范围内,可以对本发明实施例的技术方案进行多种简单变型,这些简单变型均属于本发明实施例的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施例对各种可能的组合方式不再另行说明。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。