999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于OSG的雙旋翼直升機仿真系統與程序實現

2017-06-20 11:15:59劉春李翔王巍
軟件導刊 2017年4期

劉春+李翔 +王巍

摘要:介紹了一種共軸雙旋翼直升機的仿真建模方法及系統開發,包括整機動力學計算方法、旋翼拉力計算方法、基本飛行控制方法、仿真系統的組成以及程序開發。在旋翼拉力計算中采用了動態入流理論實現了氣動載荷的實時計算,并針對共軸雙旋翼及機體的氣動耦合性提出了修正方法。系統主體及可視化程序采用OSG開源項目開發,而動力學計算程序采用C++編程語言設計,系統不依賴于第三方商業軟件,且具有研發效率高、可視化效果好和擴展性好等特點。

關鍵詞:雙旋翼直升機;空氣動力學建模;OSG;計算機仿真

中圖分類號:TP319

文章編號:16727800(2017)004008905

0引言

目前,直升機仿真系統特別是共軸雙旋翼直升機仿真系統已經在國內外軍事、商業、教育等諸多領域得到廣泛應用,并取得了相關研究成果[1]。1985年英國南安普頓大學的MJ Andrew[2]利用自由尾跡模型研究了共軸雙旋翼直升機旋翼的尾跡結構,并建立了懸停狀態下雙旋翼相互干擾的計算方法,但是由于預定尾跡模型的限制,該算法沒能推廣到其它飛行狀態中;1990年加拿大的Valko[3]根據動量理論與葉素理論計算結果相同的原則通過迭代法獲得了上下旋翼氣動干擾模型,進而建立了軸向飛行和前飛狀態下共軸無鉸直升機的動力學模型,填補了之前的空白;2008年馬里蘭大學的Shreyas Ananthan和Leishman[4]利用動量葉素理論建立了懸停狀態和垂向運動時共軸雙旋翼的氣動力模型,雖然兩人未能考慮下旋翼對上旋翼的影響,卻引領后來研究者普遍采用動量葉素的方法建立模型;2012年夏青云等[5]分析了變轉速共軸雙旋翼的載荷分布,采用動量葉素理論建立了懸停狀態下共軸雙旋翼的氣動力模型。上述工作解決了各自的建模方法問題,但計算都十分復雜,計算量大很難實現實時解算。天津大學的于琰平[6]利用FlightGear建立了四旋翼無人機的三維可視化仿真系統,該系統使用了GUI界面實現了飛機儀表的開發,并利用C++實現了GUI界面與Flightgear之間的數據傳輸;吉林大學的吳文建在 MATLAB 中搭建了共軸剛性直升機的數學模型,聯合 MATLAB 和 FlightGear[7]建立了共軸剛性直升機全數字視景仿真平臺,并以 CFD 分析所得的旋翼參數作為模型參數進行了垂向運動和前飛狀態下的聯合仿真。 在直升機飛行仿真建模方面,旋翼拉力計算方法是關鍵,而空氣入流速度計算是旋翼拉力計算的組成部分,其直接影響旋翼拉力計算結果,上述工作及其它公開資料主要采用均勻入流假設,其計算簡單,但與實際情況存在一定差異;仿真的可信度取決于仿真模型準確度,而仿真模型需要采用有效的校正方法以符合實際情況、提高模型的準確度,但目前尚未見到有效的方法。針對上述問題,本文介紹了共軸雙旋翼直升機仿真建模方法及系統開發,在旋翼拉力計算中采用了動態入流理論實現了氣動載荷的實時計算,并針對共軸雙旋翼及機體的氣動耦合性提出了根據實驗數據的修正方法。系統程序方面采用OSG開源高級圖形庫與C++語言開發,其不依賴于第三方軟件,具有擴展性好、重用性高等特點。

1共軸雙旋翼直升機數學模型

1.1動力學模型

共軸雙旋翼直升機動力學仿真系統的核心問題就是建立動力學模型求解不同狀態下目標直升機所受到的合力與合力矩,再通過力和力矩求解六自由度運動微分方程從而獲得直升機的飛行狀態。根據動量及動量矩定理,共軸雙旋翼直升機的力和力矩及運動學方程表示如下:

