WSF_6DOF_MOVER(AFSIM,标准名称:WSF_P6DOF_MOVER,Pseudo 6DOF 六自由度)
很多工程文档里口语简写叫 WSF_6DOF_MOVER,AFSIM 官方名字是
WSF_P6DOF_MOVER,属于WSF(World Simulation Framework)里的 Mover(运动解算组件),用于高保真飞行器动力学仿真(飞机、导弹、无人机)。
一、核心概念
Mover:AFSIM平台上负责更新平台位置、速度、姿态、角速度的组件;没有mover的平台固定不动。
6DOF / P6DOF(伪六自由度)
6个自由度:
- 3个平动:纵向(前后)、侧向(左右)、垂向(上下)
- 3个转动:滚转Roll、俯仰Pitch、偏航Yaw
Pseudo(伪)含义:不是完整的刚体六自由度全微分方程组工程级飞行力学,是工程简化版6DOF,适合任务级/交战级仿真,不是飞行模拟器那种极高保真度工程仿真;兼顾保真度和仿真运行速度,支持蒙特卡洛批量推演。
和简易Mover的本质区别
WSF_AIR_MOVER/WSF_KINEMATIC_MOVER:运动学模型,只按航线、最大过载/速度做轨迹插值,不求解气动、推力、力矩;你命令它怎么飞,它就怎么飞,不会因为包线限制而失速、无法完成机动。- WSF_P6DOF_MOVER:动力学模型。每仿真步求解:气动升力/阻力/力矩 + 发动机推力 + 质量/惯量。平台能不能完成转弯、爬升、大过载机动,由机体气动包线、推力、燃油状态决定,会出现失速、超限过载、燃油耗尽性能下降等物理约束。
二、架构:Mover 和 six_dof_type 解耦(非常关键)
six_dof_type 【机型数据库,定义“是什么飞机”】 ↓引用 WSF_P6DOF_MOVER 【动力学求解器,定义“怎么运动”】 ↓挂载到 platform_type → platform实例(平台实体)six_dof_type:独立机型描述块,存放这架飞行器全部固有参数(气动系数表、参考面积、质量、转动惯量、推力曲线、燃油、操纵面效率)。WSF_P6DOF_MOVER本身不带机型数据,只负责微分方程积分、受力力矩计算;同一个six_dof_type可以被大量平台实例复用,便于批量红蓝方兵力建模。
三、核心输入参数(脚本内配置)
1)Mover块参数(mover WSF_P6DOF_MOVER 内部)
| 参数 | 含义 |
|---|---|
six_dof_type <name> | 必填,指向预先定义好的机型类型 |
update_interval | 动力学解算步长;剧烈交战建议0.02~0.05s;步长太大容易数值发散、轨迹漂移;步长越小CPU开销越高 |
2)six_dof_type 机型定义块(核心物理参数)
| 参数 | 含义 |
|---|---|
| mass | 基准质量(kg) |
| fuel_mass | 初始燃油质量,燃油消耗会动态减小总质量,改变推重比 |
| reference_area | 气动参考面积,升力阻力计算必需 |
| inertia 惯量张量 | Ixx/Iyy/Izz 滚转/俯仰/偏航转动惯量,决定姿态响应快慢 |
| thrust table | 推力随高度、马赫数、油门变化的推力表 |
| aerodynamic_coefficient 系数表 | CL升力、CD阻力、CM俯仰力矩、CR滚转力矩、CY偏航力矩,随马赫、攻角、舵偏查表 |
| control surface | 升降舵、副翼、方向舵的操纵面效率、最大偏角限制 |
| flight envelope 包线限制 | 最大马赫、最大动压、最大过载、攻角失速阈值 |
四、仿真解算流程(每个update_interval执行一次)
- 获取平台当前状态:位置、速度、姿态四元数、角速度、燃油、高度、大气环境(密度、声速)
- 根据马赫数、攻角、舵偏角查表得到气动系数 → 计算气动力、气动力矩
- 根据高度/马赫/油门查表获得发动机推力
- 合力、合力矩代入刚体动力学方程,计算线加速度、角加速度
- 数值积分(常用RK4之类)更新:速度、位置、欧拉角/四元数、角速度
- 做包线判断:超限则触发失速、舵面饱和、过载保护,无法执行指令机动
- 更新燃油质量;输出平台姿态/位置给传感器、武器组件
上层行为/任务处理器(WSF_TASK_PROCESSOR)输出**操纵指令(目标过载、目标滚转角、油门)**给P6DOF mover,而不是直接指定航路点速度;mover内部的飞控闭环会尝试跟踪目标指令,但受物理包线约束。
五、最小脚本示例(AFSIM脚本)
# 第一步:定义六自由度机型数据 six_dof_type my_fighter mass 8000.0 fuel_mass 2000.0 reference_area 25.0 # 省略大量气动系数、推力表、惯量 end_six_dof_type # 第二步:定义平台类型,挂载P6DOF mover platform_type BLUE_FIGHTER WSF_PLATFORM side blue mover WSF_P6DOF_MOVER six_dof_type my_fighter update_interval 0.02 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六、适用场景 & 局限性
✅适合
- 交战级仿真:空战、导弹拦截,需要真实机动包线、过载、失速、能量机动评估
- 评估战机/无人机的机动能力、爬升、加速、燃油消耗
- 高价值核心平台(红蓝方主力战机、高超弹);其余大量次要平台用kinematic降低算力开销
❌不适合
- 不需要精细机动的远距离支援平台、大量辅助飞机(用WSF_AIR_MOVER)
- 地面/水面/水下载具(用WSF_GROUND_MOVER / WSF_SURFACE_MOVER / WSF_SUBSURFACE_MOVER)
- 高精度工程级飞力学验证(P是Pseudo,不是全保真6DOF)
七、工程常见坑
- six_dof_type必须在引用它的mover之前定义,AFSIM顺序解析,放后面直接报错找不到类型
- 步长过大:高速大机动场景,
update_interval=0.5s极易积分发散,飞机直接“飞飘” - 气动表缺失:只填质量推力,缺少力矩系数,姿态无法稳定,飞机姿态乱转
- 包线没有限制:不设置失速攻角,模型会出现物理上不可能的机动
- 算力爆炸:所有平台全部上P6DOF,大兵力场景仿真速度急剧下降;工程原则:只给关键交战平台启用P6DOF
八、与其它WSF Mover横向对比
| Mover类型 | 保真度 | 是否求解气动/推力 | 算力开销 | 典型用途 |
|---|---|---|---|---|
| WSF_KINEMATIC_MOVER | 中 | ❌ | 低 | 平滑航线机动,无物理约束 |
| WSF_AIR_MOVER | 低 | ❌ | 很低 | 简单航路飞行 |
| WSF_P6DOF_MOVER | 高 | ✅ | 高 | 空战、高保真飞行器 |
| WSF_GUIDED_MOVER | 中高 | 部分 | 中 | 制导炸弹、导弹 |