基于ABB工业机器人的视觉信息处理研究
2021-05-10段有艳李慧东李光辉
段有艳,李慧东,李光辉
(昆明冶金高等专科学校电气与机械学院,云南 昆明 650033)
0 引 言
随着“互联网”和“大数据”时代的到来,多样化消费成为当前消费增长的主流。为满足新时代消费主体的消费需求,使产品在市场竞争中获得优势,企业需要在所提供产品和服务上实现技术性和专有性,以充分满足消费者的个性化需求[1]。
许多企业已开始转变生产方式,从过去的大规模大批量的生产方式转向了小规模小批量及定制化的柔性生产方式[2]。用户特定的定制要求使得以往的标准化工业生产被定制化柔性生产方式取代,而劳动力成本的不断上升也促进了以工业机器人和图像视觉技术为代表的自动化技术在各行业生产领域的广泛应用。
1 产品流程信息动态识别的重要性
机器视觉广泛应用于生产制造检测等工业领域,用来保证产品质量、控制生产流程、感知环境等,产品的定制化生产,需要工业机器人和机器视觉必须能快速高效、准确地对产品定制化流程信息进行识别。
图1 视觉输出比对和机器人数据获得Fig.1 Visual output comparison and robot data acquisition
例如加工完成一个定制化轮毂需要加工工艺“C1B1C2C3”(C1代表打磨类型1;B1代表数控类型1;C2代表打磨类型2;C3代表打磨类型3),此定制轮毂按照工艺代码依次完成C1、B1、C2、C3的加工。传统方法利用视觉系统的输出比对功能来比较工艺代码,并将此工艺代码的索引号进行输出。工业机器人通过获得的索引号来进行工序的执行,如图1所示。
假设一个产品需要3种工艺来完成,每种工艺可能有N种情况,那么在识别完产品信息后,需要有N3种情况需要比对,也就需要在视觉系统中建立N3个对应索引号进行匹配。根据实际生产的工艺复杂程度,产品的工艺流程可能有4种,也可能是5种或者是6种以上,那么比对次数将成几何倍数增长。
如果采用此种完全枚举法,信息比对数量繁多且不利于程序的及时调整,而通过工业机器人对从视觉系统发送过来的数据进行合理的提取和处理,可以减少比对次数,对于新增加的工艺流程也能够实现快速调整,进而非常有效地提升产品的定制化生产进程。
图2 ABB机器人发送和接收数据流程(视觉系统通讯)Fig.2 The robot sends and receives data flow(visual communication)
2 视觉通信
2.1 机器视觉系统
机器视觉系统是通过机器视觉产品将被摄取目标转换成图像信号,传送给专用的图像处理系统,得到被摄目标的形态信息,并将其转变成数字化信号,图像处理系统对这些信号进行目标特征的抽取,再根据预设的允许度和其他条件输出结果,实现自动识别功能,进而根据判别的结果来控制现场的设备动作。本系统利用视觉系统实现二维码(生产工序数据)数据信息的识别。
2.2 通信方式及流程
ABB工业机器人控制器可作为服务器或客户机,利用套接字(socket)通信与机器视觉系统进行通信[3-4]。
ABB机器人发送和接收数据流程如图2所示。
3 视觉信息处理
3.1 信息提取
定制化产品因为需要充分满足用户需求,其产品生产流程可能涉及多个选择分支,采用传统方法时信息比对数量繁多且不利于程序的及时调整,因此本文提出利用ABB工业机器人强大的数据处理功能进行视觉信息的分析和提取,从而增强系统的可扩展性和调整的方便性。本实例中从视觉系统发送过来的数据格式如图3所示,数据类型为字符型,其中“流程信息数据”部分中1个字母+1个数字组成1个代码组,标识1个对应的产品生产流程。视觉系统识别并输出产品二维码信息,工业机器人需要将视觉系统的信息按照加工顺序进行分组提取对比,与成组索引号比对相比,其比对次数大量减少,有利于程序的调整。
图3 获得的字符串数据格式Fig.3 The string data format
工艺流程复杂程度不同,视觉系统获得的数据长度即机器人端接收到的数据长度也不同,主要是与产品生产流程复杂程度相对应的产品“流程信息数据”的长度有变化,分析如图3所示构成可知,数据共包含3个部分:命令执行OK响应、流程信息数据、校验+结束符,其中命令执行OK响应、校验和结束字符为固定数据且具有固定长度,而“流程信息数据”部分字符是所需提取的代表产品生产流程信息的数据。因此,实际要做的工作就是将这部分信息进行有效提取,比对后确定对应的生产流程,驱动产品的生产流程来执行。利用ABB工业机器人中StrPart、StrLen、For等指令进行循环提取,将代表流程信息的数据依次完全提取。
图4 产品流程信息提取流程图Fig.4 Flow chart of product flow information extraction
首先,用StrLen指令计算出数据所包含的字符串的总体长度,字符串总长度减去“命令执行OK响应”长度和“校验+结束符”长度,就得到“流程信息数据”的字符长度,因为数据里与流程信息对应的代码(字符型数据)的组成规律是1个字母+1个数字组成的1个代码组,所以该长度再除以2,就计算出“流程信息数据”所对应的流程数,也就是对“流程信息数据”字符串的提取次数,采用FOR循环语句构成循环体,循环次数等于提取次数;然后,通过StrPart指令每1次存放2个字符到string数据类型的数组shuju{}中,从而完成将第二部分所有字符按照分组形式依次存放在shuju{}数组中,并等待后续流程判断使用。
例如string1=“OK/0DOK/0DC1B1C2C3/0D/0D”,经过提取后,shuju{1}=“C1”,shuju{2}=“B1”,shuju{3}=“C2”,shuju{4}=“C3”。提取控制流程如图4所示。
图5 产品流程信息提取示例Fig.5 Sample of product process information extraction
按照以上方法,将需要的流程信息以2位为1组进行提取。以“OK/0DOK/0DC1B1C2C3/0D/0D”的信息为例,信息提取情况如图5所示。
3.2 信息比对
信息提取完成后,对被提取的流程信息与被定义的信息进行比对,根据比对判断结果执行相对应的例行程序。
用ABB工业机器人中的TEST指令,就可以实现提取的产品流程信息与被定义输出流程之间的比对工作,根据比对结果,执行相对应的产品生产程序。将存放在shuju{}数组中的产品流程信息数据依次取出与被定义的生产流程比较,从而执行相对应的生产程序。由于涉及到多个生产流程,用TEST、CASE语句实现相对应的生产程序的执行,如产品生产工序定义,信息提取后的比对和工艺流程执行情况如表1所示。
表1 生产工序定义表Tab.1 Production process definition table
按照图4的内容,产品流程信息提取次数存放于cishu,产品流程信息编号存放在shuju{}数组中。
For b from 1 to cishu do// 循环体建立
TEST shuju{b}// 比对流程信息
CASE “B1”: //比对到流程信息编号B1
B1; //调用B1对应的数控加工工序程序
CASE “C2”://比对到流程信息编号C2
C2; //调用C2对应的打磨加工工序程序
CASE “A2”://比对到流程信息编号A2
A2; //调用A2对应的仓储工序程序
……
ENDTEST// 比对结束
4 结 语
工业机器人通过socket与机器人视觉系统进行通讯,对接收的产品流程信息进行分组提取和信息比对,可以实现对定制化产品流程信息的高效提取;同时可以快速应对生产流程的调整,实现产品的定制化生产,有效解决原有方法扩展性和灵活性不足的问题。