在上述公式中,上下旋翼的合力與合力矩計算是難點。在這一方面有很多學者給出了計算方式,這些計算方式主要分為兩種:一種是理論計算法,通過現有的力學、空氣動力學等理論計算出雙旋翼氣動力;第二種是通過實驗觀察獲得實驗數據,并通過整理實驗數據獲得雙旋翼氣動力曲線。上述兩種解算方式中,第一種方式的計算量過于龐大,第二種方式則太過于依賴實驗,本系統采用葉素法并根據實驗數據引入誘導速度干擾系數K修正結果,該算法首先需要將槳葉分為若干微段,每一段定義為一個葉素,并將每一段的力與力矩以微分的形式表達出來,其表達式如下:

其中,已知量為c槳葉弦長,dr葉素的寬度,ρ為當地空氣密度,上述微分項通過積分可求解出旋翼氣動力與力矩。其中的未知量CL、CD、CM分別為升力系數、阻力系數、力矩系數,‖Va‖為氣動速度的幅值。這兩個未知量都需要通過氣動速度Va求解,其表達式如下:

上述數學模型由于是基于實際實驗數據進行的擬合與求解,因此比單純理論計算的精度要高,數據量相對較小,并且也不完全依賴于實驗獲得數據,因此也不會對實驗條件有很高的要求,可以適應實時仿真的計算量要求。〖BT2〗〖WTHZ〗〖STHZ〗1.2基本控制模型〖HT〗〖WT〗〖ST〗本系統所用的姿態自動控制方法主要包括總矩控制、反扭矩控制與橫縱向周期變矩控制。本系統的總矩控制用半差動控制,該控制方法上旋翼槳距角根據總矩變化進行調整。在總矩一定的情況下,根據上旋翼反扭矩情況再控制下旋翼槳距角從而實現上下旋翼的扭矩平衡。在該方案下,偏航控制也將使用半差動控制來實現,而由于下旋翼槳距角改變而產生的整體升力變化則交給上下旋翼共用的總矩控制,其中下旋翼槳距角調整量表達式如下:

其中,θ為當前偏航角與預期偏航角的差值,ω0為當前偏航角速度,α0為角加速度,Δɑ為下旋翼總矩調整量,a、b、c均為調整參數,需要根據機身x軸方向轉動慣量及旋翼參數進行調整。仿真系統中的總矩控制與橫、縱向周期變矩控制均主要分為輔助控制與手動控制兩部分。其中總矩控制分為下降輔助控制與手動控制,橫、縱向周期變矩控制則是在手動控制基礎上增加了橫向速度抑制控制與橫縱向穩定控制。由于目標直升機旋翼半徑較小、轉速較高,并且仿真程序考慮了槳根處的反流區,所以在下降過程中槳根部分會出現較顯著的升力損失,從而導致下降控制困難的問題。因此需要在總矩控制中增加下降控制,更好地限制下降速度,降低下降難度。基于上述原因,設計槳距角控制表達式如下:

2仿真系統結構

分析可知,仿真程序主要包含直升機動力學模型、旋翼動力學模型、機身動力學模型、起落架動力學模型、大氣環境模型、姿態控制模型、飛行狀態更新、視景顯示更新系統,如圖1所示。 共軸雙旋翼直升機仿真系統可接收來自操縱桿、鍵盤、鼠標等設備的數據信號并通過接口程序轉化為可被動力學模型調用的操縱數據與可被控制程序識別的基本命令。其中的基本控制指令會被控制程序讀取,而操縱數據則會與當前大氣環境信息一同輸入到動力學模型中進行解算。如上節所述,通過解算動力學模型會得到直升機的力與力矩再根據這些力與力矩,便可以求解運動方程,從而得到直升機的運動情況。經過osg的圖形處理顯示到屏幕或其它輸出設備上,同時會通過輸出vs窗口記錄下需要顯示的所有數據信息,并將有用數據反饋給大氣環境模型與控制程序從而形成閉環控制。

3仿真程序實現

3.1OSG平臺及主程序實現

