到底什么是模型预测控制MPC(一)

article/2025/11/9 13:26:01

1. 为什么使用MPC控制

        在浏览文章的时候,很多文章都是基于MPC来做的。那么究竟什么是模型预测呢?

模型预测也可以说是一种我们熟悉的反馈控制算法,其目的就是预测出未来的输出。以一个生活中的例子引入:

 

         在我们驾驶汽车的时候,驾驶的目的就是让汽车行驶在安全的道路上。作为一个驾驶员,我们可以控制的是汽车的油门和方向盘,也就是对应控制的是汽车的速度和方向。在驾驶的过程中我们会不断的调节方向盘的角度,这是因为我们知道当前角度如果保持下去的话车就会拐弯,不再是直线行驶。(可以想象科目三考试时,教练为什么让我们不断的小范围角度的晃动方向盘)。  这也类似于模型预测的思想,当无人驾驶时,控制器必须预测知道当前方向盘的角度在运行一段时间之后的偏离方向。

使用MPC的原因分析:

 1. MPC可以处理多输入多输出系统

        

 如在上面的控制系统中,y2的输入反馈回来也会影响y1的输入。而我们要设计出两个独立的控制回路,这对于PID参数调节有很大的要求,如果对于一个更大的系统,那么每一个PID控制回路的的参数调节将会是一个巨大的挑战性问题。

 

而MPC恰好是一个多变量的控制器,它考虑了所有的系统之间的相互作用关系,使得结构很是简单。 

 2. MPC可以很好的处理约束条件

        

 当控制器控制汽车无人驾驶时,不可能让速度很大,例如在实际生活中我们要注意与前车的距离,如果前车速度慢,我们的速度当然也要慢。由于汽车物理构造的限制,其加速度不可能很快,可以达到100m破秒,不可能达到1000m破秒。所以这些都是在要求汽车在路上直线行驶目标时的约束条件。

3. MPC还具有预测功能,类似于前馈控制

        

         假如自动驾驶汽车没有预测功能,它只有在接近转弯时才能知道该转弯了。但此时并没有提前刹车,为了安全考虑,不得不急刹。如果车上有乘客,这将是一件危险的事情。

        而如果能够提前预测,像是我们自己开车时,遇到前面有需要减速的事情,我们都会提前轻踩刹车控制速度。

4. MPC的不足之处

        MPC需要计算性能较为良好,以及内存较大的计算机,这是因为MPC在每一个时间采样点都将进行在线优化。


2. 什么是模型预测控制 MPC

        在自动化的控制策略中。我们必须知道输入量,被控对象的模型才能得到输出。

         在上述的控制模型中,MPC控制器里面有被控对象的模型,有一个优化器。那么控制器具体是怎么工作的,还以汽车驾驶为例。

       在一个由MPC控制的自动驾驶的汽车中,中间的绿线是汽车行驶的参考线,P是可以预测到的最远步长 。在控制时,我们假定汽车的加速度和速度都为恒值,控制的只是方向盘的角度。由图中的曲线可以看出,方向盘是图中的五个位置时,预测的汽车位置还不符合我们的参考值。那么该怎么办呢?

        解决办法就是调整方向盘的角度,继续预测汽车未来的路径,达到一个满意的结果。但是新的方向盘角度方案并不是随机生成的,而是有计划有目的的进行的,实现这以目标得益于优化器的功劳。

         优化器的目的是让汽车的位置尽可能的在参考的路线上,所以成本函数之一就是当前预测的位置与参考值尽可能的小。

        另外一个成本函数是,方向盘的角度变化范围,像是我们开车,急转方向盘会造成驾驶员和乘客倾斜,严重的还会造成翻车事故。因此,在每个控制周期还要控制方向盘角度的变化量。

 

        在控制汽车行驶时,还要考虑一些约束条件,比如汽车的位置,不能让汽车行驶在道路的外面;方向盘的最大转动位置,不能无限制的旋转汽车的方向盘。 

         虽然我们预测了未来的好几步,但是我们仅仅选择我们最佳路线的第一步作为输入。如上图所示,汽车的方向盘仅考虑第一个旋转位置。当由k 到k+1时,可以看到汽车汽车的位置并没有与我们的预测曲线位置重合,而这可能是由于各种不可控的因素造成的,比如:风的推力,雨天路滑等等。

        至此我们就明白了,为什么预测好的一套控制步骤,仅仅采用了第一步,然后再次计算、预测、采取第一步.....反复循环,就是为了控制的准确性与高精度。


3. MPC的参数设计

        参数的选择会直接影响计算的复杂度,即影响计算的时间,同时也会影响计算的精度。本节将简要介绍参数的选取,包括:控制器的采样时间,预测的步长,以及控制器的范围,约束,权重。

