基于Simulink的飞机建模、仿真与飞行控制设计
在这次网络研讨会上,您将学习如何使用MATLAB和Simulink应用基于模型的设计进行飞行器设计和自动飞行控制。在航空航天领域工作的工程师可以使用MATLAB和Simulink来改进设计工作流:
•定义飞机几何形状并导入DATCOM数据以定义车辆的力和力矩
•创建一个模拟来理解车辆动力学
•设计具有自动增益产生的飞行控制系统,以稳定飞行器并满足要求
•执行仿真以验证设计,并在现实的3D环境中可视化仿真
主要关注的是工程师的工作流程涉及建模,仿真和飞机的控制。本次网络研讨会中展示的许多基于模型的设计和控制概念可以应用到各种各样的应用中。
主持人:瑞恩·戈登(Ryan Gordon)是MathWorks公司航空航天工具箱和航空航天块集的产品经理。在加入MathWorks之前,Ryan在诺斯罗普·格鲁曼航空航天系统公司使用Simulink开发了自主无人机的模型和控制算法。他在圣路易斯大学获得航空航天工程学士学位,在南加州大学获得航空航天工程(专注于动力学和控制)硕士学位。
记录:2013年6月18日
大家好,欢迎来到基于Simulink的飞机建模仿真与飞行控制设计课程。我叫瑞恩·戈登。我是MathWorks的一名产品经理负责航天工具箱和航天积木。为了向你们展示我们今天要做的,我将直接跳到Simulink向你们展示我们将要设计的模型。
让我从运行模型开始,在这里你会看到我们完整的动态模型以及飞机的控制系统,如图左边的FlightGear所示。如果我进入驾驶区,我有三个主要的命令可以发送到自动驾驶系统,我今天会用到。首先,我有一个高度指令,当我处于高度保持模式时,我可以向这个高度发送一个指令,飞机就会俯仰到这个高度并保持这个高度。我有一个使用自动油门来改变速度的速度命令,我有一个自动爬升启动命令,它可以让我在高度保持模式和爬升模式之间进行切换,在爬升模式中我达到最大功率,飞机将俯仰以达到速度。
当我启动它时,你会看到飞机现在处于最大功率并且它的俯仰达到85米每秒的速度。如果我把它减速,你会看到它的倾斜角上升得更多,因为要达到每秒75米的速度它需要更高的俯仰角。如果我解除自动爬升,它就会回落到2100米的高度。今天,我将向你们展示如何在Simulink中为这架飞机设计一个动态系统。我将向你们展示如何为这架飞机设计这个自动驾驶系统以及如何在FlightGear中使用Aerospace Blockset来可视化它。
那么这在MATLAB和Simulink中是如何工作的呢?首先,让我们谈谈设计飞机飞行控制的迭代设计过程。首先,您需要设计动态模型。怎么做呢?你将从确定车辆的几何形状开始,根据几何形状确定车辆的气动特性——这可以通过许多不同的方法来完成,包括风洞测试。你将创建一个模拟来验证这个设计,一旦你有了一个模拟,你就可以基于那个模型设计飞行控制律。
作为一名飞机飞行控制设计师,你可能需要多次迭代这个过程才能达到你想要的结果,在你迭代这个设计的同时,你可能还需要做一些额外的步骤,比如创建一个循环中的硬件模拟,构建硬件和软件,比如进行飞行测试的实际飞行器,然后分析和可视化这些飞行测试的结果。今天,我们将专注于最上面的四个突出显示的块,但有一些工具可以在整个设计过程中帮助您。
这就是前四步是如何映射到我今天展示的网络研讨会的。首先,我要给飞机动力学系统建模。我会从数据中心建立空气动力学模型。DATCOM是由美国空军设计的软件,它可以让你输入飞机的几何形状,它会告诉你根据输入的几何形状的空气动力学特性和系数。我不会介绍DATCOM系统是如何实际工作的,但我会介绍如何在MATLAB和Simulink中使用DATCOM的结果。
我会建立一个三自由度纵向动态模型。我将为我的动态模型设计风、阵风、湍流和重力的环境。我将为两种飞行模式设计飞行控制——高度跟踪模式和最大推力爬升模式,这将允许我通过最大功率和控制俯仰速度在爬升过程中做出较大的变化。我将通过使用自动PID调谐器来实现这一点,然后我将能够使用状态流来可视化这两种不同飞行模式之间的转换。在整个过程中,我可以用Simulink到FlightGear的界面在三维空间中可视化结果,这是Aerospace Blockset的一部分。
让我们从第一步开始,建立飞机动力系统的模型。对于这一步,我将主要使用,在MATLAB和Simulink之上,航空航天工具箱和航空航天块集。这些工具将允许我快速地设计、模拟和可视化我的整个建模设计过程。这就是Simulink到FlightGear的位置,三自由度的块就在这里我只要简单地拖放一个块就能在Simulink中有一个完整的三自由度动力学。我将展示的第一个特性是DATCOM导入和Simulink DATCOM接口。我所有的环境模型都在这里大气,风和湍流。让我们回到MATLAB和Simulink我可以向你们展示这些都是什么。
我想做的第一件事是可视化DATCOM数据的样子。为此,我在MathWorks文件交换中找到了这个函数。MathWorks文件交换是一个地方,现在的MATLAB用户可以去那里分享他们创建的,他们认为其他人会觉得有用的文件。我曾经给大家展示过DATCOM输入文件是什么样的。但是在查看了文件交换中一些我认为可能会帮助我的有用文件后,我发现了这个Draw DATCOM Aircraft文件。如果你感兴趣,可以在MathWorks File Exchange上找到。如果我运行那个文件,它会根据我输入到DATCOM的文件创建飞机规格的三视图图。
所以你看,这是一个翅膀,身体,尾巴的设计。你可以看到输入到DATCOM系统的风翼。这是飞机的三视图。就像我之前说的,我不会介绍DATCOM是如何工作的,但我会向您展示输出是什么样子的。当我们看这里,你会发现输出在MATLAB中不是很有用。它是一个文本文件。里面有我需要的所有信息,但格式不是很有用。我要用的是DATCOM导入工具和Aerospace工具箱。我们可以看到我画的这条线。从DATCOM导入输出文件。 And it processes the data. And if I take a look at that data, we can see now I've got a structure of all my aerodynamic coefficients for my flight conditions that I defined in my DATCOM file.
所以我们在这里看到的是两个马赫数,两个高度,和五个不同的攻角值。五种不同的迎角,两种高度,两种马赫数。现在,如果您使用DATCOM导入工具,那么您可能需要做的是,当您通过它运行输入文件时,DATCOM可能无法提供所需的所有信息。所以如果我看一下俯仰力矩,你会看到它给了我这些值,我想这是99,999,这远远超出了这个值可能的范围,这告诉我,我需要填补那些缺失的值。我将通过运行一个简单的for循环来填充数据。做完这些之后,我就得到了。我只是在整个系统中重复了第一个数据值。
现在我有了所有数据的格式,我有了所有参数的实际值,我可以转到Simulink,并使用Aerospace Blockset提供的DATCOM块将其导入到Simulink中。这就是我在网络研讨会开始时展示的模型。这里是飞机动力学,我要在这里建立我的动力学模型。你们会注意到,在R2012B中,我们在一些街区的角落里有这些徽章。这意味着这是一个变分系统。为了这次网络研讨会的目的,我有两个版本。我有一个完全完成的变体,因为它需要很长时间来建立这些比你想看我在网络研讨会上做的要多,一个愿景有这些洞,我将用Aerospace Blockset中可用的块来填补这些洞来帮助我建立模型。
要更改变量,您可以进入这里并使用Override选项。您还可以在工作区中使用可用的选项来定义变量。这就是最终版本。在初步版本中有三个主要子系统。这就是三自由度模拟的所在。还有一个六自由度的界面,这样以后如果我想建立横向动态,我可以通过添加六自由度的块而不是三自由度的块来快速迭代这个过程。我没有关于横向方向导数的空气动力学知识,所以我现在就把它作为三自由度。
推进系统只是一个查找表,非常简单,今天不做推进设计。这是一个非常基本的模型。在空气动力学中,我留下了一些空白我需要填入DATCOM数据,力和力矩,我需要建立我的马赫和动压力。如果我打开我的Simulink库浏览器,进入Aerospace Blockset,我们会看到这里有很多不同的工具。你会看到空气动力学,执行器,环境,运动方程。这些都是在飞机和航天器设计中常用的东西我们已经提供给你们作为Aerospace Blockset的一部分来帮助简化我今天向你们展示的迭代设计过程——我今天正在做的迭代。
为了得到DATCOM的空气动力学,我进入空气动力学子库,我将拖进数字DATCOM力和力矩。它被这个事实结构体预填充了它不是我命名的那个。实际上我有一个预先构建的结构叫做静态动力学。如果应用这些更改,在单击OK之后,您会注意到输入实际上发生了变化,以匹配DATCOM结构所需的输入。因此,这允许我快速知道需要什么输入来从DATCOM查找数据,因为这个块将自动确定需要什么输入。然后我就可以在左手边用我的三自由度块建立输入,我稍后会把它放进去。然后我可以把它带进来,调整大小,但我不会花太多时间来调整大小和填充这些块。我将在完成的版本中向您展示所有内容,因为我不想浪费您的时间演示如何调整块的大小并将所有内容放入其中。
对于力和力矩,我有这些空气动力系数。如果我来这里,你会看到我们有一个预查找表,得到一个索引和索引的一部分,包括迎角,马赫数,高度,电梯偏转,这些都输入到电梯块子系统中。我们有俯仰力矩这样的东西被定义为查找表,同样是在静态动态结构中。现在,因为它们只是系数,我需要把这些系数转换成力和力矩。我要做的就是利用空气动力和力矩块。所以我可以把空气动力和力矩连接起来,我需要输入的是参考面积跨度和参考长度,这是已知的飞机的特性,这将允许我快速计算力和力矩基于这些系数。
现在,我在最终的版本中有了这些场一会儿我会给你们看。最后,我们有工具来建立飞机的共同特性,如马赫数和动压。所以如果我在这里搜索我可以在我的库浏览器的Aerospace Blockset中搜索,我可以找到一个马赫块,把它带进来。这里最重要的是,它告诉了你计算它需要什么。所以你不需要——如果你在一个有很多不同工程师的团队里工作,也许不是每个工程师都对飞机那么熟悉。如果你和一个可能做齿轮的人一起工作,他们不一定会知道GNC工程师所熟悉的所有飞机术语。看这里的接口,你知道你需要什么它在所有这些块之间有一个公共接口。
我需要的最后一个块是动压。再一次,我可以把它拖进来,我们看到它们使用相同的速度,然后我只需要在这里输入密度和声速。再说一次,我现在不打算把它们联系起来。在最终版本中,我把这些都连接起来了。最后,我想建立一个三自由度的模拟。这是我构建的一个自定义接口块。再一次,当我在设计过程中迭代时,我可以删除它,放入一个六自由度的块。我们在航天积木里有一些三自由度和六自由度的模型。所以对于6个自由度你可以使用欧拉角,或者如果你有一个高动态的飞行器你担心像万向节锁这样的东西你可以使用那个块的[听不清]版本。
现在,我将使用简单的三自由度块。你看,我有一个重力输入,但我在我的环境中定义了重力所以我设它是一个定义为零的内部重力这会移除输入端口。这里有很多初始条件需要满足,我会给你们展示最终版本。这正好。你知道你的力,你的x力,z力和力矩,你有一个公共的界面,可以让你和其他航天飞机互动。组件,因为它们都共享公共接口名称,以允许您在设计过程中快速迭代。
现在我要回到模型的顶层,切换到最终版本,让你们看看它完成后的样子。现在你可以看到,由于我已经完成了重写,最终版本已经突出显示出来了。你可以看到这些子系统的基本布局是一样的。如果我回到空气动力学,你们看到DATCOM块在这里,我用粉色的红色突出显示了Aerospace Blockset块来显示哪些块在Aerospace Blockset中。你可以看到空气动力和力矩。我们已经使用了模型工作区变量,因此这些变量实际上连接到这个模型来定义这里的引用。你可以看到马赫数和动压在这个子系统中是简单相连的。就是我之前给你看的街区。我们的三自由度积木。再次,使用模型内部定义的模型工作空间参数,我们得到了三自由度块的初始条件。
现在我可以向你们展示我是如何定义环境的。这只是对我的系统的一个介绍,因为在这么短的时间内把所有这些组件单独建立起来是没有意义的。花的时间太长了,因为航天积木,它真的很简单。这里你可以看到我使用的标准大气模型。因为它是一个Aerospace Blockset块,我有这些下拉菜单,这将允许我定义不同的大气模型取决于我想要模拟的飞行场景。所以如果我需要一个炎热的一天,我可以做一个炎热的一天。我可以做一个寒冷的日子。不同的密度和压力使用不同的模型。今天我们将继续使用标准大气模型。这是我们设计过程中的第一次迭代,所以你希望所有东西都是标准的。
我们的引力由WGS84模型定义。如果我来看看风模型,我们可以看到我有一个风切变模型,一个阵风模型,和一个湍流模型。湍流模型有一个下拉菜单来定义冯·卡门或德莱顿湍流。你在图中看到的就是我们的真植物模型。飞机动力学影响环境,环境影响飞机动力学。在这个循环中我们定义了整个系统。现在,我将过一遍剩下的模型,并向你们展示我们在这里还有什么,只是为了让你们了解所有这些块代表什么。
我们有机体执行机构,这也是一个变型子系统。这将允许我在可能是一个馈通模型之间进行改变,可能我使用SimScape simhydraulic来建立这个高度动态的模型,或者可能我只使用一个传递函数。这种变体子系统设置将允许我在这些版本之间快速更改。我有飞行传感器,你可以看到我用航天块来建立一个快速的理想空速修正,惯性测量单元,和压力高度来模拟实际的传感器。而空气数据计算机只是一系列的一级保持来离散传入的数据。所以我们还没有一个空气数据系统模型。当我们迭代这个设计过程时,我们会建立一个更高保真度的空气数据系统。
最后,我们有了我在最开始的时候展示给你们的可视化。我在这里使用一个方差子系统,因为有两种不同的方式你可以发送数据到FlightGear-你可以使用一个简单的版本或一个复杂的版本,将允许你可视化的东西,像座舱显示器,控制面的偏转-但今天,我只使用一个简单的FlightGear界面,我们有所有我需要发送的是纬度,经度,高度,和身体角度到FlightGear动画块,这样我就可以在FlightGear上可视化了。因为这个方块是淡红色的,它是Aerospace方块集的一部分。它允许你拖放这些组件,准确地理解这些组件需要什么才能正常工作,然后在这个特定的例子中,快速地与FlightGear连接。
这就是模型的基本内容。我已经向你们展示了如何对动态系统建模。现在,我们来谈谈如何设计两种飞行模式的飞行控制。这和我刚才展示的一样复杂,但我认为我有一个很好的方法来告诉你们如何使用我们的自动PID调谐器来快速设计一个飞行控制系统,或者任何类型的控制系统,基于你的设计工作流。正如我之前两次提到的,我将设计两个不同的控制循环,我可以使用状态流进行更改,这将允许我可视化这种更改并简化我的控制逻辑设计过程。首先,我将设计高度跟踪空气路径,我将在外环反馈高度,以允许飞机俯仰和控制高度,同时保持空速。第二个是最大推力爬升空气路径,我可以向引擎发送最大油门命令,然后上下倾斜,以实现快速步进高度变化所需的空速。
我将调优增益为我的系统使用自动PID调优功能可用的Simulink控制设计。这将为我提供许多调整诸如带宽、增益和相位裕度等内容的选项——我可以使用阶跃响应图在时域观察结果,也可以使用Bodie响应图在频域查看结果。在这两种飞行模式中,使用右下角的状态流程图将简化我如何在这两种不同的飞行模式之间切换,并在模拟这个模型时积极地可视化我所处的飞行模式。
当你看控制系统的时候,这是一个基本的控制系统图这里有补偿器,模型和传感器。我们现在要把重点放在飞行控制上。如果我要把它映射到我的整个系统上,你会看到我们关注的只是GNC航空电子设备块。现在我要回到Simulink,深入研究GNC航空电子设备块,向你们展示如何根据我们已经设计好的植物模型来设计飞行控制,用MATLAB, Simulink,和Simulink控制设计。我不再需要我的图书馆浏览器了,我可以让它全屏显示。再一次,GNC航空电子设备——哦,我想那是我在那张照片中看到的旧版本。我把它叫做调谐飞行控制系统。
制导系统很简单所以我们不会进入制导系统。再一次,通过迭代的设计过程,我有这些子系统布局。允许我快速迭代。事实上,我可以让别人来设计这个因为它和自动驾驶系统是分开的。当我进入自动驾驶系统,我们看到我的设计。我知道你觉得这看起来有点复杂。首先,我要提醒大家最后我会回答大家的问题所以大家可以在最后问我任何问题。但实际上,它比看起来要简单得多。如果你以前从未使用过Simulink,当我向你展示你可以在这种环境中执行的一些控制设计过程时,我想你会理解为什么这是一个如此强大的工具。
所以我在这里得到的是这是进入PI控制器的俯仰速率。这是进入比例控制器的z加速度,相当于这里有一个增益。如果你熟悉Simulink中的增益块,p控制器作为PID块的一部分只是一个增益。没有比这更复杂的了。不过,如果你想使用额外的功能,你可以让它更复杂。但这允许你在单个增益上使用PID调谐器而你不需要使用整定功能来整定整个PID控制器我马上就会展示。再往后退一点,这是飞行路径或者路径你有一个进入比例控制器的指令,抱歉,是误差。
然后我们有了这个状态流程图,它将决定我们使用哪个外部循环。如果我们处于高度保持模式,高度误差路径进入一个比例积分控制器它会输入到伽马指令中。我这里还有一个自动油门,它会输入我的油门指令。如果我处于自动爬升模式,也就是最大功率,我想让飞机上下倾斜,以保持空速,我反馈校准的空速,这将输入我的伽马指令。所以它实际上可以在外部循环之间切换使用这个状态流程图。
我会花点时间讲一下状态流程图这样你们就能理解这是怎么回事了。然后我可以回到这里,告诉你们整定PID控制器是怎么回事。这是我的状态流程图。这里没有太多东西。只有两种模式。可能有数百种模式的状态流图,所以相比之下,这是一个相当简单的图。它进入正常的飞行模式。我可以把它建立成失败模式,起飞和降落模式,地面控制模式,各种不同的飞行模式把这些在状态流中分开。当它进入时,它会判断自动爬升是否启动。如果是的话,我们就处于——我称之为起飞爬升模式因为这是典型的情况。 And if you're in takeoff climb mode, the gamma command equals that takeoff climb command generated by the calibrated airspeed and my throttle goes to max which is 1, which is 100%.
现在,如果自动爬升不再进行或者飞行员决定用一个高度指令来覆盖,我们将进入高度保持模式我们将高度指令发送给伽马控制器,然后油门指令会跟随自动油门。如果自动爬升重新启动,飞行员也没有试图推翻它,我们就会回到起飞爬升模式。为了显示它是什么样子的,我将在一个新的选项卡中打开这个试点块。这是R2012B的一个新特性现在我们有了选项卡,所以我可以有那个引导块,然后快速切换——现在我要回到这里——切换这两种模式。让我将它设置为开始时的默认条件,然后点击播放按钮。
我们看到的是,我们处于高度保持模式因为我们的自动爬升没有启动。现在,看看当我启动自动爬升时会发生什么。过渡到起飞爬升指令。当我关闭自动爬升,回到高度保持状态它允许你在这两种模式之间切换如果我在调试我的模型和飞行控制系统同时我在玩这个模型,我可以看到我在哪个模式。如果它没有按照我的预期运行,我可以进入状态流图,然后说,好,我知道我在正确的模式下,我知道我在这个高度保持模式下,所以我知道我在这个模式下期望它做什么,没有猜测。我不需要在图中设置作用域来解决这个问题。一切都在我眼前呈现出来了。
好了,这就是状态流。它和Simulink有点不同。我希望这对你来说不是太复杂。最后我再回答大家的提问。所以,如果你们对这方面有任何问题,我会为你们解答。所以问了。我不希望任何东西把你们吓跑,让你们觉得,哦,这太复杂了,因为如果你在做这种类型的控制设计,这真的是很好的,很有用的工具。好,我们回到这里。我已经演示了如何在这两种模式之间切换。让我一直放大到循环的最里面。 In aircraft design, at least the way I learned it, is you tune your controllers loop by loop. First I'll tune the pitch rate loop and then the z acceleration loop and then the flight path loop.
现在,我们有了可以同时调优所有这些循环的工具可用的鲁棒控制工具箱,不幸的是,我今天没有时间向你们展示它。但我可以向你们展示PID调谐器这是一种可视化每个循环的方法用图形化的方式调整循环。我要做的第一件事就是注释掉这个块。本质上这就像如果我删除了那个块路径就不再连接了。所以我在这里通过使用新的Simulink提供的注释退出功能来打开这个循环。现在,我给电梯输入的是PI控制器中的俯仰速率误差环。当我打开PID块时,你会看到这里有很多选项。这之前已经调优过了,但是为了不让您觉得我在作弊,我将把它设置为默认参数。
我可以在许多不同的选项中进行选择,但我只需要一个比例和积分。如果你在调整一个简单的增益反馈,你没有积分器,你没有导数,你仍然可以用PID调谐器来调整比例路径。这给了你很多选择和很多可变性这取决于你想如何处理这个PID块。我选择了PI控制器,如果我想,我可以使用连续时间。当然,这是我最终想要生成的代码,我把它作为离散时间。我把我的采样时间设置为TC。它被定义为1 / 60秒。
实际上我在这里画了一个极限。我的电梯的极限是20度。我说,我想把它限制在20度到- 20度之间,我在这里放了一个反上发条这样一旦它达到20度它就不会一直积分了,积分器就不会一直积分了。如果我只有一个比例控制器——让我们看看这个是否有效——它没有给我反上发条选项,因为没有任何东西可以上发条。只要我拖动比例积分,它就会记住我的选择,并把它放回去。PID块做的事情可能你已经在用积分器和增益块手动做了,但它让集成高级功能更容易一些。
现在,PID块本身可以在Simulink中使用——不需要任何其他工具。但是Simulink中没有的是这个调谐函数。这就是Simulink控制设计的目的。让我们看看当我按下这个按钮会发生什么。你可以看到它启动了PID调谐器。当PID调谐器出现时,它会选择它认为好的响应,当你按下调谐按钮时,它会查看它设计的线性系统来决定。所以在使用PID调谐器之前你必须确保你的系统可以用线性分析工具来线性化以确保它能正常工作。
如果这显示为0,或者它可能给您一个警告,说我不能线性化系统,那么您可能需要进行一些更改,以排除系统不能线性化的故障。但在我的例子中,系统可以线性化,它选择了一些参数作为初始比例积分值。现在,当我看这些参数时,我还可以看到我的时域特征以及频域特征,比如增益裕度和相位裕度——对控制工程师来说非常有用。我可以使用这些滑块来获得更快的响应,但牺牲一些增益余地。我可以观察频域看到我实际上只是调整了带宽,增益也随之改变。我们可以看到这个图表的主动更新。
我不仅可以观察到步骤参考跟踪,我还可以观察到控制器的努力。我知道电梯的正负倾角范围是20度,所以也许我想限制电梯给我的力。所以在这里,我要用三度的升力来实现阶跃响应。我还可以使用Bodie响应图来观察诸如输出干扰抑制、设备模型和开环响应等事情。作为一个控制设计者,我已经有了所有需要的东西来调整增益以适应飞行控制系统。点击应用后,我可以看到增益在这里被更新了。
但是我将把这些设置回原始值,我已经练习过几次了,我知道是- 9.4和- 2,因为我所有的其他循环都是基于这些值调优的。如果我把新调好的值放在那里,我就必须重新调好所有的循环,我不想那样做,因为我只是经历相同的过程。除了这里,你看我只有一个比例控制器,就像我之前说的,PID调谐器也适用于比例控制器。
我也调整了高度控制,爬升速度控制器,和飞行速度控制器。高度控制器还允许我调整状态流图。当我点击调优按钮时,我的线性系统似乎不那么容易调优,但我可以调优循环中的状态流。当我按下调节按钮时,它知道我处于什么状态,并相应地线性化系统。它允许我使用这个完整的控制系统,而不必把它分解成一个更简单的版本,并且仍然能够调整我的控制循环。
在这个过程中,我可以打开我的记录按钮。我已经准备好了一些信号可以记录。我可以扮演这个模型。也许在我的高度指令中增加一个新的步骤。等待它实现该步骤响应命令。一旦我点击停止,我所有的记录数据现在将在模拟数据检查器中可用。因此,当我在整个设计过程中进行迭代时,我可以观察信号的运行,以了解事情是如何变化的。我可以看到我的高度指令和我的实际高度控制的比较。这里我看到了一个很好的响应。
我让它跑的时间不够长。我本可以用3D可视化。在这个网络会议的环境中来回切换有点困难。但是你可以看到我对高度指令的反应很好。看起来一切都很顺利。当我迭代整个过程,重新调整我的控制器,实现我想要的需求时,我可以使用模拟数据检查器,它将存储我所有的运行,以供比较。
总结一下,我已经向你们展示了如何在Simulink中建模你的动态飞机系统,包括空气动力学和环境。我已经向您展示了如何使用Simulink控制设计和状态流进行复杂的飞行控制器设计,以及如何使用PID调谐器自动调优增益。因此,您可以为使用比例反馈环、比例积分或PID控制环的系统调优增益。任何组合都可以用PID调谐器调谐。我已经向你们展示了如何用Aerospace Blockset的FlightGear界面在3D中可视化结果。
我想提醒您,我使用文件交换来获得DATCOM数据的可视化。我认为用户社区是一个很好的资产,在世界杯预选赛小组名单那里你可以在文件交换中找到对你有用的文件,如果你有问题,可以查看MATLAB的答案,或者查看我们的几个博客中的一个,这样你就可以看到MATLAB和Simulink中的新内容,以及如何将其应用到你的设计挑战中。谢谢你!
相关产品2022世界杯八强谁会赢?
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。