賈慶浩, 李嘯雋, 劉 林
(華南理工大學(xué)設(shè)計(jì)學(xué)院,廣東 廣州 510640)
Stewart平臺機(jī)構(gòu)是運(yùn)動仿真平臺中最著名的一種6自由度并聯(lián)機(jī)構(gòu)平臺,如圖1所示。本文所建立的Stewart 平臺機(jī)構(gòu),包括驅(qū)動機(jī)構(gòu)(液壓缸),負(fù)載平臺和基臺,6個(gè)可伸縮的支腿,負(fù)載平臺和導(dǎo)桿之間使用6個(gè)球鉸連接,基臺和液壓桿之間使用6個(gè)虎克鉸連接。通過6個(gè)支腿的伸縮運(yùn)動可以實(shí)現(xiàn)負(fù)載平臺在工作空間范圍內(nèi)的6自由度運(yùn)動,具有精度高、剛度大、結(jié)構(gòu)穩(wěn)定、承載能力強(qiáng)、運(yùn)動慣量小、動態(tài)特性好等優(yōu)點(diǎn)[1]。
機(jī)器人反解算法復(fù)雜,計(jì)算量大。文獻(xiàn)[2]構(gòu)建了一個(gè) Stewart原型仿真平臺,單純采用反解算法,通過計(jì)算上鉸鏈點(diǎn)的坐標(biāo),生成旋轉(zhuǎn)矢量,并將導(dǎo)桿和液壓桿旋轉(zhuǎn)平移到指定位置實(shí)現(xiàn)動態(tài)裝配。文獻(xiàn)[3]對該平臺極限位姿下的狀態(tài)進(jìn)行了仿真,但并未對反解算法的優(yōu)化做深入分析。這些研究都具有重要的價(jià)值,然而在提升仿真效率方面,國內(nèi)報(bào)道甚少。
圖1 Stewart平臺示意圖
本文采用優(yōu)化后的方法,建立了一個(gè)基于VRML的Stewart機(jī)構(gòu)仿真平臺,該仿真平臺的效率相比于原系統(tǒng)有很大提升,對加速 Stewart機(jī)構(gòu)的開發(fā)提供了幫助。用戶可以實(shí)時(shí)觀察Stewart平臺的運(yùn)動過程,對其空間運(yùn)動情況做出分析。在完成通用平臺基本核心功能的同時(shí),JavaScript控制臺輸出的反饋數(shù)據(jù)可以作為平臺的結(jié)構(gòu)設(shè)計(jì)參考。
VRML具有很好的構(gòu)建虛擬環(huán)境的能力,但在三維實(shí)體建模方面的功能不完善。本文采用首先在SolidWorks中初步建模,導(dǎo)入VRML環(huán)境后再進(jìn)行修改的方法,這種方式快捷、直觀,也比較高效。
Stewart平臺的姿態(tài)描述采用多剛體的旋轉(zhuǎn)坐標(biāo)法,通過負(fù)載平臺繞坐標(biāo)軸旋轉(zhuǎn)參數(shù)與平移參數(shù)來求得6個(gè)支桿(導(dǎo)桿與套筒)的長度。活動坐標(biāo)系R′固定在負(fù)載平臺中心位置,隨負(fù)載平臺變化,固定坐標(biāo)系R固定在基臺中心。如圖2所示,固定坐標(biāo)系R和活動坐標(biāo)系R′間的矢量可以通過方向余弦矩陣Q[4]來轉(zhuǎn)化,基于以上原則建立的轉(zhuǎn)換矩陣為
Bi為負(fù)載平臺各鉸鏈點(diǎn)在活動坐標(biāo)系R′下的坐標(biāo), Pi為負(fù)載平臺相對于基臺的平移矢量,從而負(fù)載平臺各鉸鏈坐標(biāo)可表示為
圖2 坐標(biāo)轉(zhuǎn)換示意圖
在 VRML中,由于沒有真實(shí)的物理環(huán)境,通過運(yùn)動學(xué)反解出支桿的長度之后,還必須再求得每個(gè)導(dǎo)桿和套筒的位姿,這樣必然造成計(jì)算效率降低。在這里,提出一種優(yōu)化辦法,其原理如圖3所示。預(yù)定義6個(gè)引線節(jié)點(diǎn)c1-c6,引線節(jié)點(diǎn)的方向由 point[-1,-1,0]和 point[-1,1,0]這兩個(gè)點(diǎn)唯一確定,即沿y軸正向。由于剛導(dǎo)入到VRML環(huán)境中的平臺各部分之間運(yùn)動約束尚未添加的緣故,各導(dǎo)桿和套筒方向均與y軸平行,本文以v1表示初始化后的導(dǎo)桿和套筒方向。系統(tǒng)運(yùn)行后,為了獲得支桿的位姿和長度,首先通過 ga(即是負(fù)載平臺和6個(gè)鉸鏈的組合)的 rotation(旋轉(zhuǎn))與 translation(平移)兩個(gè)域的改變值計(jì)算負(fù)載平臺上6個(gè)鉸鏈的坐標(biāo)a1-a6。然后求解 a1、b1兩點(diǎn)間的距離是否處于桿長最長值與最短值之間,若條件符合,就將兩個(gè)新的坐標(biāo)點(diǎn)a1和b1的值傳遞給預(yù)定義的引線節(jié)點(diǎn)c1的坐標(biāo),以動態(tài)更新預(yù)定義的引線節(jié)點(diǎn)的方向。然后以引線節(jié)點(diǎn)的新方向?yàn)榛鶞?zhǔn)轉(zhuǎn)動導(dǎo)桿和套筒至下一位置,根據(jù)上鉸鏈的位移來移動導(dǎo)桿。套筒(tt1)的一端固定在 b1點(diǎn),并不需要移動,其轉(zhuǎn)動由v1向量轉(zhuǎn)至-c1向量。導(dǎo)桿(gg1)的上端跟隨負(fù)載平臺移動,其轉(zhuǎn)動為v1向量至c1向量,與tt1轉(zhuǎn)動方向相反。采用動態(tài)更新的引線節(jié)點(diǎn)后,導(dǎo)桿和套筒就可以快速旋轉(zhuǎn)至引線的新方向,提高了計(jì)算效率。其流程如圖4所示。
圖3 優(yōu)化原理示意圖
圖4 優(yōu)化原理流程圖
VRML不能進(jìn)行精確的數(shù)學(xué)計(jì)算,運(yùn)動學(xué)反解部分通過JavaScript實(shí)現(xiàn)。為了實(shí)現(xiàn)控制功能,本文基于運(yùn)動學(xué)反解原理開發(fā)了控制模塊,控制流程如圖5所示。用戶對負(fù)載平臺進(jìn)行操作,反解模塊自動地做運(yùn)動學(xué)反解并判斷桿長條件,若符合條件,就賦與6個(gè)支桿的位姿和長度。為便于對仿真數(shù)據(jù)做分析,系統(tǒng)在JavaScript控制臺中實(shí)時(shí)輸出6個(gè)上鉸鏈點(diǎn)的坐標(biāo)和6個(gè)支桿的長度。此外,還提供了仿真動畫接口,為將來的仿真工作提供一個(gè)平臺。
Script節(jié)點(diǎn)是數(shù)據(jù)在VRML和JavaScript進(jìn)行通信的橋梁[5-6],事件到達(dá)Script的eventIn入口,經(jīng)過Java程序解釋后,在通過eventOut返回值。為了實(shí)現(xiàn)仿真過程,必須定義好路徑,將JavaScrip與VRML之間的參數(shù)進(jìn)行相互傳遞,它們的數(shù)據(jù)類型必須是一致的[7]。路徑的設(shè)置是關(guān)鍵的一個(gè)部分,VRML中的域分為field(私有域)和exposedfield(公共域),其中公共域可以通過引用節(jié)點(diǎn)在JavaScript里面直接操作,私有域只能通過路徑加上定義原節(jié)點(diǎn)的方法改變。交互路徑如圖6所示。
圖5 程序控制流程示意圖
圖6 主交互路徑圖
通過JavaScript與VRML的交互,實(shí)現(xiàn)了機(jī)器人運(yùn)動的反解優(yōu)化。部分程序如下:
DEF yingxian1 Shape {
#定義部分
geometry IndexedLineSet {//定義引線
傳統(tǒng)的Stewart平臺反解計(jì)算在求解出支桿的長度后,采用與上文類似的方法獲得支桿新位姿的方向向量,再讓導(dǎo)桿和套筒旋轉(zhuǎn)到新的方向,但未采用動態(tài)更新引線節(jié)點(diǎn)的方式來獲取新的方向。Stewart平臺的位姿有無數(shù)種,顯然一一列舉每種情況下的插補(bǔ)效果不現(xiàn)實(shí)。為了驗(yàn)證2種方法的差異性,初始化一組位姿,通過JavaScript控制臺,將位姿數(shù)據(jù)導(dǎo)入Matlab進(jìn)行分析,得到桿件的長度變化與插補(bǔ)次數(shù)曲線。圖7分別為未使用、已使用引線引導(dǎo)方法的桿件長度與插補(bǔ)次數(shù)變化曲線。通過兩者的對比,可以發(fā)現(xiàn),在保證插補(bǔ)精度基本不變的情況下,插補(bǔ)次數(shù)從先前的167次下降到了85次左右,降幅達(dá)49.1%。由此得知,經(jīng)過優(yōu)化后的方法提升了仿真系統(tǒng)的仿真效率。
圖7 優(yōu)化前后插補(bǔ)次數(shù)對比圖
完成后的仿真界面如圖8所示。拖動其中的X、Y、Z、X_R、Y_R、Z_R滑塊分別可以實(shí)現(xiàn)平臺沿 XYZ軸的平移與轉(zhuǎn)動,也可以直接拖動平臺。而瀏覽器自帶的JavaScript控制臺可實(shí)時(shí)輸出平臺的6個(gè)位姿參數(shù)與6根導(dǎo)桿的長度,這些參數(shù)可以對Stewart的結(jié)構(gòu)設(shè)計(jì)提供指導(dǎo)。
圖8 仿真界面圖
本文以Stewart機(jī)器人平臺為例,基于VRML編程語言實(shí)現(xiàn)該型平臺的運(yùn)動學(xué)仿真。在實(shí)現(xiàn)運(yùn)動學(xué)的過程中,采用動態(tài)更新 VRML的IndexedLineSet節(jié)點(diǎn)的方式,為機(jī)構(gòu)的位姿提供引導(dǎo)。分析結(jié)果表明該方法有很高的效率,說明模型結(jié)構(gòu)合理,實(shí)現(xiàn)仿真的思想具有一定的應(yīng)用價(jià)值??傊?,現(xiàn)代編程思想利用于工程實(shí)踐,進(jìn)行產(chǎn)品的仿真,可以大大提升仿真的效率,對于縮短產(chǎn)品的研發(fā)周期、減少開發(fā)費(fèi)用具有重要意義。
[1] Stewart D A. Platform with six degrees of freedom [J].Proc Inst Mech Engrs,1965,180(15): 371-386.
[2] 姜洪洲,趙 慧,韓俊偉,等. VRML在6自由度并聯(lián)機(jī)器人設(shè)計(jì)中的應(yīng)用[J]. 中國機(jī)械工程,2003,14(11): 920-923.
[3] 馬建明,何景峰,熊海國,等.飛行模擬器極限位姿的可視化仿真分析[J]. 計(jì)算機(jī)仿真,2010,27(9):235-238.
[4] 黃 真. 并聯(lián)機(jī)器人機(jī)構(gòu)學(xué)理論與控制[M]. 北京:北京出版社,1997: 36-38.
[5] 孔令富,史慶周,崔 凱. Stewart并聯(lián)機(jī)器人仿真系統(tǒng)的實(shí)現(xiàn)[J]. 計(jì)算機(jī)仿真,2003,24(5): 94-96.
[6] 汪興謙. VRML與Java編程實(shí)例講解[M]. 北京: 中國水利水電出版社,2001: 83-88.
[7] 管貽生. Java高級實(shí)用編程[M]. 北京: 清華大學(xué)出版社,2004: 324-325.