MATLAB 与 FlightGear 联合飞行仿真
1
MATLAB 与 FlightGear 联合飞行仿真
飞行器模型结构和要求
飞行器模型放在FlightGearRoot/data/Aircraft/和其子目录下。一个完整的飞行器模型
必须包括一个名为model-set.xml的管理文件。
模型其他的元素都是可选的,它们与模型目录放在同一层目录下。它们包括
飞行器的形状和颜色
飞行器的表面贴图
飞行器的几何描述
驾驶舱的三维模型
飞行器的声音效果
飞行动力学模型
模拟器视角
飞行器的子模型,可以独立运动。
如何将上述元素放到模型中,请参考
http://www.flightgear.org/Docs/fgfs-model-howto.html
network
飞行动力学模型
对于一个飞行器模型,飞行动力学模型(FDM)是必须说明的。要将Simulink作为飞行动
力学模型的数据来源,要在data/Aircraft/model/model-set.xml文件中加入下面的语句:
获得或修改已经存在的飞行器模型
导入飞行器模型到FlightGear
1.打开FlightGear的安装目录/FlightGear/data/Aircraft/
2.在其下创建一个名为model的子目录来存放你的模型数据
3.把model-set.xml文件放到目录下
举例说明
下面就以HL20为例来说明如何定义它的铰链动作
XGY 2917 西安
MATLAB 与 FlightGear 联合飞行仿真
2
1.FlightGear中使用的弹体坐标系是右手坐标系,所以要将标准的弹体坐标系的Y轴旋转
-180度。
X 指向飞行器的后方
Y 指向飞行器的右方
Z 指向上方
2.在铰链线上找出两点,在MATLAB中以XYZ方式用数组表示
a=[2.98 1.89 0.53];
b=[3.54 2.75 1.46];
3.计算出两点间的距离
pdiff = b - a
pdiff =
0.5600 0.8600 0.9300
4.同样可以计算出铰链的中点
mid = a + pdiff/2
mid =
3.2600 2.3200 0.9950
5.将上述铰链点添加到model-set.xml的动画观察器中
3.26
2.32
1.00
6.利用第三步计算出的值来定义运动轴的矢量
0.56
0.86
0.93
XGY 2917 西安
MATLAB 与 FlightGear 联合飞行仿真
3
7.将这些放到一起来得到HL20模型的铰链运动参数
rotate
RightAileron
/surface-positions/right-aileron-pos-norm
30
0
3.26
2.32
1.00
0.56
0.86
0.93
在Simulink中运行FlightGear
要在Simulink中调用FlightGear,你必须在FlightGear对应飞行器模型数据文件
model-set.xml中添加配置信息,并且还要在Simulink中使用一些专门的模块。
将飞行动力学模型添加到数据文件中的Network中
1.删除以前存在的所有的FDM数据文件
2.添加下面的语句来提示FDM数据流是从网络上获取的
network
在Simulink中添加并连接接口模块
最简单的方式是使用FlightGear Preconfigured 6DoF Animation模块,还需要使用Pack
net_fdm Packet for FlightGear和Send net_fdm Packet to FlightGear模块。
Pack net_fdm Packet for FlightGear模块将数据格式化为FlightGear模型输入需要的
XGY 2917 西安
MATLAB 与 FlightGear 联合飞行仿真
4
文件格式,默认情况下仅显示6DoF的端口,但这个接口支持多达50项配置。
Send net_fdm Packet to FlightGear模块通过UDP将数据流发送到指定IP和端口。
在Animation Support Utilities Sublibrary子目录下的Simulation Pace模块可以用来
配置仿真采样时间。
创建FlightGear运行脚本
要让FlightGear按照指定的初始条件运行(位置,日期,时间,天气,操作模式),最
好的办法是创建一个运行脚本,可以使用Generate Run Script模块来完成。
使用Generate Run Script模块
1.打开模型,将Generate Run Script模块拖放到模型中
2.双击模块,打开如下对话框
XGY 2917 西安
MATLAB 与 FlightGear 联合飞行仿真
5
3.在Output file name一栏中输入输出文件的名称,这个文件名扩展名为.bat,文件名
同时也是在MATLAB命令窗口中的运行命令。
4.在FlightGear base directory一栏中,设定FlightGear的安装目录。
5.在FlightGear geometry model name一栏中,输入模型文件夹名称。
6.指定需要的初始条件
7.点击Generate Script按钮来生成运行脚本文件。
生成的脚本文件存放在工作目录下面,下面是一个脚本文件的内容:
>> cd D:\Applications\FlightGear-0.9.8a
>> SET FG_ROOT=D:\Applications\FlightGear-0.9.8a\data
>> cd \bin\Win32\
>> fgfs --aircraft=HL20 --fdm=network,localhost,5501,5502,5503
--fog-fastest --disable-clouds --start-date-lat=2004:06:01:09:00:00
--disable-sound --in-air --enable-freeze --airport-id=KSFO --runway=10L
--altitude=7224 --heading=113 --offset-distance=4.72 --offset-azimuth=0
开始运行
如果你的计算机有足够的能力来同时运行Matlab和FlightGear,那么只要在Matlab窗口
dos('runfg &')
中输入
便可以运行了。
在不同的计算机上运行
如果你的Simulink和FlightGear在两台不同的计算机上运行,请按下面的方法来做
1.获得运行FlightGear计算机的IP地址
2.在Send net_fdm Packet to FlightGear模块中输入得到的IP地址
3.重新生成运行脚本
4.将生成的运行脚本拷贝到运行FlightGear的计算机中,并用它运行FlightGear
5.运行你的Simulink程序,FlightGear便会显示出仿真结果。
XGY 2917 西安