APP下载

面向机械臂避障的非结构场景感知研究

2020-10-09周恒旭何志敏

机械与电子 2020年9期
关键词:邻域激光雷达障碍物

周恒旭,何志敏,周 燕

(1.佛山科学技术学院电子信息工程学院,广东 佛山 528225;2.佛山科学技术学院自动化学院,广东 佛山 528225)

0 引言

目前,对于解决机械臂避障问题,一般是利用先验知识进行示教避障。机器人虽然拥有某种程度的智能化,但远不符合人们的预期,其中一个重要因素是机器人感知系统中仍存在一些问题亟待解决,其中最重要的是如何让机器人对现实三维场景感知和理解[1]。这些现实问题极大地制约着机器人的应用。非结构场景的感知是机械臂实现自主避障的基础,使用三维传感器是非结构场景感知的前提。

激光雷达和深度摄像头都是获取点云的主流设备之一,但深度摄像头存在的问题有:深度摄像头的测量距离短,随着距离增大误差变大;会因反射率不同而导致深度图里的物体边缘出现空洞现象[2];其成像程序计算量大,在有遮挡物情况下不适用。

激光雷达应用场景多,文献[3]使用2D激光雷达通过扫描站获取个体植物的位置信息;文献[4]使用机载激光雷达进行输电线的三维重建;文献[5]描述了欧洲航天局的e.Deorbit轨道碎片清除计划中的B1阶段里,激光雷达是清理卫星的GNC技术的一个组成部分,能在近距离上切换成3D模式扫描生成点云。综上所述,本文将使用三维激光雷达作为场景感知的传感器以此获取点云数据。

在点云处理算法方面,近年来流行使用深度学习的算法对点云进行处理,其主要分为2类:基于鸟瞰图的算法和基于点云图的算法。基于鸟瞰图的思想是将点云数据转换为鸟瞰图,再使用近些年出现的RCNN、Fast RCNN、Faster RCNN、YOLO和SSD等算法[6-12]对鸟瞰图进行目标检测。基于点云图的算法起源于2017年出现的PointNet[13],该深度学习网络直接处理点云,在目标分割和识别上取得良好效果,但其仅仅是用于物件的抓取任务上。基于深度学习的算法虽然表现最好,但实际上,数据的处理决定着算法的表现效果,而这些算法往往是针对数据和特定场景进行设计的。深度学习是数据驱动型,需要大量数据训练才能取得良好表现。在现实世界中大多数数据都是未标记的,不存在标签信息,因此有监督的深度学习适合解决的AI问题是非常狭窄的,更多的是需要无监督学习解决问题[14]。面向机械臂避障的非结构场景中,场景形态结构千变万化,并无具体的特征结构,无法进行针对性的数据处理,非结构场景的每一个构成部分也不存在标签,无法制作大规模的数据集进行深度学习,故虽然深度学习在某方面表现效果良好,但是在非结构场景里的应用中始终无法代替非深度学习方法进行点云的处理操作。故本文将使用非深度学习的方法对点云进行处理。

本文目的在于,针对目前实现机械臂避障过程中需要感知场景信息,而使用激光雷达对非结构场景感知进行研究的情况,通过对三维激光雷达点云进行地面分割、滤波和聚类操作,实现对场景信息的获取。在地面分割过程中,针对传统的RANSAC算法表现不佳情况,提出了基于横截面积的地面分割方法。在聚类过程中,针对经典的DBSCAN算法存在参数选择难且影响聚类效果的问题,根据激光点云的特点,提出一种基于有序点云间的切比雪夫距离确定DBSCAN 算法的邻域半径参数方法。

1 非结构场景的点云数据获取

本文通过CoppeliaSim机器人仿真软件进行非结构场景的搭建。使用仿真软件进行机器人感知算法研究的优点在于快速且准确,可搭建任意现实世界场景。为了获取场景的激光点云数据,在CoppeliaSim里使用Velodyne公司的HDL-64E三维激光雷达,该传感器专为障碍物探测和车船导航而设计,探测精度为1 cm,垂直视场角为26.8°,水平视场角为360°。设计的场景为常见的室内非结构场景,2张桌子,桌子上面有2个立方体和1个盆栽,桌子对面为激光雷达,如图1所示。

图1 非结构场景示意

