APP下载

基于机器视觉的圣女果采摘机械臂的动作研究

2024-02-29陈肖宇马兴录

计算机测量与控制 2024年2期
关键词:圣女位姿轮廓

陈肖宇,马兴录,刘 扬

(青岛科技大学 信息科学技术学院,山东 青岛 266061)

0 引言

随着人工智能及机器人技术的不断发展,机器人、机械臂等智能化的机械设备逐步被用于我们复杂社会生活的各个方面。不仅在生活中,在工、农生产制造中,机器人等机械设备的使用甚至更加必要和广泛[1-3]。在农业采摘方面,以圣女果种植产业为例,圣女果的采摘工作成本高,工作量大,而且当前农业劳动力短缺,研发智能采摘机器人来解决当前圣女果采摘所面临的难题是非常必要的,实现机器人全自动采摘也顺应了农业智能机械化的发展要求[4]。

在国内,为保证圣女果的商业价值,其采摘基本要求带有果蒂,而目前所见的圣女果采摘机器人无法保证带有果蒂的采摘[5]。如当前较为成熟的美国RootAI公司研发的圣女果采摘机器人,其采摘方式为使用夹爪夹住圣女果果实后进行旋转摘下,这种方式采摘下来的果实基本不会保留果蒂;于丰华等人设计的日光番茄采摘机器人通过柔性夹爪抓紧果实进行采摘,并未根据果实姿态对机械臂的采摘动作进行设定[6];付鑫等人发明的一种圣女果采摘方法及圣女果采摘机械手通过切割的方式进行采摘,这种采摘方式会保留较长的果梗,还需要后期的人工处理。

根据圣女果果蒂生长特点以及人工采摘的技巧,实验团队制定出一套模仿人手采摘圣女果的方案,即机械臂末端机械爪在采摘时能够保持与圣女果果蒂方向基本一致,使用折果蒂的方式将带有果蒂的圣女果采摘下来,从而使机械臂采摘下来的圣女果具备与人工采摘同样的价值。

本文通过获取的目标圣女果图片来分析圣女果的成熟与否、方向以及距离等信息,由此生成机械臂采摘时末端执行器的目标位姿,从而通过求解机械臂运动学逆解获得机械臂各关节角度,生成特定的采摘动作,即机械臂末端执行器达到抓取位置时能够与圣女果果蒂方向保持一致,为进一步实现带果蒂的采摘做铺垫。

1 系统整体设计

1.1 系统运作流程

系统的主要运作流程如图1所示,置于机械臂末端的单目相机通过颜色识别获取当前视野范围内的成熟圣女果,并遍历筛选出其中最大的圣女果作为目标圣女果,经过腐蚀、膨胀、滤波等操作之后获取较为完整的目标圣女果二值化图像,获取目标圣女果的形心坐标,同时对其进行细化,提取相应的骨架,通过“以直代曲”法获取圣女果的中线以及中线方向,其中中线方向即为目标圣女果的生长方向。使用分类法对圣女果生长方向进行分类,圣女果的生长方向分别对应机械臂末端的最终方向。获取了方向信息后,通过单目相机水平迁移测距法进行测距,使得机械臂在移动的过程中即获得距离信息。对方向、距离等信息进行进一步处理后,求解出机械臂运动后的最终目标位姿,即机械臂末端抓取方向与圣女果方向一致的位姿。

图1 系统运作流程图

1.2 系统总体架构

如图2所示,系统总体架构分为3个层面:硬件层、驱动层和软件层。

图2 系统总体架构图

其中实验所用到的硬件设备为高清单目相机、树莓派4B核心控制板、高斯六轴机械臂。高清单目相机获取的图片的分辨率为640×480;图3为树莓派4B为本实验的核心控制板,它拥有64位、1.5 GHz的四核CPU,内存为1 GB,且拥有两个USB3.0和两个USB2.0通信端口,烧录了基于Linux的桌面型RasBian System[7];图4为本实验所使用的高斯六轴机械臂,其最大工作半径为437 mm,垂直行程为687 mm,水平行程为874 mm[8]。

