彭玲,祝潤澤,戴昆林,李漢超,鄒慶,申淑麗
(國機智能科技有限公司智能制造事業部,廣東廣州 510665)
機器人語言是機器人與用戶交互的重要接口,它是以軟件的形式嵌入到示教器或上位機中,通過軟硬結合的方式實現機器人的有效控制[1-2]。在實際應用中,機器人示教器的種類和作業要求是多種多樣的,這也就對機器人編輯器的可移植性與可擴展性提出了更高的要求[3]。Qt是一個跨平臺C++圖形用戶界面應用程序開發框架。基于Qt開發的應用程序可以在多種平臺與系統下運行,這就大大提高了機器人語言編輯器的可移植性;此外,Qt是完全基于面向對象的C++,可擴展性非常強[4-6]。在實際生產中對機器人進行有效控制和運用完成相關作業需求,機器人語言是機器人控制系統的重要一環,它對機器人運動狀態產生最直接的影響,因此設計一套機器人編輯器可以有效改善用戶對機器人的控制[7-8]。
機器人語言的起步與發展相比工業機器人晚一些。1973年,Stanford人工智能實驗室開發WAVE語言用于機械臂的運動控制,此外該團隊在WAVE語言的基礎上開發的AL語言對于推動后期機器人語言的發展起到一定的促進作用[9-10]。
機器人語言系統不僅要支持機器人程序編輯,還要支持機器人與外部設備的連接與控制[11]。機器人語言系統的處理過程:(1)用戶根據實際作業需求在示教器上編輯機器人作業程序;(2)示教器端將用戶的作業程序通過網絡通信方式發送到機器人控制系統;(3)解釋器對要執行的作業程序進行解析,生成控制器能識別的命令;(4)運動規劃器根據解釋器結果進行運動規劃,機器人系統依靠以太網形式實現對伺服電機的控制從而控制機器人運動。機器人語言系統如圖1所示。其中機器人語言編輯器是機器人語言系統的重要組成部分,其功能就是將控制機器人動作的命令以文本指令形式展現[12]。本文作者的主要工作就是以編輯器作為突破口對機器人語言系統展開研究。
不同的機器人系統所使用的機器人語言不盡相同,但它們在功能上都有相通之處,此外它們在表現形式上也與普通的計算機語言有一些類似之處[13]。本文作者所設計的通用機器人語言包括以下4類指令:(1)運動指令:MOVJ,MOVL,MOVC,MOVS等。(2)流程控制指令:CALL,IF,FOR,WHILE等。(3)IO指令:DOUT,DIN,PULSE,WAIT,AOUT等。(4)運算指令:ADD,SUB,MUL,DIV,AND,OR等。機器人生產應用本質上是不同的工藝應用,此系統根據不同的工藝配備不同的工藝指令,而不同的工藝指令本質是運動指令與其他通用指令的結合,運動指令控制機器人以不同的插補方式運動,其他通用指令實現機器人與外部設備之間的連接。常見的工藝指令包括焊接、碼垛、噴涂、跟蹤等。
此外,如當前機器人指令集未能滿足用戶的生產需要,用戶可以根據實際工藝需求設計指令集以滿足生產需求。通用指令集如表1所示。

表1 機器人指令格式
機器人語言編輯器主要就是用戶示教程序生成機器人作業文件。機器作業文件由偽指令模塊和用戶指令模塊組成。偽指令模塊包括示教點位信息、機器人組信息以及附加特性信息。點位信息包括坐標系、用戶、工具、點位值信息;機器人組包括當前作業程序所使用的機器組以及機器組所包含的機器人屬性信息;其他附加信息包括文件名、時間、編輯屬性等相關內容。用戶指令集包括用戶示教的通用指令和工藝指令。
設計編輯器的目的就是實現用戶與機器人的交互,用戶通過示教器或上位機將實際工藝需求的運動軌跡轉化為機器人指令并生成機器人作業程序[14]。
機器人語言編程界面是示教器或上位機設計中的重要一部分,用戶通過編輯器完成對工業機器人的示教編程工作。
機器人編輯器設計分為三大模塊:其一是程序管理設計,其二是指令工廠設計,其三是點位管理。程序管理不僅要完成各個界面的顯示繪制,也要完成人機交互示教編程任務。指令工廠不僅要完成所有用戶指令集的操作管理,也要同步實現對應不同指令的UI顯示。點位管理不僅要實現對應運動指令的點位顯示與修改,也可實時更新當前機器人位置。
程序管理主要包含兩部分:(1)程序集管理;(2)程序管理。程序集管理在“程序內容”主菜單的一級子菜單形成,呈現在人機交互界面上。程序集管理的結構如圖2所示,上位機交互界面如圖3所示。

