陈强
(安康学院科研处,陕西安康 725000)
传统的原料分拣中普遍采用人工分拣,效率很低,不但限制了后续工序的快速进行,同时也推高了产品的生产成本。为了提高效率,可以使用工业机器人代替人完成简单重复的工作,或代替高级技工完成精密度要求较高的任务[1-3]。
LabVIEW 是一种用图标代替文本行创建应用程序的图形化编程语言,其VI 代码由框图组成,硬件接口丰富,程序代码可通过驱动直接应用于硬件。基于LabVIEW的机械臂控制,既能满足机械手臂较高的控制要求,还简化了程序开发过程,提高了开发效率[4-5]。该设计利用虚拟仪器LabVIEW 平台设计了机械臂的分拣系统,可以对指定区域的目标进行分类放置,完成自动分拣的功能,代替人工分拣,提高工作效率。
该设计搭建了机械臂分拣系统,能够将放在指定区域的不同位置、形状的目标进行分拣,并在PC端获得目标的种类、数量、位置等统计信息。为此,方案利用虚拟仪器LabVIEW 编写读取目标信息数据,并且利用显示控件进行显示;通过判断结构选出最合适的数据组;将选出的数据组转化为通信协议可以识别的串口通信指令;通过串口将控制指令有序发出;机械臂控制板解析串口接收到的指令,按步骤完成分拣操作,完成后恢复初始姿态,等待下一次运行。总体的操作流程如图1 所示。
图1 总体操作流程
该系统在完成整个操作过程中,可以在显示器上同步显示出目标数量,并绘制出目标物体在载物台上的坐标图。系统程序具有可移植性,适用性较强,易于拓展,方便人机交互[6]。
为了在空间中的不同位置和方向抓取和传送物体,传送机构采用6 个自由度的机械臂。机械臂的每个自由度通过其操纵器的独立驱动关节捕捉物体在其工作空间中的任何位置和姿势。精密的6 自由度机械臂可以完成极其复杂的动作[7]。该系统的6自由度机械臂及载物台如图2 所示。
图2 机械臂及载物台
机械臂从末端到底座共6 个自由度,除底座以外的5 个自由度由5 个LD-20MG 数字舵机提供,底座自由度由一个LD-1501MG 数字舵机提供。这些数字舵机使用PWM 脉宽型调节角度,周期为20 ms、占空比为0.5~2.5 ms的脉宽电平对应舵机0~180°角度范围,且成线性关系[8]。舵机控制器采用500~2 500 数值对应舵机控制输出角度的占空比0.5~2.54 ms,舵机的控制精度是3 μs,可以满足机械臂的要求[9]。载物台采用铝合金,使用T 型栓、法兰螺母和角码固定,可保证结构牢固,机械臂不产生摇晃偏移,不影响操作精度[10]。
机械臂的动作由LSC 舵机控制板完成控制,接口较为丰富:
1)蓝牙接口:支持移动设备使用APP 控制;
2)USB 接口:连接PC 机,通过上位机软件控制;
3)二次开发接口:经过串口完成代码控制;
4)PS2 手柄接收器接口:支持使用PS 手柄控制。
控制板使用单片机控制,使用单片机前要对寄存器和中断等进行配置。当单片机串口收到数据后,要对数据进行判断,如果是正确的数据帧就进行解析,如果不是正确的数据帧就将数据丢弃,不作处理。采用状态机对数据帧进行判断,判断数据帧是否正确的流程是首先设置状态变量St,St的取值有0、1、2,St的初始值是0,当有数据到达时,先判断第一个字节是否是0x55,如果是0x55,St的值赋为1,若不是,St的值还保持为0,丢弃这一帧数据;若St的值为1 时,则对第二个字节进行判断,如果是0x55,则St的值赋为2,确定这一帧数据是正确的数据,进行后续数据的解析,若不是,则将St的值赋为0,将这一帧的数据丢弃,继续等待下一帧数据出现。整个流程循环运行,持续不断接收数据帧并进行判断。一旦有正确的数据到达,则进行数据解析,控制机械臂完成相关操作。数据解析流程如图3 所示。
图3 数据解析流程
上位机模块在系统中起主控作用,完成指令文件的读取和解释、发送等功能。打开操作界面,通过VISA 配置后打开串口,读取根目录中的“机械臂参数.txt”文件,将文件中的数据以数组的形式保存在内存中。
上位机内部程序循环读取载物台上的目标信息数据,一旦目标信息发生改变,系统即可判断出载物台上目标物体发生了改变,需要执行与之对应的分拣操作,并将这些操作步骤转化为操作指令,发送至下位机,完成分拣。在机械臂完成分拣操作以后,由上位机给下位机发送复位指令,使机械臂回到初始位置,等待载物台上有新的目标出现,完成新一轮的分拣操作[11]。
首先,在载物台上建立坐标轴,将有效区域划分成有规律的栅格,在对应的位置测出相应数据,每一组XY坐标值对应一个栅格,根据这一对应关系,建立数据组的索引编号。然后按照顺序进行每个栅格的机械臂具体路径测试,将到达每一个栅格的路径分解成一定步骤进行,并记录此时的舵机位置,将位置信息保存在“路径参数.txt”文件中。
当该系统开始运行时,首先解析出该VI 所在目录的路径,并与“路径参数.txt”构成新的路径,借以将该文档内容读取出来,划分为一组一组的数据,并将数据存储以备后续程序使用。具体过程:首先根据存储数据时的约定,按组截取字符串,通过使用“分组For 循环”将所有字符串按顺序分组,再将分好组的字符串转化为对应的数值。每个分组里的数据被保存在一维数组里,所有分组都执行完后,数据被转化成二维数组[12]。
目标参数以文档的形式在该VI 根目录的同一目录下更新,每当文档的数据发生变化,即表示载物台上的目标发生变化。为了检测到文档的数据发生变化,该文采用在某一时刻读出文档中的数据,经短暂延时后第二次读取数据并比较,两次读出的内容一致时,说明文档内容没有改变,即载物台上的目标情况没有变化。此时,需要将物块坐标图上的点清零。当目标信息发生改变时,将文档内容读出来,根据信息的存储规则,计算出当前载物台上的目标数量,在只有一台机械臂的情况下,目标的数量即为机械臂需要进行分拣操作的次数。目标信息不变时,循环次数默认为0,即不进行后续操作[13]。
从文档里读出来的数据包括X轴坐标、Y轴坐标、表示目标类型的数据,并不能直接用于机械臂的控制,还须将坐标数据转化为与之对应的动作指令组。该文采用近似的方法,根据测量数据时选择的阈值来对数据进行近似确定。以坐标(2,2)且阈值为0.75 为例,按照0.75的阈值依次可得到(0.75,0.75)、(1.5,1.5)、(2.25,2.25.)、(3,3)等多个坐标,对(1.5,1.5)、(2.25,2.25.)两个坐标而言,(2.25,2.25)离(2,2)更近一些,可用(2.25,2.25)这个坐标点的动作数据,来近似完成(2,2)的动作。基于这一原理,可以通过减小阈值来提高测量密度,在同等大小的区域中获得更多更准确的机械臂动作数据,进而提高系统精度。
动作指令由上位机经串口发送给机械臂。要控制6 个舵机,给舵机编号并规定控制机械臂执行动作所需时间。6 个舵机的编号以及要转到的角度分别由十六进制指令表示。指令通过串口发送至舵机控制板之后,舵机控制板便会对其进行解析,在指定的时间里完成单步动作,按顺序完成每一单步,即可完成整个分拣操作。
指令发送的程序置于循环之中,循环次数即载物台上的目标数量,第一个循环执行完后,所有目标的坐标信息以簇的形式输入XY坐标控件,并以坐标点的形式在坐标图中显示当前目标所在位置。当不需要执行分拣操作时,会对坐标图进行二次清零,保证坐标图不会错误显示目标的位置,引起系统误操作。
使用LabVIEW 完成通信会用到VISA 框架,这是LabVIEW 仪器驱动VI 中的底层函数。VISA 能控制VXI、GPIB 串口或者基于计算机的仪器,并根据仪器类型调用合适的驱动程序[14-15]。
文中使用的VISA 通信函数是“VISA 写入”和“VISA 读取”函数。由于串口通信需要配置额外参数,所以必须先运行“VISA 配置串口”VI,将VISA 资源名称识别的端口初始化为指定设置[16-18]。
为了验证分拣操作的效果,把两个实验目标放入工作区域,测试机械臂的抓取过程完成情况。上位机显示如图4 所示,两个目标的坐标位于栅格(29,10)和(19,10),产生一个索引,根据索引得到对应的指令。该指令经串口送入机械臂控制板,即可操作机械臂完成目标分拣,整个分拣过程如图5 所示。该指令操作:底座旋转-24.75°(6 号舵机),大臂旋转44.1°(5 号舵机),小臂处两个自由度分别旋转-38.61°(4 号舵机)、12.87°(3 号舵机),机械臂末端旋转-16.83°(2 号舵机),抓手张开-58.95°(1 号舵机),到达目标上方。完成这一动作后,机械臂下降至目标物体的高度,完成夹取动作。
图4 上位机前面板图
图5 机械臂分拣测试
机械臂夹取目标物体,到达过渡位置时,可进行分类。可根据目标的具体信息,按照分类规则将其放置在规定位置。图5 所示抓取过程中,各舵机旋转角度如表1 所示。
表1 机械臂舵机角度
经测试,文中所设计的系统可以完成分拣运作,而且夹取过程的精确度可以根据需要进行调整。系统获取数据的方式是将目标区域分成若干个栅格,沿着X、Y轴平移,按顺序测出机械臂的参数,并将这一过程分解成分步动作,所采取的索引编号是根据木块重心所在位置进行判断的,平移位移的阈值越小,则动作精度越高,可根据目标的实际情况,选择合适的动作精度执行分拣任务。而在安装载物台和机械臂时,最大程度保持连接稳定性,确保机械臂不因操作产生移位,也可以提高操作精度,同时也能保护设备,减少磨损。
文中采用LabVIEW 平台完成机械臂分拣系统的设计,经测试,该系统成功完成了数据检测、显示、控制机械臂分拣等功能。系统能够根据目标的形状信息调取不同的动作组指令数据,完成载物台上目标的抓取和分类。创新之处在于可以通过减小阈值来提高测量密度,增加机械臂动作数据,提高系统精度。系统调试方便,操作简单,可移植性好,具有一定的实用价值。