吴佳鸿,胡雪菲,郭俊豪,武泱光,吴德欣,胡安正
(湖北文理学院 物理与电子工程学院,湖北襄阳, 441053)
该分拣机主要由主控制器、单目摄像头、机械臂、定位框组成。其中,摄像头采集图像输入jetson主控制器;主控利用OpenCV找出方框轮廓并进行透视变换;运用HSV模型原理识别出方框中物体的颜色,再计算物体在底座坐标系下的坐标;再由夹爪投影及物体坐标算出末端坐标系的定位;再根据机械臂逆运动学求出末端到达该定位的各个关节角度;最后,主控驱动关节转动相应角度,夹取物体并投放至对应容器、机械臂复位。系统总体方案框图如图1所示。
图1 系统总体方案框图
选用带有吸盘的底盘,既可以牢牢吸附在如桌面的光滑材质表面,保证抓取过程中的稳定性,同时又方便拆卸和移动。
本设计采用六自由度机械臂,机身由6个关节和7个连杆级联组成,关节采用舵机构成。关节编号从1到6,连杆编号从0到6[1]。连杆0固定在底座上,连杆6上带有机械夹爪。关节与连杆如图2所示。
图2 关节与连杆
本设计仅用于抓取生活中的小件物品,选用一般的二指金属夹爪。如图3所示。
图3 金属夹爪
分类常见有PWM舵机,总线舵机。前者精度差,接线多,易损耗,无位姿反馈,均无法达到关节对舵机的要求,总线舵机则避免了上述情况。本设计选用STS3215舵机,该舵机齿轮采用1:345的铜齿组合,扭矩大;机身设计采用双轴结构,圆衬立体的结构特性,配合金属主副舵盘和双出线的布线方式,适于运用在机械臂。
由于分拣工作需要运行一系列诸如OpenCV,ROS(Robot Operating System)的库,以及进行如透视变换、逆运动学求解的计算和IO控制,可选两种方案。
方案一:将PC机作为上位机,单片机作为下位机;上位机通过通讯协议把图像信息的处理结果发送给下位机,下位机控制接在IO口上的总线舵机;同时下位机把舵机位姿信息传回上位机。优点是除了用户原有的PC机以外,仅另需一块单片机即可完成控制操作,节省成本。缺点是增加了复杂度,除一般PC机的Windows系统不易安装ROS外,还需额外设计与下位机的通讯协议,以及单片机的编程下载操作等。
方案二是选用Linux嵌入式系统,运算力强,ROS安装方便,可对IO进行操作。一个模块就能完成上述所有操作,大大降低复杂度。
由于我手里拥有一块jetson_nano,故采用方案二。
IMX219摄像头。808万像素、83度视场角,22%畸变和180帧/s的帧率,微小的体积使得它在窄边框结构的机械臂上也能安装。
观察机械臂的运动范围,以底座为基坐标,摄像头正前方为Y轴正半轴,向右为X轴正半轴;在X=0cm,Y=25cm处画一个圆心,以该圆心为中间点画一个15cm×15cm的矩形框用于后面的定位计算。定位框如图4所示。
图4 定位框
设计主要包括:①找方框边缘,把其四边进行透视变换后作为图像的四边。②图像中,根据HSV原理找到物体并求物体中心点。③实际中,由物体中心点的位置转换得到物体的坐标。④结合物体坐标及夹爪投影算得末端坐标系的定位。⑤服务端把定位通过ROS server通讯发送出去,客户端获得定位后用机械臂逆运动学解出各关节角度。⑥驱动舵机转动,进行抓取、投放、复位。
为达到视野最广,调整机械臂关节使相机与地面形成斜视45°,此时视野下的方框呈像类似梯形。首先我们找出方框轮廓:运用OpenCV(Open Source Computer Vision Library,机器视觉库),把RGB图像转灰度之后,进行高斯滤波、二值化、腐蚀、膨胀、提取轮廓点集。再根据左上,左下,右下,右上四点将轮廓进行透视变换矫正后作为图像(640×480)的四边。然后将物体放入视野进行颜色识别。透视变换效果示意图如图5所示。
图5 透视变换效果示意图
HSV(Hue, Saturation, Value)六面椎体模型如图6所示,其中H表示色调,S表示饱和度,V表示亮度。HSV格式的图像比RGB格式的图像能够明显的显示出颜色差异程度[2],对于颜色识别来说更方便,提高识别率。
图6 HSV六面椎体模型
运用OpenCV库,主控制器先读取到RGB格式的图像,经滤波处理后转换到HSV格式,把每一个像素点的HSV值与目标颜色的HSV值进行比对,滤除掉范围值之外的像素,剩下相对集中的像素即为目标物体;提取其轮廓点集,用方框框出,方框中心点即图像中物体中心点。常见颜色对应的HSV范围见表1。
表1 常见颜色对应的HSV范围
X坐标计算:由公式(point_x-image_x)/640=(object_x-x)/150计算。其中object_x是待求量;point_x代表图像中物体中心点横向坐标;image_x代表图像中心点坐标;x是基坐标系的X坐标,即为0;640是图像的像素点宽度,150是方框实际宽度,单位mm。
Y坐标=机械臂底座距方框最近边的距离+方框宽度/2+物体对于方框中心点的纵向坐标。而物体对于方框中心点的纵向坐标计算方法与物体X坐标计算类似。
我们知道,运动学逆解求得的是末端坐标系到达的位置[3],不是夹爪夹取的位置,因此要想由末端坐标系的定位来做逆解运算,还需要先利用三角函数求夹爪在坐标系的投影长度。
X,Y坐标求解:实际测得夹爪的长度为0.12m。对夹爪进行x,y方向上的投影,如图7所示。末端坐标系的X,Y坐标=物体的X,Y坐标-投影长度。
图7 夹爪的x,y轴投影
Z坐标求解:如图8所示,Z坐标=物体的Z坐标+投影长度。因为夹取的是生活中的小件物品,其自身高度可忽略不计,即物体的Z坐标为0。
图8 夹爪的z轴投影
接下来创建ROS服务端节点,当收到客户端请求时把末端坐标系的定位通过ROS server通讯发送给客户端。
机械臂的正运动学是指已知每个关节角度,求解末端坐标系相对于底座坐标系的变换方矩阵。求解步骤如图9所示。
图9 机械臂正运动学求解
其中的DH参数法[4]是一种用于描述串联式链路上连杆和关节几何关系的系统方法,简单来说描述的就是连杆坐标系之间的关系。本文中的机械臂的DH参数如表2所示,其中各个参数的含义如下:
表2 DH参数
(1)连杆长度αi-1:沿xi-1方向zi-1到zi的距离。(2)连杆转角αi-1:沿xi-1方向zi-1旋转到zi的角度。(3)连杆偏距di:沿zi方向,到xi-1到xi的距离。(4)关节角θi:沿zi方向,xi-1旋转到xi的角度。
DH表中的参数通常由URDF文件读出,URDF是一种使用xml格式描述的机器人模型文件。
机械臂的逆运动学是指已知机械臂的末端坐标系的坐标,即已知齐次变换矩阵,求解各关节的角度。因此机械臂的逆运动学问题,可以理解为通过上述正运动学方程求解关节的θ1、θ2、θ3、θ4、θ5。
客户端得到末端坐标系的坐标后,逆解出关节角度,依据关节的运动范围对其做出适当调节。继而主控制器控制舵机转动相应角度并夹取,然后让机械臂运动不同的轨迹到对应的容器上方进行投放,最后机械臂复位等待下一次抓取。
本次设计的分拣机采用机械臂作为机身,jetson_nano为控制核心,使用单目摄像头进行图像采集,以Python作为语言,调用一系列如OpenCV等工具,以物理原理、数学运算作为支撑,实现了对生活中常见物品如鹅卵石等的颜色识别并分拣投放,如图10所示。随着我国工业化程度不断提高,可将分拣机进一步推广到其他应用当中,比如依据颜色对水果的品质挑选、中药挑选等,该分拣机将会有更大的应用价值。
图10 分拣机对鹅卵石颜色分拣