利用CoppeliaSim的远程API与Python进行通信,获取激光雷达的点云数据,取其1/4视场并保存成.ply格式文件,数量为10 952个。读取.ply文件,并可视化如图2所示。

图2 非结构场景的点云示意

2 地面分割

在获取到点云数据后,一般需要进行地面分割操作,减少点云数据量。地面分割一般采用基于随机采样一致性(RANSAC)算法进行操作,该算法是Fischler和Bolles在1981年提出[15],被广泛用于平面提取[16]、边界拟合与提取[17-18]、剔除误匹配点[19]和建筑物立面分割[20]等领域。虽然RANSAC算法具有较强的鲁棒性,但是也存在缺点:局外点的数目不能过多;计算参数过程中迭代次数没有上限,耗费计算资源较大;需确定模型阈值和适用数据数目。这些不足限制了RANSAC算法在点云分割地面上的应用。针对图1的场景,使用RANSAC算法对点云数据进行处理,发现效果不佳,如图3所示。在图3中,之所以拟合的平面与地面形成大幅度的角度,这是因为场景的点云相对于地面来说是局外点,而局外点的数目过多,导致z方向的权重过大,故出现拟合地面效果不佳情况。

图3 RANSAC算法分割地面效果

2.1 基于横截面积的地面划分

结合非结构场景,提出了一种基于横截面积的地面分割原理。通过研究发现,从z轴方向看,在非结构场景中,地面点云分布范围广泛,而其他物体点云分布范围集中,为了实现分离地面,提出一种以横截面为依据的地面分割的方法。其具体原理是:以z轴为分割标准,设置分层数n对z轴进行分割,即分为n个截面。对于第i个截面(i=1,…,n),遍历所有点云的z坐标是否属于第i个截面上,如果是,将其x坐标值和y坐标值保存在临时存储单元里tempi,查找tempi里x最大值xmax和最小值xmin,求xmax与xmin的差,即xei。同样方法计算出yei。用xei与yei相乘计算出最大横截面积si。最后,si最大的横截面层即为包含的地面层。根据地面层所在的位置,可以使用直通滤波器进行地面分割操作。另外,关于分层数n的选择,n越大则z轴方向分的层越细。但层数n并非越大越好,因为n决定着每层的高度,若每层有一定的高度,则可以囊括整个地面的小幅度的坡度,有小幅度坡度的地面是会在z方向上产生高度,故每层的高度需要高于可能存在的坡度地面产生的高度。假设点云在x-y平面内的范围为t×t,单位为m,地面坡度为α°,则通过正切函数得到其高度为t×tanα。

根据场景的实际长宽,将分层数n设置为15,每层的高度h为0.09 m,再对其进行每层横截面积计算,把每层的横截面积数值绘制成直方图,如图4所示。由图4可知,第1层的面积远远大于其他层,明显是由地面的点云分布过广所致,从第2层开始,面积逐步下降,但第11层和第12层的面积略微上升,这是盆栽的植物下窄中宽上窄所致。

图4 每层的横截面积直方图

2.2 利用直通滤波器进行地面分割

点云的直通滤波器,是在点云的某个维度上设置阈值,将某个维度上的点云数据分为在阈值内和阈值外,从而决定是否滤除。此外,在面向机械臂避障的三维场景中,机械臂有一定的工作空间,即机械臂的末端执行范围有限,一般为x-y-z轴的±2 m之间。采用直通滤波器对点云数据处理,既符合机械臂的工作空间需要,同时也有利于减少点云数据量。

依据每层高度h,地面在第1层,以及点云z轴方向上最小值为-0.023 0 m、最大值为1.902 1 m,并结合一般机械臂的最大工作空间,设置直通滤波器的阈值,对点云进行直通滤波操作。处理后的点云可视化如图5所示,其数量为4 314个。

图5 地面分割后的场景点云

经过直通滤波处理后,仅仅是去除地面点云,但目前场景中的点云数量依然较大,这是由于使用了高分辨率的三维激光雷达获取的点云,有些地方往往非常密集,存在极大的冗余信息。同时,大量冗余的点云对于后续的分割工作提出了挑战,故对场景的点云数据进行采样是必要操作。本文采用体素化网格滤波器对点云数据进行采样操作,从而实现点云的滤波。效果如图6所示,其点云数量为2 157个。

对比图5与图6,明显发现点云数量减少,但依然保留场景中许多细节特征,即有利于分割处理的效率,场景也具备较高的保真度。

