从系列:状态空间
布莱恩道格拉斯
LQR是一种基于状态空间表示的最佳控制类型。在此视频中,我们在非常高的级别介绍了这一主题,以便在您正在研究其后面的数学时,可以了解控制问题,并可以在这种理解上建立这种理解。此视频将涵盖最佳的方法以及如何思考LQR问题。最后,我将向您展示Matlab中的一些示例®这会帮助你对LQR有一点直觉。
让我们谈谈线性二次调节器或LQR控制。LQR是一种基于状态空间表示的最佳控制类型。在此视频中,我想在非常高的级别介绍这个主题,以便在您研究其背后的数学时,您可以避免对控制问题的一般理解,并可以在这种情况下建立这种理解。我将介绍它是最佳的意义,如何考虑LQR问题,然后我会向您展示Matlab的一些例子,我认为可以帮助您提高LQR的一点直觉。我是布莱恩,欢迎来到Matlab技术谈话。
首先,让我们比较我们在第二视频和LQR控制器中覆盖的极点放置控制器的结构。这样你就有一些事情是如何不同的。通过极点放置,我们发现,如果我们在状态向量中回馈每个状态并将它们乘以增益矩阵,则我们有能力在我们选择的任何地方放置闭环极点,假设系统是可控的和可观察的。然后我们缩放了参考术语以确保我们没有稳定的态参考跟踪错误。
另一方面,LQR结构反馈完整的状态向量,然后将其乘以增益矩阵K,并从缩放的参考中减去它。正如你所看到的,这两个控制律的结构是完全不同的,实际上,它们是完全相同的。它们都是全状态反馈控制器,我们可以用相同的结构从LQR和极点配置实现结果。
关于这个结构的一个简短的注释:我们可以设置它来反馈输出的积分,或者我们可以将增益应用到状态误差上。所有这三种实现都可以产生零稳态误差,并且可以与极点配置或LQR的结果一起使用。如果你想了解更多关于这两种反馈结构的信息,我在描述中留下了一个很好的来源。
好的,我们回来了。那么如果我们以完全相同的方式实现这两个控制器,我们为什么会给这两个控制器不同的名称?好吧,这是关键。实现是相同的,但我们选择k是如何不同的。
通过杆子放置,我们通过选择我们想要放置闭环杆的位置来解决k。我们想要地方他们在特定的地方。这太棒了!但是这种方法的一个问题在于那些良好的地方是那些闭环杆的位置。这可能对具有多个执行器的高阶系统和系统来说不是一个非常直观的答案。
所以通过LQR,我们不挑选杆子位置。我们通过选择对我们很重要的闭环特性来找到最佳k矩阵 - 系统执行的程度如何,并且需要多少努力来获得这种性能。那个陈述可能不会造成很多意义,所以让我们通过我认为会有所帮助的快速思维练习。
我正在借用并修改来自Christopher Lum的这个例子,他们在LQR上有自己的视频,这是值得一看的,如果你想要更深入地解释数学的解释。我在描述中链接到他的视频。但这是一般的想法:
让我们说你试图找出从你家工作的最佳方式或最优越的方式。您有几个可供选择的交通选择。你可以驾驶你的车,你可以骑自行车,乘坐公共汽车,或者装备直升机。问题是,这是最佳选择?这一问题本身无法回答,因为我没有告诉过你一个好的结果意味着什么。所有这些选项都可以让我们从家里工作,但他们这样做的不同,我们需要弄清楚对我们很重要。如果我说时间是最重要的事情,那么尽快工作,那么最佳的解决方案就是采取直升机。另一方面,如果我说你没有多少钱并尽可能便宜地工作是一个好的结果,那么骑自行车就是最佳的解决方案。
当然,在现实生活中,你没有无限的钱来最大化性能,你没有无限的时间来尽量减少支出,而是你试图在两者之间找到平衡。所以也许你有理由你有一个早期会议,因此有价值所需的时间,但你没有独立富裕,所以你关心它需要多少钱。因此,最佳的解决方案是乘车或乘坐公共汽车。
现在,如果我们想用一种有趣的方法来从数学上评估哪种交通方式是最优的,我们可以建立一个函数,将出行时间和每种选择所花费的金钱相加。然后我们可以用乘数来衡量时间和金钱的重要性。我们将根据自己的个人偏好对每个矩阵进行加权。我们称它为代价函数,或目标函数,你可以看到它很大程度上受到权重参数的影响。如果Q高,我们就会惩罚花费更多时间的选项,如果R高,我们就会惩罚花费大量金钱的选项。一旦我们设置了权重,我们就会计算每个选项的总成本,并选择总成本最低的选项。这是最优解。
有趣的是,基于您附加到性能和支出的相对权重存在不同的最佳解决方案。金宝搏官方网站没有通用的最佳解决方案,只有给予用户的欲望最好的解决方案。首席执行官可能拿一架直升机,而大学生可能会骑自行车,但鉴于他们的偏好都是最佳的。
这与我们在设计控制系统时确切的推理是完全相同的推理。我们可以考虑并评估系统在系统表现的程度之间以及我们想要花多少绩效来评估对我们重要的事情。当然,通常我们想要花费多少不是以美元衡量,而是在执行器的努力中,或所需的能量。
这就是LQR如何找到最优增益矩阵。我们建立了一个成本函数,将性能和努力总时间的加权和相加,然后通过解决LQR问题,它返回产生最低成本的增益矩阵,给定系统的动力学。
现在我们与LQR一起使用的成本函数看起来与我们为旅行示例开发的功能不同,但概念完全相同;通过调整Q,我们通过调整Q来惩罚不良表现,通过调整R来惩罚执行器努力。
因此,让我们来看看这种成本函数的性能意味着什么。在国家向量上判断表现。目前,让我们假设我们希望每个状态都要为零,以返回其起始均衡点。因此,如果系统在某些非零状态下初始化,则返回零的速度越快,性能越好,成本越低。以及我们可以获得衡量它返回到所需状态的速度的尺寸是通过查看曲线下的区域。这就是积分在做什么。具有较少区域的曲线意味着它比具有更多区域的曲线更靠近目标的时间。
然而,状态可以是负的,也可以是正的,我们不想让负值从总成本中减去,所以我们将值平方以确保它是正的。这样做的效果是惩罚更大的错误比惩罚更小的错误更严重,但这是一个很好的妥协,因为它将我们的代价函数变成了一个二次函数。二次函数,如z = x^2 + y^2是凸的,因此有一个确定的最小值。服从线性动力学的二次函数仍然是二次的所以我们的系统也会有一个确定的最小值。
最后,我们希望能够重量每个州的相对重要性。因此,Q不是单个数字,但是一个方形矩阵,具有与状态相同的行数。Q矩阵需要是正定的,使得当我们将其乘以状态向量时,产生的值是正的和非零。并且通常它只是沿对角线沿着正值的对角线矩阵。通过这个矩阵,我们可以通过在真正的Q矩阵中的相应价值中实现我们想要真正误差的状态,以及我们不关心的状态,使得这些值非常小。
另外一半的成本函数增加了致动的成本。以非常相似的方式,我们看看输入向量,我们正方形术语以确保它们是正的,然后用R矩阵重量,该R矩阵沿其对角线具有正乘法器。
我们可以以较大的矩阵形式在如下写入,而您没有看到像这样的成本函数,它可以帮助我们可视化某些东西。Q和R是该较大加权矩阵的一部分,但该矩阵的OFF对角线术语为零。我们可以用n填充那些角落,使得整体矩阵仍然是正定的,但现在n个矩阵惩罚了输入和状态的交叉产品。下载188bet金宝搏虽然有用于将您的成本函数与N个矩阵设置成本函数,但对于我们来说,我们将保持简单的东西,并只将其设置为零,仅关注Q和R.
因此,通过设置Q和R的值,我们现在有办法指定对我们很重要的方式。如果其中一个执行器非常昂贵并且我们正在尝试节省能源,那么我们通过增加与它对应的R矩阵值来惩罚它。如果您正在使用卫星控制的推进器,这可能是这种情况,因为它们使用了燃料,这是一个有限资源。在这种情况下,您可以接受较慢的反应或更多状态错误,以便您可以节省燃料。
另一方面,如果性能真的至关重要,那么我们可以通过增加与我们关心的状态对应的Q矩阵值来惩罚状态误差。当使用反作用轮进行卫星控制时,可能会出现这种情况,因为它们使用的能量可以存储在电池中,并通过太阳能电池板补充。因此,为低误差控制使用更多的能量可能是一个很好的权衡。
现在最大的问题是,我们如何解决这个优化问题?最令人失望的答案是解的推导超出了这个视频的范围。但是我在描述部分留了一个很好的链接,如果你想仔细阅读的话。
然而,好消息是,作为一个控制系统设计师,通常你进行LQR设计的方式不是通过手工解决优化问题,而是通过开发一个系统动力学的线性模型,然后通过调整Q和R权重矩阵指定什么是重要的,然后在MATLAB中运行LQR命令求解优化问题,返回最优增益集,然后对系统进行仿真,必要时重新调整Q和R。所以只要你理解Q和R是如何影响闭环行为的,它们是如何惩罚状态误差和执行器努力的,并且你理解这是一个二次优化问题,那么在MATLAB中使用LQR命令来找到最优增益集就相对简单了。
通过LQR,我们已经将设计问题从我们放置在哪里,向问题搬到了问题,我们如何设置Q和R.不幸的是,没有单尺寸适合的方法来选择这些权重;但是,我认为设置Q和R比采摘杆位置更直观。例如,您可以刚刚开始Q和R的标识矩阵,然后通过试验和错误调整它们并对系统进行直接来调整它们。因此,为了帮助您培养一些直觉,让我们在Matlab中走一些例子。
好吧,这需要一个稍微解释。让我们从代码开始。我在无摩擦环境中具有非常简单的旋转质量模型,系统具有两个状态,角度和角度率。我正在使用LQR设计一个全态反馈控制器,它真的不可能更简单。我将从第一个对角线条目绑定到角度误差的Q的标识矩阵开始,并且第二个对角线条目与角速率相关联。该系统只有一个致动输入,这是四个旋转推进器,使得所有行动都在一起以创建单个扭矩命令。因此,R只是一个值。
现在我使用LQR命令解决最佳反馈增益,并构建表示闭环动态的状态空间对象。使用控制器设计,我可以模拟对初始条件的响应,即设置为3个弧度。这几乎是整个事情。此脚本中的所有其他内容只是使这个花哨的情节使其更容易理解结果。
好的,让我们运行这个脚本。您可以看到UFO将其初始化为3个弧度。在顶端,我正在跟踪机动所带来的动作是多长时间的性能,以及用多少燃料来完成机动。所以让我们把它踢掉,看看控制器的表现如何。
看看,它在5.8秒内完成了15个燃料的机动,并在过程中得到了牛,这是重要的部分。当推进器处于活动状态时,它们会产生扭矩,随着时间的推移而加速UFO。因此,燃料使用与加速度的积分成比例。所以我们加速越长,使用燃料越多。
现在让我们看看我们是否可以用更少的燃料通过惩罚推进器更多。我将R提升到2,然后重新运行模拟。
嗯,我们使用了2个燃料单位,但以超过3秒的费用。问题是通过这种组合,它只是一个左右的目标,不得不浪费时间来回来。因此,让我们试图减慢最大转速速度,希望它不会过冲。通过惩罚Q矩阵的角速率部分,我们将要这样做。现在,任何非零利率成本之前都是它之前的作用。让我们给它一个镜头。
我们节省了大约一秒因为它没有超调,在这个过程中又减少了一个单位的燃料。好了,小事情说够了。现在让我们通过放松角度误差权重来节省燃料。
好的,这现在真的很慢。让我加快视频才能完成它。最后,我们使用了5个单位的燃料,以前不到一半以前使用过。我们也可以相反,并调整一个非常激进的控制器。
是的,这更快了。不到2秒,我们的加速度关闭了图表。这就是你如何旋转来拿起牛。不幸的是,它的费用为近100个单位的燃料,所以一切都是下方的。好的,希望通过调整这两个矩阵,开始看看我们如何通过调整这两个矩阵来调整和调整我们的控制器。这很简单。
现在,我知道这个视频正在拖动,但是用不同的脚本,我想快速向你展示一件事,这就是LQR的强大比杆子放置更强大。这里,我具有不同的状态空间模型,其中有三个状态和单个执行器。我已经定义了我的Q和R矩阵,并解决了最佳增益。和之前一样,我将生成闭环状态空间模型,然后将响应响应为1,0,0.I,然后绘制第一个状态的响应,从1返回到0;执行器努力;以及闭环杆和零的位置。
让我们运行这个,看看会发生什么。第一个状态可以很好地追踪到0,但代价是大量的驱动。我没有建立任何特别的模型但是假设执行器的努力是所需的推力。这个控制器需要10单位的推力。但是,假设推进器只能产生2单位的推力。这种控制器设计会使推进器饱和我们就得不到我们想要的响应。现在,如果我们使用极点布置来开发这个控制器,现在的问题是我们应该移动这三个极点中的哪个来减少执行器的作用?这不是很直观,对吧?
但对于LQR,我们可以很容易地找到R矩阵,通过提高单个值来惩罚执行器的使用。我会重播脚本。我们看到响应较慢,如预期,但驱动器不再饱和。看看这个,所有三个闭环极点都随着r的单一调整而移动,所以如果我们使用极点放置,我们必须知道像这样移动这些极点,以减少驱动器的努力。那将是相当困难的。
所以这就是我想要离开这个视频的地方。LQR控制非常强大,希望您看到建立并相对直观地调整和调整很简单。最佳部分是,它根据您的重量性能和努力如何返回最佳增益矩阵。所以这取决于你如何希望你的系统在最后表现。
如果你不想错过下一个Tech Talk视频,别忘了订阅这个频道。此外,如果你想看看我的频道,控制系统讲座,我也涵盖了更多的控制理论主题。谢谢收看。下次见。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。