何思民,董奕辰,陳輝慶,王汝貴
(廣西大學 機械工程學院,廣西 南寧 530004)
工業機器人影響到生活的方方面面,是當今社會不可缺少的一部分,為了設計出更好的工業機器人以及對設計出的機器人進行改進,虛擬仿真技術必不可少,在虛擬的環境中對機器人進行研究,可以節省大量的人力物力。傳統的可視化虛擬仿真存在的一個比較大的缺點是缺乏對所有種類機器人的泛用性,MATLAB 機器人工具箱只適用于D-H 法建模的機器人,ROS 機器人系統提供了許多開源的數據庫以及API 接口,但是其可視化虛擬仿真功能往往也是適用于D-H 法建模的機器人。造成可視化虛擬仿真軟件泛用性差的原因在于,可視化仿真展現機器人的三維模型是要確定機器人每一個桿件的位姿,通過D-H法建模的機器人可以很方便地逐級將各關節的兩端點位置以及該桿件相對于坐標系原點的矢量求解得到,從而唯一地確定其機器人桿件位姿,此時可視化仿真軟件再通過計算機圖形技術,將機器人的外形展現出來。而不方便使用D-H 法建模的機器人,其確定各桿件位姿的運動學方程則需要根據機器人的結構進行設計。
而Solid Works 軟件擁有強大的配合功能,通過簡單的幾個配合約束,可以唯一地確定機器人各桿件的位姿,其對于所有類型的機器人,在運動學建模方面都有良好的適應性,但是Solid Works 的仿真功能較為薄弱,不少學者對其仿真功能進行開發[1,2]。基于Visual Studio 編譯環境,使用C#語言,開發窗體應用程序,C#語言便于開發各項功能,在窗體應用程序中內置這些功能,比如說運動學建模和虛擬仿真等,然后對Solid Works 進行二次開發,通過其豐富的API接口,將程序中的各項功能可視化地展現出來,搭建出可視化虛擬仿真平臺,方便以后進一步深入研究機器人。
實驗室團隊已經研制出一種新型可控變胞式碼垛機器人,并制作出實物樣機[3,4],以及分析其運動學[5]和控制程序[6]。該機器人的物理樣機和機構如圖1 所示,其中電機一驅動AB 桿運動,電機二驅動ED 桿運動,ED 桿又對桿件DC 的運動造成影響,主動桿AB桿與ED 桿共同影響CF 桿的運動,同時CF 桿通過鉸鏈配合反過來對AB 桿和ED 桿造成約束。因此,該機器人使用D-H 法建模困難,難以使用各類可視化虛擬仿真軟件進行虛擬仿真。在此基礎上,對該機器人模型進行進一步的程序開發。

圖1 機器人物理樣機和機構
為了在計算機中建立該機器人的模型,在程序中聲明一個機器人類,使用該機器人的實際物理尺寸對該類進行初始化設定。機器人各桿件的參數見表1。其中茲1 是主動桿件AB的轉動角度,茲2 是主動桿件ED的轉動角度,準1是底部電機的轉動角度,準2是機器人末端執行器的回轉角度。然后為該機器人類添加正運動學和逆運動學模塊,當輸入一組主動關節角角度或機器人末端位姿之后,可以唯一確定機器人的位姿。

表1 機械臂尺寸和主動關節角取值范圍
為了將計算機程序中的機器人模型及功能可視化,須開發預覽模塊。該模塊由機器人模塊根據主動關節角或末端執行器位置能唯一地確定機器人各桿件的位姿,通過畫圖模塊依次將機器人各桿件和端點描繪出來。以及通過坐標系轉換模塊,將三維的機器人的模型在二維平面內通過等軸測視圖展現出來。如圖2 所示是預覽模塊展現的機器人模型,預覽模塊對程序調試具有很大的意義,對正在開發的功能有參考意義。更真實的模型則要對Solid Works 進行二次開發后獲得。

