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