許 鵬,陳友東
(1.合肥職業(yè)技術(shù)學(xué)院 計(jì)算機(jī)系,安徽 合肥 238000;2.北京航空航天大學(xué) 機(jī)械工程及自動(dòng)化學(xué)院,北京 100191)
與單臂機(jī)器人相比,雙臂機(jī)器人可以通過雙臂協(xié)作完成一些復(fù)雜工作,如空間站的艙內(nèi)外設(shè)備維修作業(yè)[1]、復(fù)雜的裝配操作[2]、搬運(yùn)重物[3]等,大大擴(kuò)展了機(jī)器人的應(yīng)用。為了實(shí)現(xiàn)機(jī)器人的作業(yè)任務(wù),一般采用在線示教[4]或離線編程[5]對(duì)其進(jìn)行編程。對(duì)于雙臂機(jī)器人,采用在線示教存在以下困難:當(dāng)分別對(duì)左右機(jī)械臂進(jìn)行示教時(shí),兩個(gè)機(jī)械臂之間的位置約束關(guān)系難以保持同步;在線示教難以滿足日益增多的個(gè)性化需求。因此工業(yè)上迫切需要雙臂機(jī)器人離線編程系統(tǒng),自動(dòng)生成作業(yè)任務(wù)軌跡。
對(duì)于機(jī)器人離線編程系統(tǒng),通用的做法是通過各種形式的三維圖形建模和導(dǎo)入方法,通過QT-Coin3D構(gòu)建的三維仿真環(huán)境生成機(jī)械臂的路徑并完成雙臂協(xié)作的仿真[6]。根據(jù)仿真,生成機(jī)器人運(yùn)動(dòng)指令傳到機(jī)器人控制系統(tǒng),以控制機(jī)器人運(yùn)動(dòng),完成給定任務(wù)[7]。Carvalho等采用了柔性制造單元對(duì)焊接任務(wù)離線編程[8],針對(duì)復(fù)雜曲面加工的離線編程系統(tǒng),黎潤(rùn)偉等提出了一種基于STL文件的軌跡生成算法[9]。使用離線編程規(guī)劃?rùn)C(jī)器人運(yùn)動(dòng)優(yōu)勢(shì)明顯:降低了成本,便于對(duì)程序進(jìn)行優(yōu)化,有利于實(shí)現(xiàn)復(fù)雜任務(wù)的軌跡規(guī)劃[10]。這些方法的不足在于其功能性單一,模型構(gòu)建比較復(fù)雜。雙臂機(jī)器人離線編程系統(tǒng)在上述基礎(chǔ)上還要考慮機(jī)械臂的協(xié)調(diào)操作[11,12]。周揚(yáng)等基于阻抗控制提出了雙臂機(jī)器人控制系統(tǒng)[13],存在的問題是計(jì)算量大,缺乏幾何造型的直觀性。針對(duì)目前雙臂機(jī)器人編程存在的示教操作繁瑣,協(xié)調(diào)模型構(gòu)建復(fù)雜,用戶界面不友好等問題,提出了一種基于QT-Coin3D的雙臂機(jī)器人離線編程系統(tǒng),QT和Coin3D提供了交互式3D軟件開發(fā)的解決方案,設(shè)計(jì)了機(jī)器人仿真模型的通用構(gòu)建方法,提出了仿真過程的控制算法,實(shí)現(xiàn)了路徑的自動(dòng)生成,提高了機(jī)器人編程的自動(dòng)化水平。
雙臂機(jī)器人離線編程系統(tǒng)實(shí)現(xiàn)了雙臂機(jī)器人的建模、仿真,經(jīng)過后置處理后生成控制指令。系統(tǒng)按照功能性劃分為核心層、支撐層以及應(yīng)用層3個(gè)部分,如圖1所示。由Coin3D渲染引擎、軌跡解析庫(kù)和Qt-SDK構(gòu)成的仿真系統(tǒng)的核心層,核心層主要提供三維環(huán)境的建模、渲染和管理,外部文件解析以及UI交互界面的創(chuàng)建;支撐層主要提供了系統(tǒng)數(shù)據(jù)接口,并保證了具體功能的實(shí)現(xiàn);應(yīng)用層確立了系統(tǒng)的主要的功能信息,實(shí)現(xiàn)了系統(tǒng)的任務(wù)目標(biāo)。
圖1 雙臂協(xié)作仿真系統(tǒng)任務(wù)框架
系統(tǒng)的主要功能是實(shí)現(xiàn)雙臂機(jī)器人手臂的末端點(diǎn)位置與姿態(tài)的控制,通過QT中的信號(hào)槽機(jī)制實(shí)現(xiàn)雙臂機(jī)器人的三維運(yùn)動(dòng)仿真與軟件UI界面的交互。
應(yīng)用層主要包括了以下4大模塊:
(1)工作環(huán)境定義:雙臂機(jī)器人、工作對(duì)象以及環(huán)境3部分的模型建立、導(dǎo)入、定義和布局。
(2)軌跡規(guī)劃:依據(jù)作業(yè)任務(wù)實(shí)現(xiàn)軌跡規(guī)劃。對(duì)于雙臂協(xié)作完成任務(wù),需要根據(jù)其任務(wù)協(xié)調(diào)類型的不同(松協(xié)調(diào)任務(wù)、緊協(xié)調(diào)任務(wù)[14])確定不同的位置控制模式。
(3)運(yùn)動(dòng)仿真:雙臂機(jī)器人各個(gè)關(guān)節(jié)轉(zhuǎn)角控制,工件位姿狀態(tài)調(diào)整,雙臂協(xié)同控制工件運(yùn)動(dòng),記錄仿真運(yùn)動(dòng)的過程。
(4)后置處理:將仿真驗(yàn)證的機(jī)械臂運(yùn)動(dòng)轉(zhuǎn)換為機(jī)器人程序,控制機(jī)器人運(yùn)動(dòng)完成特定任務(wù)。為了實(shí)現(xiàn)應(yīng)用層作業(yè)任務(wù),針對(duì)性的進(jìn)一步設(shè)計(jì)了控制系統(tǒng)的支撐層。支撐層主要包括了以下幾個(gè)模塊:負(fù)責(zé)項(xiàng)目創(chuàng)建和數(shù)據(jù)讀寫的項(xiàng)目管理模塊;負(fù)責(zé)主框架數(shù)據(jù)存儲(chǔ)和調(diào)用的框架管理模塊;用于顯示機(jī)器人關(guān)節(jié)軸、末端點(diǎn)軌跡等數(shù)據(jù)信息的數(shù)據(jù)顯示模塊;不同類型的雙臂機(jī)器人模型的建模的機(jī)器人模型管理模塊;根據(jù)任務(wù)需要關(guān)于工件、環(huán)境的建模的工件環(huán)境模型管理模塊;負(fù)責(zé)機(jī)器人各個(gè)關(guān)節(jié)正逆解,根據(jù)雅克比矩陣對(duì)逆解的優(yōu)化的仿真控制模塊;用于規(guī)劃雙臂末端點(diǎn)運(yùn)動(dòng)的運(yùn)動(dòng)規(guī)劃模塊;根據(jù)雙臂協(xié)調(diào)任務(wù)確定機(jī)械臂在運(yùn)動(dòng)過程中的位姿狀態(tài)的位置控制模塊、由旋轉(zhuǎn)變換矩陣得到工件與機(jī)械臂之間的軌跡變換的工件軌跡規(guī)劃模塊;離線仿真后生成機(jī)器人控制指令的機(jī)器人控制模塊。
雙臂機(jī)器人作業(yè)系統(tǒng)是一個(gè)復(fù)雜的系統(tǒng),主要由雙臂機(jī)器人、工作環(huán)境和工件3部分構(gòu)成,如圖2所示。雙臂機(jī)器人為主要仿真對(duì)象,模型參數(shù)定義和運(yùn)動(dòng)控制相對(duì)復(fù)雜。工件的工作任務(wù)不同,軌跡和仿真復(fù)雜程度也不同。環(huán)境大部分為固定物品,當(dāng)中也可能包括可運(yùn)動(dòng)(移動(dòng)或旋轉(zhuǎn))的工作臺(tái)、機(jī)器人滑軌、開關(guān)門等部件,復(fù)雜程度相對(duì)較低。
圖2 雙臂機(jī)器人及工作環(huán)境建模
通過SolidWorks實(shí)現(xiàn)復(fù)雜模型的構(gòu)建,交換數(shù)據(jù)的格式可采用虛擬現(xiàn)實(shí)建模語(yǔ)言文件WRL,在Open Inventor-Coin3D渲染引擎中讀取WRL文件,從而實(shí)現(xiàn)真實(shí)的渲染重建,通過隔離器將機(jī)器人模型的各個(gè)部件進(jìn)行控制,實(shí)現(xiàn)動(dòng)作模擬仿真。
雙臂機(jī)器人區(qū)別于傳統(tǒng)的單臂機(jī)器人在于在控制過程中需要同時(shí)控制左右兩個(gè)機(jī)械臂的運(yùn)動(dòng),如圖3所示。
圖3 雙臂機(jī)器人MOTOMAN CSDA10F
對(duì)于左右機(jī)械臂,雙臂機(jī)器人通常情況下需要分別設(shè)置其運(yùn)動(dòng)參數(shù),根據(jù)DH參數(shù)的不同構(gòu)建不同的運(yùn)動(dòng)學(xué)模型。為了得到正確的運(yùn)動(dòng)學(xué)模型,需要從以下幾個(gè)方面考慮:
(1)根據(jù)雙臂機(jī)器人每個(gè)機(jī)械臂的DH參數(shù)表建立相對(duì)坐標(biāo)系,計(jì)算其運(yùn)動(dòng)學(xué)模型,通過矩陣變換得到機(jī)械臂的正運(yùn)動(dòng)學(xué)解;
(2)根據(jù)雙臂機(jī)器人的各個(gè)機(jī)械臂的結(jié)構(gòu)特點(diǎn)通過矩陣變換計(jì)算其運(yùn)動(dòng)學(xué)逆解,在求解其逆解過程中存在多重解的情況下,引入最小微動(dòng)解的評(píng)價(jià)指標(biāo),在保證機(jī)械臂平穩(wěn)運(yùn)動(dòng)的前提下選擇各個(gè)關(guān)節(jié)角的變化量最小的一組解來達(dá)到指定的位姿;
(3)對(duì)于冗余機(jī)械臂,根據(jù)機(jī)械臂的冗余特性,引入一種根據(jù)雅克比矩陣計(jì)算可操作度評(píng)價(jià)當(dāng)前運(yùn)動(dòng)學(xué)逆解的優(yōu)化算法,根據(jù)可操作度可以避免機(jī)械臂到達(dá)奇異位形。
雙臂機(jī)器人模型是由多個(gè)部件構(gòu)成,多運(yùn)動(dòng)變量的模型。在雙臂機(jī)器人中,機(jī)器人本體包括15個(gè)部件,14個(gè)運(yùn)動(dòng)變量控制。本文提出了一種雙臂機(jī)器人仿真控制模型,如圖4所示。機(jī)器人各個(gè)部件的運(yùn)動(dòng)都是相互耦合的,為避免不必要的運(yùn)算,在建模時(shí)可直接將這種耦合關(guān)系定義在模型中。通過構(gòu)建雙臂機(jī)器人仿真控制結(jié)構(gòu)樹,將各個(gè)部件與其相應(yīng)的矩陣變換封裝在一個(gè)節(jié)點(diǎn)內(nèi),在仿真運(yùn)動(dòng)的過程中,后置節(jié)點(diǎn)不會(huì)影響前置節(jié)點(diǎn)的信息。通過改變DH參數(shù)信息進(jìn)而改變控制模型信息,仿真控制模型具有較好的通用性。
圖4 雙臂機(jī)器人仿真控制模型樹
(1)Base節(jié)點(diǎn)作為世界坐標(biāo)系的原點(diǎn),也是雙臂機(jī)器人的根節(jié)點(diǎn),該結(jié)構(gòu)樹從Base節(jié)點(diǎn)開始分為兩支,分別為L(zhǎng)0~L7和R0~R7,代表了雙臂機(jī)器人的左右兩個(gè)機(jī)械臂的各個(gè)連桿部件的軸節(jié)點(diǎn);
(3)ML0~ML7、MR0~MR7分別表示了雙臂機(jī)器人的各個(gè)連桿模型文件,將SolidWorks模型導(dǎo)入后,各個(gè)連桿的初始位姿已知并且坐標(biāo)位于世界坐標(biāo)系原點(diǎn)。由于連桿變換控制節(jié)點(diǎn)是基于相鄰兩個(gè)連桿的相對(duì)坐標(biāo)系位姿變換,直接對(duì)雙臂機(jī)器人的各個(gè)連桿進(jìn)行齊次矩陣變換會(huì)導(dǎo)致連桿在已經(jīng)存在初始相對(duì)位置的情況下再次進(jìn)行矩陣的連乘,這樣的結(jié)果是一旦變換關(guān)節(jié)角會(huì)導(dǎo)致機(jī)械臂的各個(gè)連桿的相對(duì)約束關(guān)系不復(fù)存在。因此當(dāng)整體雙臂機(jī)器人模型導(dǎo)入后,需要首先將連桿模型文件變換到世界坐標(biāo)系下,然后進(jìn)行相對(duì)坐標(biāo)系位姿變換;
(5)遍歷整個(gè)雙臂機(jī)器人仿真控制模型樹可以發(fā)現(xiàn)在DH參數(shù)建模下各個(gè)連桿的相對(duì)坐標(biāo)系與仿真模型中的各個(gè)連桿的相對(duì)坐標(biāo)系對(duì)應(yīng),變換某一個(gè)連桿關(guān)節(jié)角之后可以實(shí)現(xiàn)整個(gè)機(jī)械臂的聯(lián)動(dòng)。
雙臂機(jī)器人離線編程系統(tǒng)中的各個(gè)模型建立完畢后,需要編程系統(tǒng)對(duì)各個(gè)模型進(jìn)行統(tǒng)一的規(guī)劃管理,模型管理主要體現(xiàn)在模型樹上,如圖5所示。模型樹的主要操作如下:
(1)數(shù)據(jù)列表操作:①模型插入:將來自外部文件、內(nèi)部自建庫(kù)、內(nèi)置基本幾何體的幾何信息,通過用戶交互添加屬性信息,并插入到模型樹的管理數(shù)據(jù)列表中;②模型刪除:刪除數(shù)據(jù)列表中的一項(xiàng);③復(fù)制或移動(dòng):將一模型復(fù)制或移動(dòng)到同一樹或另一樹的某個(gè)分支上。
(2)更新渲染區(qū):將數(shù)據(jù)列表中的模型信息繪制到Coin3D的渲染區(qū)中。
(3)更新主界面模型樹顯示:將數(shù)據(jù)列表的信息更新顯示到主界面的模型樹上。
(4)保存和讀取模型數(shù)據(jù)類表:項(xiàng)目管理模塊需要存儲(chǔ)模型樹的眾多信息,作為模型信息的存儲(chǔ)核心,數(shù)據(jù)列表的信息需要具有導(dǎo)出、導(dǎo)入能力,即將列表已有信息輸出到文件或從文件加載信息到列表。
圖5 模型樹
依工作任務(wù)確定工件運(yùn)動(dòng)軌跡,由于運(yùn)動(dòng)協(xié)調(diào)動(dòng)作復(fù)雜,難以通過示教實(shí)現(xiàn)。通過雙臂協(xié)調(diào)過程中的位置約束關(guān)系,將其運(yùn)動(dòng)方程解耦,分別得到左右機(jī)械臂的運(yùn)動(dòng)軌跡,然后通過軌跡規(guī)劃模塊生成軌跡,從而確保了雙臂機(jī)器人在仿真系統(tǒng)中任務(wù)的正常實(shí)現(xiàn),如圖6所示。
圖6 軌跡解析模塊
軌跡的創(chuàng)建方法可以分為3種:一種是通過CAM軟件生成NC代碼,如:復(fù)雜形狀的切削和復(fù)雜曲面噴涂;一種是直接識(shí)別工程圖文件;一種是直接輸入三維點(diǎn)數(shù)據(jù),如點(diǎn)焊類任務(wù)。機(jī)械臂的軌跡文件創(chuàng)建完畢后,通過不同的解析器解析,使其轉(zhuǎn)換為系統(tǒng)可以讀取的軌跡數(shù)據(jù);然后根據(jù)軌跡操作器中的軌跡算法構(gòu)建出不同類型的軌跡模型。軌跡模型構(gòu)建主要在以下兩個(gè)方面:①運(yùn)動(dòng)軌跡的分段,有序的將軌跡文件中各個(gè)線段的起點(diǎn)、終點(diǎn)信息存入軌跡列表;②確定各個(gè)線段的性質(zhì),分析軌跡列表中的線段屬于何種類型的線(直線、圓弧等),并在軌跡控制器中采取不同的插補(bǔ)方法。最終將軌跡進(jìn)行插補(bǔ)得到一系列的點(diǎn)放入數(shù)據(jù)列表中,仿真系統(tǒng)根據(jù)定時(shí)器操作不斷的讀取插補(bǔ)點(diǎn)的信息。
工件的運(yùn)動(dòng)決定了雙臂機(jī)器人運(yùn)動(dòng)軌跡。通過確定雙臂機(jī)器人工件的運(yùn)動(dòng),規(guī)劃?rùn)C(jī)械臂的運(yùn)動(dòng)軌跡,在仿真系統(tǒng)中得到兩個(gè)機(jī)械臂的軌跡后,刷新重建渲染模型,雙臂機(jī)器人開始仿真運(yùn)動(dòng),如圖7所示。
圖7 雙臂機(jī)器人任務(wù)仿真
通過Open Inventor和Coin3D渲染引擎構(gòu)建虛擬三維模型。在系統(tǒng)仿真過程中,每隔一定時(shí)間,各個(gè)模型部件在旋轉(zhuǎn)變換矩陣的控制下刷新重建得到新的場(chǎng)景從而變現(xiàn)為運(yùn)動(dòng),如圖8所示。
圖8 仿真流程
雙臂機(jī)器人及工件、工具等處于初始位置,當(dāng)運(yùn)行指令觸發(fā)后,后臺(tái)程序中的定時(shí)器開始運(yùn)行,向數(shù)據(jù)列表中加入軌跡信息,這些信息主要包括雙臂機(jī)器人機(jī)械臂各關(guān)節(jié)角的大小以及其工具變換矩陣,此外還有工件及環(huán)境的相關(guān)信息。當(dāng)定時(shí)器計(jì)時(shí)完畢后,系統(tǒng)自動(dòng)讀取當(dāng)前數(shù)據(jù)列表中的運(yùn)動(dòng)參數(shù)信息,并且根據(jù)內(nèi)容對(duì)雙臂機(jī)器人的各個(gè)部件進(jìn)行控制,通過定時(shí)器的重復(fù)刷新,可以變換仿真環(huán)境;如果數(shù)據(jù)列表中的運(yùn)動(dòng)數(shù)據(jù)不再變化,則說明了根據(jù)設(shè)定的軌跡,機(jī)器人完整的執(zhí)行了仿真,系統(tǒng)仿真結(jié)束。
后置處理模塊的作用是將雙臂機(jī)器人離線編程系統(tǒng)中生成的雙臂運(yùn)動(dòng)程序轉(zhuǎn)換為機(jī)器人控制器可以識(shí)別的代碼。通過仿真控制模塊完成雙臂機(jī)器人的任務(wù)仿真后,左右機(jī)械臂的軌跡通過插補(bǔ)算法實(shí)現(xiàn)插補(bǔ)過程中各個(gè)點(diǎn)的相關(guān)信息。與此同時(shí),各個(gè)插補(bǔ)點(diǎn)上的位姿信息和插補(bǔ)參數(shù)等信息被存儲(chǔ)在數(shù)據(jù)列表中,后置處理模塊的作用就是將這部分的信息轉(zhuǎn)換為機(jī)器人運(yùn)動(dòng)代碼。通過逐條讀取數(shù)據(jù)列表中的插補(bǔ)點(diǎn),將其放在指令存儲(chǔ)列表內(nèi),插補(bǔ)點(diǎn)讀取完畢后,完整的控制代碼就可以通過輸出指令存儲(chǔ)列表獲得,將其轉(zhuǎn)換為相應(yīng)的格式傳送到控制器中,雙臂機(jī)器人就可以自動(dòng)運(yùn)行,如圖9所示。
圖9 后置處理模塊流程
為了實(shí)現(xiàn)交互界面設(shè)計(jì)和三維渲染設(shè)計(jì),離線編程系統(tǒng)將Qt4.8.6開發(fā)套件和Coin3D 3.1.3開發(fā)套件集成到VS2008中,搭建QT-Coin3D聯(lián)合開發(fā)環(huán)境。在系統(tǒng)中進(jìn)行了雙臂機(jī)器人協(xié)調(diào)搬運(yùn)仿真實(shí)驗(yàn),驗(yàn)證系統(tǒng)的有效性。
雙臂機(jī)器人協(xié)調(diào)搬運(yùn)任務(wù)是屬于強(qiáng)耦合、緊協(xié)調(diào)操作。工件的期望運(yùn)動(dòng)路徑?jīng)Q定了左右兩機(jī)械臂之間的運(yùn)動(dòng)。其操作狀態(tài)如圖10所示。
圖10 緊協(xié)調(diào)操作
具體仿真實(shí)現(xiàn)過程如圖11所示。
圖11 雙臂機(jī)器人搬運(yùn)仿真實(shí)驗(yàn)
本文提出一種基于QT-Coin3D雙臂機(jī)器人離線編程系統(tǒng)。該系統(tǒng)基于DH參數(shù)構(gòu)建雙臂機(jī)器人的運(yùn)動(dòng)學(xué)模型,設(shè)計(jì)了一種雙臂機(jī)器人系統(tǒng)仿真控制模型(包括三維模型,組織結(jié)構(gòu)和數(shù)學(xué)模型),通過對(duì)雙臂協(xié)作操作約束的解耦,對(duì)機(jī)械臂的運(yùn)動(dòng)軌跡進(jìn)行解析,依據(jù)仿真過程算法實(shí)現(xiàn)仿真協(xié)調(diào)運(yùn)動(dòng),仿真完成后生成機(jī)器人控制指令,實(shí)現(xiàn)雙臂機(jī)器人本體運(yùn)動(dòng)控制。最后通過實(shí)驗(yàn)驗(yàn)證了雙臂機(jī)器人編程系統(tǒng)。實(shí)踐證明基于QT平臺(tái)開發(fā)的離線編程系統(tǒng)具有較好的可移植性。