孟鑫 張聰超 韓警賢
摘要:隨著“1+X”證書制度在高等職業(yè)教育中開展,越來越多的學(xué)校開設(shè)了工業(yè)機(jī)器人操作與編程這門課程,但在教學(xué)中發(fā)現(xiàn),學(xué)生們在做機(jī)器人編程時邏輯不清晰,寫出的程序雜亂無章?,F(xiàn)依據(jù)教學(xué)經(jīng)驗,提出一種“數(shù)據(jù)+邏輯+進(jìn)化”的編程思想,并通過一個搬運(yùn)實(shí)例進(jìn)行深入講解,使機(jī)器人編程規(guī)范化,找出機(jī)器人程序編程內(nèi)在的規(guī)律,使學(xué)生們能快速掌握機(jī)器人編程技巧。
關(guān)鍵詞:工業(yè)機(jī)器人編程;數(shù)據(jù)+邏輯+進(jìn)化;編程思想
引言:
當(dāng)前,我國經(jīng)濟(jì)和科技均得到了高速發(fā)展,以此為基礎(chǔ),我國現(xiàn)代化制造業(yè)不斷向智能化、信息化以及數(shù)字化的方向高速發(fā)展,隨之,工業(yè)機(jī)器人技術(shù)得到了越來越廣泛的應(yīng)用,相關(guān)專業(yè)也應(yīng)運(yùn)而生[1]。其中《工業(yè)機(jī)器人操作與編程》這門課程是機(jī)器人專業(yè)的核心課程,在教學(xué)中發(fā)現(xiàn)學(xué)生在學(xué)習(xí)機(jī)器人編程的時候邏輯混亂,不知道從哪里入手,程序可讀性也很差,不具備通用性。因此,本文提出一種“數(shù)據(jù)+邏輯+進(jìn)化”編程思想,通過對一個搬運(yùn)實(shí)例進(jìn)行深入講解,使機(jī)器人編程規(guī)范化,使學(xué)生學(xué)習(xí)機(jī)器人編程時邏輯清晰,能夠快速掌握機(jī)器人編程技巧,做到舉一反三。
1.機(jī)器人品牌的選擇
目前多數(shù)高職院校采用ABB機(jī)器人進(jìn)行教學(xué),原因是ABB機(jī)器人品牌口碑好,性能好,得到了很多企業(yè)的認(rèn)可[2]。近年來隨著國產(chǎn)機(jī)器人的崛起,越來越多國產(chǎn)機(jī)器人相關(guān)公司與高職院校進(jìn)行合作共同培養(yǎng)人才,國產(chǎn)機(jī)器人的特點(diǎn)是性價比高,編程語言風(fēng)格更符合中國人的邏輯[3]。我們學(xué)校與華中數(shù)控有限公司進(jìn)行校企合作建立了一個“1+X工業(yè)機(jī)器人操作與編程”考證培訓(xùn)基地,平時學(xué)生的理論學(xué)習(xí)和實(shí)操練習(xí)使用的都是華數(shù)工業(yè)機(jī)器人,因此本文是在華數(shù)工業(yè)機(jī)器人操作與編程的基礎(chǔ)上講解論述“數(shù)據(jù)+邏輯+進(jìn)化”的編程思想。
2.“數(shù)據(jù)+邏輯+進(jìn)化”編程思想
我們先對數(shù)據(jù)、邏輯和進(jìn)化這三個名詞進(jìn)行解釋,然后再結(jié)合機(jī)器人操作編程論述“數(shù)據(jù)+邏輯+進(jìn)化”的編程思想。
數(shù)據(jù)的定義:對客觀事物的性質(zhì)、狀態(tài)以及相互關(guān)系等進(jìn)行記載的物理符號。不僅僅是數(shù)字,也可以是具有一定意義的文字、圖形、視頻等。
邏輯的定義:是指思維的規(guī)律和規(guī)則,就是事情的因果規(guī)律。引入“邏輯”一詞,就是要建立數(shù)據(jù)之間的因果關(guān)系。
進(jìn)化的定義:又稱為演化,在生物學(xué)中是指種群里的基因在世代之間的變化。引入“進(jìn)化”一詞,就是要說明程序的編寫要從簡單到復(fù)雜,從已有的向未知的逐步迭代演化。
2.1機(jī)器人編程中的數(shù)據(jù)
以華數(shù)機(jī)器人為例,它包含的數(shù)據(jù)類型有:UT[i]:工具坐標(biāo)系變量;UF[i]:基坐標(biāo)系變量;R[i]:數(shù)值型變量;JR[i]:關(guān)節(jié)型坐標(biāo)變量LR[i]:笛卡爾型坐標(biāo)變量;I[i]:數(shù)字輸入型變量;O[i]:數(shù)字輸出型變量。
本文以將工件從A位置搬運(yùn)到B位置為例來說明數(shù)據(jù)的建立。將工件從A位置搬運(yùn)到B位置是一個最簡單的搬運(yùn)編程,通過分析知此程序至少需要5個基礎(chǔ)數(shù)據(jù):
(1)機(jī)器人原點(diǎn):JR[0](通過直接輸入數(shù)值獲得)
(2)兩個示教點(diǎn)位:取料點(diǎn)LR[10],放料點(diǎn)LR[11](通過示教器示教獲得)
(3)一個常量點(diǎn)位:抬起高度LR[15](通過直接輸入數(shù)值獲得)
(4)一個IO點(diǎn)位:DO[1],吸盤工具開與關(guān)。(通過配置IO獲得)
至此,我們已經(jīng)知道了此任務(wù)需要的基礎(chǔ)數(shù)據(jù)及獲取方式,在后續(xù)編程過程中需要的數(shù)據(jù)要么是基礎(chǔ)數(shù)據(jù),要么是利用基礎(chǔ)數(shù)據(jù)運(yùn)算得到的計算數(shù)據(jù)。
2.2 機(jī)器人編程中的邏輯
2.1節(jié)已對程序需要的數(shù)據(jù)類型、數(shù)量及獲取方式進(jìn)行了詳細(xì)說明,下面論述將工件從A位置搬運(yùn)到B位置的編程邏輯。
邏輯建立的第一步是對數(shù)據(jù)的規(guī)劃與存儲。由2.1節(jié)中我們知道此程序需要獲取5個基礎(chǔ)數(shù)據(jù),但在邏輯建立的過程中還需要必要的計算點(diǎn)位,如:
取料點(diǎn)安全高度(LR[20])=取料點(diǎn)(LR[10]) +抬起高度(LR[15])
放料點(diǎn)安全高度(LR[21])=放料點(diǎn)(LR[11]) +抬起高度(LR[15])
此任務(wù)編程需要的全部數(shù)據(jù)為:
(1)機(jī)器人原點(diǎn):JR[0]
(2)兩個示教點(diǎn)位:取料點(diǎn)LR[10],放料點(diǎn)LR[11]
(3)兩個計算點(diǎn)位:取料點(diǎn)安全高度LR[20],放料點(diǎn)安全高度LR[21]
(4)一個IO點(diǎn)位:DO[1],吸盤工具開與關(guān)
邏輯建立的第二步是路徑規(guī)劃及動作規(guī)劃。如下圖,圖中點(diǎn)位位置和箭頭指向表明了運(yùn)動的邏輯關(guān)系,即機(jī)器人以何種方式到達(dá)哪一個點(diǎn)位,然后執(zhí)行何種動作,完成何種任務(wù)。
至此,我們已經(jīng)表述清楚了此任務(wù)的邏輯關(guān)系。
2.3機(jī)器人編程中的進(jìn)化
在我們知道了完成此任務(wù)需要的數(shù)據(jù),和此任務(wù)的編程邏輯后,我們可以立即寫出此任務(wù)的程序。我們將程序命名為“MVONE.PRG”,程序內(nèi)容如下:
MVONE.PRG:
J JR[0] //機(jī)器人在原點(diǎn)
LR[20]=LR[10]+LR[15] //定義機(jī)器人取料點(diǎn)安全高度
LR[21]=LR[11]+LR[15] //定義機(jī)器人放料點(diǎn)安全高度
J LR[20] //機(jī)器人運(yùn)動到取料點(diǎn)安全高度
L LR[10] //機(jī)器人運(yùn)動到取料點(diǎn)
WAIT TIME=500 //等待500毫秒
DO[10]=ON //吸盤開,吸工件
WAIT TIME=500 //等待500毫秒
L LR[20] //機(jī)器人運(yùn)動到取料點(diǎn)安全高度
J LR[21] //機(jī)器人運(yùn)動到放料點(diǎn)安全高度
L LR[11] //機(jī)器人運(yùn)動到放料點(diǎn)
WAIT TIME=500 //等待500毫秒
DO[10]=OFF //吸盤關(guān)閉,放工件
WAIT ITME=100 //等待500毫秒
L LR[21] //機(jī)器人運(yùn)動到放料點(diǎn)安全高度
J JR[0] //機(jī)器人運(yùn)動到原點(diǎn)
下面我們對程序進(jìn)行第一層進(jìn)化,通過主程序調(diào)用子程序的方式實(shí)現(xiàn)搬運(yùn)任務(wù)。主程序命名為“MAIN1.PRG”,程序內(nèi)容如下:
MAIN1.PRG:
CALL “MVONE”
則運(yùn)行主程序“MAIN1.PRG”后,通過主程序調(diào)用子程序的方式來實(shí)現(xiàn)搬運(yùn)。
下面我們對程序進(jìn)行第二層進(jìn)化,通過在主程序中對子程序賦值的方式來編程。同樣定義主程序為“MAIN2.PRG”,程序內(nèi)容如下:
MAIN2.PRG:
LR[10]=LR[30]
LR[11]=LR[31]
CALL “MVONE”
則運(yùn)行“MAIN2.PRG”,表明主程序調(diào)用子程序,其中示教點(diǎn)位保存在LR[30]和LR[31]中,這里實(shí)現(xiàn)了子程序點(diǎn)位在主程序中賦值,也就是帶參調(diào)用子程序。改進(jìn)后的程序,層次分明,實(shí)現(xiàn)了模塊化編程,為后續(xù)程序的修改和擴(kuò)展提供了方便。
這三段程序體現(xiàn)了,三種不同的編程思想:
(1)“MVONE.PRG”只是實(shí)現(xiàn)了工作任務(wù)。
(2)“MAIN1.PRG”實(shí)現(xiàn)了模塊化編程中的子程序的概念,在主程序中可以隨時取消調(diào)用,提高了修改機(jī)器人流程的效率
(3)“MAIN2.PRG”不僅實(shí)現(xiàn)了模塊化編程的概念,而且實(shí)現(xiàn)了帶參數(shù)子程序的調(diào)用,模塊的通用性更強(qiáng)。
這就是機(jī)器人編程中的進(jìn)化,在教學(xué)生編程時,先從最直接的編程思路入手,要完成什么樣的任務(wù),然后在主程序中直接編程,然后再考慮如何優(yōu)化程序。對于有規(guī)律的多次搬運(yùn),特別是碼垛搬運(yùn),進(jìn)化程序會體現(xiàn)出它的簡潔性。
下面我們將搬一放一這樣的編程任務(wù)擴(kuò)展到搬三放三。即需要連續(xù)搬運(yùn)3個工件然后放置到三個不同位置,假設(shè)三個取料點(diǎn)和三個放料點(diǎn)都是在X方向一字排放,且相鄰間隔都是60mm,我們將間隔距離存放到LR[25]中,主程序命名為“MAIN3.PRG”,程序內(nèi)容如下:
MAIN2.PRG:
R[10]=0
WHILE R[10]<3 //采用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)循環(huán)3次搬運(yùn)
LR[10]=LR[30+R[10]* LR[25]]
LR[11]=LR[31+R[10]* LR[25]]
CALL “MVONE”
R[10]=R[10]+1
通過上面的搬三放三程序我們發(fā)現(xiàn),只要我們理解了帶參數(shù)子程序調(diào)用的方法,并且學(xué)會搬運(yùn)一個工件的程序操作,那么搬運(yùn)三個工件是很簡單的事情。我們只需要把搬運(yùn)三個工件的邏輯理清楚,三個工件的取料點(diǎn)和放料點(diǎn)之間的聯(lián)系理清楚,然后在主程序中體現(xiàn)出來就可以。
總之,程序進(jìn)化是從易到難的一個過程,也是一個不斷使用已有知識發(fā)現(xiàn)新知識的過程。
最根本的還是要理解機(jī)器人程序的本質(zhì):
(1)機(jī)器人的運(yùn)動的點(diǎn)位邏輯是什么
(2)機(jī)器人在什么地方做了什么樣的工作,即IO邏輯是什么。
3.結(jié)束語
上述的“數(shù)據(jù)+邏輯+進(jìn)化”編程思想是在實(shí)踐教學(xué)中總結(jié)出來的,上述的機(jī)器人搬運(yùn)編程實(shí)例,從搬一放一到搬三放三再到搬九放九是“數(shù)據(jù)+邏輯+進(jìn)化”編程思想的典型運(yùn)用。在“工業(yè)機(jī)器人操作與編程”教學(xué)實(shí)踐中,按照這種編程思想進(jìn)行教學(xué),學(xué)生們的編程思路變的清晰了,程序的可讀性移植性也得到了提升,在機(jī)器人編程中做到了循序漸進(jìn),舉一反三。
參考文獻(xiàn):
[1]盧峰,官文. 高職院校工業(yè)機(jī)器人編程與操作課程教學(xué)思考[J]. 科研與教育,2020,4:211-212
[2]邵軍.離線編程示教的工業(yè)機(jī)器人教學(xué)研究[J]. 湖北農(nóng)機(jī)化,2019,16:118-119
[3]嚴(yán)偉青.淺談中職數(shù)學(xué)課堂教與學(xué)的策略[J].現(xiàn)代企業(yè)教育,2014(6):210.