許 鵬,陳友東
(1.合肥職業技術學院 計算機系,安徽 合肥 238000;2.北京航空航天大學 機械工程及自動化學院,北京 100191)
與單臂機器人相比,雙臂機器人可以通過雙臂協作完成一些復雜工作,如空間站的艙內外設備維修作業[1]、復雜的裝配操作[2]、搬運重物[3]等,大大擴展了機器人的應用。為了實現機器人的作業任務,一般采用在線示教[4]或離線編程[5]對其進行編程。對于雙臂機器人,采用在線示教存在以下困難:當分別對左右機械臂進行示教時,兩個機械臂之間的位置約束關系難以保持同步;在線示教難以滿足日益增多的個性化需求。因此工業上迫切需要雙臂機器人離線編程系統,自動生成作業任務軌跡。
對于機器人離線編程系統,通用的做法是通過各種形式的三維圖形建模和導入方法,通過QT-Coin3D構建的三維仿真環境生成機械臂的路徑并完成雙臂協作的仿真[6]。根據仿真,生成機器人運動指令傳到機器人控制系統,以控制機器人運動,完成給定任務[7]。Carvalho等采用了柔性制造單元對焊接任務離線編程[8],針對復雜曲面加工的離線編程系統,黎潤偉等提出了一種基于STL文件的軌跡生成算法[9]。使用離線編程規劃機器人運動優勢明顯:降低了成本,便于對程序進行優化,有利于實現復雜任務的軌跡規劃[10]。這些方法的不足在于其功能性單一,模型構建比較復雜。雙臂機器人離線編程系統在上述基礎上還要考慮機械臂的協調操作[11,12]。周揚等基于阻抗控制提出了雙臂機器人控制系統[13],存在的問題是計算量大,缺乏幾何造型的直觀性。針對目前雙臂機器人編程存在的示教操作繁瑣,協調模型構建復雜,用戶界面不友好等問題,提出了一種基于QT-Coin3D的雙臂機器人離線編程系統,QT和Coin3D提供了交互式3D軟件開發的解決方案,設計了機器人仿真模型的通用構建方法,提出了仿真過程的控制算法,實現了路徑的自動生成,提高了機器人編程的自動化水平。
雙臂機器人離線編程系統實現了雙臂機器人的建模、仿真,經過后置處理后生成控制指令。系統按照功能性劃分為核心層、支撐層以及應用層3個部分,如圖1所示。由Coin3D渲染引擎、軌跡解析庫和Qt-SDK構成的仿真系統的核心層,核心層主要提供三維環境的建模、渲染和管理,外部文件解析以及UI交互界面的創建;支撐層主要提供了系統數據接口,并保證了具體功能的實現;應用層確立了系統的主要的功能信息,實現了系統的任務目標。

圖1 雙臂協作仿真系統任務框架
系統的主要功能是實現雙臂機器人手臂的末端點位置與姿態的控制,通過QT中的信號槽機制實現雙臂機器人的三維運動仿真與軟件UI界面的交互。
應用層主要包括了以下4大模塊:
(1)工作環境定義:雙臂機器人、工作對象以及環境3部分的模型建立、導入、定義和布局。
(2)軌跡規劃:依據作業任務實現軌跡規劃。對于雙臂協作完成任務,需要根據其任務協調類型的不同(松協調任務、緊協調任務[14])確定不同的位置控制模式。
(3)運動仿真:雙臂機器人各個關節轉角控制,工件位姿狀態調整,雙臂協同控制工件運動,記錄仿真運動的過程。
(4)后置處理:將仿真驗證的機械臂運動轉換為機器人程序,控制機器人運動完成特定任務。為了實現應用層作業任務,針對性的進一步設計了控制系統的支撐層。支撐層主要包括了以下幾個模塊:負責項目創建和數據讀寫的項目管理模塊;負責主框架數據存儲和調用的框架管理模塊;用于顯示機器人關節軸、末端點軌跡等數據信息的數據顯示模塊;不同類型的雙臂機器人模型的建模的機器人模型管理模塊;根據任務需要關于工件、環境的建模的工件環境模型管理模塊;負責機器人各個關節正逆解,根據雅克比矩陣對逆解的優化的仿真控制模塊;用于規劃雙臂末端點運動的運動規劃模塊;根據雙臂協調任務確定機械臂在運動過程中的位姿狀態的位置控制模塊、由旋轉變換矩陣得到工件與機械臂之間的軌跡變換的工件軌跡規劃模塊;離線仿真后生成機器人控制指令的機器人控制模塊。
雙臂機器人作業系統是一個復雜的系統,主要由雙臂機器人、工作環境和工件3部分構成,如圖2所示。雙臂機器人為主要仿真對象,模型參數定義和運動控制相對復雜。工件的工作任務不同,軌跡和仿真復雜程度也不同。環境大部分為固定物品,當中也可能包括可運動(移動或旋轉)的工作臺、機器人滑軌、開關門等部件,復雜程度相對較低。