1. 采样时间

      

         采样时间过大。当出现扰动,即汽车位置已经远偏离于参考路线时,不能及时采样,而不能及时调节偏差。

采样时间太小。因为会对每一个采样点进行计算,会导致计算负担过重。

         为了在性能和计算复杂度之间寻求平衡,建议在开环响应的上升时间内采样点设置为10 - 20个。

2. 预测步长

        

        步长选取的太近。加入我们以50m/s的速度驾驶汽车。刹车后需要5s种的时间,汽车才能够停下来。假如我们预测的整个步长只是2s时间内的距离,所以在我们看到红绿灯2秒前再刹车时,汽车已经超过了红绿灯的位置。 

        步长选取的太长。步长选取的很长我们就会拥有很宽的视野。但是如果在很远处有货车箱子掉落我们就开始提心吊胆的纠结该怎么做,是很没有必要的。我们只需要在合适的距离采取制动措施就好。过大的步长会影响计算时间。

        所以建议预测的整个步长为开环瞬态响应在2%误差时间内的20 - 30步。 

3. 控制范围

        

         控制器控制的步长m就是控制器的范围。只是控制m个步长,而不管后面的操作。

         我们当然可以只控制一个步长,但是系统的输出结果没有达到理想的效果,存在很大的偏差。

        当然我们也可以控制预测范围内的整个步长,但是只有前几步会对控制效果有很大的影响。后面的控制对输出影响较小。而控制整个步长范围会造成计算的负担。 

        控制范围的经验是预测范围内的10%-20%。

4. 约束处理

        

         我们可以对输入和输出进行约束。这些约束可以是软约束,也可以是硬约束。硬约束不能被违反,软约束也已被违反。以下面汽车爬坡的例子为例。

        

        在开车爬坡时,我们知道,汽车的速度一定会降低。如果我们要求在爬坡过程中,汽车的速度保持不变,我们必须加油门。但是油门的踏板也有一个最大值约束的限制,即使我们把油门踩到底也没有达到速度要求。那么MPC控制器就会优化失败,找不到一个在满足油门踏板和速度的约束下的情况。

        而解决此办法通常是使输入的约束条件是硬约束,不能越限。输出的约束为软约束可以越限。即我们可以原谅爬坡过程中汽车的速度有所降低。 

5. 权重处理

        

        在实际生活中,我们无时无刻不都在进行权重的选择。我们需要睡眠,吃饭,挣钱,交往....我们不可能在同一个时间段处理多个事情,不得不进行权衡的选择。就像是身体重要还是钱重要问题。

 

        在工业控制中,同样如此。我们往往一个系统的输出是多个目标,不可能使得每一个目标值都达到最优效果。所以添加权重,表示对该目标值的重视程度。 


http://chatgpt.dhexx.cn/article/uFdyC368.shtml

相关文章

MPC控制笔记(一)

转自 我的博客 笔记参考1:Understanding Model Predictive Control(Youtube 带自动生成字幕) 笔记参考2:Understanding Model Predictive Control(B站 生肉) 一、什么是MPC模型预测控制 MPC(Model Predict Control)是一种反馈控制(feedback control)算…

PID与MPC控制方法

记录udacity–无人驾驶工程师课程中控制部分。 MPC代码和实践链接https://github.com/udacity/CarND-MPC-Quizzes 本文按照对udacity课程的理解和翻译而来 1、PID P:Proportional 比例项, 用比例项乘以误差;快速缩小误差; I&…

了解模型预测控制2--什么是模型预测控制(MPC)

本节,我们将讨论模型预测控制器的工作原理。 在控制问题中,控制器的目标是计算被控对象的输入,使得被控对象输出遵循期望的参考信号。模型预测控制器计算此输入的策略是预测未来。 这听起来像算命,但让我们看看它究竟是什么。MPC使…

模型预测控制(MPC,Model Predictive Control)

发展历史 20世纪70年代后期,一类新型的计算机控制算法出现在美法等国的工业过程领域,如动态矩阵控制(DMC,Dynamic Matrix Control)、模型算法控制(MAC,Model Algorithm Control)。1987年,首次有学者阐述了该系列算法的动因、机理及其在控制工…

MPC学习笔记(1)——原理

最近在学习M. W. Mehrez的MPC时发现了很多不了解的细节,分享一下对该算法的梳理与理解。 在自动驾驶或机器人领域中,模型预测控制(Model Predictive Control, MPC)解决的是轨迹规划的问题。其前提条件是环境地图、载体位姿已知,根据MPC算法&…

MPC 控制原理

MPC 控制原理 1 生活中的启示2 实际控制的例子参考文献 Yin 机械工程师 本文引自 一个模型预测控制(MPC)的简单实现. 1 生活中的启示 情景如下:你们团队每天早晨开一次例会,主要会议内容是你汇报工作进度,领导根据工作…

