· 六自由度飛行仿真 six_dof(上):飛機(jī)類(lèi)型建模)
能力標(biāo)簽六自由度 / WSF_P6DOF_MOVER / 飛機(jī)類(lèi)型庫(kù) six_dof_type / 類(lèi)型與實(shí)例解耦 / 保真度分配這個(gè) demo 在展示什么WSF_P6DOF_MOVER是 AFSIM 里高保真飛行的標(biāo)桿。和運(yùn)動(dòng)學(xué)機(jī)動(dòng)我讓你往哪走你就往哪走不同六自由度P6DOF會(huì)真的求解飛機(jī)的氣動(dòng)、推力、質(zhì)量、力矩平臺(tái)能不能完成某個(gè)機(jī)動(dòng)取決于它的氣動(dòng)包線和發(fā)動(dòng)機(jī)——飛機(jī)會(huì)失速、會(huì)過(guò)載、會(huì)受油量限制。這意味著用six_dof你得先有一份飛機(jī)類(lèi)型數(shù)據(jù)氣動(dòng)系數(shù)、質(zhì)量、推力曲線等AFSIM 管這叫six_dof_type。six_dof能力的核心價(jià)值一半在怎么把 P6DOF movers 跑起來(lái)另一半在怎么組織這一大堆飛機(jī)類(lèi)型數(shù)據(jù)。核心機(jī)制mover 與 type 的分離WSF_P6DOF_MOVER本身只描述怎么飛具體飛什么飛機(jī)由six_dof_type指向一份類(lèi)型數(shù)據(jù)。這種mover 管動(dòng)力學(xué)、type 管機(jī)體的分離是 AFSIM 機(jī)動(dòng)模型的通用范式six_dof_type氣動(dòng)/質(zhì)量/推力數(shù)據(jù)WSF_P6DOF_MOVER求解六自由度方程平臺(tái)狀態(tài)位置/速度/姿態(tài)/過(guò)載sensor / weapon標(biāo)準(zhǔn)接口消費(fèi)關(guān)鍵點(diǎn)在于類(lèi)型數(shù)據(jù)和平臺(tái)實(shí)例是解耦的。同一份my_fighter_type可以被 10 個(gè)平臺(tái)共用想改飛機(jī)性能改類(lèi)型數(shù)據(jù)即可不用動(dòng)每個(gè)平臺(tái)。真實(shí)可跑的最小片段AFSIM 2.9 語(yǔ)法示意下面把類(lèi)型定義 mover 掛載 實(shí)例化三段式寫(xiě)清楚。語(yǔ)法范式取自 AFSIM 2.9 公開(kāi)能力文檔按本系列片段式、無(wú)頂層包裹的結(jié)構(gòu)書(shū)寫(xiě)其中氣動(dòng)系數(shù)表以通用占位字段示意非特定機(jī)型數(shù)據(jù)# ① 飛機(jī)類(lèi)型數(shù)據(jù)定義飛什么 six_dof_type my_fighter_type mass 8000 kg # 機(jī)體質(zhì)量 reference_area 25 m2 # 參考面積氣動(dòng)用 thrust_max 90000 N # 最大推力 fuel_mass 2000 kg # 載油量影響航程/續(xù)航 # aerodynamic_coefficient 表、操縱面效率等在此展開(kāi) end_six_dof_type # ② 平臺(tái)類(lèi)型掛 P6DOF mover 并指向機(jī)型 platform_type BLUE_FIGHTER WSF_PLATFORM side blue mover WSF_P6DOF_MOVER six_dof_type my_fighter_type # 指向上面定義的類(lèi)型 update_interval 0.02 sec # 高保真解算步長(zhǎng)越小越準(zhǔn)越貴 end_mover end_platform_type # ③ 實(shí)例化并擺到戰(zhàn)場(chǎng) platform ftr_01 BLUE_FIGHTER position 34.0n 120.0e altitude 8000 m msl route position 34.0n 120.0e altitude 8000 m msl speed 250 m/s position 35.0n 121.0e altitude 9000 m msl speed 250 m/s end_route end_platform把上面三段存進(jìn)同一份.txt類(lèi)型定義在前、實(shí)例在后mission.exe即可解算。注意six_dof_type必須先定義后被引用——AFSIM 按文本順序解析把類(lèi)型塊寫(xiě)在文件末尾會(huì)解析不到。關(guān)鍵參數(shù)速查參數(shù)所在組件類(lèi)型 / 單位默認(rèn)值取值說(shuō)明調(diào)參影響six_dof_typemover (P6DOF)類(lèi)型名 (字符串)無(wú)必填指向飛機(jī)類(lèi)型數(shù)據(jù)決定氣動(dòng)/推力特性缺則 mover 無(wú)法解算update_intervalmover (P6DOF)時(shí)間 (sec)引擎默認(rèn)機(jī)動(dòng)解算步長(zhǎng)高速/劇烈機(jī)動(dòng)建議 ≤0.05 s否則軌跡漂移masssix_dof_type質(zhì)量 (kg)無(wú)必填機(jī)體質(zhì)量影響加速度與機(jī)動(dòng)包線與推力共決推重比reference_areasix_dof_type面積 (m2)無(wú)必填氣動(dòng)參考面積參與升力/阻力計(jì)算直接改機(jī)動(dòng)性能thrust_maxsix_dof_type力 (N)無(wú)必填最大推力決定爬升率/加速性過(guò)小飛不出包線fuel_masssix_dof_type質(zhì)量 (kg)引擎默認(rèn)載油量影響續(xù)航油盡后質(zhì)量下降、包線變化飛機(jī)類(lèi)型數(shù)據(jù)怎么組織真實(shí)飛機(jī)類(lèi)型是一張龐大的氣動(dòng)系數(shù)表AFSIM 用專(zhuān)門(mén)的格式存six_dof_type塊內(nèi)的aerodynamic_coefficient表 推力/質(zhì)量定義。工程里我建議按機(jī)型建目錄six_dof_types/fighter/、six_dof_types/bomber/別把幾十種飛機(jī)塞一個(gè)文件。基類(lèi) 派生用 AFSIM 的base_type/derive機(jī)制先定義一架通用戰(zhàn)斗機(jī)再派生具體型號(hào)只改差異項(xiàng)。先驗(yàn)證單機(jī)再組網(wǎng)一個(gè)新飛機(jī)類(lèi)型先用最小想定飛一段直線轉(zhuǎn)彎看速度/高度曲線合理了再放進(jìn)大想定。運(yùn)動(dòng)學(xué) vs 六自由度什么時(shí)候用哪個(gè)維度kinematic_moversix_dof (P6DOF)求解內(nèi)容速度/航向積分全氣動(dòng)推力質(zhì)量數(shù)據(jù)需求幾乎為零完整飛機(jī)類(lèi)型數(shù)據(jù)CPU 成本低高每步解算方程適用單位大部分藍(lán)/紅方關(guān)鍵交戰(zhàn)單位、需真實(shí)機(jī)動(dòng)效應(yīng)的失速/過(guò)載無(wú)有備注一個(gè)常見(jiàn)誤區(qū)是全用 six_dof 才專(zhuān)業(yè)。事實(shí)是100 個(gè)平臺(tái)里可能只有交戰(zhàn)雙方的主力機(jī)值得上 P6DOF其余用運(yùn)動(dòng)學(xué)整體仿真又快又夠用。性能與保真度要按誰(shuí)影響結(jié)論來(lái)分配。工程實(shí)踐與常見(jiàn)坑類(lèi)型未定義就引用。AFSIM 按文本順序解析six_dof_type必須出現(xiàn)在引用它的mover之前。把類(lèi)型庫(kù)include進(jìn)來(lái)時(shí)確認(rèn) include 語(yǔ)句在平臺(tái)定義之前。步長(zhǎng)太大導(dǎo)致數(shù)值發(fā)散。P6DOF 每步解非線性方程步長(zhǎng)取 0.5 s 在劇烈機(jī)動(dòng)時(shí)容易飛出去。高保真單位建議update_interval0.02~0.05 s代價(jià)是這些平臺(tái)把整體解算節(jié)奏拉慢。類(lèi)型數(shù)據(jù)不全就起飛。只給了mass沒(méi)給reference_area解算會(huì)缺氣動(dòng)項(xiàng)只給推力沒(méi)給fuel_mass航程/質(zhì)量變化失真。一份能飛的six_dof_type至少要有質(zhì)量、參考面積、推力三項(xiàng)。把 P6DOF 當(dāng)萬(wàn)金油。無(wú)人機(jī)、地面車(chē)輛、艦船上 P6DOF 既貴又沒(méi)必要它們有更輕的 mover見(jiàn)卷一 kinematic / surface。保真度按影響結(jié)論的單位分配不是全場(chǎng)拉滿(mǎn)。小結(jié)與下一篇本篇講了WSF_P6DOF_MOVER的骨架mover 負(fù)責(zé)怎么飛six_dof_type負(fù)責(zé)飛什么飛機(jī)兩者解耦。下一篇我們看six_dof里更重的部分——機(jī)場(chǎng)運(yùn)作與彈道導(dǎo)彈投送也就是當(dāng) P6DOF 遇上起降和助推段彈道時(shí)想定該怎么組織。下一篇預(yù)告03六自由度飛行仿真 six_dof下機(jī)場(chǎng)運(yùn)作與彈道導(dǎo)彈投送里更重的部分——機(jī)場(chǎng)運(yùn)作與彈道導(dǎo)彈投送也就是當(dāng) P6DOF 遇上起降和助推段彈道時(shí)想定該怎么組織。下一篇預(yù)告03六自由度飛行仿真 six_dof下機(jī)場(chǎng)運(yùn)作與彈道導(dǎo)彈投送