图3 树莓派4B

图4 高斯六轴机械臂

驱动层包括USB_Cam相机驱动、电机驱动等。软件层包含多种算法及功能包,如成熟圣女果识别算法、测距算法、圣女果方向识别算法以及ROS软件包等,其中圣女果生长方向识别算法又包括对于圣女果二值化图像的骨架提取算法和使用“以直代曲”法获得圣女果中心方向的算法等。

2 算法研究与创新

2.1 成熟圣女果目标获取算法

成熟圣女果获取算法流程如图5所示。在图像处理中使用较多的是 HSV 颜色空间,它比 RGB 更接近人们对彩色的感知经验,能非常直观地表达颜色的色调、鲜艳程度和明暗程度,方便进行颜色的对比[9]。成熟的圣女果外观特点鲜明,使用单目相机获取当前视野RGB图片后将其转换到HSV颜色空间,然后根据成熟圣女果相应颜色阈值对图像进行二值化,二值化的一般算法如式(1),如果输入图像的像素点对应HSV值在成熟圣女果对应阈值范围内则将该像素点值置为最大,否则将其置为0[10]。

(1)

图5 成熟圣女果识别流程图

成熟圣女果在二值化图像中具有明显的区域轮廓,但圣女果种植环境复杂,光照影响等原因会产生区域面积明显小于正常果实的噪声,因此采用中值滤波对图像进行处理以获取更加完整的成熟圣女果轮廓图。中值滤波采用非线性的方法,它在平滑脉冲噪声方面非常有效,同时它可以保护图像尖锐的边缘,选择适当的点来替代污染点的值,所以处理效果比较理想。

由于成熟圣女果的二值化图像轮廓为封闭图形,因此可以采用公式(2)的格林公式来求解连通域面积,在此情景下则是计算目标的轮廓内面积[11]。

(2)

遍历每个符合条件的轮廓,获取其面积S、矩形边框起始点坐标(u,v)以及像素宽度w和长度h等参数,记录其中最大面积S′对应的轮廓起始点坐标,并由此计算出目标圣女果中心坐标点(u′,v′),u′与v′的计算方法如公式(3)所示。至此便已完成获取成熟圣女果位置坐标的工作。

(3)

2.2 单目相机水平前移测距法

机械臂在抓取的时候还有一个必要的参数便是距离,因为本实验只采用一个单目相机,将单目相机固定在机械臂末端,用“眼在手上”的方法获取参数并将机械臂末端以一定姿态伸至目标位置,所以对于距离参数的获取也是使用单目相机来进行的。通过分析相机成像原理即物像之间的大小关系换算原理可得单目相机水平前移测距法[12-14]。

相机拍摄物像大小关系如图6所示,目标物大小用H来表示,相机焦距f是固定不变的,在左侧相机位置对目标物进行拍照,所成像为左侧像,其大小用w1来表示,此时相机与目标物的距离记为l1,则有物像大小关系如式(4)所示:

(4)

图6 物像大小关系示意图

使相机向目标物水平移动距离d并拍照,如图6中右侧相机所示,所得像为右侧像,其大小用w2来表示,此时相机与目标物的距离记为l2,则有物像大小关系如式(5)所示:

(5)

相机前移前后的两个位置与目标物的距离分别是l1与l2,相机前移的距离为d,则有式(6):

l1=l2+d

(6)

通过联立式(4)~(6)可以得到相机前移之后的位置与目标物的距离l2即图中L,如式(7)所示:

(7)

