彭玲,祝潤(rùn)澤,戴昆林,李漢超,鄒慶,申淑麗
(國(guó)機(jī)智能科技有限公司智能制造事業(yè)部,廣東廣州 510665)
機(jī)器人語(yǔ)言是機(jī)器人與用戶交互的重要接口,它是以軟件的形式嵌入到示教器或上位機(jī)中,通過(guò)軟硬結(jié)合的方式實(shí)現(xiàn)機(jī)器人的有效控制[1-2]。在實(shí)際應(yīng)用中,機(jī)器人示教器的種類(lèi)和作業(yè)要求是多種多樣的,這也就對(duì)機(jī)器人編輯器的可移植性與可擴(kuò)展性提出了更高的要求[3]。Qt是一個(gè)跨平臺(tái)C++圖形用戶界面應(yīng)用程序開(kāi)發(fā)框架?;赒t開(kāi)發(fā)的應(yīng)用程序可以在多種平臺(tái)與系統(tǒng)下運(yùn)行,這就大大提高了機(jī)器人語(yǔ)言編輯器的可移植性;此外,Qt是完全基于面向?qū)ο蟮腃++,可擴(kuò)展性非常強(qiáng)[4-6]。在實(shí)際生產(chǎn)中對(duì)機(jī)器人進(jìn)行有效控制和運(yùn)用完成相關(guān)作業(yè)需求,機(jī)器人語(yǔ)言是機(jī)器人控制系統(tǒng)的重要一環(huán),它對(duì)機(jī)器人運(yùn)動(dòng)狀態(tài)產(chǎn)生最直接的影響,因此設(shè)計(jì)一套機(jī)器人編輯器可以有效改善用戶對(duì)機(jī)器人的控制[7-8]。
機(jī)器人語(yǔ)言的起步與發(fā)展相比工業(yè)機(jī)器人晚一些。1973年,Stanford人工智能實(shí)驗(yàn)室開(kāi)發(fā)WAVE語(yǔ)言用于機(jī)械臂的運(yùn)動(dòng)控制,此外該團(tuán)隊(duì)在WAVE語(yǔ)言的基礎(chǔ)上開(kāi)發(fā)的AL語(yǔ)言對(duì)于推動(dòng)后期機(jī)器人語(yǔ)言的發(fā)展起到一定的促進(jìn)作用[9-10]。
機(jī)器人語(yǔ)言系統(tǒng)不僅要支持機(jī)器人程序編輯,還要支持機(jī)器人與外部設(shè)備的連接與控制[11]。機(jī)器人語(yǔ)言系統(tǒng)的處理過(guò)程:(1)用戶根據(jù)實(shí)際作業(yè)需求在示教器上編輯機(jī)器人作業(yè)程序;(2)示教器端將用戶的作業(yè)程序通過(guò)網(wǎng)絡(luò)通信方式發(fā)送到機(jī)器人控制系統(tǒng);(3)解釋器對(duì)要執(zhí)行的作業(yè)程序進(jìn)行解析,生成控制器能識(shí)別的命令;(4)運(yùn)動(dòng)規(guī)劃器根據(jù)解釋器結(jié)果進(jìn)行運(yùn)動(dòng)規(guī)劃,機(jī)器人系統(tǒng)依靠以太網(wǎng)形式實(shí)現(xiàn)對(duì)伺服電機(jī)的控制從而控制機(jī)器人運(yùn)動(dòng)。機(jī)器人語(yǔ)言系統(tǒng)如圖1所示。其中機(jī)器人語(yǔ)言編輯器是機(jī)器人語(yǔ)言系統(tǒng)的重要組成部分,其功能就是將控制機(jī)器人動(dòng)作的命令以文本指令形式展現(xiàn)[12]。本文作者的主要工作就是以編輯器作為突破口對(duì)機(jī)器人語(yǔ)言系統(tǒng)展開(kāi)研究。
不同的機(jī)器人系統(tǒng)所使用的機(jī)器人語(yǔ)言不盡相同,但它們?cè)诠δ苌隙加邢嗤ㄖ?,此外它們?cè)诒憩F(xiàn)形式上也與普通的計(jì)算機(jī)語(yǔ)言有一些類(lèi)似之處[13]。本文作者所設(shè)計(jì)的通用機(jī)器人語(yǔ)言包括以下4類(lèi)指令:(1)運(yùn)動(dòng)指令:MOVJ,MOVL,MOVC,MOVS等。(2)流程控制指令:CALL,IF,F(xiàn)OR,WHILE等。(3)IO指令:DOUT,DIN,PULSE,WAIT,AOUT等。(4)運(yùn)算指令:ADD,SUB,MUL,DIV,AND,OR等。機(jī)器人生產(chǎn)應(yīng)用本質(zhì)上是不同的工藝應(yīng)用,此系統(tǒng)根據(jù)不同的工藝配備不同的工藝指令,而不同的工藝指令本質(zhì)是運(yùn)動(dòng)指令與其他通用指令的結(jié)合,運(yùn)動(dòng)指令控制機(jī)器人以不同的插補(bǔ)方式運(yùn)動(dòng),其他通用指令實(shí)現(xiàn)機(jī)器人與外部設(shè)備之間的連接。常見(jiàn)的工藝指令包括焊接、碼垛、噴涂、跟蹤等。
此外,如當(dāng)前機(jī)器人指令集未能滿足用戶的生產(chǎn)需要,用戶可以根據(jù)實(shí)際工藝需求設(shè)計(jì)指令集以滿足生產(chǎn)需求。通用指令集如表1所示。
表1 機(jī)器人指令格式
機(jī)器人語(yǔ)言編輯器主要就是用戶示教程序生成機(jī)器人作業(yè)文件。機(jī)器作業(yè)文件由偽指令模塊和用戶指令模塊組成。偽指令模塊包括示教點(diǎn)位信息、機(jī)器人組信息以及附加特性信息。點(diǎn)位信息包括坐標(biāo)系、用戶、工具、點(diǎn)位值信息;機(jī)器人組包括當(dāng)前作業(yè)程序所使用的機(jī)器組以及機(jī)器組所包含的機(jī)器人屬性信息;其他附加信息包括文件名、時(shí)間、編輯屬性等相關(guān)內(nèi)容。用戶指令集包括用戶示教的通用指令和工藝指令。
設(shè)計(jì)編輯器的目的就是實(shí)現(xiàn)用戶與機(jī)器人的交互,用戶通過(guò)示教器或上位機(jī)將實(shí)際工藝需求的運(yùn)動(dòng)軌跡轉(zhuǎn)化為機(jī)器人指令并生成機(jī)器人作業(yè)程序[14]。
機(jī)器人語(yǔ)言編程界面是示教器或上位機(jī)設(shè)計(jì)中的重要一部分,用戶通過(guò)編輯器完成對(duì)工業(yè)機(jī)器人的示教編程工作。
機(jī)器人編輯器設(shè)計(jì)分為三大模塊:其一是程序管理設(shè)計(jì),其二是指令工廠設(shè)計(jì),其三是點(diǎn)位管理。程序管理不僅要完成各個(gè)界面的顯示繪制,也要完成人機(jī)交互示教編程任務(wù)。指令工廠不僅要完成所有用戶指令集的操作管理,也要同步實(shí)現(xiàn)對(duì)應(yīng)不同指令的UI顯示。點(diǎn)位管理不僅要實(shí)現(xiàn)對(duì)應(yīng)運(yùn)動(dòng)指令的點(diǎn)位顯示與修改,也可實(shí)時(shí)更新當(dāng)前機(jī)器人位置。
程序管理主要包含兩部分:(1)程序集管理;(2)程序管理。程序集管理在“程序內(nèi)容”主菜單的一級(jí)子菜單形成,呈現(xiàn)在人機(jī)交互界面上。程序集管理的結(jié)構(gòu)如圖2所示,上位機(jī)交互界面如圖3所示。
圖2 程序集管理結(jié)構(gòu)
圖3 程序集管理人機(jī)交互界面
“選擇程序”功能是選擇當(dāng)前系統(tǒng)已經(jīng)成功加載的機(jī)器人作業(yè)程序,其中加載的程序默認(rèn)按照程序創(chuàng)建的時(shí)間進(jìn)行倒序排列。
“當(dāng)前程序”。若之前系統(tǒng)有打開(kāi)程序,那么當(dāng)前程序選擇的就是上次打開(kāi)的程序,否則選擇的就是最新的程序。
“新建程序”是指新建一個(gè)機(jī)器人程序,在程序創(chuàng)建時(shí)需要提供機(jī)器人名稱以及選擇的機(jī)器人組信息。
“運(yùn)行設(shè)置”是指在人機(jī)交互界面設(shè)置機(jī)器人運(yùn)行相關(guān)參數(shù),其中包括循環(huán)、運(yùn)行模式等。
“查看DP文件”是指若加載的程序文件包含MOVD指令,那么就顯示各個(gè)程序調(diào)用的DP文件信息。
在用戶完成選擇程序、當(dāng)前程序操作之后會(huì)進(jìn)入選擇程序的頁(yè)面。為了提供更好的用戶操作體驗(yàn),編輯器以子菜單形式分別在程序、編輯、顯示工具菜單下提供了操作當(dāng)前程序的相關(guān)接口,其中程序模塊提供用戶刪除、復(fù)制、重命名等操作,此外用戶也可以通過(guò)外部設(shè)備導(dǎo)入導(dǎo)出機(jī)器人作業(yè)程序;編輯模塊提供用戶快速便捷選擇程序的功能;顯示模塊提供用戶當(dāng)前選擇程序的附加信息;工具模塊支持設(shè)置遠(yuǎn)程啟動(dòng)程序功能,而遠(yuǎn)程啟動(dòng)是另一簡(jiǎn)單方便的程序執(zhí)行方式。
用戶完成程序設(shè)置之后進(jìn)入程序編輯頁(yè)面,在此頁(yè)面下編輯器主要實(shí)現(xiàn)程序編輯的管理,此外,為了兼顧機(jī)器人運(yùn)行安全的問(wèn)題,還添加了機(jī)器人指令的參數(shù)范圍檢查、邏輯檢查,如:運(yùn)動(dòng)指令MOVJ 語(yǔ)法結(jié)構(gòu)MOVJ P[]VJ=關(guān)節(jié)速度 [PL=位置等級(jí)][ACC=加速度調(diào)整比率][DEC=減速度調(diào)整比率]中關(guān)節(jié)速度參數(shù)VJ的范圍為0.01-100、位置等級(jí)參數(shù)PL的范圍是0-8,控制指令SWITCH語(yǔ)法結(jié)構(gòu)SWITCH I[]CASE 數(shù)值 執(zhí)行語(yǔ)句 ENDSWITCH,在程序編輯完成后中,若指令參數(shù)不在設(shè)定范圍,或SWITCH與ENDSWITCH不同時(shí)出現(xiàn),則在程序預(yù)編譯過(guò)程中會(huì)通過(guò)參數(shù)范圍或邏輯檢查進(jìn)行報(bào)錯(cuò)處理。程序編輯管理結(jié)構(gòu)如圖4所示,編輯器程序編輯管理人機(jī)交互界面如圖5所示。
程序編輯管理中的功能菜單中的程序菜單主要的作用就是對(duì)當(dāng)前編輯的程序進(jìn)行處理;編輯菜單就是對(duì)當(dāng)前編輯程序的指令進(jìn)行相關(guān)操作,主要包括增、刪指令,搜索指令,跳轉(zhuǎn)到目標(biāo)行指令,注釋指令等內(nèi)容;顯示菜單顯示當(dāng)前編輯程序附加信息;工具菜單提供統(tǒng)一修改參數(shù)、查看指令功能。此外用戶在編輯相關(guān)程序文件時(shí)可通過(guò)常用指令控件增加目標(biāo)指令,在選擇目標(biāo)指令之后在人機(jī)交互界面下方的編輯行實(shí)現(xiàn)指令參數(shù)修改,而插入控件實(shí)現(xiàn)插入當(dāng)前指令;針對(duì)選擇的程序文件指令也可通過(guò)相關(guān)刪除,修改控件實(shí)現(xiàn)指令的刪除以及指令參數(shù)的修改。
圖4 程序編輯管理結(jié)構(gòu)
圖5 程序編輯管理人機(jī)交互界面
指令工廠負(fù)責(zé)當(dāng)前設(shè)計(jì)的所有用戶指令集的管理,指令工廠設(shè)計(jì)完全采用面向?qū)ο蟮脑O(shè)計(jì)方案,在當(dāng)前設(shè)計(jì)的用戶指令集無(wú)法滿足用戶需求的時(shí)候,用戶能夠自定義用戶指令,實(shí)現(xiàn)生產(chǎn)需要。指令工廠采用分組式設(shè)計(jì),按照指令的功能將指令劃分到不同的組,指令工廠提供指令的組信息與指令信息,指令主要提供UI顯示、文本顯示、參數(shù)修改、指令解析等相關(guān)接口,考慮到多機(jī)問(wèn)題,每一條指令考慮由4個(gè)Command組成,指令組結(jié)構(gòu)的人機(jī)界面如圖6所示,單個(gè)Command的人機(jī)界面如圖7所示。
圖6 指令組結(jié)構(gòu)人機(jī)界面
圖7 Command人機(jī)交互界面
當(dāng)前設(shè)計(jì)的指令組包括運(yùn)動(dòng)、IO、演算、控制、平移、外設(shè)等,對(duì)于用戶自定義的指令,可以根據(jù)指令的實(shí)現(xiàn)功能將其納入到目前已定義的指令組,也可將其劃分到新的指令組。針對(duì)運(yùn)動(dòng)指令,根據(jù)當(dāng)前配置的機(jī)器組信息,則對(duì)應(yīng)有單機(jī)或多機(jī)的指令形式,多機(jī)指令在表現(xiàn)形式上是以‘+’號(hào)將不同機(jī)器人的cmd連接起來(lái),實(shí)現(xiàn)多機(jī)控制,而對(duì)應(yīng)非運(yùn)動(dòng)指令一般都是一些通用功能,沒(méi)有多機(jī)指令的表現(xiàn)形式??赏ㄟ^(guò)指令組下設(shè)cmd進(jìn)入到對(duì)應(yīng)指令的詳細(xì)編輯,也可通過(guò)點(diǎn)擊指令程序編輯頁(yè)面下端的指令編輯行的指令I(lǐng)D進(jìn)入到cmd詳細(xì)編輯頁(yè)對(duì)指令參數(shù)進(jìn)行修改。
在機(jī)器人作業(yè)程序中點(diǎn)位是不可或缺的一部分,設(shè)計(jì)點(diǎn)位管理的目的就是讓用戶對(duì)當(dāng)前程序運(yùn)動(dòng)指令的點(diǎn)位有一個(gè)較為清晰的把控,同時(shí)也便于用戶查看、修改相關(guān)運(yùn)動(dòng)指令位置;同時(shí)用戶手動(dòng)移動(dòng)機(jī)器人時(shí)點(diǎn)位管理模塊也會(huì)實(shí)時(shí)更新當(dāng)前機(jī)器人位置,便于用戶掌握當(dāng)前機(jī)器人位置信息。點(diǎn)位管理模塊的人機(jī)交互界面如圖8所示。
圖8 點(diǎn)位管理人機(jī)界面
點(diǎn)位管理模塊包括的主要信息如下:(1)機(jī)器信息,如當(dāng)前機(jī)器人組配置的是多機(jī),切換機(jī)器人可以控制不同機(jī)器人點(diǎn)位;(2)切換坐標(biāo)系,用戶切換坐標(biāo)系實(shí)現(xiàn)當(dāng)前機(jī)器人在目標(biāo)坐標(biāo)系的點(diǎn)位信息;(3)工具,顯示當(dāng)前配置的工具號(hào),用戶可以修改工具號(hào);(4)對(duì)于具體點(diǎn)位信息,用戶修改對(duì)應(yīng)編輯框的相應(yīng)數(shù)值實(shí)現(xiàn)點(diǎn)位修改,也可通過(guò)獲取當(dāng)前機(jī)器人位置,顯示當(dāng)前機(jī)器人位置。
軟鍵盤(pán)的設(shè)計(jì)目的是為了給用戶在示教編程的時(shí)候提供便利[15]。軟件盤(pán)包括數(shù)字鍵盤(pán)和通用鍵盤(pán),數(shù)字鍵盤(pán)單純提供數(shù)字的輸入,而通用鍵盤(pán)提供中英文輸入法,可實(shí)現(xiàn)字符、特殊字符的輸入。數(shù)字鍵盤(pán)如圖9所示,通用鍵盤(pán)如圖10所示。
圖9 數(shù)字鍵盤(pán)
圖10 通用鍵盤(pán)
在設(shè)計(jì)編輯器時(shí),根據(jù)不同編輯框輸入字符的類(lèi)型配備不同的軟鍵盤(pán),如指令參數(shù)修改設(shè)計(jì)只涉及數(shù)字輸入,文件名、注釋等設(shè)計(jì)復(fù)雜字符輸入,極大提高編輯器的人性化水平。
編輯器的實(shí)驗(yàn)主要在示教器上完成,采用華途示教器。示教器配置X86框架,Windows操作系統(tǒng)。機(jī)器人控制系統(tǒng)的配置是四核J19,2 GB RAM,Linux操作系統(tǒng),采用川崎機(jī)器人930臂展,清能德創(chuàng)伺服。
在機(jī)器人系統(tǒng)連接完成后,打開(kāi)機(jī)器人控制柜上的電源,待系統(tǒng)啟動(dòng)完成之后,將操作模式切換到手動(dòng),即可開(kāi)始進(jìn)行示教編程。首先選擇“程序內(nèi)容”模塊,新建一個(gè)名為“測(cè)試”的程序,“確定”進(jìn)入程序編輯頁(yè)面;上使能,選擇[常用指令]控件,選擇需要插入的運(yùn)動(dòng)指令或非運(yùn)動(dòng)指令。選擇運(yùn)動(dòng)指令時(shí),手動(dòng)移動(dòng)機(jī)器人到目標(biāo)位置插入指令;若選擇的是非運(yùn)動(dòng)指令,則在底端的指令編輯行修改指令參數(shù)后插入到當(dāng)前程序中。完成當(dāng)前程序的示教如圖11所示。
圖11 示教程序
此程序覆蓋了圓弧運(yùn)動(dòng)、直線運(yùn)動(dòng)、關(guān)節(jié)運(yùn)動(dòng)、變量運(yùn)算、條件判斷、定時(shí)、注釋等多種指令,它控制機(jī)器人先圓弧運(yùn)動(dòng)到目標(biāo)位置,對(duì)字節(jié)型變量加1后再直線運(yùn)動(dòng)到目標(biāo)位置,然后定時(shí)1 s,檢測(cè)字節(jié)型變量值,滿足條件回到圓弧運(yùn)動(dòng)的起始位置。
本文作者在Qt基礎(chǔ)上對(duì)機(jī)器人語(yǔ)言編輯器進(jìn)行設(shè)計(jì),實(shí)現(xiàn)對(duì)用戶指令的編輯、修改、顯示等。該編輯器完全采用面向?qū)ο蟮慕Y(jié)構(gòu)進(jìn)行設(shè)計(jì),提高了開(kāi)發(fā)效率及代碼的可靠性,同時(shí)有利于平臺(tái)的移植;界面采用結(jié)構(gòu)化設(shè)計(jì),提升了UI顯示美觀與操作的便利性。該編譯器在華途不同型號(hào)的示教器上都進(jìn)行了驗(yàn)證,結(jié)果表明在不同示教器上都能正常操作示教與顯示,實(shí)際示教的程序均能在機(jī)器人控制系統(tǒng)穩(wěn)定高效地運(yùn)行,驗(yàn)證了設(shè)計(jì)的機(jī)器人語(yǔ)言編輯器的有效性。