simulink和flightgear联合仿真(导入四旋翼模型进行仿真)

导入四旋翼模型或其他模型到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以开始仿真。

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

  • 37
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值