在实际测距过程中,w1与w2分别为相机前移前后获得的同一目标物在照片中的像素宽度。此方法可以在机械臂末端对准目标之后水平迁移过程中进行图片获取与距离计算。表1为测试此测距法的结果,选取不同颜色的不同物体各进行了10次测试,误差距离单位为毫米。由于实验后期要设计的机械爪闭合时需要在爪内部形成一定的空间来包裹圣女果,并且在圣女果前后会留有一定的容错空间,此容错为±0.4 cm。由测试结果可以得出,对相机前移前后两张图片中不产生形变的物体的测距更加准确,比如红色球体和红色方块,其方差分别为1.00和0.64,相对都比较小,结果稳定性较高。由于实验采用颜色识别来寻找目标物体,因此外界环境比如光照等因素会产生一定的干扰,从而使得目标物体的像素宽度产生微小的变化。对于实际要抓取的圣女果的测距误差均值为3.3 mm,处于中等水平,而方差1.61是在5种目标物体中最高的,这是因为圣女果的外形特征不同,且识别效果稳定性比形状固定的物体略低,测距结果受到圣女果自身以及环境影响相对略大。实验过程使用机械臂进行前移操作,机械臂理论运动学模型与实际模型之间不可避免存在误差,这也会增大结果的误差值。从测试数据和总体结果来看,此测距法虽然相对于存在一些误差,但对于红色圣女果的测试结果在预期范围内。在后期提高测距精度方面,对于外部环境的干扰可以规范其使用环境,降低光照、遮挡等因素带来的影响;对于机械臂本身运动误差需要通过标定进一步提高机器人的绝对位置精度。

表1 测距法测试数据表

2.3 圣女果方向识别算法改进

由于圣女果果实与果蒂处于同一中轴线上,为使得机械臂末端在抓取时的方向与圣女果果蒂的水平方向一致,因此需要对更容易分析的圣女果果实的方向进行识别与研究。本文实验所使用的圣女果果实外形与椭圆相似,并且在生长时是自然向下的,因此可以利用其外形特点进行图像形态学处理,改进传统方法,保留圣女果的总体外形特征,来获取其实际意义上的中轴线,从而获取实验所需要的方向。

在第2.1小节中对图7(a)获取成熟圣女果目标后可以得到如图7(b)所示的二值图,由于正面光照影响,圣女果光滑的表面会呈现反光效果,这对圣女果整体轮廓的获取产生了一定的影响,如果不加处理则会影响对其形状的分析,因此要对轮廓内部点进行填充,填充规则如式(8)所示:

(8)

图7 图像处理示意图

其中:(xu,yv)为目标轮廓内部点,当输入像素点是轮廓内部点且值为0时,则将其置为valmax,否则不作操作[15]。填充操作后的二值图像如图7(c)所示。

经过图像处理获得的目标圣女果轮廓二值图相较于真实的圣女果形态并不是很完整,直接通过轮廓特征处理二值图获得轮廓的拟合直线会得到与实际方向偏差较大的结果,如图8所示,穿过圣女果轮廓的灰色线存在明显偏差[16]。

图8 轮廓的拟合直线

为使得轮廓的特征更加明显,此处增加对二值图像的细化操作。根据圣女果轮廓的对称性以及非窄距性,采用获取其中轴线的方法实现对目标轮廓的细化,进一步凸显轮廓的特征[17-18]。获取的中轴线如图9所示,由于实验对象选取的是识别难度较大的近圆形的圣女果,因此中轴线会相对较小,而对更加接近椭圆的圣女果的识别效果会更加明显。

获取到更加能够凸显目标轮廓的特征中轴线之后再次计算其拟合直线,可以得到如图10(a)中的深灰色线条结果,能够近似反映圣女果的方向。

最终获取的方向需要作为机械臂的运动参数,为了得到更精确的结果,本文根据轮廓的拟合直线思想进行了算法的适应性改进:

改进后拟合算法流程如图11所示,首先采用Scikit-image的骨架提取功能获取目标轮廓特征中轴线,对目标轮廓的特征进行进一步凸显,然后获取质心,做一条经过质心的直线,计算中轴线上的每个像素点到该直线的距离之和,取最小值对应直线作为圣女果真正的中轴线,取其倾斜角作为最终需要得到的圣女果的方向。

图11 改进后拟合算法流程图

