劉春+李翔 +王巍
摘要:介紹了一種共軸雙旋翼直升機(jī)的仿真建模方法及系統(tǒng)開發(fā),包括整機(jī)動(dòng)力學(xué)計(jì)算方法、旋翼拉力計(jì)算方法、基本飛行控制方法、仿真系統(tǒng)的組成以及程序開發(fā)。在旋翼拉力計(jì)算中采用了動(dòng)態(tài)入流理論實(shí)現(xiàn)了氣動(dòng)載荷的實(shí)時(shí)計(jì)算,并針對(duì)共軸雙旋翼及機(jī)體的氣動(dòng)耦合性提出了修正方法。系統(tǒng)主體及可視化程序采用OSG開源項(xiàng)目開發(fā),而動(dòng)力學(xué)計(jì)算程序采用C++編程語言設(shè)計(jì),系統(tǒng)不依賴于第三方商業(yè)軟件,且具有研發(fā)效率高、可視化效果好和擴(kuò)展性好等特點(diǎn)。
關(guān)鍵詞:雙旋翼直升機(jī);空氣動(dòng)力學(xué)建模;OSG;計(jì)算機(jī)仿真
中圖分類號(hào):TP319
文章編號(hào):16727800(2017)004008905
0引言
目前,直升機(jī)仿真系統(tǒng)特別是共軸雙旋翼直升機(jī)仿真系統(tǒng)已經(jīng)在國內(nèi)外軍事、商業(yè)、教育等諸多領(lǐng)域得到廣泛應(yīng)用,并取得了相關(guān)研究成果[1]。1985年英國南安普頓大學(xué)的MJ Andrew[2]利用自由尾跡模型研究了共軸雙旋翼直升機(jī)旋翼的尾跡結(jié)構(gòu),并建立了懸停狀態(tài)下雙旋翼相互干擾的計(jì)算方法,但是由于預(yù)定尾跡模型的限制,該算法沒能推廣到其它飛行狀態(tài)中;1990年加拿大的Valko[3]根據(jù)動(dòng)量理論與葉素理論計(jì)算結(jié)果相同的原則通過迭代法獲得了上下旋翼氣動(dòng)干擾模型,進(jìn)而建立了軸向飛行和前飛狀態(tài)下共軸無鉸直升機(jī)的動(dòng)力學(xué)模型,填補(bǔ)了之前的空白;2008年馬里蘭大學(xué)的Shreyas Ananthan和Leishman[4]利用動(dòng)量葉素理論建立了懸停狀態(tài)和垂向運(yùn)動(dòng)時(shí)共軸雙旋翼的氣動(dòng)力模型,雖然兩人未能考慮下旋翼對(duì)上旋翼的影響,卻引領(lǐng)后來研究者普遍采用動(dòng)量葉素的方法建立模型;2012年夏青云等[5]分析了變轉(zhuǎn)速共軸雙旋翼的載荷分布,采用動(dòng)量葉素理論建立了懸停狀態(tài)下共軸雙旋翼的氣動(dòng)力模型。上述工作解決了各自的建模方法問題,但計(jì)算都十分復(fù)雜,計(jì)算量大很難實(shí)現(xiàn)實(shí)時(shí)解算。天津大學(xué)的于琰平[6]利用FlightGear建立了四旋翼無人機(jī)的三維可視化仿真系統(tǒng),該系統(tǒng)使用了GUI界面實(shí)現(xiàn)了飛機(jī)儀表的開發(fā),并利用C++實(shí)現(xiàn)了GUI界面與Flightgear之間的數(shù)據(jù)傳輸;吉林大學(xué)的吳文建在 MATLAB 中搭建了共軸剛性直升機(jī)的數(shù)學(xué)模型,聯(lián)合 MATLAB 和 FlightGear[7]建立了共軸剛性直升機(jī)全數(shù)字視景仿真平臺(tái),并以 CFD 分析所得的旋翼參數(shù)作為模型參數(shù)進(jìn)行了垂向運(yùn)動(dòng)和前飛狀態(tài)下的聯(lián)合仿真。 在直升機(jī)飛行仿真建模方面,旋翼拉力計(jì)算方法是關(guān)鍵,而空氣入流速度計(jì)算是旋翼拉力計(jì)算的組成部分,其直接影響旋翼拉力計(jì)算結(jié)果,上述工作及其它公開資料主要采用均勻入流假設(shè),其計(jì)算簡單,但與實(shí)際情況存在一定差異;仿真的可信度取決于仿真模型準(zhǔn)確度,而仿真模型需要采用有效的校正方法以符合實(shí)際情況、提高模型的準(zhǔn)確度,但目前尚未見到有效的方法。針對(duì)上述問題,本文介紹了共軸雙旋翼直升機(jī)仿真建模方法及系統(tǒng)開發(fā),在旋翼拉力計(jì)算中采用了動(dòng)態(tài)入流理論實(shí)現(xiàn)了氣動(dòng)載荷的實(shí)時(shí)計(jì)算,并針對(duì)共軸雙旋翼及機(jī)體的氣動(dòng)耦合性提出了根據(jù)實(shí)驗(yàn)數(shù)據(jù)的修正方法。系統(tǒng)程序方面采用OSG開源高級(jí)圖形庫與C++語言開發(fā),其不依賴于第三方軟件,具有擴(kuò)展性好、重用性高等特點(diǎn)。
1共軸雙旋翼直升機(jī)數(shù)學(xué)模型
1.1動(dòng)力學(xué)模型
共軸雙旋翼直升機(jī)動(dòng)力學(xué)仿真系統(tǒng)的核心問題就是建立動(dòng)力學(xué)模型求解不同狀態(tài)下目標(biāo)直升機(jī)所受到的合力與合力矩,再通過力和力矩求解六自由度運(yùn)動(dòng)微分方程從而獲得直升機(jī)的飛行狀態(tài)。根據(jù)動(dòng)量及動(dòng)量矩定理,共軸雙旋翼直升機(jī)的力和力矩及運(yùn)動(dòng)學(xué)方程表示如下:
在上述公式中,上下旋翼的合力與合力矩計(jì)算是難點(diǎn)。在這一方面有很多學(xué)者給出了計(jì)算方式,這些計(jì)算方式主要分為兩種:一種是理論計(jì)算法,通過現(xiàn)有的力學(xué)、空氣動(dòng)力學(xué)等理論計(jì)算出雙旋翼氣動(dòng)力;第二種是通過實(shí)驗(yàn)觀察獲得實(shí)驗(yàn)數(shù)據(jù),并通過整理實(shí)驗(yàn)數(shù)據(jù)獲得雙旋翼氣動(dòng)力曲線。上述兩種解算方式中,第一種方式的計(jì)算量過于龐大,第二種方式則太過于依賴實(shí)驗(yàn),本系統(tǒng)采用葉素法并根據(jù)實(shí)驗(yàn)數(shù)據(jù)引入誘導(dǎo)速度干擾系數(shù)K修正結(jié)果,該算法首先需要將槳葉分為若干微段,每一段定義為一個(gè)葉素,并將每一段的力與力矩以微分的形式表達(dá)出來,其表達(dá)式如下:
其中,已知量為c槳葉弦長,dr葉素的寬度,ρ為當(dāng)?shù)乜諝饷芏?,上述微分?xiàng)通過積分可求解出旋翼氣動(dòng)力與力矩。其中的未知量CL、CD、CM分別為升力系數(shù)、阻力系數(shù)、力矩系數(shù),‖Va‖為氣動(dòng)速度的幅值。這兩個(gè)未知量都需要通過氣動(dòng)速度Va求解,其表達(dá)式如下:
上述數(shù)學(xué)模型由于是基于實(shí)際實(shí)驗(yàn)數(shù)據(jù)進(jìn)行的擬合與求解,因此比單純理論計(jì)算的精度要高,數(shù)據(jù)量相對(duì)較小,并且也不完全依賴于實(shí)驗(yàn)獲得數(shù)據(jù),因此也不會(huì)對(duì)實(shí)驗(yàn)條件有很高的要求,可以適應(yīng)實(shí)時(shí)仿真的計(jì)算量要求。〖BT2〗〖WTHZ〗〖STHZ〗1.2基本控制模型〖HT〗〖WT〗〖ST〗本系統(tǒng)所用的姿態(tài)自動(dòng)控制方法主要包括總矩控制、反扭矩控制與橫縱向周期變矩控制。本系統(tǒng)的總矩控制用半差動(dòng)控制,該控制方法上旋翼槳距角根據(jù)總矩變化進(jìn)行調(diào)整。在總矩一定的情況下,根據(jù)上旋翼反扭矩情況再控制下旋翼槳距角從而實(shí)現(xiàn)上下旋翼的扭矩平衡。在該方案下,偏航控制也將使用半差動(dòng)控制來實(shí)現(xiàn),而由于下旋翼槳距角改變而產(chǎn)生的整體升力變化則交給上下旋翼共用的總矩控制,其中下旋翼槳距角調(diào)整量表達(dá)式如下:
其中,θ為當(dāng)前偏航角與預(yù)期偏航角的差值,ω0為當(dāng)前偏航角速度,α0為角加速度,Δɑ為下旋翼總矩調(diào)整量,a、b、c均為調(diào)整參數(shù),需要根據(jù)機(jī)身x軸方向轉(zhuǎn)動(dòng)慣量及旋翼參數(shù)進(jìn)行調(diào)整。仿真系統(tǒng)中的總矩控制與橫、縱向周期變矩控制均主要分為輔助控制與手動(dòng)控制兩部分。其中總矩控制分為下降輔助控制與手動(dòng)控制,橫、縱向周期變矩控制則是在手動(dòng)控制基礎(chǔ)上增加了橫向速度抑制控制與橫縱向穩(wěn)定控制。由于目標(biāo)直升機(jī)旋翼半徑較小、轉(zhuǎn)速較高,并且仿真程序考慮了槳根處的反流區(qū),所以在下降過程中槳根部分會(huì)出現(xiàn)較顯著的升力損失,從而導(dǎo)致下降控制困難的問題。因此需要在總矩控制中增加下降控制,更好地限制下降速度,降低下降難度。基于上述原因,設(shè)計(jì)槳距角控制表達(dá)式如下:
2仿真系統(tǒng)結(jié)構(gòu)
分析可知,仿真程序主要包含直升機(jī)動(dòng)力學(xué)模型、旋翼動(dòng)力學(xué)模型、機(jī)身動(dòng)力學(xué)模型、起落架動(dòng)力學(xué)模型、大氣環(huán)境模型、姿態(tài)控制模型、飛行狀態(tài)更新、視景顯示更新系統(tǒng),如圖1所示。 共軸雙旋翼直升機(jī)仿真系統(tǒng)可接收來自操縱桿、鍵盤、鼠標(biāo)等設(shè)備的數(shù)據(jù)信號(hào)并通過接口程序轉(zhuǎn)化為可被動(dòng)力學(xué)模型調(diào)用的操縱數(shù)據(jù)與可被控制程序識(shí)別的基本命令。其中的基本控制指令會(huì)被控制程序讀取,而操縱數(shù)據(jù)則會(huì)與當(dāng)前大氣環(huán)境信息一同輸入到動(dòng)力學(xué)模型中進(jìn)行解算。如上節(jié)所述,通過解算動(dòng)力學(xué)模型會(huì)得到直升機(jī)的力與力矩再根據(jù)這些力與力矩,便可以求解運(yùn)動(dòng)方程,從而得到直升機(jī)的運(yùn)動(dòng)情況。經(jīng)過osg的圖形處理顯示到屏幕或其它輸出設(shè)備上,同時(shí)會(huì)通過輸出vs窗口記錄下需要顯示的所有數(shù)據(jù)信息,并將有用數(shù)據(jù)反饋給大氣環(huán)境模型與控制程序從而形成閉環(huán)控制。
3仿真程序?qū)崿F(xiàn)
3.1OSG平臺(tái)及主程序?qū)崿F(xiàn)
OSG(OpenSceneGraph)是一套基于OpenGL專為3D計(jì)算機(jī)圖形學(xué)而開發(fā)的高級(jí)跨平臺(tái)可編程接口[8]。作為一個(gè)通用的開源高級(jí)跨平臺(tái)圖形庫,為用戶提供了完整和獨(dú)立的可視化功能,允許用戶仿真程序與可視化程序分開。本系統(tǒng)采用OSG三維仿真平臺(tái)開發(fā),其OSG主程序代碼如下:int main() { osgViewer::Viewer viewer;//創(chuàng)建場(chǎng)景瀏覽器 osg::ref_ptr
3.2程序主體類劃分及程序?qū)崿F(xiàn)
按照上文關(guān)于動(dòng)力學(xué)建模的介紹,程序主體部分建立了主旋翼、翼型、機(jī)身、起落架、發(fā)動(dòng)機(jī)、大氣、重力等計(jì)算模塊,此外還有匯總解算、數(shù)學(xué)函數(shù)模塊。根據(jù)上述模塊采用面向?qū)ο蟮姆椒ㄔO(shè)計(jì)類??紤]到程序的擴(kuò)展與應(yīng)用,設(shè)計(jì)了一些基類,并以此派生出具體機(jī)型的計(jì)算類,其具體劃分與繼承關(guān)系如圖2所示。
在上述所劃分模塊中的A部分為總類完成動(dòng)力學(xué)模型總體解算,其中的主體部分為JDUAV類也是整個(gè)仿真程序的最主要部分;B列從上到下依次為旋翼類與葉素類(左)、槳葉類共同完成旋翼動(dòng)力學(xué)模型的解算;此外還有機(jī)身動(dòng)力學(xué)模型解算類、姿態(tài)控制類及起落架動(dòng)力學(xué)模型計(jì)算類分別對(duì)應(yīng)機(jī)身動(dòng)力學(xué)模型解算、姿態(tài)控制與起落架動(dòng)力學(xué)模型計(jì)算。下面將分別對(duì)JDUAV類、主旋翼類與姿態(tài)控制類的程序定義進(jìn)行簡單說明。class JDUAV:public Helicopter{public: void initialize();//初始化所有部件的相關(guān)參數(shù) void calculate(double deltaT);//重寫動(dòng)力學(xué)解算函數(shù) void updateInput(......);//更新輸入數(shù)據(jù) private: JDUAVMainRotor mainRotorUp; //上旋翼 JDUAVMainRotor mainRotorDown;//下旋翼 JDUAVFuselage fuselage;//機(jī)身 JDUAVLandingGear forwardRightGear;//前右起落架 JDUAVOperateData operateData;//操縱器 JDUAVEnvironment atmosphere;//大氣環(huán)境 }; 上述為JDUAV類的部分源代碼,首先通過Initialize函數(shù)初始化所有部件的相關(guān)參數(shù),其中首先需要初始化如當(dāng)前時(shí)間(currTime)、質(zhì)量矩陣(Mb)、姿態(tài)角(attitude)、某些坐標(biāo)、速度、加速度、重力這些不變的參數(shù)。更重要的是需要?jiǎng)?chuàng)建如起落架(Gear)、尾推(Thruster)這種動(dòng)力學(xué)計(jì)算對(duì)象,這樣就可以實(shí)現(xiàn)程序的重用,從而簡化程序。最后也會(huì)初始化如陀螺力矩、大氣環(huán)境等計(jì)算類。 Calculate函數(shù)是該類的主體部分,首先需要記錄系統(tǒng)運(yùn)行時(shí)間,并判定直升機(jī)是否處于失控狀態(tài)下,如果處于失控狀態(tài)則轉(zhuǎn)入失控狀態(tài)動(dòng)力學(xué)解算程序,如果沒有失控則需要將一系列的當(dāng)前狀態(tài)數(shù)據(jù)導(dǎo)入到諸如大氣環(huán)境解算、姿態(tài)控制等類中。并依次解算上下旋翼、機(jī)身、起落架、尾推的力合力矩以及重力與陀螺效應(yīng)產(chǎn)生的力矩。然后計(jì)算合力與合力矩updateInput()函數(shù)為控制參數(shù)更新類,因?yàn)橥ㄟ^后續(xù)運(yùn)行與實(shí)際考察發(fā)現(xiàn),共軸雙旋翼直升機(jī)在獲得了飛行速度與航程優(yōu)勢(shì)的同時(shí)也導(dǎo)致了其穩(wěn)定性的大幅度下降,同時(shí)在總矩,橫、縱向周期變矩周期的操縱過程中存在著強(qiáng)烈的耦合。這導(dǎo)致直升機(jī)在做幾乎所有機(jī)動(dòng)動(dòng)作時(shí)都存在不同程度的組合運(yùn)動(dòng)。這些耦合作用十分影響直升機(jī)的穩(wěn)定性,因此在仿真系統(tǒng)中加入了多個(gè)輔助控制程序:橫、縱向周期變矩控制,反扭矩控制,總矩控制等程序。上述程序就是在總類中姿態(tài)控制程序數(shù)據(jù)更新部分再根據(jù)1.2節(jié)中的控制模型即可完成直升機(jī)控制。 最后程序分別創(chuàng)建了直升機(jī)各動(dòng)力學(xué)組件的對(duì)象,實(shí)現(xiàn)程序的重用,以供主程序調(diào)用。class JDUAVMainRotor :public MainRotor{public: void initialize(……);//重寫初始化方法 void calculate(……);//重寫動(dòng)力學(xué)解算方法 void createBlades(int Nb);//生成槳葉對(duì)象 double getBeita(int bladeID);//獲取槳葉的揮舞角,度private: double K; double theta00;}; 上述為主旋翼動(dòng)力學(xué)解算類的定義程序,主旋翼部分程序首先通過Initialize函數(shù)初始化旋翼的各種物理參數(shù)及相關(guān)常量。然后定義了一個(gè)Calculate函數(shù)用于實(shí)時(shí)計(jì)算旋翼的氣動(dòng)力及力矩,具體算法參見第1節(jié)。 createBlades(int Nb)為創(chuàng)建槳葉對(duì)象,其中包含整形變量Nb表示所初始化槳葉的編號(hào),該對(duì)象將會(huì)在程序中多次重用。getBeita(int bladeID)及之后省略的程序段定義了大量從槳葉中獲取各種變量的傳遞函數(shù),這些傳遞函數(shù)為了區(qū)分方便需分別在創(chuàng)建時(shí)保存其槳葉編號(hào)bladeID。 最后該程序定義了一些私有變量如誘導(dǎo)速度干擾系數(shù)(K)、初始槳距角(theta00)等。class HeliOperateData{ public: virtual void initialize(……) double getA1();//獲取橫向周期變距響應(yīng)值,弧度 void setData(……);//設(shè)置輸入量 protected: virtual void controlYaw(……);//偏航控制 virtual void controlPitch(……);//俯仰控制 virtual void controlRoll(……);//滾轉(zhuǎn)控制 double DArrayn_Yaw,DArrayn_Pitch,DArrayn_Roll; //滾轉(zhuǎn),俯仰,偏航角速度}; 上述為姿態(tài)控制類的定義,該部分首先依靠Initialize初始化大量姿態(tài)控制函數(shù)與變量,隨后定義了大量如getA1與setData的傳遞函數(shù),用于將各種控制變量導(dǎo)入、導(dǎo)出其余各動(dòng)力學(xué)結(jié)算類。 該類的主體部分為controlYaw、controlPitch、controlPitch3個(gè)函數(shù),分別控制直升機(jī)的偏航、俯仰與滾轉(zhuǎn)。程序最后定義了大量參量如滾轉(zhuǎn)角速度DArrayn_Yaw、俯仰角速度DArrayn_Pitch、偏航角速度DArrayn_Roll等飛行狀態(tài)數(shù)值。3.3系統(tǒng)運(yùn)行結(jié)果
共軸雙旋翼直升機(jī)仿真系統(tǒng)可實(shí)現(xiàn)直升機(jī)在起飛、降落、偏航、滾轉(zhuǎn)、俯仰、平飛、懸停等飛行狀態(tài)的仿真,具備自動(dòng)降落、自動(dòng)消除側(cè)滑速度、自動(dòng)懸停等自動(dòng)飛行控制,同時(shí)也可以模擬直升機(jī)在不同風(fēng)速、空氣密度下的飛行。通過上述模擬飛行,本系統(tǒng)可幫助評(píng)估目標(biāo)直升機(jī)的飛行性能,預(yù)測(cè)可能出現(xiàn)的設(shè)計(jì)問題,從而縮短設(shè)計(jì)周期,降低研究經(jīng)費(fèi)。該系統(tǒng)在某無人直升機(jī)的設(shè)計(jì)中進(jìn)行了成功應(yīng)用,用于評(píng)估飛機(jī)機(jī)身氣動(dòng)性能、旋翼氣動(dòng)性能和最大飛行速度等指標(biāo),其運(yùn)行效果如圖3所示。 為使用方便,右上角顯示直升機(jī)坐標(biāo)位置、運(yùn)行時(shí)間、線速度、角速度、姿態(tài)角、直升機(jī)各氣動(dòng)組件力和力矩、操縱參數(shù)、大氣數(shù)據(jù)等信息。并且在debug模式下運(yùn)行程序可顯示任何變量數(shù)據(jù)并以txt格式保存下來以供后續(xù)分析。 城市名之間使用英文逗號(hào)隔開,城市名和郵編之間使用一個(gè)英文空格隔開,不能用逗號(hào)。
4結(jié)語
本文研究了共軸雙旋翼直升機(jī)的仿真建模方法及系統(tǒng)開發(fā)。在建模方法上,采用了先進(jìn)的動(dòng)態(tài)入流速度計(jì)算方法,并提出了一種氣動(dòng)耦合校正方法,保證了模型的相對(duì)準(zhǔn)確性。在系統(tǒng)開發(fā)方面,采用OSG開源平臺(tái)及面向?qū)ο蠹夹g(shù),使系統(tǒng)開發(fā)效率高、擴(kuò)展性及維護(hù)性好,擺脫了對(duì)第三方軟件的依賴。該仿真系統(tǒng)具備了共軸雙旋翼直升機(jī)的基本飛行及控制功能,具有一定通用性,可用于直升機(jī)設(shè)計(jì)及培訓(xùn)等領(lǐng)域。該系統(tǒng)在某無人直升機(jī)的設(shè)計(jì)中進(jìn)行了成功應(yīng)用。
參考文獻(xiàn):[1]陳銘.共軸雙旋翼直升機(jī)的技術(shù)特點(diǎn)及發(fā)展[J].航空制造技術(shù),2009(17): 2631.
[2]ANDREW M J.Coaxial rotor aerodynamics[D].England: Southampton University,1981.
[3]VAIKOV T.Aerodynamic loads computation on coaxial hingeless helicopter rotors[C].Canada.28th Aerospace Sciences Meeting,1990.
[4]GORDON LEISHMAN J.Figure of merit definition for coaxial rotors[J].Journal of The American Helicopter Society,2008,53(3):290300.
[5]夏青云,徐錦法.變轉(zhuǎn)速共軸旋翼載荷建模及實(shí)驗(yàn)驗(yàn)證[J].實(shí)驗(yàn)力學(xué),2012(4):432439.
[6]于琰平.基于Flight Gear的四旋翼無人機(jī)三維可視仿真系統(tǒng)研究[D].天津:天津大學(xué),2010.
[7]吳文建.無人共軸剛性直升機(jī)氣動(dòng)特性分析及視景仿真研究[D].長春:吉林大學(xué),2015.
[8]王銳,錢學(xué)雷.OpenSceneGraph三維渲染引擎設(shè)計(jì)與實(shí)踐[M].北京:清華大學(xué)出版社,2009.
(責(zé)任編輯:孫娟)