导入四旋翼模型或其他模型到flightgear,实现simulink和flightgear联合仿真,进行方形或特定轨迹移动。
1概述
完整的simulink如下图所示:
图1
图中红框1是给定信号,输出一个方波信号,从上到下依次是飞机模型的x,y,z轴坐标以及偏航角yaw;
红框2是控制器模块,输入为飞机模型的x,y,z轴坐标以及偏航角yaw,其输出从上到下依次是x,y,z,roll,pitch,yaw。控制器可以自己搭建或者利用现成的,本文不再赘述。
红框3是fg和simulink通信模块,其输入端1为位置和姿态信息,输入端2为发送给fg的rpm数组。
软件准备:flightgear2018,matlab2022a,blender2.63,AC3D
2 Simulink部分
该部分对应图1中红框3,将其展开得到与flightgeart(以下简称fg)通信的simulink模块如图所示:
图2
注意:这些模块直接在simulink库浏览器直接搜,全都有。下面我们对各个模块作设置和说明。
2.1 打包数据模块(Pack net_fdm Packet for FlightGear)
图3
(1)有些matlab版本在此模块设置界面会有选择fg版本号的选项(这里使用的2022a没有),我们后面下载对应的fg版本即可。这里使用的是matlab2022a和fg2018.3,可自行搜索matlab与支持的fg版本对应关系。
(2)选择你想要发送给fg的参数,这里我们选择位置,高度,能源等作为输入,不用的端口我们给他接地即可;
(3)Sample time选1/30或者继承系统采样时间(-1),注意simulink各模块采样时间要保持一致。
2.2 传输数据模块(Send net_fdm Packet to FlightGear)
在指定的IP地址和UDP端口通过UDP传输一个网络飞行动力学模型(net_fdm)包到FlightGear飞行模拟器。
图4
(1)Destination IP address项填写本机的IP地址。若要进行异机仿真,在这填写fg软件所在电脑的IP地址。(Ip 查找方法为: 在 cmd.exe 里输入 ipconfig 查询)
(2)Destination port保持默认
(3)Sample time与前面保持一致
2.3 生成脚本模块(Generate Run Script)
图5
(1)Select target architecture选择自己的系统
(2)Select FlightGear data flow选择send-receive
图6
(3)flightgear选项里FlightGear geometry model name写模型文件夹名称,模型配置后面会说。
(4)Airport ID写机场名称,Runway ID写跑道名称。可在fg安装目录下FlightGear 2018.3.2\data\Scenery\Airports查看两者信息。
(5)其他项是四旋翼模型初始高度,角度、位置偏移等,按需设置即可。
图7
(6)network选项里Destination/0rigin IP address写fg安装机IP,其余按图中设置。
(7)Network IP address写matlab安装机IP。
图8
(8)file选项里Output file name自定义生成脚本名称(英文)
(9)FlightGear base directory写fg安装目录(date和bin文件的上级目录)
2.4 坐标系设置模块(Flat Earth to LLA)
图9
(1)Units和Planet model按如图设置
(2)Reference geodetic latitude and longitude [deg]和Direction of flat Earth xaxis(degrees clockwise from north),可 以 在 FlightGear\data\Scenery\Airports\K\S\F 文 件 夹 下 KSFO.threshold.xml 中找到跑道信息,如下图所示:
图10
2.5 其他模块
图11
图12
图13
图14
2.6 生成可执行文件
以上就是模块的配置,配置完之后,将matlab工作空间设置到想生成脚本文件的位置,双击生成脚本模块(Generate Run Script)à generate script如下图所示
图15
(1)然后在脚本文件生成位置双击自定义名称的脚本文件,这里我们用记事本打开runfg文件如下图:
图16
(2)检查第一行为fg安装位置(date文件上一级),第二行位置为date文件位置,第三行位置为fgfs.exe程序所在位置,如有错误要修改正确保存。
(3)双击生成的脚本runfg,等待其自动打开fg仿真软件,给图一中3给定输入,点击运行,即可实现fg里面的飞机模型和simulink联合仿真效果。
3 Flightgear部分
由于fg库里没有对应的四旋翼三维模型,下面介绍怎么把自己的模型导入fg里进行仿真。这里以四旋翼模型为例。
3.1 3d模型构建和导入
(1)这里我们使用的软件blender2.63,因为这个软件支持导出.ac格式的三维文件,而其他大部分软件不支持导出.ac这种fg支持导入的文件格式。
(2)要想导出.ac格式,需要在github下载插件,登录https://github.com/majic79/Blender-AC3D,下载压缩包,打开 Blender/2.6/scripts/addons 文件夹,然后将 io_scene_ac3d 文件夹拉入 Blender 的 addons 文件夹中。也可以将其放置在另一个位置,即 ~/.blender/2.6/scripts/addons (linux) 或等效的 Windows 用户配置文件位置。
(3)需要在blender软件用户首选项窗口中启用该脚本 -> 打开用户首选项窗口(文件->用户首选项或 Ctrl-Alt-U),然后转到“附加组件”选项卡,单击“导入”按钮-导出然后勾选“导入-导出:AC3D (.ac)”右侧的框。
(4)利用软件构建自己的三维模型,或者在模型网站或者公众号下载三维模型,支持导入的文件格式如下图所示:
图17
(5)导入模型文件,对其大小等进行自定义修改。(因为AC3D不支持导入其他格式的三维模型,所以才大费周章使用blender来将其他格式转换成.ac文件)
(6)然后导出格式为AC3D(.ac)。当然也可以通过AC3D软件制作自定义模型,或者用AC3D对blender导出的.ac文件进行修改。
3.2 xx-set.xml和xx.xml文件的配置
模型文件夹最基础由三部分组成,其一是.ac文件,其二是xx.xml文件(飞机模型的模型配置文件),其三是xx-set.xml文件(启动和路径指定等信息文件).
(1)新建一个文件夹,文件夹名称myuav(可以自定义为你的飞机名称,最好为英文)。
(2)打开fg --> 左侧“机型”--> “浏览”,在fg软件的机型官方库内下载一个带螺旋桨的飞机(因为飞机旋翼跟无人机旋翼运动都是旋转,可以直接复制螺旋桨内的spin旋转配置,这个后面会说),这里我们下载Piper J-3 Cub,然后点击“已安装的飞机插件”,点击刚才下载的飞机插件,最下方就是飞机插件所在的文件位置目录。
图18
(3)打开飞机插件所在的文件位置目录,找到Cub-set.xml和Cub.xml文件(Cub是飞机模型文件夹名称)移动到自己创建的myuav文件夹,把.ac也移动过来。现在myuav里有三个文件,把他们名称修改为如下图所示:
图19
(4)将myuav文件夹移动到Flightgear 安装目录下 data/aircraft 文件夹里。
(5)打开myuav-set.xml文件,找到<model>,将红框内容改为myuav.xml所在目录,保存。
图20
除此之外,<startup>表示启动时加载图片,<sound>表示模型的音效配置,等等,如果有相应的文件,可以更改为其所在目录。我们只需要完成动画演示,其余这些可以保持不变或将其注释。
(6)打开myuav.xml,修改红框中内容为myuav.ac
图21
3.3 四旋翼模型运动配置
目前为止,直接导入的四旋翼模型的四个旋翼没办法动起来,因此我们要对模型的部件配置运动,让其达到更真实的仿真效果。
(1)打开myuav.xml文件,找到<type>spin<type>,这是原飞机模型控制旋翼旋转的模块。
图22
其中红框1中<object-name>是控制对象的名称;
红框2是旋转中心坐标;
红框3是旋转轴;
<Property>中间的内容是旋转速度。
(2)用AC3D打开myuav.ac。
图23
(3)选中其中的一个旋翼,红框中是其名称,将其名称复制到<object-name>;
(4)将鼠标停留在栅格上,会显示鼠标当前位置坐标,如下图:
图24
用这种方式可以得到旋转轴的两点表示。(注意AC3D里的坐标系和fg软件的坐标系不相同,需要注意变换)
(5)<Property>参数:在simulink中我们给Pack net_fdm Packet for FlightGear模块中的rpm连接了一个输入,我们运行runfg打开Flightgear,然后运行simulink,在 Flightgear 里 debug-browse internal properties 里查看 engines中engines[x]的数据是否和给rpm输入的数据一致,实现了从simulink发送数组信息到fg。我们设置engines[x]作为<Property>的参数,就相当于通过simulink来调整旋翼转速。
(6)修改后如下图所示:
图25
其他三个旋翼配置方法相同,复制粘贴修改相应参数即可。
文件说明:
下载源文件请到
(1)按2.6、3.2(4)中说明修改文件目录;
(2)打开文件夹à打开flightgear.slxà运行runfgà运行simulink以开始仿真。