其中对于质心的获取是在OpenCV中使用矩来计算得到的,图像矩是图像像素强度的一种特殊的加权平均值。目标图像转换为二值图像后由式(9)便可得到目标质心,其中Cx为质心的x轴坐标,Cy为质心的y轴坐标。由质心坐标以及直线倾斜角θ便可通过公式y=kx+b获得直线方程,其中k=tan-1θ,b=Cy-Cxtan-1θ。由式(10)点到直线距离公式可得中轴线上像素点(xi,yi)到该直线的距离d,其中A=tan-1θ,B=-1,C=Cy-Cxtan-1θ,进而可得图像中n个像素点到该直线的距离之和D[19],如式(11)所示。对于以Δθ为变化率的每条经过质心的直线均需要求一次距离之和,并求出最小值Dmin及对应的倾斜角θ,此θ便是最终需要获取的圣女果方向。

(9)

(10)

D=

(θ≠90°)

(11)

如图10(b)所示,浅灰色线为本文改进之后的拟合算法所得结果,图10(c)为对轮廓的拟合直线(a线)与本文算法所得结果(b线)在同一幅二值图像中的对比显示,从中可以明显看出本文算法在对于该次实验目标圣女果方向识别更加准确。为验证算法的准确性和稳定性,对不同的圣女果分别使用传统方法与本文方法进行了多次实验,对比测试数据如表2所示,对比测试误差如图12所示。图中横坐标为对应的实验序号,纵坐标为该次实验对应的误差,取绝对值后,传统方法的误差均值为4.45,本文方法的平均误差值为2.9,就单次实验来说两种方法的误差方向具有相似性,但本文所用方法会相对更加精确一些。传统方法误差值方差为9.20,本文方法误差值方差为4.29,所以本文通过图像分析来计算圣女果方向的方法相对更加稳定,也更适合在实际应用中使用。

表2 对比测试数据表

图12 对比测试误差图

3 机械臂动作生成

机械臂正运动学求解是在已知各连杆相对位置关系的情况下计算得到末端执行器的位姿,而机械臂逆运动学求解是在已知机器人末端执行器的目标位姿的情况下求解出机械臂末端执行器到目标位置过程中各关节需要转动的角度值[20-21]。本实验将已获得的圣女果的位置及果蒂方向作为机械臂末端夹爪的最终位姿,并由此反推机械臂各关节的状态,因此求解机械臂逆运动学是本小节的关键。本文以高斯机械臂为研究对象,对机械臂进行D-H法建模[22],D-H参数如表3所示,机械臂连杆坐标系如图13所示。

表3 高斯机械臂D-H参数表

图13 高斯机械臂连杆坐标系

机械臂逆运动学求解就是求出每个关节的角度,对于本实验所用六自由度机械臂而言就是求θ1、θ2、θ3、θ4、θ5、θ6。机械臂的D-H参数已集成至ROS的URDF文件中,通过MoveIt!功能包中的KDL(Kinematics and Dynamics Library)进行逆运动学的求解[23],求解过程为:节点初始化,选择机械臂移动组,指定机械臂的末端操作,指定参考坐标系,调用位姿描述函数,给定坐标系的位姿,选择运动方案,运动规划执行。

4 实验测试与结果分析

4.1 实验测试

实验设备硬件层主要由六轴高斯机械臂、树莓派4B、高清单目相机以及个人电脑组成,相关硬件参数已由第1节给出。机械臂由配置了机器人控制系统(ROS)的树莓派来进行控制,高清单目相机连接到树莓派USB端口,同时将个人电脑通过网线与树莓派相连接。成熟圣女果识别算法、圣女果方向分析算法、测距算法均部署在个人电脑上以减轻高斯机械臂上树莓派的运算压力。在树莓派上部署Master,用来控制整个系统流程。

本实验属于综合性实验,前部分的实验结果会对之后的操作产生一定影响,因此需要对成熟圣女果识别率,最大圣女果识别效果,果实轮廓完整性,方向识别算法误差值以及机械臂位姿误差等方面进行实验记录与分析。

