堆叠筒子纱机器人无序分拣方法
2022-12-21金守峰宿月文
刘 博, 金守峰, 宿月文, 严 楠, 李 毅
(1.西安工程大学 机电工程学院, 陕西 西安 710048;2.宝鸡文理学院 陕西省机器人关键零部件先进制造与评估省市共建重点实验室, 陕西 宝鸡 721016;3.宁波职业技术学院 机电工程学院, 浙江 宁波 315800; 4.陕西省计量科学研究院, 陕西 西安 710100)
纺织行业是典型的劳动密集型产业,在社会经济发展中具有重要地位。筒子纱是纺织工艺的一个终端产品,一般为圆柱或圆锥形,是生产布料、衣物和毛巾等产品的重要原材料[1]。目前,筒子纱在搬运时使用了机器人分拣大大提高了生产力。然而,在筒子纱堆放、遮挡场景下,传统示教型机器人的分拣存在巨大困难,随着纺织行业生产向智能化、自动化转变,机器视觉辅助作业已成为一种必然趋势[2-3]。
利用视觉辅助机器人完成相关动作是目前研究的热点,受到了研究人员高度关注。张勤等[4]针对复杂背景下番茄串采摘点识别定位问题,提出了基于RGB-D信息融合和目标检测的番茄串采摘点识别定位方法,引导机器人完成采摘任务。饶期捷等[5]融合机器视觉技术提出了一种基于改进的Canny边缘检测和Hough变换的机器人抓取检测分类算法,实现了机器人的目标抓取。高茂源等[6]针对管件在机器人抓取中的分类识别、位姿估计等问题,提出了一种基于双目视觉的多类型管件分类识别与位姿估计方法。Lou[7]提出了一种基于机器视觉模型的高斯混合机械臂识别与抓取方法,提高了机器人的抓取精度。陶杰等[8]建立了一套基于机器视觉的零部件抓取系统,实现了水泵生产自动化。Gao等[9]开发了一种基于视觉的密封圈组装系统,提高了生产线的效率。滕臻等[10]针对静脉药物调配机器人在药瓶类型分类、药瓶关键尺寸测量的问题,结合机器视觉和深度学习,提出了一种高效稳定的识别测量方法。权宁等[11]搭建了一套工业机器人视觉码垛实验系统,提高了工件的码垛效率,降低了工人劳动强度。周其洪等[12]利用工业相机采集纱线被吸入吸嘴的图像,实现了对细纱接头机器人的纱线断头的识别定位。
为了实现筒子纱分拣机器人对堆叠目标的抓取,必须要能够有效识别类圆柱体的空间位置与姿态。为此,课题组提出了一种具有3D视觉感知的解决方法,通过Kinect V2相机获取筒子纱目标的点云图像,根据点云处理及目标识别等算法获得筒子纱的位姿信息,最后引导机器人完成对筒子纱的抓取任务,并实验验证了方法的有效性。
1 堆叠筒子纱机器人无序分拣系统构建
1.1 堆叠筒子纱机器人无序分拣系统实验平台
基于3D视觉的筒子纱分拣实验平台如图1所示,由Kinect V2相机、HIWIN 6自由度机械臂、二指电动夹爪、计算机和抓取目标筒子纱构成。Kinect V2相机作为采集筒子纱数据的视觉感知元件,由RGB彩色摄像头、红外线发射器和红外CMOS摄影机组成,以30 帧/s的帧速获取1 920×1 080像素分辨率的RGB图像、红外图像和512×424像素分辨率的深度图像。相机采集到的筒子纱图像如图2所示。
图1 实验平台
图2 Kinect V2 采集的筒子纱图像
机械臂与Kinect V2相机组成了手眼标定(eye-to-hand)系统[13],计算机作为上位机,通过数据处理获取筒子纱目标的三维信息,同时引导机械臂完成分拣作业。由图1可知,Kinect V2相机置于筒子纱上方,获取筒子纱RGB图像与深度图像信息,并将2种图像信息相融合创建筒子纱点云数据,对其进行点云裁剪及点云分割,采用ICP算法进行点云配准,得到筒子纱的位姿信息,引导机器人完成筒子纱的无序分拣。
1.2 Kinect V2相机标定
为了实现对筒子纱目标的精确定位,需要对相机进行标定。Kinect V2相机的标定主要包括深度图像与RGB图像的重合,以及摄像头的标定。目前采用Open NI函数完成RGB图像与深度图像的校正工作。课题组基于MATLAB2020a 标定工具箱对Kinect V2相机的摄像头进行标定,根据所获取的标定板图像及标定板的参数可检测到棋盘格的角点,通过返回检测到的角点的像素点坐标来完成标定,标定板图像如图3(a)所示,9张标定板与相机的相对位置关系如图3(b)所示,重投影误差平均为0.43%,小于0.50%,满足使用要求,具体每张图像的重投影误差如图3(c)所示。
2 点云获取及预处理
2.1 筒子纱点云获取
Kinect V2相机采集到的筒子纱点云如图4(a)所示,受相机工作场景的影响,图像中存在筒子纱、承装筒子纱的盒体以及周围背景的点云,盒体以及周围背景的点云为干扰点云。为了准确获取筒子纱的点云数据,课题组采用MSAC算法和直通滤波算法对筒子纱的原始点云数据进行预处理。
图4 点云预处理过程
M估计抽样一致性算法(M-estimation sampling consistency algorithm,MSAC)是随机抽样一致性算法(random sample consensus,RANSAC)的变体,通过修改RANSAC算法的代价函数解决阈值敏感的问题[14],算法步骤为:
1) 在点云数据中随机选取3个点;
2) 依据选取的点组成一个平面s;
3) 设定阈值dτ,计算其它所有点到平面s的距离d,将距离d小于dτ的点判定为局内点,否则为局外点;
4) 确定场景中的局内点,并记录其数目;
5) 重复步骤1)~4),当平面模型中的局内点数目最多时即为拟合得到的最佳平面。
直通滤波是提取感兴趣区域最常用的方法,通过指定方向、指定阈值进行裁剪,达到快速去除点云的目的。设置三维坐标轴上的阈值,当点云处于这个范围时会被保留下来,而超出这个范围的点云就会被去除。本研究中,坐标轴上的阈值分别为:
(1)
式中:x,y,z为目标区域在三维坐标轴上的阈值范围。
通过MSAC算法和直通滤波算法提取出筒子纱的点云数据如图4(c)所示,对比滤波前后的点云图,可以看出本研究算法有效地去除了干扰点云。
2.2 点云分割
堆叠状态下的筒子纱之间存在遮挡、接触等情况,为了获取筒子纱目标准确的位姿信息,课题组采用基于聚类的分割方法,对堆叠状态下的点云数据进行分割。
在实际工业应用场景中,点云分割常用的分割方法为聚类分割[15]、欧式距离分割[16]及区域生长分割[17]。由于堆叠的筒子纱之间比较紧密,各筒子纱点云之间距离过近,基于欧式距离的分割方法的结果如图5(a)所示,可以看出各筒子纱之间没有完全分割,还存在接触的问题;基于区域生长分割方法的结果如图5(b)所示,可以看出由于筒子纱朝向及位姿接近,容易将多个不同的筒子纱分割为一类。为了准确分割堆叠状态下的筒子纱,课题组提出一种融合欧式距离与区域生长的E-R分割方法。
图5 2种点云分割算法效果
机器人每次只抓取单个筒子纱,因此只需分割出待抓取筒子纱的点云信息。故E-R分割方法不对堆叠状态下的所有点云进行聚类分割,仅对待抓取筒子纱进行分割。同时,E-R分割将欧氏距离与区域生长分割相融合,在考虑点与点之间的距离基础上,再考虑筒子纱接触法线之间的夹角,选定特定点代替随机种子点,对距离Kinect V2相机最近的筒子纱点云进行分割,避免了因筒子纱堆叠导致的分割效果不佳的问题。
E-R 算法的步骤为:
1) 遍历筒子纱点云中所有点,找出z轴方向最大的点pz作为种子点;
2) 计算pz到其邻点ps的距离dz,将距离小于设定的距离阈值dλ的点放入待抓取筒子纱的点云集合M中;
3) 计算pz与ps的法向量之间的夹角θ,将夹角小于设定的角度阈值Φ的点放入集合P中。则集合M可表示为{M|dz≤dλ,θ≤Φ};
4) 重复步骤1)~3),直到所有筒子纱被分割完毕。
3 分拣作业筒子纱的识别与定位
3.1 筒子纱点云的特征提取
内部形态描述子(intrinsic shape signatures, ISS)是一种表示立体几何形状的方法,含有丰富的几何信息,可以在局部坐标系下对特征点进行提取[18]。课题组以筒子纱点云中的角点、梯度和灰度急剧变换的点作为关键点,对其进行特征提取,结果如图6所示。
图6 ISS关键点提取结果
提取关键点的步骤为:
1) 对筒子纱点云中的点pi建立局部坐标系,并设定该点的搜索半径r;
2) 以pi为中心,r为邻域半径,遍历邻域范围内的所有点,并计算其权值:
wij=1/‖{pj∶|pj-pi| (2) 式中:pj为pi搜索半径内所有邻点。 3) 计算pi的协方差矩阵cov (pi): (3) 式中:pi为筒子纱点云某点,r为设定的搜索半径,pj为pi搜索半径内所有邻点,wij为pj权值,cov (pi)为pi的协方差矩阵,Tt为矩阵变换。 (4) 5) 重复步骤1)~4),直至遍历所有点。 机器人成功抓取目标的前提是获得目标对象的位姿参数,通过模板点云的关键点的特征找到实际场景中筒子纱点云中目标点云的位姿,即得到模板点云与目标点云之间的刚性变换关系(平移、旋转),为了获得筒子纱点云分割后的抓取姿态,课题组采用精准配准的迭代最近点算法(iterative closest point algorithm,ICP)对点云进行配准[19]。 以下为具体步骤。 1) 将模板点云P和目标点云Q作为初始点集。 (5) 3) 构建最小二乘的约束条件,计算最优刚性变换: (6) 式中:R为旋转矩阵,t∈R3,(R,t)为最优刚性变换的目标函数。 4) 计算平均距离: (7) 式中:T为平移矩阵;dk为所有对应点的平均距离。 5) 设定阈值dε和最大迭代次数Nmax。 6) 重复步骤1)~5),直至满足收敛条件。 课题组在MATLAB2020a环境和图1平台进行实验,配置为Intel Core i5 CPU、4 GiB内存的PC作为数据处理中心,实验抓取目标质量为150 g的筒子纱,分拣机器人的最大抓取质量为500 g。 为验证课题组提出方法的可靠性,以实际生产中筒子纱成品为对象进行实验验证,将9个筒子纱目标随意散乱堆叠在实验平台上,采集点云数据并对其进行裁剪,根据E-R分割方法对裁剪完成的筒子纱点云进行分割,获取如图7(a)所示的筒子纱点云分割结果。依据点云分割结果依次选取序号为1~9的9个筒子纱目标进行位姿估计实验,使用ICP算法对其进行点云配准,获取各个目标在机器人坐标系下的位姿,如图7(b)所示。为了评估文中提出E-R分割算法的性能,与欧式距离分割法和区域生长分割方法进行比较,结果如表1所示。 图7 点云处理结果 表1 点云分割方法准确率对比 从表1可以看出,对于堆叠状态下的筒子纱点云,E-R分割结合了欧式距离和区域生长的特点,有效的弥补了其他2种方法的不足,分割准确率达到了100%。实验验证了本系统方法对于堆叠状态的点云场景具有较好的分割效果。 实验中的抓取系统采用手眼标定(eye-to-hand)模式,即相机固定,与机械臂基坐标系相对位置不变,依照散乱堆叠摆放的原则进行了10批次抓取测试,每批次进行9次抓取,总共抓取90次。将装有筒子纱的盒子放在机器人的工作范围内,Kinect V2相机获取筒子纱图像并通过图像处理系统得到筒子纱的位姿,根据处理结果确定抓取的顺序;再通过标定结果将配准得到的筒子纱位姿转换到机器人基座标系下,机器人控制夹爪移动到筒子纱上方并调整末端姿态,夹爪闭合进行夹取。每完成抓取一次目标后,机械臂返回到初始位置,等待下一个目标的抓取,重复上述步骤,直至将所有筒子纱全部分拣完成。实际抓取过程如图8所示。 图8 筒子纱抓取过程 为了定量评价该分拣方法的性能,从抓取时长和抓取成功率2个指标进行评估。抓取时长定义为从Kinect V2相机采集筒子纱点云到机械臂抓取目标并返回初始点的时间。抓取成功率η有: η=(nc/nz)×100%。 (8) 式中:nc为每批实验成功抓取筒子纱的次数;nz为每批实验的抓取总次数。 分别对从视觉系统获取目标信息到机械臂完成抓取时长和抓取成功率进行记录,实验结果如表2所示。由表2可知,课题组所设计的堆叠筒子纱的机器人无序分拣方法能成功获取筒子纱目标的位姿信息并完成抓取工作,抓取时间平均为11.14 s,总成功率可以达到86.61%。 表2 抓取实验结果 课题组提出一种堆叠筒子纱的机器人无序分拣方法,研究了筒子纱点云数据的获取及预处理方法,将MSAC和直通滤波算法结合,去除多余点云,提出改进E-R分割算法对堆叠场景下的筒子纱点云进行分割,分割效率达到了100%;研究了筒子纱的位姿估计问题,基于ISS算法对筒子纱点云的关键点进行提取,采用ICP算法实现点云精准配准,结合标定结果确定了所识别筒子纱的精确位姿;搭建了真实环境下的实验平台进行实验验证。实验结果表明,该方法能够适用于多个圆柱或圆锥目标散乱堆叠场景下的分拣,其性能可以满足实际生产需求。3.2 点云配准
4 实验结果与分析
4.1 点云分割及配准实验
4.2 筒子纱抓取实验
5 结语