基于随机采样一致性的规则棒料位姿识别*
2019-09-11吴庆华朱思斯
吴庆华, 朱思斯, 周 阳, 万 偲, 何 涛
(1.湖北工业大学 机械工程学院,湖北 武汉 430068;2.现代制造质量工程湖北省重点实验室,湖北 武汉 430068)
0 引 言
工业生产中,引导机械手对规则堆放棒料实施抓取的过程中,准确识别出单根棒料的位姿信息是关键环节。如何从多根棒料中分割出单根棒料并准确识别其位姿,对于机械手自动抓取环节具有一定的研究意义。传统的二维视觉检测技术[1,2],占用空间大、易受环境光影响、识别准确性不高。因而提出基于三维点云分割的棒料位姿识别方法,充分利用规则堆放棒料点云的冗余数据,对棒料点云进行分析处理得到每根棒料的准确空间抓取位姿。
点云分割算法主要有区域增长算法、聚类算法、霍夫变换、随机采样一致性算法等[3,4]。区域增长算法是选取目标物体内一个小的种子区域,根据一定的准则在种子处进行邻域的扩展,直到停止生长,其性能对种子和区域增长策略的选取要求较高[5]。聚类算法是根据点邻域的点云精确计算该点的特征空间,该算法过于复杂、速度较慢。霍夫变换是在构建的点云高斯球中分别执行2D霍夫变换和3D霍夫变换。这种顺序分解计算上效率低,而且对属于空间不同轴的圆柱特征的点易被分割成同一个类[6]。随机采样一致性算法是一种经典的模型拟合算法,在异常点存在的情况下,依然可以得到比较理想的结果[7~9]。因此,采用了基于随机采样一致性的分割方法,可从规则堆放的棒料点云中分割出单根棒料的位姿信息。
1 棒料位姿识别原理
图1(a)为根据三角测量原理设计的位姿识别系统,其中由线结构光三维扫描仪获取规则堆放棒料的点云;图1(b)为扫描系统实物图;图1(c)为获得的棒料点云。根据图1(c)中棒料点云的分布特点,设计了规则堆放棒料位姿识别方法流程。先对获得的规则堆放棒料点云进行预处理,得到顶层棒料的点云,然后利用随机采样一致性(random sample consensus,RANSAC)算法将顶层棒料分割成单根棒料,再提取y值最大和最小的棒料点云,拟合出单根棒料的两个底面的圆心坐标,从而计算得到棒料的位姿。
图1 棒料位姿识别系统原理
2 基于RANSAC算法的位姿识别
2.1 点云数据预处理
由于环境以及被测对象表面光泽度等因素的影响,扫描出的圆柱体棒料点云不可避免地存在一些噪声点。根据图1(a)系统结构示意图,线激光沿y方向扫描,获得的点云如图1(c)所示,其中棒料点云沿z轴方向规律累积分布,且在x轴和y轴方向分布均处于有限范围内。根据棒料点云的分布特点,处于顶层的棒料,其z坐标较大,而接近于底层的棒料,其z坐标较小。通过对棒料点云基于z维度进行滤波处理,可以消除环境噪声点和非顶层棒料点云的影响,除去不在顶层棒料点云范围内的点云。式(1)为z向滤波的定义式,定义z坐标属于一定范围内的点云为顶层棒料点云
f(x,y,z)={(x,y,z)|z∈(z1,z2)}
(1)
2.2 圆柱体点云分割
在滤除非顶层棒料点云后,再将顶层棒料分割成单根的棒料来获取其位姿信息。
棒料的空间柱面模型如图2所示,进行RANSAC分割时输入适应于局内点的圆柱体模型的数学方程为
r2=(x-a)2+(y-b)2+(z-c)2-
(2)
式中 (a,b,c)为圆柱体轴线L上一点,(d,e,f)为圆柱体轴线L的方向向量,r为圆柱半径,(x,y,z)为圆柱面上任意一点。
图2 空间柱面模型
定义满足圆柱体模型的点为局内点,其他点称为局外点;那么,理论上局内点到圆柱面模型表面的距离为零。所以,基于RANSAC的圆柱体分割算法具体步骤:
1)任意抽选一些点,计算出上述圆柱体模型中a,b,c,d,e,f,r的初始值;
4)如图3所示,取距离阈值t=2σ,当di>t时,此点被认为是局外点,删除;反之,则为局内点,保留,并统计局内点的数目S。
5)重复步骤(1)~步骤(4),迭代k次,比较并选取含有局内点数目S最多的局内点集;
6)采用特征值法对局内点数量S最多的局内点集进行重新估计得到最终的圆柱模型参数。
图3 部分点云平视
3 棒料位姿识别实验
3.1 棒料仿真位姿识别
以图1(b)中直径为35.00 mm,长度为80.00 mm的规则堆积空心铝棒为仿真对象使用Solidworks仿真出如图4(a)所示与实际棒料堆放情况相同的10根圆柱模型,在软件中识别出所有圆柱的位置和姿态;同时,将图4(a)中的圆柱模型转换成如图4(b)所示的圆柱点云模型,并向该点云模型中添加一些噪声得到如图4(c)所示含噪声的圆柱点云模型,使用本文提出的棒料位姿识别方法识别出图4(c)中所有圆柱的位置和姿态。
图4 棒料仿真位姿识别
比较表1中分别通过这两种方法得到2组圆柱位姿,在有噪声的情况下,使用提出的方法也能较好识别出的圆柱位置和姿态,x值最大误差为0.014 mm,z值最大误差为0.028 mm。由此验证了所提出的棒料位姿识别方法的正确性和稳健性。
表1 圆柱模型的位姿
3.2 迭代次数k和阈值t对识别方法的影响
通过线结构光三维扫描仪采集如图1(b)中,直径35.00 mm,长度80.00 mm的规则堆放空心铝棒的初始点云个数为221251,扫描得到如图1(c)所示的棒料点云。设置z轴方向的滤波范围为(0.00,20.00)mm,保留范围内的点云,滤波后得到如图5所示的顶层棒料点云,点云个数为70 666。
图5 滤波结果
采用RANSAC算法对顶层棒料进行分割。在RANSAC算法中,参数的选择是影响分割精度的重要因素,所以在分割之前先设定参数。对迭代次数k和距离阈值t取不同的值,对同一根棒料点云进行多次分割分别得到如图6所示的结果。
图6 不同参数下的分割半径和时间
理论上,距离阈值t越小,分割的结果越好;迭代次数k越大,耗时越长。但从图6(a)可以看出,在迭代次数k≥20时,当距离阈值t<0.5 mm,分割出来的圆柱半径误差较大;当距离阈值t∈(0.5,1.2)mm时,分割半径则处在一个稳定的范围内r∈(17.20,17.40)mm;当距离阈值t>1.2 mm时,分割的圆柱半径不稳定。在图6(b)中,迭代次数k和距离阈值t的变化对分割时间T并无明显的影响,而处于一个相对稳定的时间区间内,每次分割所消耗的时间T∈(150,170)ms。所以,设定迭代次数k为大于等于20的值,距离阈值t为(0.5,1.2)mm区间内的值。
3.3 位姿识别数据分析
取迭代次数k=20,距离阈值t=0.7,通过RANSAC算法分割得到如图7所示的单根棒料点云,其点云个数为35027,消耗151 ms,并得到对应圆柱体模型的7个参数,即a=7.841,b=21.539,c=-4.035,d=0.002,e=1.000,f=-0.008,r=17.25。
图7 分割结果
再将这7个参数代入圆柱体模型的数学方程(2),拟合得到完整圆柱体如图8(a)所示。提取图7中y值最大和最小的棒料点云,分别拟合出棒料的2个底面,得到如图8(b)所示的两个底面拟合圆,同时得到棒料两个底面拟合圆的圆心坐标(7.850,23.500,-4.092)mm和(7.961,103.500,-4.624)mm,从而确定了图8(a)中的棒料轴心线;计算这两个底面圆心的中点得到如图8(a)所示棒料抓取位置(7.906,63.500,-4.358)mm。
使用上述方法,对扫描出的所有的棒料进行位姿识别,得到如表2所示的6个棒料位姿和棒料半径。从表2中可以看出所有扫描棒料的位置和姿态都能较好的识别;分割出的棒料半径的平均误差为0.30 mm,最大误差为0.47 mm;最小误差为0.12 mm。
图8 底面点云拟合圆拟合结果
mm
4 结 论
为引导机械手自动抓取规则堆放棒料,利用线结构光三维扫描仪采集规则堆放棒料的三维点云,通过z向滤波剔除非顶层棒料的点云,采用RANSAC算法分割出每一根顶层棒料,从而实现棒料的位姿识别。仿真实验验证了棒料位姿识别方法的正确性;实际棒料的位姿识别结果表明:当迭代次数k=20,距离阈值t=0.7时,分割结果较稳定,分割时间约160 ms左右;分割出的棒料半径的最大误差为0.47 mm。该方法对于机械零件的位姿识别,具有一定参考价值。