实验过程:由单目相机在机械臂初始位置且静止状态完成当前视野图片的获取,利用2.1小节的成熟圣女果目标获取算法在当前视野获取最大成熟圣女果作为目标,利用2.3小节的圣女果方向识别算法来对目标圣女果进行方向识别,利用2.2小节的测距算法实现对目标圣女果与机械臂末端的距离获取,将以上得到的圣女果位姿信息(x,y,z,θ)作为机械臂末端执行器的目标位姿,通过ROS软件平台控制机械臂达到目标位姿。机械臂初始位姿运动到目标位姿如图14所示。在正常的日光条件下,同样的步骤对于不同位置、不同品种的圣女果共进行了16次,每次均需要记录以下数据:目标圣女果是否判断为成熟,目标圣女果是否为当前视野最大圣女果,果实轮廓完整率,测距误差值,方向识别误差值,机械臂末端方向误差值,具体数据如表4所示。

表4 实验数据记录表

图14 机械臂运动状态示意图

上述16次实验中机械臂动作生成所用时间分别为:{3.6,4.0,3.9,3.5,4.6,5.0,3.9,3.4,3.5,3.8,3.4,4.1,4.3,3.8,3.9,5.2 s},动作生成平均用时为3.9 s。

外部环境变量中,光照和遮挡是影响实验结果最重要的因素,本实验基于机器视觉,因此需要尽可能地减少对目标圣女果的遮挡。除上述正常日光条件下的测试外,本实验在相同遮挡条件下对上述目标圣女果在夜间使用照明灯的环境下进行了16次对比测试,实验表明,平均圣女果轮廓完整率相对于日光条件下降了约4.6%,测距误差增大了约1%,方向识别误差增大约1.8%,机械臂末端方向误差增大约1.5%,机械臂动作生成平均时间为3.9秒。

4.2 结果分析

本次综合实验对过程中的各分项步骤均进行了数据的测量和记录,机械臂最终动作的生成依赖之前获得的图片分析结果,实验有明显的误差是正常的。本文除了在正常日光条件下进行了16次详细测量数据的实验之外,还对同样的目标圣女果在保持遮挡条件一定的情况下,在夜间使用照明灯的环境下进行了同样16次测试。除此之外还进行了额外的34次有针对性记录的实验,平均动作生成时间为3.6 s。

在准确率方面,对于目标果实是否成熟的判断,本实验采用的是颜色识别,成熟与不成熟有较大的区别,因此在识别过程中获得的结果均是正确的。对于目标果实是否为当前视野区域最大成熟果实的判断,由于圣女果生长环境复杂,圣女果与圣女果之间以及圣女果与枝叶之间有互相遮挡的情况,这就给识别带来了困难。对于比较复杂的情形会容易产生识别错误,以上32对比次实验中有两次是因为遮挡问题识别失败,从后续进行的34次实验也可以看出只要获取到了目标就不会对后续步骤产生较大的影响。对于目标圣女果二值图的获取,如表4中轮廓完整率所示,轮廓的获取受外部影响较大,比如圣女果外表光滑,较强的外部光照会在圣女果表面产生反光,而正常的日光与夜间照明灯的光照条件也会对实验结果产生不同的影响。圣女果的果蒂也会在圣女果头部形成一定程度的遮挡,这就使得在获取圣女果二值图的时候,反光以及被遮挡的部分均变为背景。从整体实验来看,获取的成熟圣女果轮廓的完整率平均在82%以上,日光条件下的识别效果优于夜间照明灯条件下的识别效果,对于非枝叶遮挡圣女果的识别效果达到预期目标。针对二值图不完整的问题,本文2.3小节有提到对二值图进行内部填充,尽可能减小反光的影响,使得可以识别到的部分达到较为完整的效果,从而为后续进行果实姿态分析时使用的中轴线获取算法提供较准确的输入。对于测距算法,实验结果和本文2.2小节所做测试相近,环境因素以及圣女果自身的弧度会使目标物体的像素宽度产生微小的变化,总体来看虽有一些误差,但是测试数据和结果显示达标率为84%。在圣女果方向的识别方面,对于圣女果轮廓识别较为完整或者经过填充后的二值图较为完整的目标,方向识别误差值会比较小,在对近椭圆形的圣女果进行识别时尤其准确。对于轮廓识别完整度不高的目标,由于其二值图中轴线无法体现出圣女果本身的特点,也就导致方向偏差较大,但是整体达标率是86%,结果符合预期。最终机械臂末端到达目标位置后的方向准确度十分依赖图片识别的结果,对于距离和方向的误差值均比较小的实验,机械臂最终位姿的误差也是比较小的;而对于前期轮廓识别误差大,方向误差大的目标,机械臂的最终位姿误差也比较大。从以上实验数据来看,机械臂位姿的达标率能够达到80%,符合预期目标。在速度方面,机械臂从初始状态运动达到目标位姿的平均用时为3.75 s,这个过程不包括机械臂末端的采摘以及采摘之后的返回时间。本实验着重针对机械臂生成特定采摘位姿做了研究,机械臂过快的运动速度需要配以较重的底盘来稳定主体机器,因此3.75秒的平均动作生成时间符合预期目标。