圖2 雙臂機器人及工作環境建模
通過SolidWorks實現復雜模型的構建,交換數據的格式可采用虛擬現實建模語言文件WRL,在Open Inventor-Coin3D渲染引擎中讀取WRL文件,從而實現真實的渲染重建,通過隔離器將機器人模型的各個部件進行控制,實現動作模擬仿真。
雙臂機器人區別于傳統的單臂機器人在于在控制過程中需要同時控制左右兩個機械臂的運動,如圖3所示。

圖3 雙臂機器人MOTOMAN CSDA10F
對于左右機械臂,雙臂機器人通常情況下需要分別設置其運動參數,根據DH參數的不同構建不同的運動學模型。為了得到正確的運動學模型,需要從以下幾個方面考慮:
(1)根據雙臂機器人每個機械臂的DH參數表建立相對坐標系,計算其運動學模型,通過矩陣變換得到機械臂的正運動學解;
(2)根據雙臂機器人的各個機械臂的結構特點通過矩陣變換計算其運動學逆解,在求解其逆解過程中存在多重解的情況下,引入最小微動解的評價指標,在保證機械臂平穩運動的前提下選擇各個關節角的變化量最小的一組解來達到指定的位姿;
(3)對于冗余機械臂,根據機械臂的冗余特性,引入一種根據雅克比矩陣計算可操作度評價當前運動學逆解的優化算法,根據可操作度可以避免機械臂到達奇異位形。
雙臂機器人模型是由多個部件構成,多運動變量的模型。在雙臂機器人中,機器人本體包括15個部件,14個運動變量控制。本文提出了一種雙臂機器人仿真控制模型,如圖4所示。機器人各個部件的運動都是相互耦合的,為避免不必要的運算,在建模時可直接將這種耦合關系定義在模型中。通過構建雙臂機器人仿真控制結構樹,將各個部件與其相應的矩陣變換封裝在一個節點內,在仿真運動的過程中,后置節點不會影響前置節點的信息。通過改變DH參數信息進而改變控制模型信息,仿真控制模型具有較好的通用性。

圖4 雙臂機器人仿真控制模型樹
(1)Base節點作為世界坐標系的原點,也是雙臂機器人的根節點,該結構樹從Base節點開始分為兩支,分別為L0~L7和R0~R7,代表了雙臂機器人的左右兩個機械臂的各個連桿部件的軸節點;

(3)ML0~ML7、MR0~MR7分別表示了雙臂機器人的各個連桿模型文件,將SolidWorks模型導入后,各個連桿的初始位姿已知并且坐標位于世界坐標系原點。由于連桿變換控制節點是基于相鄰兩個連桿的相對坐標系位姿變換,直接對雙臂機器人的各個連桿進行齊次矩陣變換會導致連桿在已經存在初始相對位置的情況下再次進行矩陣的連乘,這樣的結果是一旦變換關節角會導致機械臂的各個連桿的相對約束關系不復存在。因此當整體雙臂機器人模型導入后,需要首先將連桿模型文件變換到世界坐標系下,然后進行相對坐標系位姿變換;

(5)遍歷整個雙臂機器人仿真控制模型樹可以發現在DH參數建模下各個連桿的相對坐標系與仿真模型中的各個連桿的相對坐標系對應,變換某一個連桿關節角之后可以實現整個機械臂的聯動。
雙臂機器人離線編程系統中的各個模型建立完畢后,需要編程系統對各個模型進行統一的規劃管理,模型管理主要體現在模型樹上,如圖5所示。模型樹的主要操作如下:
(1)數據列表操作:①模型插入:將來自外部文件、內部自建庫、內置基本幾何體的幾何信息,通過用戶交互添加屬性信息,并插入到模型樹的管理數據列表中;②模型刪除:刪除數據列表中的一項;③復制或移動:將一模型復制或移動到同一樹或另一樹的某個分支上。
(2)更新渲染區:將數據列表中的模型信息繪制到Coin3D的渲染區中。
(3)更新主界面模型樹顯示:將數據列表的信息更新顯示到主界面的模型樹上。
(4)保存和讀取模型數據類表:項目管理模塊需要存儲模型樹的眾多信息,作為模型信息的存儲核心,數據列表的信息需要具有導出、導入能力,即將列表已有信息輸出到文件或從文件加載信息到列表。