圖2 預覽界面
為了對機器人進行虛擬仿真和對模型模塊以及預覽模塊進行檢驗,開發虛擬仿真模塊,在窗體程序界面中輸入各個關鍵點的坐標,機器人末端執行器依次通過各個關鍵點,且用動畫的形式展現出來,并且在機器人運動的過程中要實時展現機器人的關鍵信息,包括各主動關節角的角度值和機器人末端執行器的位置。通過如下方法實現:根據機器人數學模型運動正解和逆解,對每一個時刻下的機器人的新位姿進行求解,實時更新機器人位置。使用工具箱中的Timer控件,每隔若干時間計算一次,比如設定100 ms 求解一次機器人位姿,并更新預覽界面的圖形,便可以實現虛擬仿真的動畫展現效果。
為了實現上述各模塊,需要對大量函數進行重復調用,為了減少代碼冗余度,將這些函數進行封裝處理,封裝成一個個類,在有需要時再進行調用。按照模塊化的思想,將各項功能總結成若干的按鈕排布在人機交互界面上,每一個功能按鈕背后都是大量函數的相互調用。如圖3 所示,是開發的窗體應用程序的界面,日后根據實際需要,可以增減相對應的功能,以方便對機器人的研究。

圖3 人機交互界面
按照機器人實際尺寸創建Solid Works 零件并裝配成裝配體,如圖4 所示。

圖4 Solid Works 機器人三維模型
基于Solid Works 強大的API 接口功能,可以很方便使用C#等語言對Solid Works 進行二次開發。這里給出關鍵的幾個API 接口和偽代碼。
public SldWorks swApp = new SldWorks();//創建變量swApp,設swApp 為新的Solid Works 實體對象。
ModelDoc2 swDoc = null;//初始化活動文檔對象類API。
SketchSegment skSegment = null;//草 圖 管 理 類API,創建一個變量對象以使用草圖類下面的方法。
bool boolstatus = false;//用于選中某對象,比如:
boolstatus = swDoc.Extension.SelectByID2(“角度1”,“MATE”,0,0,0,false,0,null,0);//選中主動關節角-角 度1,boolstatus 是 選 中 狀 態,SelectByID2 是Solid Works 的API 庫中一種選擇對象方法。
swDisplayDimension//尺寸對象,對其進行操作可以將主動關節角的值改變以驅動機器人運動。
基于上述的幾個API,Solid Works 配合功能中的機器人各個主動關節角的角度可以隨著窗體應用程序的控制而改變,主動關節角改變,則機器人的位姿發生改變,當窗體應用程序每間隔一段時間改變一次機器人的位姿,可以實現動畫效果的可視化虛擬仿真,當建立好坐標系以后,基于SketchSegment API 可以將機器人末端執行器的路徑展現出來。
為了驗證所開發程序是否能夠實現預期功能,進行可視化虛擬仿真實驗。給定路徑上的幾個關鍵節點(表2)。在窗體應用程序中按下路徑規劃按鈕,預覽界面如圖5 所示。機器人依次沿著這幾個節點前進,并畫出末端執行器所行進的路徑,整個過程以動畫的形式表現。然后按下打開Solid Works 按鈕,等到打開三維界面,再按下三維仿真按鈕,根據虛擬仿真求得的路徑,通過API 接口控制機器人主動關節角的角度值,讓機器人在三維中走出了對應的路徑,并通過API 接口使用三維草圖功能繪畫出運動所走路徑,如圖6 所示。

圖5 虛擬仿真窗體程序的界面和虛擬仿真預覽

圖6 窗體程序控制下的可視化虛擬仿真

表2 虛擬仿真過程中關鍵點末端位置和主動關節角度
針對可控變胞式碼垛機器人,基于Visual Studio編譯環境,使用C#語言開發窗體應用程序,建立機器人模型,開發虛擬仿真功能,開發預覽功能,并對Solid Works 進行二次開發,將程序實現的功能在Solid Works 中展現出來,從而達到了可視化仿真的效果。并進行虛擬仿真實驗,實驗結果驗證了搭建的可視化虛擬仿真平臺能滿足機器人的可視化虛擬仿真需求,為以后繼續開發研究變胞式碼垛機器人打下基礎。