房地产网站建设案例/深圳抖音推广
文章目录
- 一、软件配置
- 二、FlightGear+MATLAB联合仿真
- 第一步 复制文件
- 第二步 新建文件夹
- 第三步 打开demo
- 第四步 demo说明
- 第五步 打开Simulink
- 第六步 连接FlightGear
- 第七步 设置FlightGear
- 第八步 生成FlightGear连接文件
- FlightGear的设置
- Network的设置
- File的设置
- 生成.bat文件
- 第九步 启动FlightGear
- 第十步 FlightGear+MATLAB联合仿真
- 三、飞行手柄的连接
- 四、Notice
- 4.1 MATLAB与FlightGear的连接方式
- 第1种方式
- 第2种方式
- 4.2 修改模型的方式
- 4.3 地景地图的下载
- 参考文章
一、软件配置
说明本篇文章使用的配置:
- MATLAB 2018b;
- FlightGear 2020.3;
- Windows 11。
MATLAB的安装不再赘述,网络上的教程很多。FlightGear请前往官网(https://www.flightgear.org/)下载,点击Download
,找到Windows版本,选择FlightGear 2020.3 For Windows
进行下载。至于使用Linux和Mac的朋友,自行选择对应系统的FlightGear下载即可。
点击之后进入SourceForge,等待5秒钟之后自动下载。
等FlightGear-2020.3.19.exe
下载完毕后,双击该程序安装FlightGear,一路点击Next
或者Install
即可。
这里没有中文可以选,就用英文了。
这里记得选择接受该许可证。
后面的步骤一直点击Next
或者Install
即可,注意安装FlightGear的安装路径,安装到一个自己记得住的位置。
至此,FlightGear安装完毕。
二、FlightGear+MATLAB联合仿真
第一步 复制文件
需要把MATLAB里面的..\MATLAB R2018b\toolbox\aero\astdemos
文件夹全部复制一份到FlightGear里,FlightGear文件夹位置为...\FlightGear 2020.3\data\Aircraft
里。
第二步 新建文件夹
(可选)为了查看方便,可以自己新建一个文件夹,我起名为FlightGear_Simu
,大家按自己喜好取名就好。建一个新文件夹的目的是为了自己好找到MATLAB的demo,不然它藏在电脑的犄角旮旯里,很难找到。
第三步 打开demo
在MATLAB命令行里输入
asbhl20
MATLAB里面有一个与FlightGear联合仿真的demo,用的是NASA HL20飞行器,我们只需要调用这个demo学习就好。上面的代码就是调出来这个demo的命令。
第四步 demo说明
输入指令之后,会在MATLAB里面弹出来下面这样的界面。
上方红框区域为asbhl20
的文件,说明了demo所有使用到的文件。
下方红框区域告诉了我们这个demo的位置,找到这个文件夹的位置,即../MATLAB\Projects\slexamples\asbhl202
。这里最后的asbhl202
的第3个文件夹,因为之间我创建过2个相同的demo了。如果大家是第一次调用asbhl20
demo的话,它的文件夹名字是asbhl20
。所以如果看见和我不一样的文件夹名字,请不用疑惑。
把文件夹../MATLAB\Projects\slexamples\asbhl202
所有文件复制到前述步骤中新建的文件夹FlightGear_Simu
里。如下图所示。
第五步 打开Simulink
打开asbhl20.prj
,会弹出来下图所示的Simulink界面。
第六步 连接FlightGear
看见右上角红色边框的FlightGear Install FlightGear
了么,现在要打开它,调出来下图所示界面。
这个界面分成了4个step。
Step 1:下载并且安装FlightGear。这一步我们之前已经做过了,所以不用再做。
Step 2:设置FlightGear路径。把之前安装FlightGear的路径填进去即可。
Step 3:检查路径是否正确。设置好路径之后,点击这个按钮,它会自动检查路径有没有设置正确。设置正确了才能进行Step 4。
Step 4:打开FlightGear。这个Step可以不用做,等到下一步再打开。我们不要从这里打开FlightGear,因为有一些必要的参数还没有设置好,等把所有参数设置好之后,再打开FlightGear。
第七步 设置FlightGear
再回到Simulink界面。
注意到FlightGear Install FlightGear
下面的Viewer and Feedback
了么,点这个框里的下箭头。进入下图所示界面。
再点击红框内的模块,进入如下所示界面。
第八步 生成FlightGear连接文件
FlightGear的设置
选中左上角的GEN FG RUN
模块,双击这个模块,得到如下图所示的界面。
首先要设置的是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
,得到下图所示界面。
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
,得到下图所示界面。
Output file name
:生成的FlightGear运行脚本的文件名,启动FlightGear模拟器的命令脚本,包含所有必要的初始参数和设置,可自己定义文件名。FlightGear base directory
:指定FlightGear安装的基本目录,即FlightGear的主文件夹路径,在第六步已经设置完毕。
生成.bat文件
经过上面三部分的设置,最后需要生成.bat文件,用以启动FlightGear。点击上图中Parameters
部分的Generate Script
按钮,即可在../FlightGear_Simu/work
(自己新建的文件夹,还记得之前的内容吗)里生成一个名为runfg.bat
的批处理文件。
第九步 启动FlightGear
现在要启动FlightGear,假设刚才大家已经设置好了所有FlightGear参数,并且没有关闭Simulink。找到刚才生成的runfg.bat
文件,双击,它会自动打开FlightGear,如下图所示。
等待几秒钟后,进入FlightGear。
可以看见地面上已经有场景了,说明我们成功地下载好了地景。但是还没有显示飞行器,按v
键转换视角,即可显示飞行器。
注意:假如按
v
键没有反应,很有可能因为计算机正在使用中文输入法,请切换到英文输入法再按v
键切换视角。
第十步 FlightGear+MATLAB联合仿真
回到Simulink,点击运行。即可看见Simulink在运行的同时,FlightGear的场景也会随之变化,直至飞行器成功降落至机场。
至此,大功告成。
三、飞行手柄的连接
我们使用的手柄是罗技X56,如下图所示。
左边是油门,右边是飞行摇杆。摇杆可实现六轴自由度。
在Simulink连接X56,要用到组件库中Joystick Input
模块。
这里要使用的是飞行摇杆来控制飞行器姿态,所以只需要用到Axes
的输出即可。Axes
的输出是5维的,用demux
分成5维即可。唯一需要提醒的就是,第1维控制的是俯仰角,第2维控制的滚转角,第5维控制的是偏航角,第3、4维没有用到。
至于Buttons
的使用,可以从Joystick Input
的Buttons
接一个display
,观察按下不同按钮的时候display
里面的值怎么变化。之后可以用作标志位。
四、Notice
4.1 MATLAB与FlightGear的连接方式
MATLAB与FlightGear连接有2种方式。
第1种方式
数字“1”红框中带有摄像机的模块是第1种。输入信息为经度、纬度、高度(前三者单位为度数)和三轴角速度(单位为弧度),数据类型均为double
类型。我们一般得到的都是XYZ三维坐标,需要把该三维坐标转换为经纬度。
FlightGear Preconfigured 6DoF Animation
模块在Simulink中只能存在一个,因为模块里包含了一个Set Pace
模块。有FlightGear Preconfigured 6DoF Animation
模块,Simulink也只会生效一个 。
第2种方式
数字“2”红框中的Pack net_fdm Packet for FlightGear
模块和Send net_ctrl Packet from FlightGear
模块是第2种。输入信息为经度、纬度、高度和三轴角速度(单位皆为弧度),经度、纬度和高度的数据类型为double
类型,三轴角速度的数据类型为single
类型。注意数据类型之间的转换关系。
当然,也可以选择更多要输出到FlightGear里的数据,如下图所示。
还要注意一点的就是,要输出到FLightGear的数据要先进入
Pack net_fdm Packet for FlightGear
模块,再从Pack net_fdm Packet for FlightGear
的packet
接口接到Send net_ctrl Packet from FlightGear
模块里。
像这样。
至于数字“3”红框中的GEN FG RUN
模块则是不论用哪种方法,都需要配上的模块。
4.2 修改模型的方式
在../FlightGear 2020.3\data\Aircraft
里会有HL20模型的出现。
点进去会有一个HL20-set.xml
文件,里面规定HL20模型的必需参数,要修改模型外观,就需要点开HL20->Models->HL20.ac
,用AC3D
软件打开这个.ac文件,按需修改即可。
要记得把修改后的.ac文件修改名字,然后在xxx-set.xml
里面把相应的名称换成修改后的名字。
举个例子,我要做个导弹的模型,那么可以拿HL20.ac
作为母本,用AC3D打开它然后修改,修改完毕后保存为Missle.ac
。随后,记得在HL20-set.xml
里,把所有HL20
全部替换为Missle
。
至于文件夹里的thumbnail.jpg
和hl20_glass.png
是HL20飞机的纹理文件,可以不用理他。
4.3 地景地图的下载
在官网(https://www.flightgear.org/)里选择Download
,找到Download Scenery
那一项,点进去。建议下载v1.0.1,占用的空间不大,足够使用。
点击红框部分,进入到下面的界面。
它是以经纬度为划分准则。
- “e”代表东经;
- “w”代表西经;
- “n”代表北纬;
- “s”代表南纬。
根据自己的需要,找到对应机场的经纬度,下载相应的地景包就好了。下好的文件是.tgz格式的,下载好之后,把它解压,再把解压后的文件放到../FilghtGear 2020.3/data/Scenery/Terrain
里。像下面这这样子。
参考文章
[1] matlab与flightGear联合仿真. (https://blog.csdn.net/zhengluanfeng1985/article/details/104776644)
[2] 【Matlab】详解Simulink中的Joystick Input模块(介绍+测试+应用). (https://blog.csdn.net/qq_40344790/article/details/118079923)
相关文章:

FlightGear+MATLAB+飞行手柄实现实时飞控视景系统
文章目录 一、软件配置二、FlightGearMATLAB联合仿真第一步 复制文件第二步 新建文件夹第三步 打开demo第四步 demo说明第五步 打开Simulink第六步 连接FlightGear第七步 设置FlightGear第八步 生成FlightGear连接文件FlightGear的设置Network的设置File的设置生成.bat文件 第九…...

深入 Java 基础 XML:高级特性与最佳实践
在上一篇文章中,我们对 Java 基础 XML 有了一个初步的认识,了解了 XML 的基本结构以及在 Java 中常见的解析方式。今天,我们将进一步深入探讨 Java 与 XML 的结合,包括一些高级特性和最佳实践。 一、XML 命名空间 在复杂的 XML …...

【论文阅读】Fifty Years of the ISCA: A Data-Driven Retrospective
学习体会: ISCA会议近五十年文章分析, 了解论文热点方向, 处理器依旧是热点! AI和并行是大趋势, 做XPU相关目前来说还是热点~ 摘录自原文 摘录: 数据来源和分析方法: 作者收集了 ACM 数字图书馆中所有 ISCA 论文,并使用 DBLP、Google Schol…...

TVbox源贡献指南
欢迎各路大佬踊跃提PR,分享爬虫代码。 源码仓库地址 https://github.com/lushunming/AndroidCatVodSpider 快速开始 本工程是一个完整的AndroidStudio工程,请你用AS打开编辑。 工程调试完毕后要需要导出生成jar文件配合软件使用,执行根目…...

qt数据类型定义(包含签名)
先推荐一个处理markdown表格的网站,超级好用:markdown表格处理,我就是用这个表格处理的excel中的数据上传。 下表整理了数据类型的值范围、签名、qt如何定义等内容。 类型范围/子类型dbus签名qt支持的签名qt类型定义方式转换为variantint8(…...

docker逃逸总结
一、 检查是否在docker容器中 通过以下两个地方来判断 # 是否存在此文件 ls -al /.dockerenv# 在其中是否包含docker字符串 cat /proc/1/cgroup除了上面两种外还有其他方式判断,如检测mount、fdisk -l查看硬盘 、判断PID 1的进程名等也可用来辅助判断。 容器逃逸…...

MySql:表的操作
目录 创建表 查看创建表时的信息 查看表的结构描述 删除一张表 修改表 创建表 CREATE TABLE [IF NOT EXISTS] table_name (field1 datatype,field2 datatype,field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; field 表示列名 datatype 表示…...

LVGL9 开关控件 (lv_switch) 使用指南
文章目录 前言主体1. **控件概述**2. **控件的样式和组成部分**3. **使用控件**改变开关状态 4. **事件处理**5. **按键支持**6. **示例代码** 总结 前言 lv_switch 是 LittlevGL 提供的一个开关控件,外观类似一个小型滑块,常用于实现开关功能ÿ…...

fastadmin 登录退出忽略中间提示页面
背景 研究了一圈CMS,从fastadmin、easyadmin、buildadmin、onethink等等几乎所有的框架CMS,当然也包括若依。 最后,根据当前项目综合考虑,还是选择的fastadmin: 预算经济实惠、维护成本低;工期端&#x…...

游戏引擎学习第36天
仓库 :https://gitee.com/mrxiao_com/2d_game 回顾之前的内容 在这个程序中,目标是通过手动编写代码来从头开始制作一个完整的游戏。整个过程不使用任何库或现成的游戏引擎,这样做的目的是为了能够全面了解游戏执行的每一个细节。开发过程中࿰…...

准确率99.9%的离线IP地址定位库 ip2region - python 示例
简介:ip2region是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的 xdb 数据生成和查询客户端实现。号称准确率99.9%的开源离线IP地址定位库。 历史攻略: Python:暴力破解密…...

wordpress网站使用Linux宝塔面板和SQL命令行导入导出超过50M限制的数据库
wordpress网站使用Linux宝塔面板添加mysql数据库,使用phpMyAdmin工具导入sql数据库文件,会有最大限制50M。即使把sql数据库文件压缩为gzip或zip压缩包,压缩包也超过50M,该怎么办?怎样导入超过50M数据库呢? …...

开发基础(3):开发应用沉浸式效果 组件安全区方案
什么是沉浸式效果 典型应用全屏窗口UI元素包括状态栏、应用界面和底部导航条,其中状态栏和导航条,通常在沉浸式布局下称为避让区;避让区之外的区域称为安全区。 开发应用沉浸式效果主要指通过调整状态栏、应用界面和导航条的显示效果来减少状态栏导航条等系统界面的突兀感…...

Python中的数据可视化实战
一、前言 数据可视化是数据分析和报告中不可或缺的环节,它能够帮助我们直观地理解数据规律。Python提供了多个强大的可视化库,如Matplotlib、Seaborn、Plotly等。本文将通过实例演示这些工具的基本用法和高级技巧。 二、Matplotlib基础 1. Matplotlib的基本用法 import ma…...

计算机毕设-基于springboot的甜品店管理系统的设计与实现(附源码+lw+ppt+开题报告)
博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…...

SpringMVC纯注解快速开发
此文章适合具有一定的java基础的同学看哦,如果有看不懂的基本代码还是先补补java基础哦。 此教程带您不使用xml文件而是纯注解开发,易懂、快捷、迅速,从0开始搭建,很快就能构建起一个SpringMVC项目,能学到两种使用tom…...

【JAVA】Java高级:多数据源管理与Sharding:在Spring Boot应用中实现多数据源的管理
一个电商平台可能需要一个数据库来存储用户信息,另一个数据库来存储订单信息,甚至可能还有一个数据库用于数据分析。这种情况下,如何在Spring Boot应用中实现多数据源的管理就显得尤为重要。 1. 多数据源管理的重要性 在实际应用中…...

汽车网络安全 -- IDPS如何帮助OEM保证车辆全生命周期的信息安全
目录 1.强标的另一层解读 2.什么是IDPS 2.1 IDPS技术要点 2.2 车辆IDPS系统示例 3.车辆纵深防御架构 4.小结 1.强标的另一层解读 在最近发布的国家汽车安全强标《GB 44495》,在7.2节明确提出了12条关于通信安全的要求,分别涉及到车辆与车辆制造商云平台通信、车辆与车辆…...

黑马点评项目测试总结
黑马点评项目测试面经总结: 一,怎么使用使用Postman进行接口测试? 1,安装Postman 2. 创建请求: 打开Postman,点击"New"按钮创建一个新的请求。在弹出的窗口中,选择请求的类型&#x…...

【Selenium】基于 WebDriverWait 爬取带有懒加载的静态页面
0x00 前言 朋友做标书,需要用到每日温度,他的老板让在这个网页手动复制做一个长期表出来:http://www.tianqihoubao.com/lishi/nanjing/month/202412.html 想着帮个忙,做个爬虫脚本吧,忽然发现这个页面很有意思…...

【docker】docker compose 和 docker swarm
Docker Compose 和 Docker Swarm 都是 Docker 生态中的工具,但它们有不同的用途和目标。 下面是这两者的主要区别,帮助你理解它们在不同场景中的使用。 1. 用途和目标 Docker Compose: 目标:主要用于在单个机器上定义和运行多个容器应用&a…...

Javaweb 前端 ajax
作用:和后端交互 script 是 js axios(这里是函数的调用方式){封装的是对象} {}是对象 案例 。then的含义,请求后端之后,后端把数据放在回调 点了清空之后,还要查询全部 await等待请求执行完之后,接收这个结果 代码…...

【蓝桥杯每日一题】重新排序
重新排序 2024-12-8 蓝桥杯每日一题 重新排序 前缀和 差分 题目大意 给定一个数组 A 和一些查询 L i , R i Li_,R_i Li,Ri, 求数组中第 L i L_i Li至第 R i R_i Ri个元素之和。 小蓝觉得这个问题很无聊, 于是他想重新排列一下数组, 使得最终每个查 询结果的和尽可能…...

《深入浅出HTTPS》读书笔记(16):消息验证码算法分类
MAC算法有两种形式,分别是CBC-MAC算法和HMAC算法。 CBC-MAC算法从块密码算法的CBC分组模式演变而来,简单地说就是最后一个密文分组的值就是MAC值。 HMAC(Hash-based Message Authentication Code)算法使用Hash算法作为加密基元&am…...

如何使用Apache HttpClient来执行GET、POST、PUT和DELETE请求
Apache HttpClient 是一个功能强大且灵活的库,用于在Java中处理HTTP请求。 它支持多种HTTP方法,包括GET、POST、PUT和DELETE等。 本教程将演示如何使用Apache HttpClient来执行GET、POST、PUT和DELETE请求。 Maven依赖 要使用Apache HttpClient&…...

数据结构-希尔排序
每次对5个间隔的元素进行插入排序,然后间隔依次递减,直到间隔为1 互质:相邻的两个元素没有公因子 这个例子只有间隔1起来作用 #include<iostream> using namespace std; typedef int ElmentType; void shell_Sort(ElmentType A[], int…...

Spire.doc 合并word,复制word
之前使用的poi来实现这个功能,然后发现在复制chart时,边框样式无法修改,于是就使用了spire.doc 1. 引入依赖 <repositories><repository><id>com.e-iceblue</id><name>e-iceblue</name><url>https…...

【Spring项目】表白墙,留言板项目的实现
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:项目实现准备 1:需求 2:准备工作 (1)…...

分布式事务-nacos/seata在windows环境下部署及开发
参考资料: nacos的windows环境部署 seata和nacos的结合及seata开发 参考demo及资料 nacos在windows环境下的部署: nacos在windows下的部署参考文章 seata加入nacos配置: 首先下载seata安装包:Release v1.7.0(Not Apache relea…...

分布式微服务架构下的密码安全性方案
在 Spring Cloud 微服务架构中,涉及登录或注册时的密码安全性问题,通常需要从传输过程中的安全性和存储过程中的安全性两个方面进行保护。以下是主流的安全性保证方案: 传输过程中的安全性 HTTPS 加密传输: 使用 HTTPS 协议来保…...