本发明涉及地面点云分离技术领域,特别是涉及一种多线激光雷达地面点分离方法及装置、车辆。
背景技术:
基于多线激光雷达的障碍物检测是智能驾驶系统中最关键技术之一,其准确性、实时性是衡量智能驾驶系统的重要指标。对于多线激光雷达的障碍物检测而言,为了能够准确地识别障碍物,需要对障碍物(即前景)点云和地面(背景)点云进行准确地分离。现有技术中的地面点云分离技术仍存在对障碍物点云和地面点云分离不够准确、耗时长、实时性不高等诸多缺点。
因此,希望有一种技术方案来克服或至少减轻现有技术的上述缺陷中的至少一个。
技术实现要素:
本发明的目的在于提供一种多线激光雷达地面点分离方法及装置来克服或至少减轻现有技术的上述缺陷中的至少一个。
为实现上述目的,本发明提供一种多线激光雷达地面点分离方法,所述多线激光雷达地面点分离方法包括如下步骤:步骤100,通过多线激光雷达发出的激光线,以水平旋转的方式扫描检测区域,获取多线激光雷达采集到的点云数据;步骤200,根据步骤100获取的点云数据,生成三维的网格图:将同一激光头在相邻两个时刻生成的点云连接,形成网格圈;将相邻两个不同激光头在同一时刻生成的点云连接,形成网格线段,每一点云对应为网格图的一个节点;步骤300,计算步骤200中的网格图每一个节点的属性,其中节点的属性包括:节点的投影径向距离,相同网格圈中两相邻节点之间的距离和梯度,相邻网格圈的两相邻节点之间的距离和梯度;步骤400,遍历由步骤200获得的的网格图中的每一个节点,根据步骤300获得的每一个节点的属性,判断节点是否为地面点,如果判断为是,则删除该节点;如果判断为否,则保留该节点,保留下来的节点为障碍物点云。
进一步地,步骤400具体包括:步骤410,在第一网格圈ring1上选择地面点p1;步骤420,将p1作为地面种子点,寻找第二网格圈ring2上的地面点:以顺时针方向和逆时针方向分别遍历第一网格圈ring1中的每一个地面种子点p1,并根据步骤300计算出来节点p2、节点p2’和节点p3的属性,判断节点p2是否为疑似地面点,如果节点p2经由顺时针方向和逆时针方向两次遍历,并都被判断为疑似地面点,则确定为节点p2为第二网格圈ring2上的地面点;其中,节点p2代表第二网格圈ring2上与地面种子点p1相邻的一个节点,节点p2’代表第二网格圈ring2上的且与节点p2相邻的一个节点,节点p3代表第三网格圈ring2上与节点p2相邻的一个节点。
进一步地,步骤410具体包括:步骤411,对第一网格圈ring1上的所有节点在水平面方向进行平面拟合,并选定基准平面;步骤412,遍历第一网格圈ring1上的各节点,判断该节点所在的平面是否位于基准平面的上方和下方预设的范围内,如果判断为是,则该节点为第一网格圈上的地面点p1。
进一步地,步骤420中的“根据步骤300计算出来节点p2、节点p2’和节点p3的属性,判断节点p2是否为疑似地面点”具体包括:步骤421,判断节点p1与节点p2的梯度p0.gradient关系是否小于第一阈值,如果判断为是,则初步判定节点p2是疑似地面点;步骤422,判断节点p2与节点p2’之间的距离是否小于第二阈值,如果判断为是,则进入步骤423;步骤423,判断节点p2与节点p2’的梯度grad(p2,p2’)是否小于第三阈值,如果判断为是,则进入步骤424;步骤424,判断节点p1的投影径向距离dis_r1、节点p2的投影径向距离dis_r2、节点p3的投影径向距离dis_r3是否满足如下关系:dis_r2∈(dis_r1,dis_r3);如果判断为满足,则判定节点p2是疑似地面点。
本发明还提供一种16线激光雷达地面点分离方法,其特征在于,包括如下步骤:步骤100,通过水平旋转多线激光雷达,扫描检测区域,获取多线激光雷达采集到的点云数据;其中:根据16线激光雷达的物理特性,垂直分辨率为-15°至+15°,水平分辨率为0.2°;激光雷达旋转360°,得到一帧具有1800×16个点的点云数据;步骤200,根据步骤100获取的点云数据,生成三维的网格图:将同一激光头在相邻两个时刻生成的点云连接,形成网格圈;将相邻两个不同激光头在同一时刻生成的点云连接,形成网格线段,每一点云对应为网格图的一个节点;步骤300,计算步骤200中的网格图每一个节点的属性,其中节点的属性包括:节点的投影径向距离,相同网格圈中两相邻节点之间的距离和梯度,相邻网格圈的两相邻节点之间的距离和梯度;步骤400,遍历由步骤200获得的的网格图中的每一个节点,根据步骤300获得的每一个节点的属性,判断节点是否为地面点,如果判断为是,则删除该节点;如果判断为否,则保留该节点,保留下来的节点为障碍物点云;步骤410,从步骤200中选取半径最小的网格圈为第一网格圈ring1,并在第一网格圈ring1上选择生成地面点p1,具体包括:对网格圈上的所有节点在水平面方向进行平面拟合,并选定基准平面;遍历第一网格圈ring1上的各节点,判断该节点所在的平面是否位于基准平面的上方和下方预设的范围内,如果判断为是,则该节点为第一网格圈ring1上的地面点p1;步骤420,以顺时针方向和逆时针方向分别遍历第一网格圈ring1中的每一个地面种子点p1,并根据步骤300计算出来节点p2、节点p2’和节点p3的属性,判断节点p2是否为疑似地面点,如果节点p2经由顺时针方向和逆时针方向两次遍历,并都被判断为疑似地面点,则确定为节点p2为第二网格圈ring2上的地面点;其中节点p2代表第二网格圈ring2上与地面种子点p1相邻的一个节点,节点p2’代表第二网格圈ring2上的且与节点p2相邻的一个节点,节点p3代表第三网格圈ring3上与节点p2相邻的一个节点;步骤430,将步骤420确定的地面点作为寻找下一圈网格圈上的地面点的地面种子点,遍历该地面种子点所在的下一网格圈,并按照步骤420的方法,判定其它网格圈上的节点是否为地面点;步骤420中的“根据步骤300计算出来节点p2、节点p2’和节点p3的属性,判断节点p2是否为疑似地面点”具体包括:步骤421,判断节点p1与节点p2的梯度p0.gradient关系是否小于第一阈值threshold_gradient(0.9),如果判断为是,则初步判定节点p2是疑似地面点;步骤422,判断节点p2与节点p2’之间的距离是否小于第二阈值threshold_s,如果判断为是,则进入步骤423;步骤423,判断节点p2与节点p2’的梯度grad(p2,p2’)是否小于第三阈值threshold_grad(0.2),如果判断为是,则进入步骤424;步骤424,判断节点p1的投影径向距离dis_r1、节点p2的投影径向距离dis_r2、节点p3的投影径向距离dis_r3是否满足如下关系:dis_r2∈(dis_r1,dis_r3);如果判断为满足,则判定节点p2是疑似地面点。
本发明还提一种多线激光雷达地面点分离装置,所述多线激光雷达地面点分离装置包括:多线激光雷达,所述多线激光雷达发出的激光线通过水平旋转的方式扫描检测区域,获取多线激光雷达采集到的点云数据,并输出;网格图生成模块,所述网格图生成模块根据所述多线激光雷达输出的点云数据,生成三维的网格图:将同一激光头在相邻两个时刻生成的点云连接,形成网格圈;将相邻两个不同激光头在同一时刻生成的点云连接,形成网格线段,每一点云对应为网格图的一个节点;节点属性计算模块,所述节点属性计算模块用于计算网格图中的每一个节点的属性,其中节点的属性包括:节点的投影径向距离,相同网格圈中两相邻节点之间的距离和梯度,相邻网格圈的两相邻节点之间的距离和梯度;地面点处理模块,所述地面点判断处理模块用于遍历由所述网格图生成模块获得的的网格图中的每一个节点,根据所述节点属性计算模块获得的每一个节点的属性,判断节点是否为地面点,如果判断为是,则删除该节点;如果判断为否,则保留该节点,保留下来的节点为障碍物点云。
进一步地,所述地面点处理模块包括:地面点选择子模块,所述地面点选择子模块用于在第一网格圈ring1上选择地面点p1;地面点判断子模块,所述地面点判断子模块用于将p1作为地面种子点,寻找第二网格圈ring2上的地面点:以顺时针方向和逆时针方向分别遍历第一网格圈ring1中的每一个地面种子点p1,并根据步骤300计算出来节点p2、节点p2’和节点p3的属性,判断节点p2是否为疑似地面点,如果节点p2经由顺时针方向和逆时针方向两次遍历,并都被判断为疑似地面点,则确定为节点p2为第二网格圈ring2上的地面点;其中,节点p2代表第二网格圈ring2上与地面种子点p1相邻的一个节点,节点p2’代表第二网格圈ring2上的且与节点p2相邻的一个节点,节点p3代表第三网格圈ring2上与节点p2相邻的一个节点。
进一步地,所述地面点判断子模块中的“根据步骤300计算出来节点p2、节点p2’和节点p3的属性,判断节点p2是否为疑似地面点”具体包括:第一判断单元,所述第一判断单元用于判断节点p1与节点p2的梯度p0.gradient关系是否小于第一阈值,如果判断为是,则初步判定节点p2是疑似地面点;第二判断单元,所述第二判断单元用于判断节点p2与节点p2’之间的距离是否小于第二阈值;第三判断单元,所述第三判断单元用于在所述第二判断单元判断为是的情形下,判断节点p2与节点p2’的梯度grad(p2,p2’)是否小于第三阈值;第四判断单元,所述第四判断单元用于在所述第三判断单元判断为是的情形下,判断节点p1的投影径向距离dis_r1、节点p2的投影径向距离dis_r2、节点p3的投影径向距离dis_r3是否满足如下关系:dis_r2∈(dis_r1,dis_r3);如果判断为满足,则判定节点p2是疑似地面点。
进一步地,所述地面点选择子模块具体包括:基准平面设定单元,所述基准平面设定单元用于对第一网格圈ring1上的所有节点在水平面方向进行平面拟合,并选定基准平面;第五判断单元,所述第五判断单元用于遍历第一网格圈ring1上的各节点,判断该节点所在的平面是否位于基准平面的上方和下方预设的范围内,如果判断为是,则该节点为第一网格圈上的地面点p1。
本发明提供的多线激光雷达地面点分离方法提到的三维网格图,通过计算点云的属性和相邻点属性蔓延对多线激光雷达扫射的每个点云进行判断是否为地面点,进而将前景(即障碍物)和背景(地面点云)准确地分离,因此不仅能很好的处理平整路面,还能能适应多种路况(如出入地库的长斜面、起伏的小坡、减速带、不规则的曲面地面等),算法耗时总能够控制在50ms左右,具有高实时性。
附图说明
图1是本发明中的16线激光雷达扫射示意图。
图2是本发明中的三维网格图的示意图。
图3是本发明中的投影径向距离示意图。
图4是本发明中的地面属性蔓延过程的示意图。
图5是多线激光雷达扫射的点云的原始数据示意图。
图6是利用本发明方法去除图5中的地面点云后的示意图。
具体实施方式
在附图中,使用相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面结合附图对本发明的实施例进行详细说明。
本实施例所提供的多线激光雷达地面点分离方法包括如下步骤:
步骤100,通过多线激光雷达发出的激光线,以水平旋转的方式扫描检测区域,获取多线激光雷达采集到的点云数据。下面通过16线激光雷达说明该步骤实施方法。
如图1所示,图中带箭头的直线示出的是16线激光雷达发出的激光线。在激光雷达坐标系中,各个激光头发射并经过内部坐标转换到同一原点坐标系下,即激光雷达坐标系。水平面为xy平面,x轴为车辆的纵向行驶方向,前进的方向为x轴的正向,y轴为车辆的横向,车辆左侧是y轴正方向。z轴垂直于xy平面,向上的方向为z轴的正向。根据16线激光雷达的物理特性,垂直分辨率为-15°至+15°,水平分辨率为0.2°。也就是说,在激光雷达坐标系中,16个激光头发出的激光线从原点发出,可以理解为16条激光射线。基准平面为过原点(z=0)的xy平面(x0,y0),在基准平面(x0,y0)上方,从内到外,激光射线的夹角依次为1°、3°、……、13°、15°;在基准平面(x0,y0)下方,从内到外,激光射线的夹角依次为-1°、-3°、……、-13°、-15°,“-”代表是沿z轴的负向。16条激光射线沿z轴周向旋转,旋转过程中,各激光头按照每隔0.2°的水平旋转角发射激光射线。这样,在旋转360°后,将得到一帧具有1800×16个点的点云数据。“内”可以理解为靠近基准平面(x0,y0)的方向,“外”则理解为远离基准平面(x0,y0)的方向。
步骤200,根据步骤100获取的点云数据,生成三维的网格图:将同一激光头在相邻两个时刻生成的点云连接,形成网格圈;将相邻两个不同激光头在同一时刻生成的点云连接,形成网格线段,每一点云对应为网格图的一个节点。
如图2所示,图中示出的每一个圆圈“o”代表步骤100中采集到的点云数据中的一个点云(激光点),这个点云有可能是地面点云,也可能是障碍物点云。本发明的目的在于将图2中的地面点云识别出来,并去除。使最后呈现在感知输出上的点云数据仅有障碍物点云,这样可以为后续车辆的决策提供准确数据支持。
从图2中可以看出:a1、a2、a3、a4、a5、a6、a7、a8、a9、a10、a11、a12、a13都是由同一个激光头在不同时刻发出激光射线后获得的点云,位于同一个网格圈上,即图中示出的最外圈。此处仅仅是以最外圈的网格圈为例说明网格圈的形成,其它的网格圈上的节点的形成与最外圈的网格圈相同,在此不再赘述。总之,同一个网格圈上的节点是多线激光雷达的单个激光头旋转一周生成的点云的集合。
从图2中还可以看出:a1、b1、p4、p3、p2、p1分别由不同激光头在同一时刻发出激光射线后获得的点云,位于同一根网格线段,并且,a1、b1、p4、p3、p2、p1各自布置在不同的网格圈中。点云p3、p2、p1分别对应下文提及的网格圈中的节点p3、节点p2、节点p1。
步骤300,计算步骤200中的网格图每一个节点的属性,其中节点的属性包括:节点的投影径向距离,相同网格圈中两相邻节点之间的距离和梯度,相邻网格圈的两相邻节点之间的距离和梯度。
其中:
“节点的投影径向距离”指的是网格圈中的节点在雷达坐标系的xy平面上到z轴的距离。如图3所示,比如图中示出的dis_r1、dis_r2、dis_r3。
“相同网格圈中两相邻节点”比如可以是图2中示出的节点a1与节点a2,“相同网格圈中两相邻节点之间的距离”则为节点a1与节点a2的距离,“相同网格圈中两相邻节点之间的梯度”的表达式为:
其中:节点a1在雷达坐标系中的坐标表示为(xa1,ya1,za1),节点a2在雷达坐标系中的坐标表示为(xa2,ya2,za2),上述梯度公式中的z1=za1-za2,x1=xa1-xa2,y1=ya1-ya2。
“相邻网格圈的两相邻节点”比如可以是图2中示出的节点a1与节点b1,“相邻网格圈的两相邻节点之间的距离”则为节点a1与节点b1的距离,“相邻网格圈的两相邻节点之间的梯度”的表达式为:
其中:节点a1在雷达坐标系中的坐标表示为(xa1,ya1,za1),节点b1在雷达坐标系中的坐标表示为(xb1,yb1,zb1),上述梯度公式中的z2=za1-zb1,x2=xa1-xb1,y2=ya1-yb1。
步骤400,遍历由步骤200获得的的网格图中的每一个节点,根据步骤300获得的每一个节点的属性,判断节点是否为地面点,如果判断为是,则删除该节点;如果判断为否,则保留该节点,保留下来的节点为障碍物点云。
与现有技术中的平面拟合和基于don地面点云分离方法相比,本实施例提供的多线激光雷达地面点分离方法不仅能很好的处理平整路面,还能能适应多种路况(如出入地库的长斜面、起伏的小坡、减速带、不规则的曲面地面等)。
下面对步骤400进行展开描述,步骤400具体包括:
步骤410,在第一网格圈ring1上选择地面点p1。
步骤420,将p1作为地面种子点,寻找第二网格圈ring2上的地面点:以顺时针方向和逆时针方向分别遍历第一网格圈ring1中的每一个地面种子点p1,并根据步骤300计算出来节点p2、节点p2’和节点p3的属性,判断节点p2是否为疑似地面点,如果节点p2经由顺时针方向和逆时针方向两次遍历,并都被判断为疑似地面点,则确定为节点p2为第二网格圈ring2上的地面点。以此类推,直到对网格图中每一个节点都有一个true或false的地面属性判断为止。
其中,节点p2代表第二网格圈ring2上与地面种子点p1相邻的一个节点,节点p2’代表第二网格圈ring2上的且与节点p2相邻的一个节点,节点p3代表第三网格圈ring2上与节点p2相邻的一个节点。
上述步骤410中,从步骤200中选取半径最小的网格圈为第一网格圈ring1,并在第一网格圈ring1上选择生成地面点p1。第一网格圈ring1是离自车最近,大多数为地面点。在选取第一网格圈ring1地面种子点时随机性小,有利于提高整体算法准确度。
进一步地,步骤410具体包括:
步骤411,对第一网格圈ring1上的所有节点在水平面方向进行平面拟合(比如ransac平面拟合),并选定基准平面(x0,y0)。
步骤412,如图4示出的左侧部分图所示,遍历第一网格圈ring1上的所有节点,判断该节点所在的平面是否位于基准平面(x0,y0)的上方和下方预设的范围内,如果判断为是,则该节点为第一网格圈ring1上的地面点p0。比如:预先设定的基准平面(x0,y0)的上方和下方30公分范围内,也就是说,如果该节点的z轴坐标在【-30公分,30公分】的范围内,则该节点被判定为地面点。遍历完第一网格圈ring1上的所有节点后,将确定的地面点作为地面种子点。
上述步骤420中的“根据步骤300计算出来节点p2、节点p2’和节点p3的属性,判断节点p2是否为疑似地面点”具体包括:
步骤421,判断节点p1与节点p2的梯度p0.gradient关系是否小于第一阈值,如果判断为是,则初步判定节点p2是疑似地面点;
步骤422,判断节点p2与节点p2’之间的距离是否小于第二阈值,如果判断为是,则进入步骤423;
步骤423,判断节点p2与节点p2’的梯度grad(p2,p2’)是否小于第三阈值,如果判断为是,则进入步骤424;
步骤424,判断节点p1的投影径向距离dis_r1、节点p2的投影径向距离dis_r2、节点p3的投影径向距离dis_r3是否满足如下关系:
dis_r2∈(dis_r1,dis_r3);
如果判断为满足,则判定节点p2是疑似地面点。
本实施例采用相邻节点间的距离、投影径向距离、梯度等属性进行是否为地面点的判断,计算量大大减小,实时性好。
下面是一个具体的实施例。
16线激光雷达地面点分离方法包括如下步骤:
步骤100,通过多线激光雷达发出的激光线,以水平旋转的方式扫描检测区域,获取多线激光雷达采集到的点云数据。
步骤200,根据步骤100获取的点云数据,生成三维的网格图:将同一激光头在相邻两个时刻生成的点云连接,形成网格圈;将相邻两个不同激光头在同一时刻生成的点云连接,形成网格线段,每一点云对应为网格图的一个节点。
步骤300,计算步骤200中的每一个节点的属性,其中节点的属性包括:节点的投影径向距离,相同网格圈中两相邻节点之间的距离和梯度,相邻网格圈的两相邻节点之间的距离和梯度。
步骤400,遍历由步骤200获得的的网格图中的每一个节点,根据步骤300获得的每一个节点的属性,判断节点是否为地面点,如果判断为是,则删除该节点;如果判断为否,则保留该节点,保留下来的节点为障碍物点云。
步骤410,从步骤200中选取半径最小的网格圈为第一网格圈ring1,并在第一网格圈ring1上选择生成地面点p1,具体包括:对网格圈上的所有节点在水平面方向进行平面拟合,并选定基准平面;遍历第一网格圈ring1上的各节点,判断该节点所在的平面是否位于基准平面的上方和下方预设的范围内,如果判断为是,则该节点为第一网格圈ring1上的地面点p1。
步骤420,以顺时针方向(比如图4示出的右侧图中箭头指示的方向)和逆时针方向分别遍历第一网格圈ring1中的每一个地面种子点p1,并根据步骤300计算出来节点p2、节点p2’和节点p3的属性,判断节点p2是否为疑似地面点,如果节点p2经由顺时针方向和逆时针方向两次遍历,并都被判断为疑似地面点,则确定为节点p2为第二网格圈ring2上的地面点;其中节点p2代表第二网格圈ring2上与地面种子点p1相邻的一个节点,节点p2’代表第二网格圈ring2上的且与节点p2相邻的一个节点,节点p3代表第三网格圈ring3上与节点p2相邻的一个节点。
步骤430,将步骤420确定的地面点作为寻找下一圈网格圈上的地面点的地面种子点,遍历该地面种子点所在的下一网格圈,并按照步骤420的方法,判定其它网格圈上的节点是否为地面点。
遍历完步骤200获得的的整个网格图后,所有的地面点就都找完了,去除地面点后,剩下的就都是前景(障碍物)的点云,示例结果如图5和图6所示(图5为原始点云,图6为去除地面的点云)。
步骤420中的“根据步骤300计算出来节点p2、节点p2’和节点p3的属性,判断节点p2是否为疑似地面点”具体包括:
步骤421,判断节点p1与节点p2的梯度p0.gradient关系是否小于第一阈值threshold_gradient(0.9),如果判断为是,则初步判定节点p2是疑似地面点。
其中,第一阈值threshold_gradient是根据实际相邻地面点的真实梯度,去估计一个满足相邻地面点条件的梯度范围。例如16线激光雷达,如果p0是地面点,它的相邻点p1与p0的梯度小于0.9,则认为p1是疑似地面点。
步骤422,判断节点p2与节点p2’之间的距离是否小于第二阈值threshold_s,如果判断为是,则进入步骤423;
步骤423,判断节点p2与节点p2’的梯度grad(p2,p2’)是否小于第三阈值threshold_grad(0.2),如果判断为是,则进入步骤424;
其中,第三阈值threshold_grad是根据实际相邻地面点的真实梯度,去估计一个满足相邻地面点条件的梯度范围。例如16线激光雷达,如果p0是地面点,它的相邻点节点p1与节点p1’的梯度小于0.2,则认为p1是疑似地面点。
步骤424,判断节点p1的投影径向距离dis_r1、节点p2的投影径向距离dis_r2、节点p3的投影径向距离dis_r3是否满足如下关系:dis_r2∈(dis_r1,dis_r3);如果判断为满足,则判定节点p2是疑似地面点。
在上述的步骤100和步骤200之间还包括“点云预处理”的步骤。通过点云预处理,可以提取freespace或roi中的点云,或者降采样,减少点云样本,优化性能。
本发明还提供一种多线激光雷达地面点分离装置,所述多线激光雷达地面点分离装置包括多线激光雷达1、网格图生成模块、节点属性计算模块和地面点处理模块,其中:
所述多线激光雷达发出的激光线通过水平旋转的方式扫描检测区域,获取多线激光雷达采集到的点云数据,并输出。下面通过16线激光雷达说明该步骤实施方法。
如图1所示,图中带箭头的直线示出的是16线激光雷达发出的激光线。在激光雷达坐标系中,各个激光头发射并经过内部坐标转换到同一原点坐标系下,即激光雷达坐标系。水平面为xy平面,x轴为车辆的纵向行驶方向,前进的方向为x轴的正向,y轴为车辆的横向,车辆左侧是y轴正方向。z轴垂直于xy平面,向上的方向为z轴的正向。根据16线激光雷达的物理特性,垂直分辨率为-15°至+15°,水平分辨率为0.2°。也就是说,在激光雷达坐标系中,16个激光头发出的激光线从原点发出,可以理解为16条激光射线。基准平面为过原点(z=0)的xy平面(x0,y0),在基准平面(x0,y0)上方,从内到外,激光射线的夹角依次为1°、3°、……、13°、15°;在基准平面(x0,y0)下方,从内到外,激光射线的夹角依次为-1°、-3°、……、-13°、-15°,“-”代表是沿z轴的负向。16条激光射线沿z轴周向旋转,旋转过程中,各激光头按照每隔0.2°的水平旋转角发射激光射线。这样,在旋转360°后,将得到一帧具有1800×16个点的点云数据。“内”可以理解为靠近基准平面(x0,y0)的方向,“外”则理解为远离基准平面(x0,y0)的方向。
所述网格图生成模块根据所述多线激光雷达输出的点云数据,生成三维的网格图:将同一激光头在相邻两个时刻生成的点云连接,形成网格圈;将相邻两个不同激光头在同一时刻生成的点云连接,形成网格线段,每一点云对应为网格图的一个节点。
如图2所示,图中示出的每一个圆圈“o”代表步骤100中采集到的点云数据中的一个点云(激光点),这个点云有可能是地面点云,也可能是障碍物点云。本发明的目的在于将图2中的地面点云识别出来,并去除。使最后呈现在感知输出上的点云数据仅有障碍物点云,这样可以为后续车辆的决策提供准确数据支持。
从图2中可以看出:a1、a2、a3、a4、a5、a6、a7、a8、a9、a10、a11、a12、a13都是由同一个激光头在不同时刻发出激光射线后获得的点云,位于同一个网格圈上,即图中示出的最外圈。此处仅仅是以最外圈的网格圈为例说明网格圈的形成,其它的网格圈上的节点的形成与最外圈的网格圈相同,在此不再赘述。总之,同一个网格圈上的节点是多线激光雷达的单个激光头旋转一周生成的点云的集合。
从图2中还可以看出:a1、b1、p4、p3、p2、p1分别由不同激光头在同一时刻发出激光射线后获得的点云,位于同一根网格线段,并且,a1、b1、p4、p3、p2、p1各自布置在不同的网格圈中。
所述节点属性计算模块用于计算网格图中的每一个节点的属性,其中节点的属性包括:节点的投影径向距离,相同网格圈中两相邻节点之间的距离和梯度,相邻网格圈的两相邻节点之间的距离和梯度。
其中:
“节点的投影径向距离”指的是网格圈中的节点在雷达坐标系的xy平面上到z轴的距离。如图3所示,比如图中示出的dis_r1、dis_r2、dis_r3。
“相同网格圈中两相邻节点”比如可以是图2中示出的节点a1与节点a2,“相同网格圈中两相邻节点之间的距离”则为节点a1与节点a2的距离,“相同网格圈中两相邻节点之间的梯度”的表达式为:
其中:节点a1在雷达坐标系中的坐标表示为(xa1,ya1,za1),节点a2在雷达坐标系中的坐标表示为(xa2,ya2,za2),上述梯度公式中的z1=za1-za2,x1=xa1-xa2,y1=ya1-ya2。
“相邻网格圈的两相邻节点”比如可以是图2中示出的节点a1与节点b1,“相邻网格圈的两相邻节点之间的距离”则为节点a1与节点b1的距离,“相邻网格圈的两相邻节点之间的梯度”的表达式为:
其中:节点a1在雷达坐标系中的坐标表示为(xa1,ya1,za1),节点b1在雷达坐标系中的坐标表示为(xb1,yb1,zb1),上述梯度公式中的z2=za1-zb1,x2=xa1-xb1,y2=ya1-yb1。
所述地面点判断处理模块用于遍历由所述网格图生成模块获得的的网格图中的每一个节点,根据所述节点属性计算模块获得的每一个节点的属性,判断节点是否为地面点,如果判断为是,则删除该节点;如果判断为否,则保留该节点,保留下来的节点为障碍物点云。
与现有技术中的平面拟合和基于don地面点云分离方法相比,本实施例提供的多线激光雷达地面点分离方法不仅能很好的处理平整路面,还能能适应多种路况(如出入地库的长斜面、起伏的小坡、减速带、不规则的曲面地面等)。
在一个实施例中,所述地面点处理模块包括地面点选择子模块和地面点判断子模块,其中:所述地面点选择子模块用于在第一网格圈ring1上选择地面点p1。所述地面点判断子模块用于将p1作为地面种子点,寻找第二网格圈ring2上的地面点:以顺时针方向和逆时针方向分别遍历第一网格圈ring1中的每一个地面种子点p1,并根据步骤300计算出来节点p2、节点p2’和节点p3的属性,判断节点p2是否为疑似地面点,如果节点p2经由顺时针方向和逆时针方向两次遍历,并都被判断为疑似地面点,则确定为节点p2为第二网格圈ring2上的地面点。其中,节点p2代表第二网格圈ring2上与地面种子点p1相邻的一个节点,节点p2’代表第二网格圈ring2上的且与节点p2相邻的一个节点,节点p3代表第三网格圈ring2上与节点p2相邻的一个节点。
在一个实施例中,所述地面点判断子模块中的“根据步骤300计算出来节点p2、节点p2’和节点p3的属性,判断节点p2是否为疑似地面点”具体包括第一判断单元、第二判断单元、第三判断单元和第四判断单元,其中:所述第一判断单元用于判断节点p1与节点p2的梯度p0.gradient关系是否小于第一阈值,如果判断为是,则初步判定节点p2是疑似地面点。所述第二判断单元用于判断节点p2与节点p2’之间的距离是否小于第二阈值。所述第三判断单元用于在所述第二判断单元判断为是的情形下,判断节点p2与节点p2’的梯度grad(p2,p2’)是否小于第三阈值。所述第四判断单元用于在所述第三判断单元判断为是的情形下,判断节点p1的投影径向距离dis_r1、节点p2的投影径向距离dis_r2、节点p3的投影径向距离dis_r3是否满足如下关系:dis_r2∈(dis_r1,dis_r3);如果判断为满足,则判定节点p2是疑似地面点。
在一个实施例中,所述地面点选择子模块具体包括基准平面设定单元和第五判断单元,其中:所述基准平面设定单元用于对第一网格圈ring1上的所有节点在水平面方向进行平面拟合,并选定基准平面。所述第五判断单元用于遍历第一网格圈ring1上的各节点,判断该节点所在的平面是否位于基准平面的上方和下方预设的范围内,如果判断为是,则该节点为第一网格圈上的地面点p1。
本发明提供的地面点云分离方法能够适应于平整路面、类似出入地库的长斜面、起伏的小坡、减速带、不规则的曲面地面、平整路上的小障碍物、起伏小坡上的小障碍物及减速带上的小障碍物等各种路况,较只能适应于平整路面和平整路面上的小障碍物路况的平面拟合适应性更强,较基于栅格和基于don的地面点云分离方法具有更高的准确性和实时性,可直接应用在复杂的实际环境中。本发明提供的地面点云分离方法适合任何多线激光雷达,对于线数较少(如16线)的激光雷达,可以处理全部点云;对于较多线数(如64线)。
最后需要指出的是:以上实施例仅用以说明本发明的技术方案,而非对其限制。本领域的普通技术人员应当理解:可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。