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