摘 要:本文以華航唯實(shí)“DS-01”工作站為例,在中職組“機(jī)器人技術(shù)應(yīng)用”賽項(xiàng)有關(guān)芯片分揀的任務(wù)中,經(jīng)常涉及芯片排序問題,如果排序步驟煩瑣,將影響比賽時(shí)間,最終影響成績(jī)排名。因此,本文介紹了一種簡(jiǎn)便且適合多種排序任務(wù)要求的排序方法,可以簡(jiǎn)稱為“舍近找遠(yuǎn)”法。該方法使機(jī)器人能夠按照設(shè)定好的排序算法進(jìn)行芯片排序,盡量減少排序步驟,使芯片排序效率達(dá)到最優(yōu),從而取得更好的比賽成績(jī)。算法應(yīng)用結(jié)果表明,該算法在芯片排序中優(yōu)勢(shì)明顯,能夠?yàn)楦?jìng)賽選手提供更好的選擇,具有良好的教育、教學(xué)應(yīng)用價(jià)值。
關(guān)鍵詞:芯片分揀;芯片排序;舍近找遠(yuǎn)
中圖分類號(hào):TP 24 " " " 文獻(xiàn)標(biāo)志碼:A
1 研究目的
在2023年某市中職機(jī)器人技術(shù)應(yīng)用賽項(xiàng)中,有關(guān)芯片分揀工藝流程任務(wù)中的要求如下所示。機(jī)器人根據(jù)觸摸屏的選擇,對(duì)原料區(qū)上的所有芯片進(jìn)行排序,每種芯片都能夠選擇以下2種排序方式:方式一,A類芯片從小號(hào)位置開始依次往后擺放,B類芯片從從大號(hào)開始往前依此擺放;方式二,B類芯片從小號(hào)位置開始依次往后擺放,A類芯片從大號(hào)位置開始依次往前擺放。
分析任務(wù)要求可知,芯片排序有2種方式,擺放數(shù)量和位置是隨機(jī)的,排序方式是通過(guò)觸摸屏下單,因此設(shè)計(jì)的程序代碼需要具備一定的柔性和靈活性,同一段程序代碼最好能適應(yīng)更多的排序任務(wù)要求。進(jìn)而需要對(duì)排序邏輯進(jìn)行設(shè)計(jì),優(yōu)化出更合理的代碼,使其方便理解又簡(jiǎn)短高效,這樣才能使學(xué)生在較短時(shí)間內(nèi)掌握,并在比賽現(xiàn)場(chǎng)根據(jù)實(shí)際任務(wù)要求隨機(jī)應(yīng)變、靈活應(yīng)對(duì),在較短的時(shí)間內(nèi)完成任務(wù),并取得較好成績(jī)。只有設(shè)計(jì)一種邏輯巧妙、程序精簡(jiǎn)的排序算法[1]才能滿足該要求。在實(shí)際的企業(yè)生產(chǎn)中也經(jīng)常遇到產(chǎn)品排序的場(chǎng)景,因此,通用、靈活的排序算法不僅能服務(wù)于學(xué)生學(xué)習(xí),而且也能使學(xué)生在以后的工作中更好地服務(wù)于生產(chǎn)實(shí)際,具有較大的市場(chǎng)應(yīng)用前景。
2 任務(wù)介紹和分析
實(shí)際的競(jìng)賽題目要求(以集成電路芯片為例)A類芯片從小號(hào)位置開始依次往后擺放,B類芯片從大號(hào)位置開始依次往前擺放。假如集成電路初始位置如圖1所示,根據(jù)任務(wù)要求,利用機(jī)器人算法排序,擺成如圖2所示的位置,A類芯片從位置1開始以順序依次擺放,B類芯片從位置8以倒序依次擺放。
由圖1可以看出位置②、④、⑤和⑧的芯片是需要移動(dòng)的,即移動(dòng)4步是最少的步驟,效率最高。需要特別指出的是,本算法適用于每類芯片的擺放至少有一個(gè)空位的情況。
3 “舍近找遠(yuǎn)”法簡(jiǎn)介
根據(jù)集成電路芯片的實(shí)際擺放位置,進(jìn)行視覺檢測(cè)后,對(duì)每個(gè)位置的芯片類型進(jìn)行賦值。A類芯片賦值為1,B類芯片賦值為-1,空位賦值為0。根據(jù)圖1,賦值后的原始數(shù)據(jù)存放到定義好的數(shù)組中,設(shè)數(shù)組名為原始數(shù)組,簡(jiǎn)稱為ys,其中存放的元素個(gè)數(shù)和數(shù)據(jù)依次是“ys[8] :={0,-1,1,-1,1,0,-1,1}”。
根據(jù)任務(wù)要求,寫一個(gè)例行程序,將ys[8]數(shù)組中的元素重新生成一個(gè)目標(biāo)數(shù)組,數(shù)組名簡(jiǎn)稱為mb,其中存放的元素個(gè)數(shù)和數(shù)據(jù)依次是“mb{8}:={1,1,1,0,0,-1,-1,-1}”。
“舍近找遠(yuǎn)”法是從第一元素開始比較ys數(shù)組和mb數(shù)組中對(duì)應(yīng)元素的每個(gè)數(shù)據(jù)值,當(dāng)2個(gè)數(shù)據(jù)相等時(shí),直接略過(guò),判斷下一個(gè)元素;反之,不相等時(shí),可以分為2種情況。一是當(dāng)前mb數(shù)組元素位需要擺放芯片,但是ys數(shù)組此位為空位,就需要在ys數(shù)組中判斷所需芯片的位置,機(jī)器人從該位置直接吸取芯片,將其放到空位。需要注意的是,尋找所需芯片時(shí),要找位置最遠(yuǎn)的芯片,而不是相鄰的芯片,這是“舍近找遠(yuǎn)”法最核心的思想,再將2個(gè)位置的狀態(tài)進(jìn)行互換。二是ys數(shù)組當(dāng)前位置有芯片,就需要先把該芯片挪到最遠(yuǎn)空位上去,然后回頭判斷當(dāng)前位置,再?gòu)膟s數(shù)組中尋找最遠(yuǎn)的合適的芯片,最后由機(jī)器人吸取芯片并將其調(diào)整到位,進(jìn)行狀態(tài)互換。
下文將通過(guò)示例和圖示進(jìn)行簡(jiǎn)單說(shuō)明。1)由圖1和圖2可知,①號(hào)位置需要擺放A類芯片,而該位置為空位,此時(shí)機(jī)器人需要尋找最遠(yuǎn)⑧號(hào)位置的A類芯片,將其搬運(yùn)到①號(hào)位置,而不是尋找相鄰③號(hào)或⑤號(hào)位置的A類芯片。搬運(yùn)完成后,2個(gè)位置狀態(tài)互換,即①號(hào)位置狀態(tài)變1,⑧號(hào)位置狀態(tài)變0,后續(xù)步驟同理,完成后如圖3所示。2)同樣,②號(hào)位置需要A類芯片,但該位置是淺色B類芯片,需要將其先搬運(yùn)至最遠(yuǎn)的⑧號(hào)空位,而不是較近的⑥號(hào)空位。搬運(yùn)完成后,狀態(tài)互換,如圖4所示。3)回頭再次判斷②號(hào)位,此時(shí)②號(hào)位已變成空位,機(jī)器人可以直接將最遠(yuǎn)的⑤號(hào)位A類芯片搬運(yùn)至②號(hào)位,而不是搬運(yùn)相鄰的③號(hào)位A類芯片。搬運(yùn)完成后,2個(gè)位置狀態(tài)互換,如圖5所示。4)將④號(hào)位的B類芯片搬運(yùn)至⑥號(hào)位,狀態(tài)互換,如圖6所示。至此全部排序完畢,排序步驟最少、排序效率最優(yōu)的目標(biāo)達(dá)成。
4 相關(guān)程序
進(jìn)行視覺檢測(cè)后,調(diào)整存放在ys數(shù)組中的原始數(shù)據(jù),并將其存放至mb數(shù)組中。數(shù)據(jù)調(diào)整需要用到專門的調(diào)整程序,調(diào)整程序代碼如下所示,相關(guān)變量已提前定義好。
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
由于要調(diào)整數(shù)據(jù),因此需要先設(shè)置、識(shí)別視覺軟件參數(shù)并編寫相應(yīng)的機(jī)器人和視覺通信程序,進(jìn)而生成ys數(shù)組中的數(shù)據(jù),過(guò)程比較煩瑣。由于本文只討論算法,因此在程序調(diào)試過(guò)程中,也可以先不進(jìn)行視覺檢測(cè),而是根據(jù)已擺好的芯片位置,直接在機(jī)器人程序中找到y(tǒng)s數(shù)組變量,并將其賦值[2]。
進(jìn)而進(jìn)行排序。排序主要包括循環(huán)、判斷和搬運(yùn)等程序。搬運(yùn)程序可以寫成帶參數(shù)的例行程序“PROC by(robtarget q,robtarget f)”。程序代碼較簡(jiǎn)單,本文此處忽略。將其余相關(guān)變量定義好,并將集成電路的8個(gè)點(diǎn)位示教好,存放在集成電路點(diǎn)位數(shù)組中,數(shù)組名簡(jiǎn)稱為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次循環(huán)判斷中的2個(gè)IF判斷順序不能對(duì)調(diào),必須先判斷當(dāng)前位置不是空位,然后尋找最遠(yuǎn)位置的空位,利用搬運(yùn)程序進(jìn)行調(diào)整和位置狀態(tài)信息互換,再回頭判斷當(dāng)前位置是空位,并尋找最遠(yuǎn)位置的合適芯片進(jìn)行搬運(yùn)、調(diào)整和位置狀態(tài)信息互換。
5 程序測(cè)試
根據(jù)圖1所示位置擺放好集成電路芯片。將集成電路8個(gè)芯片的位置依次示教、存放至集成電路點(diǎn)位數(shù)組jcdl中,在主程序里調(diào)用相關(guān)例行程進(jìn)行序放,測(cè)試結(jié)果見表1。
經(jīng)過(guò)算法測(cè)試,此種排序排序步驟最少、效果最好,能達(dá)到最優(yōu)排序目標(biāo),有效節(jié)約整體比賽時(shí)間。
如果排序任務(wù)要求改變,例如要求A類集成電路芯片從⑧至①倒序擺放,B類芯片從①至⑧正序擺放,原始集成電路芯片擺放位置仍然如圖1所示,只需要把調(diào)整例行程序中的判斷條件“ys{i} = 1“與“ys {i} = -1”對(duì)調(diào),再次驗(yàn)證該排序算法的可行性,驗(yàn)證測(cè)試結(jié)果見表2。
排序任務(wù)改變后,經(jīng)過(guò)算法測(cè)試,排序步驟仍然能達(dá)到最少、效率最優(yōu)的目標(biāo),即使排序任務(wù)不同,需要修改的程序代碼也不多。因此,本排序算法具有一定的通用性且比較容易理解和記憶。在緊張的比賽過(guò)程中,選手來(lái)不及思考更復(fù)雜的算法邏輯,本算法在一定程度上有助于選手在較短時(shí)間內(nèi)完成工作任務(wù),也能為其他任務(wù)要求預(yù)留更多時(shí)間。
本文算法針對(duì)2種類型芯片從兩頭往中間排序,對(duì)于其他排序要求,應(yīng)用本方法也能取得較好效果,可能會(huì)比最少的步驟多出1~2步,均在可以接受的范圍內(nèi)。本文算法適合芯片位置沒有擺滿的情況,如果出現(xiàn)擺滿芯片的情況,就需要修改程序,增加其他過(guò)渡位來(lái)進(jìn)行排序,程序修改過(guò)程也較簡(jiǎn)單。
本文算法能兼顧大多數(shù)排序任務(wù)要求。在理解本算法的基礎(chǔ)上,學(xué)生能夠根據(jù)不同的排序任務(wù)要求,修改為適合新任務(wù)的排序算法,只需要將調(diào)整例行程序進(jìn)行適當(dāng)?shù)乃惴ㄐ薷?,就可以較大程度地滿足多種排序要求。因此本文算法具有通用性,降低了編程難度,有效節(jié)約了時(shí)間,對(duì)提高競(jìng)賽成績(jī)有一定幫助。
上文是針對(duì)集成電路芯片的舉例,對(duì)于華航唯實(shí)“DS-01”工作站中的CPU、電容和三極管等三類芯片,如果芯片排序任務(wù)要求一致,那么排序的核心算法不會(huì)改變。在原有基礎(chǔ)上,只需要嵌套2層for循環(huán),把存放信息的一維數(shù)組變成二維數(shù)組即可。這樣只修改部分程序參數(shù),就可以實(shí)現(xiàn)4種芯片的排序。
排序排序例行程序修改方法與調(diào)整例行程序相同,同時(shí)嵌套2層for循環(huán),將相應(yīng)的數(shù)組信息全部改成二維數(shù)組并進(jìn)行存放和調(diào)用,即可完成4種類型芯片的排序,本文在此不一一贅述了。
6 結(jié)論
對(duì)于上述2種排序,如果采用普通的“冒泡法”來(lái)實(shí)現(xiàn),那么整個(gè)排序過(guò)程將耗時(shí)較長(zhǎng)、效率較低,不利于學(xué)生在競(jìng)賽時(shí)間內(nèi)取得好成績(jī),而且“冒泡法”無(wú)法較好地適應(yīng)各種排序任務(wù)要求。從目前2種排序結(jié)果來(lái)看,本文排序算法具有更好的創(chuàng)新性和實(shí)用性。算法實(shí)現(xiàn)過(guò)程也不復(fù)雜,十分有利于學(xué)生學(xué)習(xí)和掌握。在理解算法核心思想的前提下,學(xué)生能夠融會(huì)貫通地進(jìn)行算法修改,以適應(yīng)其他排序要求。因此,與其他同類算法相比,本文排序算法結(jié)構(gòu)精簡(jiǎn)、邏輯簡(jiǎn)單,有助于競(jìng)賽選手取得更優(yōu)秀的成績(jī),在平常的教育、教學(xué)中,本文算法也能夠進(jìn)行推廣和應(yīng)用,滿足學(xué)生更多的學(xué)習(xí)要求。
參考文獻(xiàn)
[1]嵇朋朋.基于ABB機(jī)器人工作站芯片產(chǎn)品排序?qū)崿F(xiàn)方法研究[J].焦作大學(xué)學(xué)報(bào),2019,6(2):80-83.
[2]葉暉.工業(yè)機(jī)器人實(shí)操與應(yīng)用技巧[M].第2版.北京:機(jī)械工業(yè)出版社,2017.
作者簡(jiǎn)介:楊會(huì)攀(1985—),男,河南省輝縣市人,本科,電子(電工)講師,研究方向?yàn)闄C(jī)電一體化、工業(yè)機(jī)器人。
電子郵箱:627485738@qq.com。
賀洪(1970—),男,江西萍鄉(xiāng)市人,本科,高級(jí)講師,研究方向?yàn)樽詣?dòng)化。
電子郵箱:136100915@qq.com。