OSG(OpenSceneGraph)是一套基于OpenGL專為3D計算機圖形學而開發的高級跨平臺可編程接口[8]。作為一個通用的開源高級跨平臺圖形庫,為用戶提供了完整和獨立的可視化功能,允許用戶仿真程序與可視化程序分開。本系統采用OSG三維仿真平臺開發,其OSG主程序代碼如下:int main() { osgViewer::Viewer viewer;//創建場景瀏覽器 osg::ref_ptr root=new osg::Group();//創建根節點 osg::ref_ptrJDUAVNode=createModelNode(osg::Vec3(0.0f,0.0f,0.0f),osg::Vec3(1.0f,1.0f,1.0f),osgDB::readNodeFile("D:/Models/Helicopter/JDUAV_blurproxy.ive"),JDUAVName); //加載共軸雙旋翼直升機可視化模型 osg::ref_ptrFireNode=createModelNode(osg::Vec3(0.0f,0.0f,0.0f),osg::Vec3(1.0f,1.0f,1.0f), osgDB::readNodeFile("D:/Models/Helicopter/fire.osg"),Fire_Name); //加載爆炸后的粒子煙火模型 root>addChild(model.get());//添加模型節點 root>addChild(createLights());// 添加全局光照 viewer.setSceneData(root.get());//節點添加到場景 osg::ref_ptr camera=new MyCamera();//添加視景漫游器 root>setEventCallback(new ControlCenter()); //回調函數 ………… return viewer.run();} 為了將各種模型與場景加載到視景之中,主程序通過PositionAttitudeTransform創建了一個根節點與若干葉節點,該命令用以創建空間變換節點,其中createModelNode為創建葉節點命令,其后括號內的命令用以設置該處加載模型的位置坐標、大小、模型儲存路徑及對象名稱,然后將這些葉節點以子節點的形式添加到根節點之下,從而建立一個樹狀結構的場景邏輯關系;然后viewer.setSceneData(root.get())命令將根節點極其之下子節點加載到場景之中;最后通過定義視景漫游器與回調函數將程序計算的各種動力學與運動參數導入場景之中并將場景信息顯示給用戶。本程序自定義了一個名為MyCamera的場景瀏覽器,可實現視點的跟蹤與手動轉換等功能。通過root>setEventCallback(……)命令,創建事件監聽回調函數,將ControlCenter程序中計算的六自由度運動參數導入到主程序中,更新各模型、特效、視點的位置與顯示狀態。

3.2程序主體類劃分及程序實現

按照上文關于動力學建模的介紹,程序主體部分建立了主旋翼、翼型、機身、起落架、發動機、大氣、重力等計算模塊,此外還有匯總解算、數學函數模塊。根據上述模塊采用面向對象的方法設計類??紤]到程序的擴展與應用,設計了一些基類,并以此派生出具體機型的計算類,其具體劃分與繼承關系如圖2所示。

