楊 敏,王 品,鄭玉虎
(中科院沈陽計算所 高精數(shù)控,沈陽 110015)
隨著工業(yè)機器人在自動化生產(chǎn)中的廣泛應(yīng)用,機器人工作任務(wù)的編程就成為一個重要問題。目前工業(yè)機器人主要采用示教編程來完成機器人工作任務(wù)的編輯工作,而示教盒示教是主要的示教方式。因此示教盒是工業(yè)機器人控制系統(tǒng)的重要組成部分,其性能的好壞直接關(guān)系到工業(yè)機器人使用效果。
示教盒是一個可用于遠程控制機器人的裝置,使操作者對機器人的控制更加靈活、安全。通過示教盒,操作者可以編寫機器人工作文件,來操作機器人的各個運動軸,改變機器人的運動狀態(tài),設(shè)置運動速度等,使遠程機器人的完成實際生產(chǎn)要求。示教盒也可以很好地向操作者反饋機器人工作信息,使得生產(chǎn)加工過程更加準確、高效。
傳統(tǒng)的示教盒示教需要操作者熟練掌握編程技巧,熟悉機器人編程語言等要求。隨著工業(yè)機器人的廣泛應(yīng)用,對人機交互提出了更高的要求。作為人機界面的機器人示教盒,在機器人系統(tǒng)中起著舉足輕重的作用。
本文所設(shè)計的基于會話式的機器人示教盒,提供給操作者良好、可靠、安全的交互界面,能夠使操作者在信息提示下,通過簡單設(shè)置參數(shù),完成復雜的機器人作業(yè)程序設(shè)計,自動生成主控制器可識別的機器人工作文件,降低了對操作者專業(yè)知識的要求,使示教過程更加簡單、直觀。
在實際生產(chǎn)過程中,通常需要有人機對話,包括操作者對機器人作業(yè)、參數(shù)輸入和設(shè)置及其運行時錯誤信息的干預(yù),以及機器人向操作者反饋運行狀態(tài)與運行結(jié)果。其中,示教盒完成實現(xiàn)人機對話的功能。
示教盒的硬件電路如圖1 所示。示教盒是機器人和操作者人機交互的工具類似于PC 機的鍵盤和顯示器功能。示教盒的硬件結(jié)構(gòu)由盒體、鍵盤、顯示屏、控制電路等部分組成。
示教盒是一個典型的嵌入式系統(tǒng),目前很多示教盒的處理器采用的是成本較低的單片機,但隨著機器人的功能不斷增加,以單片機作為處理器已經(jīng)不能較好地滿足設(shè)計要求,因此本設(shè)計采用嵌入式處理器,如ARM/StrongARM,SH 等。
圖1 示教盒的硬件結(jié)構(gòu)
本設(shè)計采用觸摸屏使大部分控制按鈕的功能集中到觸摸屏中,從而使減少控制按鈕的數(shù)量,使示教盒外觀更加簡潔。電阻式觸摸屏是一種對外界完全隔離的工作環(huán)境,不怕灰塵、水汽和油污等,可以用任何物體來觸摸,可以用來寫字畫畫,特別適合于工業(yè)制造領(lǐng)域,因此,本設(shè)計采用電阻式觸摸屏。
采用薄膜鍵盤作為本示教盒的輸入裝置。薄膜鍵盤控鍵表面覆蓋一層塑料薄膜,密封性強,防潮、防塵、防油污等;體積小、厚度薄、重量輕、成本低、壽命長等特點,已廣泛應(yīng)用于計算機控制、數(shù)碼機床等各類工業(yè)產(chǎn)品中。
機器人示教盒需要多個任務(wù)同時運行,如屏幕顯示、參數(shù)設(shè)置、網(wǎng)絡(luò)傳輸、機器人工作文件的讀寫等,為了提高其實時響應(yīng)性能,使用實時操作系統(tǒng)完成任務(wù)切換和優(yōu)先級管理。目前大多數(shù)機器人示教盒基本上都采用窗口形式的圖形用戶界面來提高人機交互性能,這種界面的主要優(yōu)點是界面友好,操作方便,簡單易懂。
本設(shè)計在軟件上采用了實時嵌入式Linux(RTLinux)、Qt/Embedded 和RCS 庫的解決方案。RTLinux 是一種利用Linux 開發(fā)的面向?qū)崟r和嵌入式應(yīng)用的操作系統(tǒng),在工業(yè)自動化等實時領(lǐng)域已有成熟應(yīng)用。而Qt/Embedded 是基于Qt 的嵌入式GUI 和應(yīng)用程序開發(fā)的工具包,它可運行多種嵌入式設(shè)備上,主要運行在嵌入式Linux 系統(tǒng)上,并為嵌入式應(yīng)用程序提供Qt 的標準API。用RCS 庫來實現(xiàn)示教盒與主控制器之間的通信。RCS 庫是一個跨平臺跨操作系統(tǒng)的通訊庫,可以用來輔助構(gòu)建多模塊的控制系統(tǒng)軟件。RCS 庫代碼開放,并以C+ +面向?qū)ο蟮姆椒?,將程序抽象化,以類封裝代碼,可以跟應(yīng)用程序很好的融合起來。RCS 庫自動實現(xiàn)、維護多個模塊間的命令和狀態(tài)信息的傳遞。
示教盒示教模式的功能模塊結(jié)構(gòu)如圖2 所示。在示教模式下主要完成對機器人的示教操作。操作者進入示教編輯系統(tǒng),新建程序后,輸入需要的作業(yè)序列及每個作業(yè)所需的參數(shù)信息,并將其保存為臨時文件。本設(shè)計采用的Qt 提供的關(guān)聯(lián)容器(支持通過鍵(key)來高效地查詢和讀取元素)QMap <K,T>來實現(xiàn)作業(yè)序列與指令之間的轉(zhuǎn)換,其中作業(yè)用做QMap 中的索引,指令用做QMap 中所存儲和讀取的數(shù)據(jù)。并且Qt 還提供的迭代器類和相關(guān)操作的通用算法,來實現(xiàn)查找、計數(shù)等相關(guān)工作。
通過關(guān)聯(lián)容器來讀取配置文件中的作業(yè)與機器人指令的信息,建立起一對一的映射關(guān)系,并通過該映射關(guān)系可自動將臨時文件轉(zhuǎn)換為機器人主控制器可識別的機器人工作文件。當以上任何一個過程出現(xiàn)錯誤時,錯誤處理模塊及時發(fā)出相應(yīng)的出錯信息,提示給操作者。當操作者通過鍵盤操作產(chǎn)生控制信息時,通過通訊模塊及時與主控制器進行通信,將機器人工作文件傳遞給主控制器進行下一步處理。
圖2 示教盒示教模式的功能模塊結(jié)構(gòu)圖
利用RCS 庫提供的NML(中性消息語言)通信機制來實現(xiàn)示教盒與機器人主控制器之間通訊。NML 是一個可用于跨平臺通信的軟件庫,示教盒與主控制器之間的通信關(guān)系如下圖3 所示。
圖3 示教盒與主控制器之間的通信
在本設(shè)計中共包括三個通道類數(shù)據(jù)結(jié)構(gòu),error-Buffer、statusBuffer 和commandBuffer 三個通道。其中errorBuffer 為NML 通道類的派生類,而通道基類RCS_CMD_CHANNEL 和RCS_STAT_CHANNEL,這兩個基類分別用來創(chuàng)建commandBuffer 和statusBuffer 兩個子類。從而讓示教盒模塊與機器人主控制器模塊可以傳遞相關(guān)的錯誤、命令、狀態(tài)消息。其中NML通道類提供兩個通用的讀寫函數(shù)read()和write(),來實現(xiàn)控制模塊間的消息傳遞。
本設(shè)計采用的消息類包括error、status 和command,這三個類都是NML 信息類的派生類,其中error 繼承自NML 提供基類NMLmsg,command 繼承自消息基類RCS_COM_MSG,status 繼承繼承自消息基類RCS_STAT_MSG。
采用通過繼承模塊基類NML_MODULE 來創(chuàng)建teachpendantModule 示教盒模塊類和controllerModule主控制器模塊類。NML_MODULE 包括模塊間進行通訊的所有工具以及RCS 應(yīng)用程序常用到的過程處理函數(shù)和變量。利用它來構(gòu)建示教盒模塊和主控制器模塊,降低了開發(fā)實時控制系統(tǒng)的難度。
圖4 為示教盒的機器人工作文件編輯的界面圖。
圖4 示教盒編輯界面圖
操作者輸入一系列作業(yè)及其相關(guān)指令參數(shù)后,通過配置文件生成的作業(yè)與指令映射關(guān)系,自動轉(zhuǎn)換的主控制器可識別的機器人工作文件。下圖5 為轉(zhuǎn)換后的機器人工作文件截圖。
圖5 轉(zhuǎn)換的機器人工作文件截圖
采用了現(xiàn)有技術(shù),研發(fā)了基于人機會話方式的新型機器人示教盒。與以往的機器人示教盒相比,它具有以下特點:
(1)采用Qt 提供的關(guān)聯(lián)容器QMap,通過讀取配置文件中作業(yè)與機器人指令之間的信息,建立起一對一映射關(guān)系,通過該關(guān)系可自動將用戶輸入的作業(yè)信息轉(zhuǎn)換成主控制器可識別的機器人工作文件。
(2)示教盒采用實時嵌入式Linux 操作系統(tǒng),可多個任務(wù)同時運行,如屏幕顯示、參數(shù)設(shè)置、網(wǎng)絡(luò)傳輸、機器人工作文件的讀寫等,同時提高其實時響應(yīng)性能,能夠更好地進行人機交互。
(3)采用RCS 庫實現(xiàn)示教盒與主控制器之間的通訊,利用NML 提供的幾個重要基類來創(chuàng)建命令通道、狀態(tài)通道和錯誤通道三個通道類;創(chuàng)建錯誤信息、狀態(tài)信息、命令信息三個消息類;創(chuàng)建示教盒模塊與機器人主控制器模塊兩個模塊類,從而完成通訊。
[1]逢啟壽. 工業(yè)機器人示教盒系統(tǒng)的設(shè)計[J]. 自動化與儀器儀表,2006(2):20-21.
[2]張愛云,張秋菊. 機器人虛擬示教編程系統(tǒng)的設(shè)計及研究[J]. 現(xiàn)代設(shè)計與制造,2003(3):79-81.
[3]張曉莉,王幼華,林和榮. 鋁錠堆碼機械手示教盒的設(shè)計[J]. 機械研究與應(yīng)用,2006(4):74-75.
[4]張陽,王宣銀,劉松國. 焊接機器人嵌入式示教系統(tǒng)設(shè)計與實現(xiàn)[J]. 設(shè)計與研究,2007(3):1-3.
[5]吳向壘,謝存禧. 開放式機器人的示教系統(tǒng)研究[J]. 機電產(chǎn)品開發(fā)與創(chuàng)新,2009(2):8-10.
[6]時國平,劉贛偉. 工業(yè)機器人示教盒系統(tǒng)的設(shè)計[J]. 先進制造技術(shù),2006(5):48-49.
[7]田軍鋒,馬躍,吳文江,等. 利用RCS 庫實現(xiàn)數(shù)控系統(tǒng)模塊間的通信[J]. 微計算機信息,2009(7):121-122.