AFSIM 示例解读(02)· 六自由度飞行仿真 six_dof(上):飞机类型建模
能力标签六自由度 / WSF_P6DOF_MOVER / 飞机类型库 six_dof_type / 类型与实例解耦 / 保真度分配这个 demo 在展示什么WSF_P6DOF_MOVER是 AFSIM 里高保真飞行的标杆。和运动学机动我让你往哪走你就往哪走不同六自由度P6DOF会真的求解飞机的气动、推力、质量、力矩平台能不能完成某个机动取决于它的气动包线和发动机——飞机会失速、会过载、会受油量限制。这意味着用six_dof你得先有一份飞机类型数据气动系数、质量、推力曲线等AFSIM 管这叫six_dof_type。six_dof能力的核心价值一半在怎么把 P6DOF movers 跑起来另一半在怎么组织这一大堆飞机类型数据。核心机制mover 与 type 的分离WSF_P6DOF_MOVER本身只描述怎么飞具体飞什么飞机由six_dof_type指向一份类型数据。这种mover 管动力学、type 管机体的分离是 AFSIM 机动模型的通用范式six_dof_type气动/质量/推力数据WSF_P6DOF_MOVER求解六自由度方程平台状态位置/速度/姿态/过载sensor / weapon标准接口消费关键点在于类型数据和平台实例是解耦的。同一份my_fighter_type可以被 10 个平台共用想改飞机性能改类型数据即可不用动每个平台。真实可跑的最小片段AFSIM 2.9 语法示意下面把类型定义 mover 挂载 实例化三段式写清楚。语法范式取自 AFSIM 2.9 公开能力文档按本系列片段式、无顶层包裹的结构书写其中气动系数表以通用占位字段示意非特定机型数据# ① 飞机类型数据定义飞什么 six_dof_type my_fighter_type mass 8000 kg # 机体质量 reference_area 25 m2 # 参考面积气动用 thrust_max 90000 N # 最大推力 fuel_mass 2000 kg # 载油量影响航程/续航 # aerodynamic_coefficient 表、操纵面效率等在此展开 end_six_dof_type # ② 平台类型挂 P6DOF mover 并指向机型 platform_type BLUE_FIGHTER WSF_PLATFORM side blue mover WSF_P6DOF_MOVER six_dof_type my_fighter_type # 指向上面定义的类型 update_interval 0.02 sec # 高保真解算步长越小越准越贵 end_mover end_platform_type # ③ 实例化并摆到战场 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把上面三段存进同一份.txt类型定义在前、实例在后mission.exe即可解算。注意six_dof_type必须先定义后被引用——AFSIM 按文本顺序解析把类型块写在文件末尾会解析不到。关键参数速查参数所在组件类型 / 单位默认值取值说明调参影响six_dof_typemover (P6DOF)类型名 (字符串)无必填指向飞机类型数据决定气动/推力特性缺则 mover 无法解算update_intervalmover (P6DOF)时间 (sec)引擎默认机动解算步长高速/剧烈机动建议 ≤0.05 s否则轨迹漂移masssix_dof_type质量 (kg)无必填机体质量影响加速度与机动包线与推力共决推重比reference_areasix_dof_type面积 (m²)无必填气动参考面积参与升力/阻力计算直接改机动性能thrust_maxsix_dof_type力 (N)无必填最大推力决定爬升率/加速性过小飞不出包线fuel_masssix_dof_type质量 (kg)引擎默认载油量影响续航油尽后质量下降、包线变化飞机类型数据怎么组织真实飞机类型是一张庞大的气动系数表AFSIM 用专门的格式存six_dof_type块内的aerodynamic_coefficient表 推力/质量定义。工程里我建议按机型建目录six_dof_types/fighter/、six_dof_types/bomber/别把几十种飞机塞一个文件。基类 派生用 AFSIM 的base_type/derive机制先定义一架通用战斗机再派生具体型号只改差异项。先验证单机再组网一个新飞机类型先用最小想定飞一段直线转弯看速度/高度曲线合理了再放进大想定。运动学 vs 六自由度什么时候用哪个维度kinematic_moversix_dof (P6DOF)求解内容速度/航向积分全气动推力质量数据需求几乎为零完整飞机类型数据CPU 成本低高每步解算方程适用单位大部分蓝/红方关键交战单位、需真实机动效应的失速/过载无有备注一个常见误区是全用 six_dof 才专业。事实是100 个平台里可能只有交战双方的主力机值得上 P6DOF其余用运动学整体仿真又快又够用。性能与保真度要按谁影响结论来分配。工程实践与常见坑类型未定义就引用。AFSIM 按文本顺序解析six_dof_type必须出现在引用它的mover之前。把类型库include进来时确认 include 语句在平台定义之前。步长太大导致数值发散。P6DOF 每步解非线性方程步长取 0.5 s 在剧烈机动时容易飞出去。高保真单位建议update_interval0.02~0.05 s代价是这些平台把整体解算节奏拉慢。类型数据不全就起飞。只给了mass没给reference_area解算会缺气动项只给推力没给fuel_mass航程/质量变化失真。一份能飞的six_dof_type至少要有质量、参考面积、推力三项。把 P6DOF 当万金油。无人机、地面车辆、舰船上 P6DOF 既贵又没必要它们有更轻的 mover见卷一 kinematic / surface。保真度按影响结论的单位分配不是全场拉满。小结与下一篇本篇讲了WSF_P6DOF_MOVER的骨架mover 负责怎么飞six_dof_type负责飞什么飞机两者解耦。下一篇我们看six_dof里更重的部分——机场运作与弹道导弹投送也就是当 P6DOF 遇上起降和助推段弹道时想定该怎么组织。下一篇预告03六自由度飞行仿真 six_dof下机场运作与弹道导弹投送里更重的部分——机场运作与弹道导弹投送也就是当 P6DOF 遇上起降和助推段弹道时想定该怎么组织。下一篇预告03六自由度飞行仿真 six_dof下机场运作与弹道导弹投送