MATLAB的安装不再赘述,网络上的教程很多。FlightGear请前往官网(https://www.flightgear.org/)下载,点击Download,找到Windows版本,选择FlightGear 2020.3 For Windows进行下载。至于使用Linux和Mac的朋友,自行选择对应系统的FlightGear下载即可。
asbhl20的simulink界面
注意到FlightGear Install FlightGear下面的Viewer and Feedback了么,点这个框里的下箭头。进入下图所示界面。
FlightGear设置1
再点击红框内的模块,进入如下所示界面。
FlightGear设置2第八步 生成FlightGear连接文件
FlightGear的设置
选中左上角的GEN FG RUN模块,双击这个模块,得到如下图所示的界面。
GenerateRun中的FlightGear
首先要设置的是FlightGear的基础参数,在Parameters区域里面,Select target architecture选择default选项,Select FlightGear data flow选择Send-Recieve选项。这里我觉得选择Send也可以,因为只有Simulink给FlightGear传输数据,FlightGear不会给Simulink传输数据,所以Simulink可以不用recieve数据。不过因为这是demo的缺省值,就不再动它了。
FlightGear geometry model name:要使用的飞行器模型名字,需要和xxx-set.xml一致,demo这里就是需要与HL20-set.xml一致;Airport ID:机场编号,这里缺省值为KSFO机场;Initial altitude:初始高度,单位为英尺(ft);Initial heading:初始朝向角,单位为度(deg);Offset distance:偏移距离,单位为英里(miles);Offset azimuth:偏移方位角,单位为度(deg)。
上述设置demo已经设置好了,不用更改任何设置。
值得一提的是,Install FlightGear scenery during simulation (requires Internet connect...这个选项最好勾选上。因为第一次打开FlightGear时,很有可能没有地景图片,导致启动FlightGear后显示不了地面。勾选这个选项之后,它会在第一次打开FlightGear的时候,自动下载地景。这个选项要求具备必需的网络条件。如果没有,请看第4.3节所述方法。
Network的设置
再进入Network的设置,点击Network,得到下图所示界面。
GenerateRun中的Network
Destination address:FlightGear所在计算机的IP地址,如果有多台计算机同时仿真,要填写FlightGear所在计算机的IP地址。Origin IP address:Simulink所在计算机的IP地址,缺省值为127.0.0.1,即FlightGear和Simulink都在一台计算机上运行。如果有多台计算机同时仿真,要填写Simulink所在计算机的IP地址。Destination port:UDP通信端口,即FlightGear监听的端口,用于接收来自Simulink的数据,需要与FlightGear配置中设置的端口一致,以便正确接收数据。从5501开始,这里设置的是5502。Origin Port:Simulink发送数据到FlightGear所使用的端口,Simulink一般会自动生成。
上述端口必须确保没有被其他软件占用。
File的设置
最后进入File的设置,点击File,得到下图所示界面。
GenerateRun中的File
Output file name:生成的FlightGear运行脚本的文件名,启动FlightGear模拟器的命令脚本,包含所有必要的初始参数和设置,可自己定义文件名。FlightGear base directory:指定FlightGear安装的基本目录,即FlightGear的主文件夹路径,在第六步已经设置完毕。
数字“2”红框中的Pack net_fdm Packet for FlightGear模块和Send net_ctrl Packet from FlightGear模块是第2种。输入信息为经度、纬度、高度和三轴角速度(单位皆为弧度),经度、纬度和高度的数据类型为double类型,三轴角速度的数据类型为single类型。注意数据类型之间的转换关系。
当然,也可以选择更多要输出到FlightGear里的数据,如下图所示。
pack模块选项
还要注意一点的就是,要输出到FLightGear的数据要先进入Pack net_fdm Packet for FlightGear模块,再从Pack net_fdm Packet for FlightGear的packet接口接到Send net_ctrl Packet from FlightGear模块里。