圖5 模型樹
依工作任務確定工件運動軌跡,由于運動協調動作復雜,難以通過示教實現。通過雙臂協調過程中的位置約束關系,將其運動方程解耦,分別得到左右機械臂的運動軌跡,然后通過軌跡規劃模塊生成軌跡,從而確保了雙臂機器人在仿真系統中任務的正常實現,如圖6所示。

圖6 軌跡解析模塊
軌跡的創建方法可以分為3種:一種是通過CAM軟件生成NC代碼,如:復雜形狀的切削和復雜曲面噴涂;一種是直接識別工程圖文件;一種是直接輸入三維點數據,如點焊類任務。機械臂的軌跡文件創建完畢后,通過不同的解析器解析,使其轉換為系統可以讀取的軌跡數據;然后根據軌跡操作器中的軌跡算法構建出不同類型的軌跡模型。軌跡模型構建主要在以下兩個方面:①運動軌跡的分段,有序的將軌跡文件中各個線段的起點、終點信息存入軌跡列表;②確定各個線段的性質,分析軌跡列表中的線段屬于何種類型的線(直線、圓弧等),并在軌跡控制器中采取不同的插補方法。最終將軌跡進行插補得到一系列的點放入數據列表中,仿真系統根據定時器操作不斷的讀取插補點的信息。
工件的運動決定了雙臂機器人運動軌跡。通過確定雙臂機器人工件的運動,規劃機械臂的運動軌跡,在仿真系統中得到兩個機械臂的軌跡后,刷新重建渲染模型,雙臂機器人開始仿真運動,如圖7所示。

圖7 雙臂機器人任務仿真
通過Open Inventor和Coin3D渲染引擎構建虛擬三維模型。在系統仿真過程中,每隔一定時間,各個模型部件在旋轉變換矩陣的控制下刷新重建得到新的場景從而變現為運動,如圖8所示。

圖8 仿真流程
雙臂機器人及工件、工具等處于初始位置,當運行指令觸發后,后臺程序中的定時器開始運行,向數據列表中加入軌跡信息,這些信息主要包括雙臂機器人機械臂各關節角的大小以及其工具變換矩陣,此外還有工件及環境的相關信息。當定時器計時完畢后,系統自動讀取當前數據列表中的運動參數信息,并且根據內容對雙臂機器人的各個部件進行控制,通過定時器的重復刷新,可以變換仿真環境;如果數據列表中的運動數據不再變化,則說明了根據設定的軌跡,機器人完整的執行了仿真,系統仿真結束。
后置處理模塊的作用是將雙臂機器人離線編程系統中生成的雙臂運動程序轉換為機器人控制器可以識別的代碼。通過仿真控制模塊完成雙臂機器人的任務仿真后,左右機械臂的軌跡通過插補算法實現插補過程中各個點的相關信息。與此同時,各個插補點上的位姿信息和插補參數等信息被存儲在數據列表中,后置處理模塊的作用就是將這部分的信息轉換為機器人運動代碼。通過逐條讀取數據列表中的插補點,將其放在指令存儲列表內,插補點讀取完畢后,完整的控制代碼就可以通過輸出指令存儲列表獲得,將其轉換為相應的格式傳送到控制器中,雙臂機器人就可以自動運行,如圖9所示。

圖9 后置處理模塊流程
為了實現交互界面設計和三維渲染設計,離線編程系統將Qt4.8.6開發套件和Coin3D 3.1.3開發套件集成到VS2008中,搭建QT-Coin3D聯合開發環境。在系統中進行了雙臂機器人協調搬運仿真實驗,驗證系統的有效性。
雙臂機器人協調搬運任務是屬于強耦合、緊協調操作。工件的期望運動路徑決定了左右兩機械臂之間的運動。其操作狀態如圖10所示。

圖10 緊協調操作
具體仿真實現過程如圖11所示。

圖11 雙臂機器人搬運仿真實驗
本文提出一種基于QT-Coin3D雙臂機器人離線編程系統。該系統基于DH參數構建雙臂機器人的運動學模型,設計了一種雙臂機器人系統仿真控制模型(包括三維模型,組織結構和數學模型),通過對雙臂協作操作約束的解耦,對機械臂的運動軌跡進行解析,依據仿真過程算法實現仿真協調運動,仿真完成后生成機器人控制指令,實現雙臂機器人本體運動控制。最后通過實驗驗證了雙臂機器人編程系統。實踐證明基于QT平臺開發的離線編程系統具有較好的可移植性。