郭永春,刘文博,罗作煌
(1. 深圳亿嘉和科技研发有限公司,广东 深圳 518055)
目前,对于可行驶区域感知技术的研究,已经有部分学者进行了相关的研究,并取得了一定的成果[1-5]。主要表现为,基于纯激光点云的道路提取的研究[6],基于纯视觉方案的研究[7-10],基于滤波聚类分割方法的研究[11-16],基于激光和摄像头融合方法的研究[17-18]。然而,在实际的落地场景中,很难有一种方法能够兼顾实际的应用需求,该项课题仍然需要进行深入的研究和探索。本文以激光雷达点云作为数据源,提出了一种实时的激光点云路面分割方法和一套实时的路面障碍物检测方法,综合解决了可行驶区域生成的两个技术点,并在实际非结构化道路场景的应用中取得了良好的效果。
实时的路面检测方法,需要兼顾精度和效率的双重要求。本文提出一种单帧分线激光点云的滤波方法、基于滑窗法的多帧融合分割方法解决实时路面的检测问题。
单帧激光点云是指激光雷达设备按照其运行频率,单次完成一周扫描所获取的点云数据。实时接收激光雷达设备发送的激光点云数据,对所述的单帧激光点云数据进行滤波处理,是指按照设定局部感知区域,对单帧激光点云有效的扫描区域(在局部感知区域内)进行裁剪,然后对所述单帧激光点云按激光扫描角度进行激光点云分线生成多线激光点云数据,接着对每条分线的激光点云进行切段处理,将每条分线的激光点云切割成一系列分段点云,最后对每个分段点云按路面反射强度和几何一致性准则进行过滤。图1 所示为单帧激光点云的扫描效果图。
图1 单帧激光点云扫描效果
1.1.1 激光点云分线
激光点云分线的具体实施方式为,对每个激光点(x,y,z)按照公式(1)计算它的垂直角扫描角度θ;根据激光雷达传感器提供的最大扫描角θmax和各扫描线之间的夹角ω等参数,按照公式(2)计算当前点的扫描线标识nScan,将扫描线标识一致的点按顺序分到同一组,完成单帧激光的分线任务。
1.1.2 几何一致性准则
几何一致性准则,是指在一个微小分段内的单线点云所满足的几何特征,包括点云扫描半径一致;点云中相邻点之间的空间距离一致;点云近似满足直线分布。
按照公式(3)中所述的几何一致性准则,在一个分线激光的微分片段内,其最大半径rmax与最小半径rmin之差小于设定阈值δr;每两个相邻激光点距离di和dj距离之差小于设定阈值δd,该微分片段的方向包围盒的短边与长边的比值小于设定阈值δs;其中obb_width 为方向包围盒的宽度;obb_height 为方向包围盒的高度;min(obb_width,obb_height)为取方向包围盒的短边;max(obb_width,obb_height)为取方向包围盒的长边。
1.1.3 单帧滤波处理
对所述分线激光点云按路面反射强度和几何一致性准则进行过滤,包括激光路面反射强度值的初始化,是指根据机器人行驶方向计算方向向量,按照最近距离原则选该方向上距离较近的部分点进行统计,计算强度初始值;单线激光的切段处理,是指按照设定阈值的切割长度将同一条扫描线上的点云划分为若干小段,本文实验中所设阈值长度为20 cm;计算分段点云强度值I和初始化路面强度值I0的差值;计算分段点云的几何一致性,几何一致性的计算方法按照1.1.2 中所述的几何一致性准则进行,包含最大和最小半径之差满足半径阈值、每两个相邻点之间距离差满足距离阈值、分段点云的直线特性(方向包围盒)满足长宽比例阈值;过滤不满足强度一致性(公示4)和几何一致性(公式3)的点云,保留满足阈值的点云。这里阈值包含强度阈值δI,半径阈值δr,距离阈值δd,直线阈值δs,可以根据需求调整数据,本文实验所设阈值分别设为2.0 cm,3 cm,2 cm,0.15 cm。
1.2.1 局部点云拼接与滑窗更新机制
对单帧点云过滤后的结果缓存至局部感知系统的滑窗中,该滑窗中存储当前局部感知范围内的各帧经过单帧激光滤波后的点云和位姿信息;裁剪超出范围的各帧点云和位姿信息。如果遇到停止采集,或者帧间数据过于密集的情况,需按照设置的移动距离(本文实验设置为5 cm)对帧间点云进行采样;如果当前帧与上一帧的移动距离小于设定阈值,则用当前帧数据替换滑窗中上一帧的数据,反之,则将当前帧数据追加至滑窗的末尾;如果累计帧数超过滑窗设置的最大数量,则删除滑窗头部位置时间最早的帧数据,以此类推获取满足条件的各帧激光数据。
将局部感知范围内各帧激光点云数据转换到当前帧的实施方式为,设当前帧的位置和姿态分别为T0和R0,其余各帧的位置和姿态分别为Ti和Ri(i=1,2,…,n),按照公式5 和公式6 计算各帧相对于当前帧的位姿信息R和T,根据公式7计算各帧坐标点Xi在当前帧中的坐标P。
1.2.2 局部点云的路面分割
对局部缓存的激光点云数据进行点云路面分割,具体流程是首先将局部缓存的各帧激光数据统一转换至当前帧坐标系,生成局部密集激光点云数据,对密集点云按设定分辨率进行网格组织和划分,本文实验设定网格分辨率为5 cm×5 cm,按照局部坐标范围计算栅格网的长度和宽度,将每个网格初始化为0;设置机器人本体附近的网格为初始种子点网格,种子点网格标记为1;计算初始种子点网格的生长参数,所述生长参数是指网格内点云所拟合的平面的法向量、网格内点到网格面片的距离和、网格内点云的最大最小高程;按照网格参数相似度准则进行区域生长,具体的实施方式为计算当前种子点8领域中未被标识的网格参数,比较种子点网格和领域网格参数的相似性,将满足要求的领域网格加入种子点列表并标识为1,从种子点列表删除当前种子点,然后从种子点列表重新取出一点进行上述操作,直至种子点列表为空,统计所有被标识的网格(标记为1 的网格),这些网格所组成的最大连通域构成有效分割区域,对标记出来的有效区域生成规则化的三维格网点云。
基于单帧激光点云的障碍物检测,首先按照1.1节中所述的方法进行单帧激光点云的分线和切段,对每个切段内按照ransac(随机采样一致性)的方法统计坐标值的离群点,并将这些离群点按欧氏距离进行聚类,对点云数量和聚类范围满足要求(本文实验设置的点云数量满足10,聚类尺寸大于10 cm)的结果进行记录,计算它们的中心点和切段方向上的长度,然后按照检测出来的位置和聚类尺寸,将目标障碍物从1.2 节中所提取的感知区域内剔除。该方法适用于较小尺寸的障碍物。
局部点云的障碍物检测,是指按照1.2.1中的滑窗机制将原始未滤波的各帧点云进行缓存和拼接,按照1.2.2中所分割的地面点云基于ransac平面拟合方法构造局部地平面,按照设置的阈值对高于局部地平面的点云进行聚类,形成障碍物区域的簇标记,然后按照聚类尺寸对1.2.2 中对应位置的可行驶区域进行剔除。该方法适用于较大尺寸的障碍物。
基于本文所述的非结构化路面检测方法和障碍物检测方法,设计实施局部感知系统的具体实施步骤为:
1)数据接收模块,实时接收激光雷达设备采集到的每一帧激光点云数据并输入系统。
2)单帧激光点云滤波,按照本文1.1所述原理对单帧激光点云进行处理。
3)滑窗机制的更新和拼接,按照本文1.2.1 所述原理进行局部点云的更新和缓存。
4)局部点云的路面分割,按照本文1.2.2 所述原理进行局部点云的路面分割和提取。
5)单帧激光点云的障碍物检测,基于步骤1获取的数据,按照本文2.1所述方法进行处理。
1)原始激光点云的滑窗更新和拼接,按照本文1.2.1所述原理对原始激光点云进行更新和缓存。
2)多帧激光点云的障碍物检测,按照本文2.2所述原理进行障碍物检测。
3)障碍物区域过滤,对步骤4中所得的局部路面除步骤5和步骤7所检测到的障碍物区域。
4)输出局部可行驶区域,向机器人操作系统发送处理后的局部可行驶区域。
本文选用禾赛32线激光点云设备,扫描角度-16°~+16°,搭载在室外作业机器上上进行算法的测试和验证。本次测试的评测方法是按照识别帧数进行统计,采用人工来判别识别结果是否正确,并对识别结果正确的帧数与总样本的帧数进行比较,计算单个数据集的识别正确率。
本文选取了3个典型的园区数据进行统计(图3),为方便区分,3个园区的数据集分别以园区A、园区B和园区C进行标记。测试所设定的最大局部感知的范围是以当前位置作为中心,宽度和长度为4 m×8 m 的区域。园区A 地形以坡道为主,涵盖了宽路、窄路、陡坎、台阶等地形,测试使用3 122帧数据进行统计。园区B 地形整体比较平坦,涵盖了宽路、窄路、拐弯、障碍物等场景,测试使用1 639帧数据进行统计。园区C所用数据为某写字楼的办公区楼下,包含自行车道、人行广场、树木、植被和陡坎区域等,测试使用546帧数据进行统计。具体测试结果如表1所示。
图3 局部可行驶区域效果
表1 局部可行驶区域感知结果统计
本文根据实际应用的需求设计了若干测试用例,测试案例涵盖了宽路、窄路、拐弯、尽头、陡坎、台阶、障碍物、植被等场景。本次测试的软硬件情况如下,测试工控机处理器i7-9700、内存16 G,采用Ubuntu18.04 操作系统、ROS-melodic 机器人系统框架进行算法适配。测试效果如图2 所示,经过统计,可行驶区域整体的识别正确率大于95%,单线程测试的单帧算法时间消耗在70 ms左右。
本文通过研究单帧激光点云的非地面点滤波技术、基于滑窗机制的多帧激光点云路面分割技术、单帧激光点云的障碍物检测技术和局部点云的障碍物检测技术,提出了一套完整的局部可行驶区域感知方法和技术。经过验证,该方法识别的准确性较高、结果可靠,能够满足目前机器人作业环境的实际应用需求。
本文研究采用的传感器是激光雷达设备,未对融合相机开展工作,后期研究考虑融合彩色相机或深度相机,进行图像和激光点云的深度融合,以及激光点云和深度相机点云的多模态点云融合,进一步增强可行驶区域检测的可靠性和精细程度,从而满足机器人感知的更高标准的要求。