在上述所劃分模塊中的A部分為總類完成動力學模型總體解算,其中的主體部分為JDUAV類也是整個仿真程序的最主要部分;B列從上到下依次為旋翼類與葉素類(左)、槳葉類共同完成旋翼動力學模型的解算;此外還有機身動力學模型解算類、姿態控制類及起落架動力學模型計算類分別對應機身動力學模型解算、姿態控制與起落架動力學模型計算。下面將分別對JDUAV類、主旋翼類與姿態控制類的程序定義進行簡單說明。class JDUAV:public Helicopter{public: void initialize();//初始化所有部件的相關參數 void calculate(double deltaT);//重寫動力學解算函數 void updateInput(......);//更新輸入數據 private: JDUAVMainRotor mainRotorUp; //上旋翼 JDUAVMainRotor mainRotorDown;//下旋翼 JDUAVFuselage fuselage;//機身 JDUAVLandingGear forwardRightGear;//前右起落架 JDUAVOperateData operateData;//操縱器 JDUAVEnvironment atmosphere;//大氣環境 }; 上述為JDUAV類的部分源代碼,首先通過Initialize函數初始化所有部件的相關參數,其中首先需要初始化如當前時間(currTime)、質量矩陣(Mb)、姿態角(attitude)、某些坐標、速度、加速度、重力這些不變的參數。更重要的是需要創建如起落架(Gear)、尾推(Thruster)這種動力學計算對象,這樣就可以實現程序的重用,從而簡化程序。最后也會初始化如陀螺力矩、大氣環境等計算類。 Calculate函數是該類的主體部分,首先需要記錄系統運行時間,并判定直升機是否處于失控狀態下,如果處于失控狀態則轉入失控狀態動力學解算程序,如果沒有失控則需要將一系列的當前狀態數據導入到諸如大氣環境解算、姿態控制等類中。并依次解算上下旋翼、機身、起落架、尾推的力合力矩以及重力與陀螺效應產生的力矩。然后計算合力與合力矩updateInput()函數為控制參數更新類,因為通過后續運行與實際考察發現,共軸雙旋翼直升機在獲得了飛行速度與航程優勢的同時也導致了其穩定性的大幅度下降,同時在總矩,橫、縱向周期變矩周期的操縱過程中存在著強烈的耦合。這導致直升機在做幾乎所有機動動作時都存在不同程度的組合運動。這些耦合作用十分影響直升機的穩定性,因此在仿真系統中加入了多個輔助控制程序:橫、縱向周期變矩控制,反扭矩控制,總矩控制等程序。上述程序就是在總類中姿態控制程序數據更新部分再根據1.2節中的控制模型即可完成直升機控制。 最后程序分別創建了直升機各動力學組件的對象,實現程序的重用,以供主程序調用。class JDUAVMainRotor :public MainRotor{public: void initialize(……);//重寫初始化方法 void calculate(……);//重寫動力學解算方法 void createBlades(int Nb);//生成槳葉對象 double getBeita(int bladeID);//獲取槳葉的揮舞角,度private: double K; double theta00;}; 上述為主旋翼動力學解算類的定義程序,主旋翼部分程序首先通過Initialize函數初始化旋翼的各種物理參數及相關常量。然后定義了一個Calculate函數用于實時計算旋翼的氣動力及力矩,具體算法參見第1節。 createBlades(int Nb)為創建槳葉對象,其中包含整形變量Nb表示所初始化槳葉的編號,該對象將會在程序中多次重用。getBeita(int bladeID)及之后省略的程序段定義了大量從槳葉中獲取各種變量的傳遞函數,這些傳遞函數為了區分方便需分別在創建時保存其槳葉編號bladeID。 最后該程序定義了一些私有變量如誘導速度干擾系數(K)、初始槳距角(theta00)等。class HeliOperateData{ public: virtual void initialize(……) double getA1();//獲取橫向周期變距響應值,弧度 void setData(……);//設置輸入量 protected: virtual void controlYaw(……);//偏航控制 virtual void controlPitch(……);//俯仰控制 virtual void controlRoll(……);//滾轉控制 double DArrayn_Yaw,DArrayn_Pitch,DArrayn_Roll; //滾轉,俯仰,偏航角速度}; 上述為姿態控制類的定義,該部分首先依靠Initialize初始化大量姿態控制函數與變量,隨后定義了大量如getA1與setData的傳遞函數,用于將各種控制變量導入、導出其余各動力學結算類。 該類的主體部分為controlYaw、controlPitch、controlPitch3個函數,分別控制直升機的偏航、俯仰與滾轉。程序最后定義了大量參量如滾轉角速度DArrayn_Yaw、俯仰角速度DArrayn_Pitch、偏航角速度DArrayn_Roll等飛行狀態數值。3.3系統運行結果

共軸雙旋翼直升機仿真系統可實現直升機在起飛、降落、偏航、滾轉、俯仰、平飛、懸停等飛行狀態的仿真,具備自動降落、自動消除側滑速度、自動懸停等自動飛行控制,同時也可以模擬直升機在不同風速、空氣密度下的飛行。通過上述模擬飛行,本系統可幫助評估目標直升機的飛行性能,預測可能出現的設計問題,從而縮短設計周期,降低研究經費。該系統在某無人直升機的設計中進行了成功應用,用于評估飛機機身氣動性能、旋翼氣動性能和最大飛行速度等指標,其運行效果如圖3所示。 為使用方便,右上角顯示直升機坐標位置、運行時間、線速度、角速度、姿態角、直升機各氣動組件力和力矩、操縱參數、大氣數據等信息。并且在debug模式下運行程序可顯示任何變量數據并以txt格式保存下來以供后續分析。 城市名之間使用英文逗號隔開,城市名和郵編之間使用一個英文空格隔開,不能用逗號。

4結語

本文研究了共軸雙旋翼直升機的仿真建模方法及系統開發。在建模方法上,采用了先進的動態入流速度計算方法,并提出了一種氣動耦合校正方法,保證了模型的相對準確性。在系統開發方面,采用OSG開源平臺及面向對象技術,使系統開發效率高、擴展性及維護性好,擺脫了對第三方軟件的依賴。該仿真系統具備了共軸雙旋翼直升機的基本飛行及控制功能,具有一定通用性,可用于直升機設計及培訓等領域。該系統在某無人直升機的設計中進行了成功應用。

參考文獻:[1]陳銘.共軸雙旋翼直升機的技術特點及發展[J].航空制造技術,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]夏青云,徐錦法.變轉速共軸旋翼載荷建模及實驗驗證[J].實驗力學,2012(4):432439.

