技术分享 | 控制算法你只懂PID?快来看看模型预测控制
Posted 阿木实验室
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术分享 | 控制算法你只懂PID?快来看看模型预测控制相关的知识,希望对你有一定的参考价值。
一说到控制,大家肯定想说PID,通过调节PID的参数,可以满足多数应用场景,既然PID控制能够满足多数应用场景,那还有必要用其他的控制算法吗?当然有必要。模型预测控制算法是最近突然火起来的一种控制算法,模型预测控制能够火起来必然有他的过人之处,模型预测控制最大的优势就是能够处理带多个约束的控制问题,在满足多约束条件下能够给出最优控制量。
假想一个小车让他以最快的速度跑100m,这个问题好像比较简单,把油门踩到底直接冲向终点就可以了。但是,似乎好像没那么简单,问题的关键是只让小车以最短的时间刚好跑100m,不能多也不能少,大家想想一想有没有好的办法,matlab官方给出了一个很好的例子,用模型预测控制来解决这个问题,下面给出B站上的matlab官方链接。
链接:https://www.bilibili.com/video/av455281550
为了更加深入的理解模型预测控制,本文借用网上的一个教程。
1 问题描述
在无限光滑的一维水平直线上有一个质量为m的小车,初始位置与初始速度都为0,现需要设计控制器,在传感器测得小车位置x的基础上,为小车提供外力u,使其跟随参考点xr
图1 例图
2 预测模型
首先建立动力学方程:
选取状态向量(除非特殊说明,后文中x表示状态向量,而不是小车位置),构建系统状态方程为:
其中,
。
3 预测模型离散化
采用前向欧拉法将状态方程离散化:
其中 ,T为控制周期。
4 预测
MPC方法需要对未来系统状态进行预测,记未来 p 个控制周期内预测的系统状态为:
p称为预测时域,括号中 k+1|k 表示在当前 k 时刻预测k+1 时刻的系统状态,以此类推。另外,预测动态系统未来状态时,还需要知道预测时域内的控制量Uk :
这是将要求解的优化问题的独立变量。
现在,我们可以通过离散化状态方程依次对未来 p 个控制周期的系统状态进行预测:
整合成矩阵形式:
其中,
上式中的下三角形式,直接反映了系统在时间上的因果关系,即 k+1时刻的输入对 K时刻的状态没有影响, k+2时刻的输入对 k 和 k+1 时刻没有影响,等等。
5. 优化
这一节我们将求解预测时域内的控制输出Uk ,在求解优化问题之前,我们首先明确优化问题的数学描述。
我们的控制目标是使系统的状态跟踪期望的一条轨迹,通常称为参考值,定义预测时域内的参考值序列:
注意,在 k时刻进行控制的时候,控制器就必须已经得到了 k 时刻到 k+p 时刻的参考值,而PID就不需要这么多信息,这是MPC的一个缺点。
我们希望寻找最佳的控制量 ,使得预测时域内的状态向量与参考值越接近越好,这是一个开环最优控制问题。为此,我们用预测状态向量与参考值之间的累计误差定义一个简单的优化目标函数:
经常地,我们不希望控制动作太大,优化目标函数再添加一项对控制量的约束:
因此,该优化问题可以描述如下:
我们将优化函数 展开后合并同类项:
上式中 是常数项,对“ 为何值时取得最小值”这一问题没有影响,因此直接舍去。
matlab输入 “help quadprog”查看二次型优化函数quadprog的说明文档,令:
可得最终优化目标函数,至此可直接调用matlab quadprog函数求解 ,将 的\\第一个元素******(****求解了多个控制量,但是只用第一个****)****提取出来,作为本控制周期的控制量。
6 仿真
对于例子的动力学方程:
两边同时拉普拉斯变换:
可得传递函数:
在simulink中搭建仿真环境如图,并编写MPC控制器:
图 2 仿真
7总结
上述例子给出的是一个不带约束的实际问题,如果在求解带约束的问题优化可直接调用matlab函数中优化求解器fmincon。如果大家看了数学推导感觉很复杂,那就先理解模型预测控制的思想,加深理解。上面给出了模型预测控制的简单例子,模型预测控制也有很多的变种,具体问题具体分析,没有最好的,只有最合适的。
-
- End - -
技术发展的日新月异,阿木实验室将紧跟技术的脚步,不断把机器人行业最新的技术和硬件推荐给大家。看到经过我们培训的学员在技术上突飞猛进,是我们培训最大的价值。如果你在机器人行业,就请关注我们的公众号,我们将持续发布机器人行业最有价值的信息和技术。
本文由博客一文多发平台 OpenWrite 发布!
以上是关于技术分享 | 控制算法你只懂PID?快来看看模型预测控制的主要内容,如果未能解决你的问题,请参考以下文章
matlab-采用专家PID控制算法,这个算法名字叫做专家算法,审核的人仔细看