从实验室的实验结果来看,整体效果能够达到预期目标,方案可行,但是可提升空间比较大。圣女果表面反光会影响轮廓识别的完整性,不同的光照条件下的识别效果是不同的,后期应避免环境有较强的直射光,减少反光对于RGB图像的获取效果,尤其需要提升夜间照明灯条件下的识别效果。圣女果植株生长比较复杂,尤其是枝叶遮挡情况比较严重,这对识别效果会产生较大影响,采摘前需要将圣女果周围遮挡严重的枝叶进行修剪,尽可能地将圣女果裸露出来,这样可以降低机器人运作的难度。

5 结束语

圣女果种植范围广,人工采摘成本高且工作量大,研发智能采摘机器人来解决当前圣女果采摘所面临的难题是非常必要的,实现机器人全自动采摘也顺应了农业智能机械化的发展要求。但是目前大多数圣女果采摘机器人都处在实验室阶段,少数可以实现采摘,但是不能保证带有果蒂的采摘。本文在带蒂采摘方法上展开探索,通过模拟人手采摘的流程,使机械臂末端机械爪在达到目标圣女果位置时能够与圣女果果蒂方向基本一致,从而保证在后期研发中能够使用折果蒂的方式将带有果蒂的圣女果采摘下来,使机械臂采摘下来的圣女果具备与人工采摘同样的商业价值。模拟人手采摘流程需要制定特定的采摘机械爪,而目前机械爪还在设计阶段,因此本实验是对机械臂采摘之前的位姿生成进行了方法探索,为后续完成完整的采摘动作做下铺垫。

综合本文算法设计和实验结果,对圣女果进行目标识别与方向分析进而生成机械臂特定采摘位姿的方法具有一定的适用性和可行性。针对实验中的光照、环境干扰问题进行了对比测试,后续实验应该降低环境问题对算法的影响,进一步验证算法的准确率。在实际应用之前,圣女果在种植时应该进行相应改变来方便机器人进行采摘,比如在采摘之前整理侧枝,同时将果实所在茎秆单独裸露在通道方向,这样既能保证对圣女果的营养输送,又能为机器视觉提供广阔的视野。

未来会着重提高算法在复杂环境条件下的适用性和准确度,必要时会更换相关算法思路来提高实用性,同时结合具有人手采摘特点的机械爪进行采摘实验,实现完整的采摘流程。

猜你喜欢

圣女位姿轮廓
圣女果高产栽培六步曲
圣女果的“真面目”
OPENCV轮廓识别研究与实践
山东临清测土配方助圣女果丰收
基于实时轮廓误差估算的数控系统轮廓控制
基于共面直线迭代加权最小二乘的相机位姿估计
基于CAD模型的单目六自由度位姿测量
小型四旋翼飞行器位姿建模及其仿真
在线学习机制下的Snake轮廓跟踪
莲雾圣女果低脂冰激凌的生产工艺研究