[6]于琰平.基于Flight Gear的四旋翼無人機三維可視仿真系統研究[D].天津:天津大學,2010.

[7]吳文建.無人共軸剛性直升機氣動特性分析及視景仿真研究[D].長春:吉林大學,2015.

[8]王銳,錢學雷.OpenSceneGraph三維渲染引擎設計與實踐[M].北京:清華大學出版社,2009.

(責任編輯:孫娟)

主站蜘蛛池模板: 国产成人综合日韩精品无码首页| 国产精品一线天| 亚洲一级毛片在线观播放| 六月婷婷激情综合| 亚洲美女一级毛片| 精品亚洲麻豆1区2区3区| 在线观看国产精品一区| 欧美性猛交一区二区三区| 国产极品嫩模在线观看91| 无码国产伊人| 欧美中文字幕一区二区三区| 免费av一区二区三区在线| 亚洲综合色吧| 97国产精品视频人人做人人爱| 国产成人禁片在线观看| 成人免费黄色小视频| 韩日午夜在线资源一区二区| 97se亚洲综合在线韩国专区福利| 精品人妻系列无码专区久久| 国产SUV精品一区二区6| 国产福利大秀91| 青青草原国产一区二区| www.精品国产| 国产在线自在拍91精品黑人| 国产视频 第一页| 免费在线a视频| 国产成人做受免费视频| 国产小视频在线高清播放| 成人午夜视频在线| 曰韩免费无码AV一区二区| 午夜精品久久久久久久99热下载 | 性色一区| 亚洲啪啪网| 国产综合在线观看视频| 国产97视频在线观看| 亚洲精品无码AV电影在线播放| 亚洲首页国产精品丝袜| 美女无遮挡拍拍拍免费视频| 97se亚洲| 狠狠色成人综合首页| 高清不卡一区二区三区香蕉| 亚洲国产中文在线二区三区免| 中文字幕在线观看日本| 91福利一区二区三区| 日本久久网站| 91精品国产自产在线老师啪l| 亚洲日本精品一区二区| 国产美女在线免费观看| 亚洲天堂2014| 免费观看亚洲人成网站| 亚洲视频在线观看免费视频| 色婷婷亚洲综合五月| 久久99国产精品成人欧美| 亚洲精品第1页| 中文字幕无码中文字幕有码在线| 国产成人亚洲精品无码电影| 国产精品部在线观看| 日韩人妻精品一区| 永久天堂网Av| 成年女人a毛片免费视频| 四虎影院国产| 欧美激情综合| 午夜欧美在线| 国产精品久久久久久久久| 九九九精品成人免费视频7| 色综合五月婷婷| 91久久国产热精品免费| 色亚洲成人| 9999在线视频| 亚洲娇小与黑人巨大交| 亚洲成人一区在线| 国产成人综合网| 亚洲无码视频图片| 国产亚卅精品无码| 久久久久国产精品熟女影院| 在线综合亚洲欧美网站| 国产精品香蕉在线| 精品無碼一區在線觀看 | 欧美a√在线| 福利一区在线| 一本大道香蕉中文日本不卡高清二区| 亚洲高清资源|