桂林电子科技大学电子工程与自动化学院 黄金伟 王泽珺 陈 以 袁玉娇 井庆泽 郭锦瑞 曾 恒
本文以一般实验室常用的智慧工厂生产线为背景平台,运用MATLAB等对以机器视觉的仓储货物图像信息的处理,并以此算法为核心,通过PLC实现机器人对仓储货物搬运的控制。
现代图像信息处理和识别技术的发展,被人们越来越多应用于仓储物流中机器人的自动搬运控制上。本文以实验室常用的智慧工厂生产线为背景平台,利用自身机器视觉,应用MATLAB等进行图像信息采集、分析和处理,实现机器人对仓储货物的自动搬运控制。
机械视觉的建立以摄像机的架设为基础,通过拍摄仓储货物图像,提取图像特征等加以分析,从而获取库位货物的信息,然后通过串口通讯向机器人(机械臂)发送相关指令,来达到搬运货物的目的。
系统由立体库/货仓、加工、装配、机器人搬运等组成。除了机器人专用控制器之外,加工、装配、质检与喷码工作均有PLC承担控制任务,并与其他PLC之间通过以太网通信实现互连,构成各种分布式的控制系统。
系统控制平台上的图像处理算法是实验的核心和关键,它制约着XYZ轴直角坐标机械臂流程操作的效率和稳定性。
MATLAB、OpenCV均是图像处理的首选软件,但相比之下,MATLAB语言代码简明,功能较强大,调用各类函数方便,调试算法快捷,开发周期短,更贴近实际。
输入设备是数字设备和成像设备的组合,获取数字图像是视觉系统最基本的功能。本着节约与普遍的原则,选择比较普通的USB2.0/5.0MEGA PC产品化的彩色摄像头作为输入设备对仓储货物场景以及其中的物体进行图像采集。
系统机械臂支持以太网与MODBUS通讯协议。机械臂用RS-485接口,并以485公线转USB的接口接入系统。
对机械臂的初步调试,可以利用串口助手软件进行虚拟数据的发送仿真测试,待成功后以MATLAB编写相关程序进行进一步的调试。
图1为图像处理软件的流程图,其各部分主要功能介绍如下。
图1 软件流程图
在MATLAB软件当中,有专门的函数可以调用系统摄像头或者扩展摄像头,并根据其属性生成相应分辨率的图像或图片。
实际中,所生成图像并不是越清晰分辨率越高就越有利。相反受系统或计算机性能的影响,过于清晰和高分辨率的图片,由于其对应矩阵数据太庞大,会导致后期的数据处理中运算时间过长,甚至无法正常运算。为提高工作效率,一般选择能正常处理图片数据的合适分辨率。
开启摄像头,拍摄了库位的相关图像,读取该图像(矩阵),并根据图像的数据大小判断是否需要对图像的大小进行压缩。如果调用输入设备时,对图像采集的分辨率已进行了限制,此时一般无需进行二次压缩,就可进行下一步运算。如果需要压缩,要以imshow函数审查压缩后的图像是否满足特征提取的需求。
每一张彩色图像通常是由红(R)、绿(G)、蓝(B)三个分量来表示的,这些分量都处在0-255之间。图像中的“R、G、B”的比例通过不同的灰度颜色来表示,通道中的白色表示这里的色光亮度最高,其亮度水平为255,相反黑色为0。
图像识别的目的是为了区分仓储货物的黑/白(原色),因此处理方案便为先灰度化,后二值化。根据环境设定阈值分离出黑色部分,或者直接分割图像并判断单个货码黑色像素占比是否达到一定比例以上,达到则为黑色货码,否则为原色货码。
通过调用相关函数I=rgb2gray(I)能够对输入设备获取的彩色图像进行转化,形成灰度图,如图2(b)。
图2 原图像与灰度图像、二值图像的对比
通过图2的对比,可以发现灰度图像本质上是对原数据矩阵I的变化处理,图像中的像素点都有矩阵之中的每两个元素对应着,其灰度级由对应着的元素的数值来进行代表。I矩阵可以是双精度。但通过对比图像的变化发现,虽然得到的图片彩色已经被过滤,但是无论是人眼还是计算机,依然不能准确分清黑色,这是由于原色货码与背景当中的干扰所致。
继续对图像进行二值化处理,调用函数I=im2bw(I),结果如图2(c)。分析发现,处理后的二值图像确实能够明显区分黑白。若受环境因素等影响,难以提取图像的有效特征和信息,可以在物理和程序上对图像进一步处理,如应用滤波、降噪、补光等手段加以改善,也可以直接进行多次图像分割,最大化缩小环境等因素的干扰。
(1)图像分割优化
图3为已分割的16个仓储图像库位当中的黑色货码和原色货码,黑色货码的位置为1、3、6、8、9、11、14、16,而原色为2、4、5、7、10、12、13、15。
图3 16库位分割图及17位输出码
为提取图像特征信息,需对阈值分割后的图像作进一步优化。思路是对于16个货仓库位进行裁剪,形成16个图像块,图像块大小约为一个库位的面积。此做法可以避免背景当中无关黑色像素带来的影响,同时又不会影响图像重要信息的特征提取。
调用imcrop函数可以实现该功能,A=imcrop(A,[x,y,a,b])。在此函数当中,A为原图像的矩阵,(x,y)为所截取图像左上方点的坐标,而a,b为截取后图像的长和宽。可以根据仓储库位的实际长度以及宽度对截取后图像的长宽进行设置。
(2)特征提取与信息鉴别
图像的特征提取是处理过程之中的核心。为有效区分黑色货码和原色货码,方案是根据处理和分割后的图像进行黑色像素数量的计算和分析。原色货码在上面的图像处理过程当中已经被划分为白色,因此只需要计算出这16张截取图像中的黑白像素数总和,再测算出黑色像素或者白色像素的个数,最后以黑色像素占总像素的百分比,设定合理的阈值,即可进行判断是否为所需货码。
实验中,黑色货码上身缠有黑色胶带,计算占比约为整个货码表面积的35%∼45%,而原色货码整体为暗银色,无黑色胶布缠绕,黑色素占比理论上应该为0%。考虑二值化处理中的误差和环境等因素的影响,设定阈值为30%,并对输出的17位数码加以判断,除去第一位固定为3,后16位依照其对应的截图予以分析。若库位所在截图的黑色像素占比大于30%,则该编号位的输出定为“3”,否则为“0”。
以16号库位(第一行、第一列)为例,对其进行黑色像素及其所占百分比的计算。二值化处理后的图像只有1和0两个值,即黑和白。对1和0分别求和,得求和结果便分别是黑和白像素的总数。通过size函数得图像I1矩阵的行数m1和列数n1,n1与m1相乘即为整个矩阵的大小,也即图像的总像素点数。因此,可计算出16号库位位置的截图总像素点数为695,其黑色像素占比约33%,见图4。
图4 黑色像素占比计算
17位输出码33030030330300303,见图4下部,该数据也切实符合了从一号库位到十六号库位“黑白黑白白黑白黑黑白黑白白黑白黑”的正确顺序,此时只需要完善上位机与PLC之间的通信,正确的发送信息即可基本实现机械视觉的搭建。
系统通过摄像头采集库位信息,经处理并以特征提取后发送至PLC。PLC依据指令,启动工作单元,机械臂对货仓进行扫库,并提取库存信息,获取最近的符合条件的物料,就能不断进行操作。
依照工作单元装置的I/O信号分配以及工作任务要求,这里的PLC选用ST30 CPU,它共有18点输入和12点晶体管输出。
为方便外接和操作,表1提供部分通讯、编程点位对照表。
表1 部分编程点位对照表
参考表1,可利用上位机以及相关组态软件对系统流程进行监控与分析。
使用MODBUS/RTU代码及通讯协议,CPU自带的COM0。
(1)通信编程
通讯过程中,波特率为9600,8位数据位,1位停止位,无奇偶效验位。&DATA0位置开始的20个字为MODBUS读取区,也就是从40000到40020,按字读取。占用存储器中的VB1100~VB1119。
(2)状态修改与操作
State=0为复位,1:复位完成→2:开始扫库→3:扫库完成→4:去等待位置→5:走到库位前等待→6:走到目标库位→7:取货物→8:走到物料台→9:送货→10:完成→返回到5。
选用MODBUS模式及其调试精灵,串口9600.N.8.1,设备地址1,启动PLC。开始读取40018,地址八进制21,22。可以读取两个WORD,数据00,01表示状态为0,并请求库位1。
物料属性:00无,11原色;取料命令:00无,01原色。
写17个数据,若模拟抓取1#、2#库位货物,写入为:3/3/3/0/0/0/0/0/0/0/0/0/0/0/0/0/0/。发送1取。后续PLC等待命令。
结论:系统应用MATLAB等软件,并融合PLC控制、MODBUS串口通讯等技术,完成了智慧生产线基于机器视觉的仓储货物图像信息识别和控制,使机器人有了“眼睛”,对仓储货码实施识别,以机械臂夹取并搬运至货物运送站,经加工后送出。本设计的系统具有良好的可控性、稳定性和操作性,与普通生产线系统相比,提升了从货物下单到货物装配送出的自动化程度,节省了人力物力,较大地提高了货物搬运效率。