图6 体素网格滤波后的场景点云

3 利用聚类进行点云语义分割

在点云滤波之后,需要进行分割操作。点云的分割是通过点云的坐标、几何结构等信息进行归类区分,使得同一区分内的点云具有相似的特征。点云的高效分割是其他应用的基础。目前,鲁棒性比较好且实用的点云分割算法是聚类分割。在聚类后,每一个簇进行包围盒操作提取物体,可实现语义分割的功能。

3.1 基于密度的对噪声鲁棒空间聚类

点云在空间上的分布因物体的存在密集,而无物体处稀疏,故采用基于密度的聚类。在基于密度的聚类算法中,DBSCAN(density-based spatial clustering of applications with noise)是最具有代表性的基于密度的聚类算法[21]。

DBSCAN算法能找到点云的密集区域,并将点云空间中密集区域归为聚类簇。相较于其他聚类方法,DBSCAN算法具有一些优点:基于密度进行聚类,对远离密度核心的噪声点具有较强的鲁棒性;不需提前指定聚类簇的数量,而k-means聚类需要提前指定聚类簇的数量,且不同数量会对聚类结果产生很大影响,需要进行多次实验;能聚类出任意空间形态的聚类。

DBSCAN算法有2个重要的算法参数:邻域半径R和最少点数目minpoints。R与minpoints组合能描述数据样本的密集程度,当R内的数据点的个数大于或等于minpoints即为密集。在R内点的数量大于minpoints的点叫做核心点,不属于核心点但位于其他某个核心点的R内的点叫做边界点,噪声点既不是核心点也不是边界点。DBSCAN算法中描述点与点之间的关系有4种:密度直达、密度可达、密度相连和非密度相连。DBSCAN的算法流程如图7所示。

图7 DBSCAN的算法流程

3.2 改进DBSCAN算法

经典的DBSCAN算法虽能分类出任意形态的簇并且能较为准确地识别噪声点,但仍存在算法对参数邻域半径R极其敏感的特性。若参数选取不当,会对聚类结果会产生不良影响[22],故需要从参数选择方面改进DBSCAN算法。

通过研究三维激光雷的点云,发现激光雷达输出点云数据是分布不均衡的,距离三维激光雷达较近位置处点的分布较为密集,距离激光雷达较远位置处点的分布较为稀疏。文献[23]使用切比雪夫距离作为邻域距离,但其点云数据是由深度摄像头获取,点云分布较均匀。文献[24]在进行体素化过程中使用切比雪夫距离作为有效计算距离。在此,为了寻找到合适的参数R,结合三维激光生成点云数据分布的特点,提出一种基于有序点云间的切比雪夫距离确定邻域半径的方法。

虽然点云里的点的排列顺序并不影响其表达的内容,但会影响点与点之间的距离计算。为了统一计算点间的距离,需要将点云按照一定规则排序。已知点云信息[xi,yi,zi],i=1,…,n,n为点云总数。先以x维度的数值为基准进行排序,数值从低到高,若x维度上的数值相同,则以y维度上的数值为基准进行排序,若y维度上的数值相同,则以z轴上数值为基准进行排序,实际的点云数据不存在2个位置完全一样的点。将排好序的点云列表按照式(1)点i与点i+1之间计算出切比雪夫距离di。对di求其平均值d,并按照式(2)求其标准差σ。

di=max(|xi+1-xi|,|yi+1-yi|,|zi+1-zi|)

(1)

(2)

最终的邻域半径为R=d+σ。相较于常用的欧式距离,切比雪夫距离更长些,所囊括的范围更广,适用于高维空间环境。

3.3 实验对比及分析

为了验证本文改进DBSCAN算法的效果,将用本文改进的DBSCAN算法与经典DBSCA算法进行对比测试,并且还与k-means算法进行对比测试。通过第3节处理后的点云数据,根据3.2节的方法,计算得到邻域半径R=0.083。对于经典的DBSCAN算法的邻域半径R的选择,参考文献[21]中给出的建议,这里选取R=0.200。对于参数最少点数目minpoints的选取,其对效果影响不大,一般选取范围5~8,这里都取minpoints=7。k-means算法、经典DBSCA算法和改进DBSCAN算法的效果分别如图8、图9和图10所示,图中的每一簇已框出标识。

图8 k-means算法聚类效果

