摘 要:本文以华航唯实“DS-01”工作站为例,在中职组“机器人技术应用”赛项有关芯片分拣的任务中,经常涉及芯片排序问题,如果排序步骤烦琐,将影响比赛时间,最终影响成绩排名。因此,本文介绍了一种简便且适合多种排序任务要求的排序方法,可以简称为“舍近找远”法。该方法使机器人能够按照设定好的排序算法进行芯片排序,尽量减少排序步骤,使芯片排序效率达到最优,从而取得更好的比赛成绩。算法应用结果表明,该算法在芯片排序中优势明显,能够为竞赛选手提供更好的选择,具有良好的教育、教学应用价值。
关键词:芯片分拣;芯片排序;舍近找远
中图分类号:TP 24 " " " 文献标志码:A
1 研究目的
在2023年某市中职机器人技术应用赛项中,有关芯片分拣工艺流程任务中的要求如下所示。机器人根据触摸屏的选择,对原料区上的所有芯片进行排序,每种芯片都能够选择以下2种排序方式:方式一,A类芯片从小号位置开始依次往后摆放,B类芯片从从大号开始往前依此摆放;方式二,B类芯片从小号位置开始依次往后摆放,A类芯片从大号位置开始依次往前摆放。
分析任务要求可知,芯片排序有2种方式,摆放数量和位置是随机的,排序方式是通过触摸屏下单,因此设计的程序代码需要具备一定的柔性和灵活性,同一段程序代码最好能适应更多的排序任务要求。进而需要对排序逻辑进行设计,优化出更合理的代码,使其方便理解又简短高效,这样才能使学生在较短时间内掌握,并在比赛现场根据实际任务要求随机应变、灵活应对,在较短的时间内完成任务,并取得较好成绩。只有设计一种逻辑巧妙、程序精简的排序算法[1]才能满足该要求。在实际的企业生产中也经常遇到产品排序的场景,因此,通用、灵活的排序算法不仅能服务于学生学习,而且也能使学生在以后的工作中更好地服务于生产实际,具有较大的市场应用前景。
2 任务介绍和分析
实际的竞赛题目要求(以集成电路芯片为例)A类芯片从小号位置开始依次往后摆放,B类芯片从大号位置开始依次往前摆放。假如集成电路初始位置如图1所示,根据任务要求,利用机器人算法排序,摆成如图2所示的位置,A类芯片从位置1开始以顺序依次摆放,B类芯片从位置8以倒序依次摆放。
由图1可以看出位置②、④、⑤和⑧的芯片是需要移动的,即移动4步是最少的步骤,效率最高。需要特别指出的是,本算法适用于每类芯片的摆放至少有一个空位的情况。
3 “舍近找远”法简介
根据集成电路芯片的实际摆放位置,进行视觉检测后,对每个位置的芯片类型进行赋值。A类芯片赋值为1,B类芯片赋值为-1,空位赋值为0。根据图1,赋值后的原始数据存放到定义好的数组中,设数组名为原始数组,简称为ys,其中存放的元素个数和数据依次是“ys[8] :={0,-1,1,-1,1,0,-1,1}”。
根据任务要求,写一个例行程序,将ys[8]数组中的元素重新生成一个目标数组,数组名简称为mb,其中存放的元素个数和数据依次是“mb{8}:={1,1,1,0,0,-1,-1,-1}”。
“舍近找远”法是从第一元素开始比较ys数组和mb数组中对应元素的每个数据值,当2个数据相等时,直接略过,判断下一个元素;反之,不相等时,可以分为2种情况。一是当前mb数组元素位需要摆放芯片,但是ys数组此位为空位,就需要在ys数组中判断所需芯片的位置,机器人从该位置直接吸取芯片,将其放到空位。需要注意的是,寻找所需芯片时,要找位置最远的芯片,而不是相邻的芯片,这是“舍近找远”法最核心的思想,再将2个位置的状态进行互换。二是ys数组当前位置有芯片,就需要先把该芯片挪到最远空位上去,然后回头判断当前位置,再从ys数组中寻找最远的合适的芯片,最后由机器人吸取芯片并将其调整到位,进行状态互换。
下文将通过示例和图示进行简单说明。1)由图1和图2可知,①号位置需要摆放A类芯片,而该位置为空位,此时机器人需要寻找最远⑧号位置的A类芯片,将其搬运到①号位置,而不是寻找相邻③号或⑤号位置的A类芯片。搬运完成后,2个位置状态互换,即①号位置状态变1,⑧号位置状态变0,后续步骤同理,完成后如图3所示。2)同样,②号位置需要A类芯片,但该位置是浅色B类芯片,需要将其先搬运至最远的⑧号空位,而不是较近的⑥号空位。搬运完成后,状态互换,如图4所示。3)回头再次判断②号位,此时②号位已变成空位,机器人可以直接将最远的⑤号位A类芯片搬运至②号位,而不是搬运相邻的③号位A类芯片。搬运完成后,2个位置状态互换,如图5所示。4)将④号位的B类芯片搬运至⑥号位,状态互换,如图6所示。至此全部排序完毕,排序步骤最少、排序效率最优的目标达成。
4 相关程序
进行视觉检测后,调整存放在ys数组中的原始数据,并将其存放至mb数组中。数据调整需要用到专门的调整程序,调整程序代码如下所示,相关变量已提前定义好。
VAR num m:=0;
VAR num n:=8;
PROC tz()
FOR i FROM 1 TO 8 DO
IF ys{i} = 1 THEN
mb{m} := ys{i};
m := m+1;
ELSEIF ys {i} = -1 THEN
mb{n} := ys{i};
n := n-1;
ENDIF
ENDFOR
ENDPROC
由于要调整数据,因此需要先设置、识别视觉软件参数并编写相应的机器人和视觉通信程序,进而生成ys数组中的数据,过程比较烦琐。由于本文只讨论算法,因此在程序调试过程中,也可以先不进行视觉检测,而是根据已摆好的芯片位置,直接在机器人程序中找到ys数组变量,并将其赋值[2]。
进而进行排序。排序主要包括循环、判断和搬运等程序。搬运程序可以写成带参数的例行程序“PROC by(robtarget q,robtarget f)”。程序代码较简单,本文此处忽略。将其余相关变量定义好,并将集成电路的8个点位示教好,存放在集成电路点位数组中,数组名简称为jcdl。排序程序代码如下所示。
VAR num b{8}:=[0,1,2,3,4,5,6,7];
PROC px()
FOR i FROM 1 TO 8 DO
IF ys{i} lt;gt; 0 AND ys{i} lt;gt; mb{i} THEN
FOR j FROM b{i}+1 TO 8 DO
IF ys{j} = 0 THEN
k := j;
ENDIF
ENDFOR
by jcdl{i},jcdl{k};
ys {k} := ys{i};
ys {i} := 0;
ENDIF
IF ys{i} = 0 AND ys{i} lt;gt; mb{i} THEN
FOR "j FROM b{i}+1 TO 8 DO
IF ys{j} = mb{i} THEN
k := j;
ENDIF
ENDFOR
by jcdl{k},jcdl{i};
ys {k} := 0;
ys {i} := mb{i};
ENDIF
ENDFOR
ENDPROC
需要注意的是,排序例行程序8次循环判断中的2个IF判断顺序不能对调,必须先判断当前位置不是空位,然后寻找最远位置的空位,利用搬运程序进行调整和位置状态信息互换,再回头判断当前位置是空位,并寻找最远位置的合适芯片进行搬运、调整和位置状态信息互换。
5 程序测试
根据图1所示位置摆放好集成电路芯片。将集成电路8个芯片的位置依次示教、存放至集成电路点位数组jcdl中,在主程序里调用相关例行程进行序放,测试结果见表1。
经过算法测试,此种排序排序步骤最少、效果最好,能达到最优排序目标,有效节约整体比赛时间。
如果排序任务要求改变,例如要求A类集成电路芯片从⑧至①倒序摆放,B类芯片从①至⑧正序摆放,原始集成电路芯片摆放位置仍然如图1所示,只需要把调整例行程序中的判断条件“ys{i} = 1“与“ys {i} = -1”对调,再次验证该排序算法的可行性,验证测试结果见表2。
排序任务改变后,经过算法测试,排序步骤仍然能达到最少、效率最优的目标,即使排序任务不同,需要修改的程序代码也不多。因此,本排序算法具有一定的通用性且比较容易理解和记忆。在紧张的比赛过程中,选手来不及思考更复杂的算法逻辑,本算法在一定程度上有助于选手在较短时间内完成工作任务,也能为其他任务要求预留更多时间。
本文算法针对2种类型芯片从两头往中间排序,对于其他排序要求,应用本方法也能取得较好效果,可能会比最少的步骤多出1~2步,均在可以接受的范围内。本文算法适合芯片位置没有摆满的情况,如果出现摆满芯片的情况,就需要修改程序,增加其他过渡位来进行排序,程序修改过程也较简单。
本文算法能兼顾大多数排序任务要求。在理解本算法的基础上,学生能够根据不同的排序任务要求,修改为适合新任务的排序算法,只需要将调整例行程序进行适当的算法修改,就可以较大程度地满足多种排序要求。因此本文算法具有通用性,降低了编程难度,有效节约了时间,对提高竞赛成绩有一定帮助。
上文是针对集成电路芯片的举例,对于华航唯实“DS-01”工作站中的CPU、电容和三极管等三类芯片,如果芯片排序任务要求一致,那么排序的核心算法不会改变。在原有基础上,只需要嵌套2层for循环,把存放信息的一维数组变成二维数组即可。这样只修改部分程序参数,就可以实现4种芯片的排序。
排序排序例行程序修改方法与调整例行程序相同,同时嵌套2层for循环,将相应的数组信息全部改成二维数组并进行存放和调用,即可完成4种类型芯片的排序,本文在此不一一赘述了。
6 结论
对于上述2种排序,如果采用普通的“冒泡法”来实现,那么整个排序过程将耗时较长、效率较低,不利于学生在竞赛时间内取得好成绩,而且“冒泡法”无法较好地适应各种排序任务要求。从目前2种排序结果来看,本文排序算法具有更好的创新性和实用性。算法实现过程也不复杂,十分有利于学生学习和掌握。在理解算法核心思想的前提下,学生能够融会贯通地进行算法修改,以适应其他排序要求。因此,与其他同类算法相比,本文排序算法结构精简、逻辑简单,有助于竞赛选手取得更优秀的成绩,在平常的教育、教学中,本文算法也能够进行推广和应用,满足学生更多的学习要求。
参考文献
[1]嵇朋朋.基于ABB机器人工作站芯片产品排序实现方法研究[J].焦作大学学报,2019,6(2):80-83.
[2]叶晖.工业机器人实操与应用技巧[M].第2版.北京:机械工业出版社,2017.
作者简介:杨会攀(1985—),男,河南省辉县市人,本科,电子(电工)讲师,研究方向为机电一体化、工业机器人。
电子邮箱:627485738@qq.com。
贺洪(1970—),男,江西萍乡市人,本科,高级讲师,研究方向为自动化。
电子邮箱:136100915@qq.com。