圖2 程序集管理結構

圖3 程序集管理人機交互界面
“選擇程序”功能是選擇當前系統已經成功加載的機器人作業程序,其中加載的程序默認按照程序創建的時間進行倒序排列。
“當前程序”。若之前系統有打開程序,那么當前程序選擇的就是上次打開的程序,否則選擇的就是最新的程序。
“新建程序”是指新建一個機器人程序,在程序創建時需要提供機器人名稱以及選擇的機器人組信息。
“運行設置”是指在人機交互界面設置機器人運行相關參數,其中包括循環、運行模式等。
“查看DP文件”是指若加載的程序文件包含MOVD指令,那么就顯示各個程序調用的DP文件信息。
在用戶完成選擇程序、當前程序操作之后會進入選擇程序的頁面。為了提供更好的用戶操作體驗,編輯器以子菜單形式分別在程序、編輯、顯示工具菜單下提供了操作當前程序的相關接口,其中程序模塊提供用戶刪除、復制、重命名等操作,此外用戶也可以通過外部設備導入導出機器人作業程序;編輯模塊提供用戶快速便捷選擇程序的功能;顯示模塊提供用戶當前選擇程序的附加信息;工具模塊支持設置遠程啟動程序功能,而遠程啟動是另一簡單方便的程序執行方式。
用戶完成程序設置之后進入程序編輯頁面,在此頁面下編輯器主要實現程序編輯的管理,此外,為了兼顧機器人運行安全的問題,還添加了機器人指令的參數范圍檢查、邏輯檢查,如:運動指令MOVJ 語法結構MOVJ P[]VJ=關節速度 [PL=位置等級][ACC=加速度調整比率][DEC=減速度調整比率]中關節速度參數VJ的范圍為0.01-100、位置等級參數PL的范圍是0-8,控制指令SWITCH語法結構SWITCH I[]CASE 數值 執行語句 ENDSWITCH,在程序編輯完成后中,若指令參數不在設定范圍,或SWITCH與ENDSWITCH不同時出現,則在程序預編譯過程中會通過參數范圍或邏輯檢查進行報錯處理。程序編輯管理結構如圖4所示,編輯器程序編輯管理人機交互界面如圖5所示。
程序編輯管理中的功能菜單中的程序菜單主要的作用就是對當前編輯的程序進行處理;編輯菜單就是對當前編輯程序的指令進行相關操作,主要包括增、刪指令,搜索指令,跳轉到目標行指令,注釋指令等內容;顯示菜單顯示當前編輯程序附加信息;工具菜單提供統一修改參數、查看指令功能。此外用戶在編輯相關程序文件時可通過常用指令控件增加目標指令,在選擇目標指令之后在人機交互界面下方的編輯行實現指令參數修改,而插入控件實現插入當前指令;針對選擇的程序文件指令也可通過相關刪除,修改控件實現指令的刪除以及指令參數的修改。

圖4 程序編輯管理結構

圖5 程序編輯管理人機交互界面
指令工廠負責當前設計的所有用戶指令集的管理,指令工廠設計完全采用面向對象的設計方案,在當前設計的用戶指令集無法滿足用戶需求的時候,用戶能夠自定義用戶指令,實現生產需要。指令工廠采用分組式設計,按照指令的功能將指令劃分到不同的組,指令工廠提供指令的組信息與指令信息,指令主要提供UI顯示、文本顯示、參數修改、指令解析等相關接口,考慮到多機問題,每一條指令考慮由4個Command組成,指令組結構的人機界面如圖6所示,單個Command的人機界面如圖7所示。

