English
登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
原创商城
官方淘宝
二手市场
学院
云课堂
考试
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
联机
航空人生(连飞)
飞行人生(虚航)
空管人生(虚管)
空战人生(对战)
工具
联飞地图
航路查询
航图查询
气象报文
资源
插件库
素材库
云网盘
企业
飞行者联盟
»
论坛
›
【模拟飞行】
›
FlightGear
›
问答专区
›
【jsbsim学习】飞行器模型配置文件解读
返回列表
发新帖
查看:
1463
|
回复:
0
【jsbsim学习】飞行器模型配置文件解读
[复制链接]
lindem
lindem
当前离线
UID
4881
注册时间
2014-4-11
在线时间
小时
最后登录
1970-1-1
精华
阅读权限
30
听众
收听
雷达卡
发表于 2022-9-24 18:27:04
|
显示全部楼层
|
阅读模式
jsbsim是一个开源的飞行力学仿真软件,学习它的主要目的是希望能够实现一个类似
IL2
/1战争雷霆这样的空战游戏。虽然jsbsim能够通过socket通信直接进行调用,但是考虑到调用/打包的问题,以及二次开发的目的,决定还是在unity中使用C#实现一个简化版的气动仿真模型。最终的模型应当能够以飞行器当前状态为输入,输出6个自由度上的力/力矩,接入unity刚体组件。
以jsbsim自带的f-16模型配置文件 f16.xml为例,我们来看看里面都写了什么。
看一下xml根节点,对于实现一个简化版仿真模型来说,metrics,mass_balance,aerodynamics看起来比较重要。其他的地面互动、推力以及自动控制暂时先不看了 。顺便说一句,jsbsim最早的侧重点就是进行自动控制策略的仿真,所以flight_control还是挺详细的,但是这个还是先不和气动力学模块混在一起看了。
实际上,写这篇文章的动机主要就是把配置文件里的缩写含义都搞清楚,以便后续查找。因为里面的缩写很多都是不当人级别的,实乃一大恶习;另一大恶习就是jsbsim中大量实用英制单位(imperial帝国主义单位 ),我们社会主义的花朵看不到SI单位实在很烦躁。
metrics 节点
先来看看metrics,它描述了飞行器的几个尺寸/位置指标
wingarea=翼面积,单位 FT2=feet^2=平方英尺
wingspan 翼展,单位 FT=feet=平方英尺
chord 机翼弦长
htailarea=horizontal tail area=水平尾翼面积
htailarm=水平尾翼力臂(相对气动中心AERORP/CG)
vtailarea=vertical tail area=垂直尾翼面积
vtailarm=垂直尾翼力臂
AERORP=aerodynamic reference point=气动参考点,单位 IN=inch=英寸
EYEPOINT=飞行员视角位置
VRP=visual reference point=视觉参考点
我们看到了很多长度、面积、位置信息,在此需要补充一下jsbsim中的坐标系约定。其中所谓VRP就是下图中的一段偏移量,用来确定飞行器“鼻尖”和建模时使用的坐标原点之间的位置关系。
mass_balance节点
mass_balance描述了飞行器的质量分布参数,梦回理论力学
ixx, iyy, izz, ixy, ixz, iyz=构成刚体惯性张量的六个参数,单位 SLUG*FT2,其中slug是一个质量单位
emptywt=empty weight=空载重量,单位 LBS=
Libra pondo=
磅
CG=center of gravity=重心
Pilot=飞行员,POINTMASS=质点
这里面大概就惯性张量比较难懂了,但是不用害怕,就算啥也不会直接灌倒unity的刚体组件里就行了。平面转动的惯量比较好理解,三维情况比较麻烦的一点就是刚体角动量与瞬时角速度一般方向不同,简单来说,根据质量分布的参数我们可以推断出飞行器在力矩作用下将会如何旋转。
aerodynamics节点
这是要分析的重点数据,内容也很多,已经不能全部展开看了,看一下它的子节点吧
kCLge=k lift coefficient (by) ground effect=升力系数由于地面效应产生的变化
h_b-mac-ft=height-mean aerodynamic chord-feet
除了一个比较出戏的地面效应函数,其他六项(axis=轴)很好理解,分别对应了沿x,y,z轴平动、绕x,y,z轴转动这六个刚体运动自由度。aerodynamics节点里面包含了大量的表格,需要注意jsbsim的实现中各种非线性的公式/函数都是靠查表完成的,并且采用线性插值(没找到二/三维表格是如何插值的,姑且当作双/三线性插值)。
DRAG 轴
CDDh=drag coefficient (by) horizontal deflection=水平尾翼偏转的阻力
qbar-psf=\bar{q}=filght dynamic pressure=空气动压,单位 psf=pounds per square foot=磅力/平方英尺
Sw-sqft=S_W=Wing area=翼面积,单位 sqft=squre foot=平方英尺
alpha-rad=\alpha=angle of attack=攻角,单位=radians=弧度
elevator-pos-rad=升降舵角度
jsbsim里面的函数大部分都是乘积与查表,并且函数也自带description能够比较清晰地描述其用途,后面就不重复讨论了,只把函数、变量的缩写和物理含义写下来。
mach=马赫数
lef-pos-rad=leading edge flap position=前缘缝翼角度
flapreon-mix-rad=襟副翼混合角度?
gear-pos-norm=起落架位置,单位 norm=normalized=归一化(的值,0~1)
speedbrake-pos-rad=减速板角度
q-aero-rad_sec=(考虑了空速的)俯仰角速度,p,q,e三个角速度的定义如下图:
ci2vel=Wingchord divided (by) 2 * velocity=机翼弦长/两倍速度
SIDE 轴
beta-rad=sideslip angle=侧滑角
aileron-pos-rad=副翼偏转角
rudder-pos-rad=舵偏转角
bi2vel=Wingspan divided (by) 2 * velocity=翼展/两倍速度
p-aero-rad_sec=(考虑空速的)滚转角速度,如上图
r-aero-rad_sec=(考虑空速的)侧滑角速度,如上图
LIFT 轴 PITCH 轴 YAW 轴
bw-ft=wingspan
cbarw-ft= \bar{c}_w =mean aerodynamic chord=MAC=平均气动弦长
新的变量越来越少了,直接把这些轴写一起了。配置文件的解析就到此为止,下一步我们准备开始编写能够加载这些配置文件和进行动力学运算的程序。顺便说一下,如果一个变量在google上也搜不到的话,不妨尝试对jsbsim源码进行全局搜索,多少能找到一点蛛丝马迹,比如bi2vel系列,就是这么找到的:
IL2
相关帖子
•
KVFS_Ace在IL2:1946里的击杀录像.
•
【IL2 GB】如何玩转P-51D(上)中配
•
用于飞行模拟的FoxTracker人脸识别模拟头瞄简明介绍和使用教程
•
【IL2 GB】学到了,这就去找k4对线——P51反杀集锦(Krupinski)
•
【战争雷霆】这IL2硬到家了
•
【戈兰高地】历史上的IL2背后很硬,那BOS如何?
•
盘点曾经那些经典的空战类游戏 皇牌空战系列模拟真实的飞行效果
•
Airbus A320 CBT 空客从零开始(1)显示屏
•
VKB 实用功能之“Tempo”( DCS IL2 )
•
Welcome to DCS(DCS个入坑一年半及其以后)
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表