EA建模工具,介绍常用的UML图

[导读] 作为程序猿都最好掌握的一门语言,那就是UML(Unified Modeling Language),统一建模语言(UML)是软件工程领域中一种通用的开发建模语言,旨在提供一种可视化系统设计的标准方法。是开发人员、系统设计人员交流的有…

uml c语言函数流程图,UML流程图模板分享

原标题:UML流程图模板分享 UML是统一建模语言,又称标准建模语言是用来对软件密集系统进行可视化建模的一种语言。UML的定义包括UML语义和UML表示法两个元素。在流程图中也会经常使用到,但是网上关于该主题的模板不是很多,下面是分…

软技能之UML图

软技能之UML图 工欲善其事必先利其器,程序员建模过程中需要用到的建模工具UML。 UML:Unified Modeling Language 统一建模语言。目标是以对象图的方式来描述任何类型的系统。 UML可分为两类:结构型(描述某种结构)、行…

生成C++工程的UML类图和类继承关系图

简介 在进行软件开发时,了解代码结构和关系、类之间的继承关系以及类内部的成员函数和变量定义是非常重要的。为此,我们可以使用Doxygen和Graphviz工具来生成UML类图和类集成关系图。 Doxygen是一个用于从注释的C源代码中生成文档的工具,支…

Ubuntu系统画大型UML图

一、 环境配置 1. 配置java环境(请自行查找教程) 2. 安装graphviz sudo apt install graphviz 3. 下载plantuml.jar 下载页面 下载好以后,我将其放在了~/bin/目录下面 4. 配置alias export PLANTUML_JAR_PATH~/bin/ export PLANTUML_LIM…

UML图有哪些类型?

UML(Unified Modeling Language )是用来对软件密集系统进行可视化建模的一种语言,是在开发阶段、说明、可视化、构建和书写一个面向对象软件密集系统的制品的开放方法。 UML图分为两种类型:结构图和行为图。结构图是可视化组件如…

UML建模工具——用例图

【面向对象分析UML建模工具全部文章】 UML建模工具(1)——用例图UML建模工具(2)——活动图UML建模工具(3)——类图UML建模工具(4)——顺序图UML建模工具(5)——通信图UML建模工具(6)——状态图 UML建模工具——用例图 系统 System参与者 Actors用例 Use Cases关系 Relations…

移动端UML图应用之UML图简述

系列文章目录 移动端UML图应用之UML图简述 移动端UML图应用之UML行为图——用例图、活动图和状态机图 移动端UML图应用之UML交互图——顺序图和通信图 移动端UML图应用之UML结构图——包图、部署图和组件图 移动端UML图应用之UML结构图——类图 文章目录 系列文章目录前言一、…

IDEA 思维导图 ,类UML 图工具插件 plantUML integration

文章目录 IDEA 思维导图 ,类UML 图工具插件 plantUML integration1、安装2、UML3、使用 plantUML integrationIDEA 思维导图 ,类UML 图工具插件 plantUML integration 1、安装 找到插件并安装 2、UML UML 图包括序列图、用例图、类图、活动图、协作图、组件图、对象图、状态…

Mac下一款好用的UML图绘制工具(StarUML)

Mac下一款好用的UML图绘制工具(StarUML) 推荐一款好用的Mac下绘制UML图的工具,叫做StarUML,它是一款很好用的UML图的工具,但是是收费的,不过可以设置相应代码,免费使用,附上官方下载…

UML建模与软件开发设计(三)——UML常用开发工具

4.4.UML常用开发工具 常用的UML设计工具有微软Office自带的Visio、Rational Rose、PowerDesign以及StarUML。在本文档中,我们使用StarUML来作为类图和时序图的设计工具。 4.4.1.StarUML开发工具的下载与破解 4.4.1.StarUML下载地址 (1)普…

12个优秀的开源UML工具

本文将为您介绍12个优秀的UML工具: 1. StarUML StarUML(简称SU),是一种创建UML类图,是一种生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML是一个开源项目之一发展快、灵活、可扩展性强(zj)。 2. Netbeans UML Plugin 目前支持…

vue双向绑定的原理

之前我有个学生在面试的时候,面试官问vue的双向绑定如何实现?学生说用v-module实现。又问那么双向绑定的原理是什么?就回答不上来了,这个offer工资在18k左右,其他问题都回答上来了,如果这个问题能回答上来基…

vue 单向绑定 双向绑定

参考:【Vue】vue 单向绑定& 双向绑定 - vickylinj - 博客园 在react中是单向数据绑定,而Vue.js 最显著的特点就是响应式和数据驱动,也就是将Model和View进行单向绑定或者双向绑定。 单向绑定:把Model绑定到View,…