圖6 指令組結構人機界面

圖7 Command人機交互界面
當前設計的指令組包括運動、IO、演算、控制、平移、外設等,對于用戶自定義的指令,可以根據指令的實現功能將其納入到目前已定義的指令組,也可將其劃分到新的指令組。針對運動指令,根據當前配置的機器組信息,則對應有單機或多機的指令形式,多機指令在表現形式上是以‘+’號將不同機器人的cmd連接起來,實現多機控制,而對應非運動指令一般都是一些通用功能,沒有多機指令的表現形式。可通過指令組下設cmd進入到對應指令的詳細編輯,也可通過點擊指令程序編輯頁面下端的指令編輯行的指令ID進入到cmd詳細編輯頁對指令參數進行修改。
在機器人作業程序中點位是不可或缺的一部分,設計點位管理的目的就是讓用戶對當前程序運動指令的點位有一個較為清晰的把控,同時也便于用戶查看、修改相關運動指令位置;同時用戶手動移動機器人時點位管理模塊也會實時更新當前機器人位置,便于用戶掌握當前機器人位置信息。點位管理模塊的人機交互界面如圖8所示。

圖8 點位管理人機界面
點位管理模塊包括的主要信息如下:(1)機器信息,如當前機器人組配置的是多機,切換機器人可以控制不同機器人點位;(2)切換坐標系,用戶切換坐標系實現當前機器人在目標坐標系的點位信息;(3)工具,顯示當前配置的工具號,用戶可以修改工具號;(4)對于具體點位信息,用戶修改對應編輯框的相應數值實現點位修改,也可通過獲取當前機器人位置,顯示當前機器人位置。
軟鍵盤的設計目的是為了給用戶在示教編程的時候提供便利[15]。軟件盤包括數字鍵盤和通用鍵盤,數字鍵盤單純提供數字的輸入,而通用鍵盤提供中英文輸入法,可實現字符、特殊字符的輸入。數字鍵盤如圖9所示,通用鍵盤如圖10所示。

圖9 數字鍵盤

圖10 通用鍵盤
在設計編輯器時,根據不同編輯框輸入字符的類型配備不同的軟鍵盤,如指令參數修改設計只涉及數字輸入,文件名、注釋等設計復雜字符輸入,極大提高編輯器的人性化水平。
編輯器的實驗主要在示教器上完成,采用華途示教器。示教器配置X86框架,Windows操作系統。機器人控制系統的配置是四核J19,2 GB RAM,Linux操作系統,采用川崎機器人930臂展,清能德創伺服。
在機器人系統連接完成后,打開機器人控制柜上的電源,待系統啟動完成之后,將操作模式切換到手動,即可開始進行示教編程。首先選擇“程序內容”模塊,新建一個名為“測試”的程序,“確定”進入程序編輯頁面;上使能,選擇[常用指令]控件,選擇需要插入的運動指令或非運動指令。選擇運動指令時,手動移動機器人到目標位置插入指令;若選擇的是非運動指令,則在底端的指令編輯行修改指令參數后插入到當前程序中。完成當前程序的示教如圖11所示。

圖11 示教程序
此程序覆蓋了圓弧運動、直線運動、關節運動、變量運算、條件判斷、定時、注釋等多種指令,它控制機器人先圓弧運動到目標位置,對字節型變量加1后再直線運動到目標位置,然后定時1 s,檢測字節型變量值,滿足條件回到圓弧運動的起始位置。
本文作者在Qt基礎上對機器人語言編輯器進行設計,實現對用戶指令的編輯、修改、顯示等。該編輯器完全采用面向對象的結構進行設計,提高了開發效率及代碼的可靠性,同時有利于平臺的移植;界面采用結構化設計,提升了UI顯示美觀與操作的便利性。該編譯器在華途不同型號的示教器上都進行了驗證,結果表明在不同示教器上都能正常操作示教與顯示,實際示教的程序均能在機器人控制系統穩定高效地運行,驗證了設計的機器人語言編輯器的有效性。