在之前的一篇文章中,我简要介绍了车辆运动学模型的推导方法,得到了车辆的运动学模型,相关信息请移步
在介绍基于运动学的模型预测控制的控制器设计之前,先来了解一下什么是模型预测控制?为什么要用模型预测控制?最后再阐述线性时变模型预测控制的基本框架。
注:文中部分理论知识参考陈虹老师的《模型预测控制》,感兴趣的同学可以自行翻阅。
1、什么是模型预测控制?
我们来看看下面这张图,
r(.)是目标系统轨迹,yp是预测的系统轨迹,y(k)是当前系统的观测量,u是控制,m是控制时域,p是预测时域。
对于这样一个离散系统(1.1),
模型预测控制就是,在当前时刻k,y(k)是预测系统状态的起点,来预测未来一段时间内系统的输出yp,我们控制的目的是将yp能够跟踪目标值r(.),也就是说,我们希望寻找最佳的控制输入使得预测的系统输出与期望的系统输出越接近越好。也就是图1.1中阴影部分的面积最小、为此我们可以定义预测测与目标值之间的偏差,同时考虑最佳的控制输入,建立一个满足控制约束和输出约束的二次型的成本函数,通过求解成本函数的解u,并将解的第一个值作用于系统,然后系统进入时刻k+1,同样根据k+1时刻的测量值y(k+1)作为初始条件重新预测系统未来输出,计算优化问题,再将优化解的第一个值作用于系统,如此往复直到k ->无穷。
简单的说,模型预测控制可以分为三步:
-1 根据当前系统的测量信息,预测系统未来的动态;//基于模型的预测
-2 求解优化问题;//在线滚动优化
-3 将优化解的第一个元素作用于系统。//反馈校正
需要注意几点
1. 控制时域小于等于预测时域,
2. 为什么只挑选控制时域的第一个作用于系统呢?(我的理解是第一个控制分量更加准确)
3. 如果MPC是一个无约束的、线性的,且目标函数是二次型的,那么就可以求出解析解。实际上,考虑约束等只能求数值解,且是次优的。
4. 为什么说MPC是一种开环优化问题?
这点我也没彻底明白,我一再逼问chatgpt,最后它的说法有点说服力,它是这么忽悠我的:
尽管MPC使用实时反馈信息进行优化,但控制序列的生成是基于未来的预测,而不是直接基于实时测量的反馈。这种先预测未来,然后优化的方法被认为是一种“开环”控制,因为控制输入的生成不依赖于实时反馈的调整。因此,尽管MPC涉及对当前状态的实时测量和反馈,但由于控制序列是基于未来预测进行优化的,因此通常被归类为开环优化问题。
2、为什么要用模型预测控制?
或者说它的优点:
- 1 模型预测控制能有效解决线性控制系统或非线性控制系统中的约束问题,包含控制约束、控制增量约束、控制输出约束等。
- 2 不同于离线的最优控制(如LQR),MPC不是采用一个不变的全局优化目标,而是采用时间向前滚动式的有限时域优化策略。这以意味着优化的过程不是一次离线进行,而是反复的在线进行的,且对于这种有限优化目标的局限性,使其在理想情况下得到的是次优解,但是这种在线滚动优化能顾及模型失配或干扰等引起的不确定性,及时进行弥补。
3、怎么设计模型预测控制
3.1 线性时变模型预测控制(LTI MPC)设计基本框架?
在什么是模型预测控制中,已经提到MPC包含三个部分,基于模型的预测;滚动优化;反馈控制。
基于这三个部分,简要介绍MPC设计的算法框架或步骤:
1. 基于模型的预测
- 1 分析动态系统,根据物理学理论建立系统微分方程(连续的系统)
- 2 由于大部分系统是非线性的,因此,我们对非线性系统进行线性化
- 3 MPC是求解离散系统的数值解,因此还需对线性化的系统进行离散化(离散化方法:前向欧拉法(关于前向欧拉法的介绍 请看此链接1和链接2))
- 4 确定预测时域和控制时域,推导预测模型
上面说的是机理模型,不过,当前也有一些令人激动的方法,比如基于数据训练一个模型出来,我不知道怎么弄,等我弄懂了再更新这块内容吧,如果有知道的大佬,可以一起交流哈。
2. 滚动优化
- 1 根据输出与参考值之间的误差 和 控制输入建立成本函数cost function
- 2 将成本函数转换成标准的二次型形式,方便求解
- 3 建立约束
3. 反馈
- 将求得的优化解的第一个分量作用于系统。
至此,完成线性时变模型预测控制的答题框架。后面,基于以上理论,将设计基于运动学模型的模型预测控制的轨迹跟踪控制。
4、 模型预测控制的关键技术(23.12.18补充)
1. 模型的建模:如何建立合理的模型,既能表征对象特性,又能最大限度的简化。
2. 模型的离散化
3. 最优控制问题的求解:核心中的核心!模型预测控制是套着控制的外壳,其内涵还是最优问题。
一般有两种方法:基于解析法和基于数值法。解析法一般有变分法、极大值原理等求解函数的导数或欧拉-拉格朗日方程,找到函数的驻点或极值点,求得精确解。而数值法是根据数值计算的方法,有梯度下降法、牛顿法、动态规划和二次规划等方法,通过迭代,逐步逼近函数的最小值。不一定最优,可能次优。
最近又有一些新方法,比如机器学习的方法。利用机器学习的方法,通过训练数据,学习函数的近似表达式,然后用数值方法求解最小值。
这篇文章是当年疫情时写的,感觉写的很笼统。最近项目上要用到MPC,我又回头看MPC。关于第四节我后面再写一系列文章来具体介绍我所学习的这块技术。欢迎交流~