图9 经典DBSCAN算法聚类效果

对比图8与图10,k-means算法把盆栽、立方体和桌子一部分归为1簇。对比图9与图10,改进DBSCAN算法聚类簇比经典DBSCAN算法的多出了8个簇,意味着改进DBSCAN算法聚类更精细,同时,经典DBSCAN算法把盆栽和桌子归为1簇,2个立方体通过桌子点云也被归为1簇,说明经典DBSCAN算法在非结构场景聚类中表现差,而改进DBSCAN算法能把盆栽、桌子和2个立方体各归1簇,已达到精准分割物体的作用。通过以上实验证明,在处理激光点云数据时,改进DBSCAN算法相较于经典的DBSCAN算法和k-means算法聚类分割更精细合理。

图10 改进DBSCAN算法聚类效果

3.4 障碍物的提取

为了使得聚类分割后的障碍物更加直观,需要使用拟合包围盒来产生具体的障碍物信息[25-27],即经过分割后得到场景中的一些障碍物,需要找出各个障碍物的边界,拟合出边界将各个障碍物框住,进而达到障碍物提取的作用。在三维点云数据障碍物感知提取领域,实用且简单的拟合包围盒为MAR(minimum area rectangle)方法[28-29]。

经过3.3节聚类处理后获得了13个簇,由于篇幅有限,只对具有代表性的盆栽簇和立方体簇使用MAR方法进行拟合包围盒操作,实现障碍物提取,其效果如图11和图12所示。盆栽包围盒的中心坐标为[ 0.247 6,0.189 7,0.419 5],长为0.495 1 m,宽为0.379 3 m,高为0.839 0 m,体积为0.157 6 m3。立方体包围盒的中心坐标为[0.294 6,0.871 5,0.149 4],长为0.589 1 m,宽为0.275 4 m,高为0.298 7 m,体积为0.048 5 m3。

图11 包围盒提取的盆栽

图12 包围盒提取的立方体

4 联合仿真实验

为了进一步测试本文的所提出的方法在机械臂避障方面的应用效果,本节使用CoppeliaSim机器人仿真软件及MATLAB进行联合仿真实验。搭建常见的非结构场景,使用UR5机械臂进行实验。实验目的是根据给定的起始点和目标点信息,利用感知系统和处理算法获取场景的信息,作为复合机器人的路径规划依据。

将获取到的点云数据使用本文的地面分割方法进行分割;经过滤波操作后,再使用本文的改进DBSCAN算法进行聚类,如图13所示;最后使用包围盒进行物体的提取,如图14所示。

图13 改进DBSCAN算法聚类效果

图14 提取场景物体效果

利用提取到的场景信息,使用Informed RRT*算法进行路径规划,对规划出的路径信息进行逆运动学求解以驱动仿真环境中的机器人伺服。机械臂的避障运动效果如图15所示,图中曲线为机械臂末端运动轨迹。记录运动过程中机械臂的6个关节的角度数据,并利用MATLAB将数据可视化出来,如图16所示。 由图16可知,机械臂关节角度变化平缓无突变,说明机械臂运动姿态稳定。总体而言,在按照规划的路径运动时,机械臂姿态平稳,效果达到预期。

图15 复合机器人避障效果

图16 机械臂关节角度变化

5 结束语

精准提取非结构场景中的障碍物是机械臂进行可靠避障的基础。为了达到精确提取障碍物,本文进行了激光点云的研究和相关的处理算法的操作,验证了基于有序点云间的切比雪夫距离确定DBSCAN算法的邻域半径参数方法的可行性,以及其相较于经典的DBSCAN算法具有的优良性。同时,在进行地面分割操作过程中,发现RANSAC算法分割地面效果不佳的情况,设计了一种基于横截面的地面分割方法,其原理简单易懂,操作使用方便,且仿真表现效果良好,也为后续的聚类分割处理达到预期效果提供了保障。

猜你喜欢

邻域激光雷达障碍物
手持激光雷达应用解决方案
基于混合变邻域的自动化滴灌轮灌分组算法
法雷奥第二代SCALA?激光雷达
稀疏图平方图的染色数上界
高低翻越
SelTrac®CBTC系统中非通信障碍物的设计和处理
赶飞机
基于激光雷达通信的地面特征识别技术
基于激光雷达的多旋翼无人机室内定位与避障研究
基于邻域竞赛的多目标优化算法