无人机仿真与控制,第5部分:PID控制器整定
从系列中:无人机仿真与控制
布莱恩•道格拉斯
在上个视频中,我们学习了非线性模型是如何精确地用于模拟,但它们并不适合线性分析和设计。本视频采用鹦鹉微型无人机的非线性模型,并建立了一个可线性化的模型,可用于调整我们的控制体系结构中的6个PID控制器。
我们使用Simulink中的PID调谐器应用程序来调整高金宝app度控制回路,并展示为什么拥有一个良好的系统模型是基于模型的设计的基础。
在上个视频中,我们学习了非线性模型是如何精确地用于模拟,但它们并不适合线性分析和设计。为此我们需要一个线性模型。它不会像我们的仿真模型那样准确,但我们将能够使用它来调整我们控制体系结构中的6个PID控制器。这就是我们这集视频要做的。我是Brian,欢迎来到MATLAB技术讲座。
这个视频的大部分时间我们将在Simulink中工作,但与其从这里开始,我认为如果我先设置上下文,一切都会更有意义。金宝app
到目前为止我们得到了什么?我们有一组非线性模型围绕着一个完整的飞行控制软件模型。这是为自动代码生成而设置的软件,它有直接在控制循环中的控制器和状态估计器,但也有其他逻辑,如故障保护和数据记录。每一个都有非线性分量。因此,为了获得整个系统的线性模型,我们需要线性化战斗软件和围绕它的模型。
然而,根据我的经验,很难有一个飞行软件,设置好自动代码生成以及线性化。这是因为飞行软件有if语句、开关、状态机和各种代码运行所需的东西,但很难或不可能线性化。因此,我们通常建立一个完全独立的模型来进行控制器设计。具体地说,是能够线性化的。所以在这个视频中,我将从完整的四轴飞行器模型开始,它是航天积木集的一部分,然后开始删除一些控制器设计中不需要的东西。特别是那些使线性化变得困难的东西。
一旦我们有了这个分解的模型,我们将使用Simulink中的PID调谐器应用程序来线性化这个模型并调整PID控制器。金宝app
如果你还记得第二集视频,我们的控制体系结构是这样的,有几个不同的控制环和6个不同的PID控制器。我们将从调整一个循环开始,高度循环。记住,这是独立于其他循环,所以我们可以调整和调整高度,而不影响滚,俯仰,或偏航。为了确保它们完全不在等式中,我们将滚动、俯仰和偏航的命令设置为0。
我们还会假设传感器动态和噪声不会对控制器设计产生重大影响。如果这是真的,那么我们可以删除传感器模型和状态估计逻辑。基本上,我们假设我们的控制器完全知道无人机的真实高度。在我们完成控制器调整后,我们将在完整的非线性模型上测试结果,看看这个假设是否正确。如果它不工作,然后我们将添加传感器回来,再试一次。我喜欢尽可能从最简单的模型开始,如果有必要,只会更复杂一些。
然后我们将线性化高度循环并调整增益以获得我们所追求的高度性能。现在,在这个视频中,我只会调优这个控制器,但其他控制器的过程也几乎相同。
在高度循环之后,我将转向调整偏航控制器,保持滚度和俯仰不变,保持高度固定。一旦完成,我就会转向滚动和俯仰。一旦这些内环控制器都调好了,我就会移动到外环位置控制器上,并在内环控制器处于活动状态并保持方向时进行调优。通过这种方式,我们将逐步通过6个PID控制器中的每一个,并在最后让它们一起工作。
这就是我们将要做的事情的概述,随着我们的进行,我会添加更多的上下文,但这应该足以理解我在做什么,因为我开始移动Simulink块。金宝app让我们开始吧。
我想做的第一件事就是看看库存高度控制器做得如何。我将从状态总线中选取高度并用范围绘制它。控制器试图保持0.7米的高度,并记住高度是在无人机参考系中测量的,该参考系有正Z轴指向下方。所以我们的控制器实际上是把海拔控制在-0.7。正如你所看到的,有一个轻微的超调与库存控制器的方式,但它解决了-0.7很好。让我们看看是否可以调整控制器以获得不同的性能。
这是我们的模拟模型,我不想改变它。相反,我将复制整个东西,并将其粘贴到它自己的模型中,以便我们可以修改并用于控制器调优。好了,现在开始移除东西。首先,我们没有我刚才添加的任何可视化或范围。
我们还可以移除传感器块,因为我们只是要反馈一个完美的高度状态。好,现在如果我进入飞行控制系统这里有很多我不需要的东西。记住,我们现在只关注高度控制器。所以在飞行控制器子系统里,我只抓取高度参考和控制器加上电机混合算法和推力到电机指令块。这将是我们完成高度循环所需要的唯一部分飞行代码。
我将把这些模块放到模型的顶层,然后移除剩下的飞行控制软件。这些模块的输出是电机速度指令,我们可以直接输入到机身模型中。现在我将滚转、俯仰和偏航力矩设置为0,确保只要机身上没有其他外力和力矩——比如阵风或其他什么——机身就只能上下移动。我知道环境块不能像那样模拟外部干扰,所以我们只需要将命令设置为0就可以了。
现在我们需要把完美的高度状态反馈给高度控制器我们有一个简化的闭环系统,我之前给你们看过。现在我们可以进入高度块看看PID控制器该怎么做。
我们在第三个视频中见过这个控制器,但我还是想简单描述一下。首先,这只是一个PD控制器,导数路径不是由实际的导数提供的,而是由卡尔曼滤波器估计的高度率提供的。记住,这是建立PD控制器的好方法因为我们不是对噪声信号求导,而是直接估计速率。然而,当我们反馈实际状态而不是通过状态估计器时,这种设置就不起作用了。这是因为我们没有反馈真实速率状态。但这没关系,因为对于这个模型,我们已经去掉了传感器块和与它们相关的噪声,有一个非常干净的高度信号。因此,我们可以将高度信号输入到Simulink PID块中,该块将为我们处理导数,并在金宝app需要时添加一些过滤。
我将它设置为PD控制器并将增益设置为当前值。然后我将删除现有的PD增益和逻辑,并将其替换为PID控制器块。现在可以进行自动调优了。我们有我们的高度参考,-0.7米,这是在这个例子中与真实高度的比较。将误差输入PD控制器,然后在控制器中加入前馈重力项。这基本上增加了抵消无人机重量所需的推力,因此PD控制器只需要增加正推力来上升和负推力来下降。我们可以通过在PD控制器中添加积分来移除前馈路径,但我们将它保持这样,因为这是模型已经建立的方式。
好了,现在我们可以打开PD块并点击调谐按钮来启动自动调谐器。自动调谐器做的第一件事是线性化整个控制回路,记住,现在我们删除了所有困难的组件,这个系统能够被线性化。该工具创建了这个工厂的线性模型,我们可以导出并使用它来手动设计PID增益。
然而,我们将留在PID调谐器应用程序中,因为它为我们绘制了控制器和线性化植物的闭环响应,我们可以简单地用顶部的滑块调整响应时间和环路的瞬态行为。您可以看到,股票设计,虚线,有类似的行为,我们看到的模拟模型。它不会完全相同因为我们去掉了所有的非线性分量,但我们的目标是它足够接近增益选择。我们稍后会进行测试。现在我们可以移动滑动条并调整行为。在本次设计中,我希望通过将带宽设置为5 rad/s,相位裕度设置为60度,来达到一定的频域性能。
这产生了大约0.32的比例增益和仍然为0.3的导数增益。
现在让我们离开设计模型,回到完整的仿真模型,看看这些新的增益是如何表现的。我将回到高度控制器,在比例路径中放入0.32,在导数路径中保留0.3,然后回到顶层运行模拟。
看看,有了新的增益,我们改变了悬停控制系统的行为。你会注意到,超调消失了,但根据我们的线性分析,我们预计无人机仍然会有一点点超调。这种差异是由于我们使用了不完美的线性模型进行分析。然而,结果仍然接近我们的设计,所以线性分析给了我们一个很好的起点。如果我们对这个反应不是很满意,我们现在可以稍微调整增益,看看我们是否可以提高性能。
然而,真正的测试不是在模拟环境中进行测试,而是在真实的物理硬件上进行测试。现在,如果硬件的行为与此模型完全相同,那么我们就知道基于模型的设计调优也适用于此模型。
但我们不必假设,因为我们可以从这个Simulink模型为Parrot Minidrone生成代码,我们可以在实际硬件上尝试我们的新收获。金宝app
我上次提到过这一点,但它值得重复。记得戴上护目镜。你永远不能100%确信你的控制定律不会导致车辆失控,因为它实际上是一个飞行的割草机,可能是危险的。好了,开始吧。我已经把新的增益和飞行代码加载到我的迷你无人机上,准备起飞。
好吧,这并不奏效。到底发生了什么?
嗯,我不是百分之百确定。但我确实知道一些事情,那就是硬件并不像模型那样运行。有一些东西模型是缺失的,或者对我的硬件建模不正确,给我的印象是控制律可以工作。拥有一个好的模型是基于模型的设计的基础。如果你使用基于模型的设计,我想你会发现你要花更多的时间来创建和验证你的系统模型,而不是开发你的控制律。但这是值得花时间的,因为一旦您有了一个好的模型,那么设计、模拟和验证您的系统就会比使用物理硬件要容易得多。
一些肯定没有被建模的事情可能很重要,比如超声波在低空的工作效果如何,或者在接近地面飞行时空气动力学如何变化。我的一个问题是,这个模型是为一般的Parrot迷你无人机开发的,我的特定无人机可能有不同的参数。电池电压可能低,质量脱落,电机转矩不同,等等。
现在,我想通过系统识别或其他物理测试来研究这个模型与实际情况不同的地方,并进行必要的更改。但是,不幸的是,在这个视频中我没有时间去详细地研究这个模型所以我要把它留到下次。
好吧,我改变主意了,我不想以一个失败的实验结束这个视频。我开始思考这种行为,并提出了一个可能的问题。这个前馈项的计算是为了产生所需的推力,以完美地抵消无人机的重量。这样,PD控制器只需要稍微上下调整推力来改变高度。但如果这一项太低,或者换句话说,如果模型认为无人机的重量更低,或者旋翼产生的推力比实际高,该怎么办?然后会有一些PD控制器需要处理的剩余重量,通过降低比例路径,我们已经降低了克服重量的能力,无人机将有麻烦起飞,就像我们看到的那样。
所以我做了一个测试,我去掉了反馈高度控制器,只是依靠重力偏移项来提高无人机。我的无人机的股票价值导致它只是坐在地上,不能起飞。然后我将值提高10%,再试一次,然后再提高20%。在20%的速度下,无人机只能勉强离开地面。因此,我认为这对于我的硬件来说是一个更合适的前馈术语。
然后,我又添加了反馈项,最后一次运行测试并检查结果。它的工作原理。这是一个快速解决问题的方法。我还需要调整无人机的模型来反映这一点。对我来说,这听起来是个很有趣的项目。因此,如果你发现自己在家里尝试这样做,我认为这将是一个很好的基于模型的设计的介绍,并给你一个机会学习如何使用别人提供给你的模型,并根据你的特定情况调整它。至少,它给了你一个借口去开发四轴飞行器的控制法则。我希望你能和我一样感到兴奋。
如果你不想错过下一期Tech Talk视频,不要忘记订阅这个频道。此外,如果你想看看我的频道,控制系统讲座,我在那里涵盖了更多的控制理论主题。感谢收看,我们下期见。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。