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