本节,我们将讨论模型预测控制器的工作原理。

       在控制问题中,控制器的目标是计算被控对象的输入,使得被控对象输出遵循期望的参考信号。模型预测控制器计算此输入的策略是预测未来。

这听起来像算命,但让我们看看它究竟是什么。MPC使用被控对象模型来预测未来的被控对象输出行为,它还使用优化器,确保预测的未来被控对象输出跟踪所需的参考信号。

以下示例介绍了这些步骤。比如说这是一辆由MPC控制器控制的自动驾驶汽车,让它保持在这条车道的中间位置。MPC可以处理MIMO系统,但为了简单起见,我们将假设加速度是固定的,纵向速度是恒定的,并且仅调整方向盘角度以控制汽车的横向位置。

        我们将首先关注控制器如何使用汽车模型,稍后我们将讨论优化器。汽车的横向位置如下图右上方所示,垂直轴反映当前时间。它之前的代表过去,右边的值展示了未来。车道的中间是参考,我们用绿线在图上显示。当前,如果方向盘像这样的转动过程,MPC控制器使用汽车模型在接下来p时间步骤仿真汽车的路径, 就像在下图看到的那样。P是对MPC展望未来前景的衡量标准,被称为预测范围。它通常由未来的时间长度或未来时间步数表示。MPC控制器需要找到最接近参考输入的最佳预测路径。因此,它模拟了多个未来场景,但是,它不是以随机顺序进行这些仿真。相反,它以系统的方式做仿真,这时就是优化器介入的地方了。

通过解决优化问题,MPC控制器试图最小化汽车的参考轨迹和预测路径之间的误差。它还试图从一个时间步到下一个时间步时,方向盘角度的变化最小。因为如果转向方向盘急剧转动,可能乘客会对乘坐感到不舒服。该优化问题的目标函数J包括这两项并且表示为预测误差和方向盘角度增量的加权平方和。在最小化目标函数的同时,MPC还确保方向盘角度和汽车位置保持在规定的范围内,这些被称为约束。例如,方向盘转动的程度有限制。

另一个限制因素是汽车的位置。为了防止发生事故,汽车应该留在车道内而不是离开公路。在当前时间步,MPC控制器正在解决预测范围内的优化问题,同时满足约束。具有最小J的预测路径给出了最优解,由此确定最佳方向盘角度序列,使汽车尽可能接近参考信号。

        在当前时间步,MPC仅将该最佳序列的第一步应用于汽车并忽略其余部分。基于采用的方向盘角度,汽车行驶一段距离。在下一个时间步,控制器获得新的汽车横向位置的测量值。它可能与MPC控制器之前预测的略有不同,这可能是由于一些无法测量的干扰作用于汽车。例如,它可能是风或路面湿滑。

现在预测范围向前移动一个时间步,控制器重复相同的计算周期,以计算下一个时间步的最佳方向盘角度。由于预测范围的前向移动性质,MPC也被称为滚动时域控制。

在这里,我们使用汽车示例讨论了MPC的工作原理,但在教科书中,您将找到用于MPC的通用术语。例如,由控制器计算并发送到被控对象的信号称为操纵变量,而被控对象输出则称为输出变量。您可能还会在反馈图中注意到状态估算器。在汽车的例子中,我们假设汽车的横向位置可以被测量。但是如果你不能直接测量系统的状态,可以通过状态估计器估计它们并反馈给MPC控制器。要了解有关状态估算器的更多信息,请查看有关卡尔曼滤波器的系列文章。

本节,我们使用汽车示例演示了MPC如何使用汽车模型和优化器来调整方向盘角度使汽车遵循期望的参考信号。在下一篇文章中,我们将讨论MPC设计参数。比如:控制器采样时间,预测和控制范围,约束和权重等参数。

视频地址如下

【Model Predictive Control】了解模型预测控制,第二部分:什么是模型预测控制 - MATLAB&Simulink_哔哩哔哩_bilibili

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

  1. MPC控制器设计,模型预测控制,线性时变模型预测控制,LTV MPC,提供理论讲解与应用实现

    MPC控制器设计,模型预测控制,线性时变模型预测控制,LTV MPC,提供理论讲解与应用实现. 提供MPC算法.LTV MPC 算法在直升机和四旋翼中的应用实例. 提供模型预测控制资料. 提供matl ...

  2. 《无人驾驶车辆模型预测控制》之基于动力学的MPC设计

    目录 写之前的话: 1. 车辆模型的建立 2. 车辆模型的线性化 ​ 3. 车辆模型离散化 4. 预测模型的建立 5.目标函数及约束 写之前的话: 前面我写到一些列的文章: <无人驾驶车辆模型预 ...

  3. Linux io模型及函数调用,Linux 网络编程的5种IO模型:信号驱动IO模型

    Linux 网络编程的5种IO模型:信号驱动IO模型 背景 这一讲我们来看 信号驱动IO 模型. 介绍 情景引入: 在信号驱动IO模型中,当用户线程发起一个IO请求操作,会给对应的socket注册一个 ...

  4. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Epoll模型

    在阅读完<朴素.Select.Poll和Epoll网络编程模型实现和分析--Select模型>和<朴素.Select.Poll和Epoll网络编程模型实现和分析--Poll模型> ...

  5. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Poll模型

    在<朴素.Select.Poll和Epoll网络编程模型实现和分析--Select模型>中,我们分析了它只能支持1024个连接同时处理的原因.但是在有些需要同时处理更多连接的情况下,102 ...

  6. 朴素、Select、Poll和Epoll网络编程模型实现和分析——Select模型

    在<朴素.Select.Poll和Epoll网络编程模型实现和分析--朴素模型>中我们分析了朴素模型的一个缺陷--一次只能处理一个连接.本文介绍的Select模型则可以解决这个问题.(转载 ...

  7. 推荐系统召回四模型之全能的FM模型

    作者 | 张俊林 作者简介:中国中文信息学会理事,中科院软件所博士.目前在新浪微博 AI Lab 担任资深算法专家.在此之前,张俊林曾经在阿里巴巴任资深技术专家并负责新技术团队,以及在百度和用友担任技 ...

  8. R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关系数、拟合回归模型使用两个回归模型的残差计算偏相关性系数

    R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关系数.拟合回归模型使用两个回归模型的残差计算偏相关性系数 目录

  9. R语言使用yardstick包的roc_curve函数评估多分类(Multiclass)模型的性能、查看模型在多分类每个分类上的ROC曲线(roc curve)

    R语言使用yardstick包的roc_curve函数评估多分类(Multiclass)模型的性能.查看模型在多分类每个分类上的ROC曲线(receiver operating characteris ...

  10. R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练、通过显著性进行变量筛选(删除相关性较强的变量)、构建多变量模型、转化为分类模型、模型评估

    R语言vtreat包的mkCrossFrameCExperiment函数交叉验证构建数据处理计划并进行模型训练.通过显著性进行变量筛选(删除相关性较强的变量).构建多变量模型.转化为分类模型.模型评估 ...

最新文章

  1. jQuery_$工具方法
  2. 用wget循环获取指定url下的文件
  3. 阿里云华北区挂了。。。
  4. 码农回家过个年,真心不容易!
  5. pytorch torch.nn.Embedding
  6. delphi常用函数大全(转)
  7. (附源码)基于Python音乐分类系统 毕业设计 250858
  8. 一台计算机上的文件 用户名和密码错误,SMB连接电脑提示用户名密码错误怎么办 看完就明白...
  9. 每个人都至少需要4个邮箱账户(附国内外数十个免费邮箱)
  10. html和css学习课件(新版)
  11. python: np.random.rand(); random.randn(); random.randint()
  12. 计算机启动盘安装教程,笔记本系统重装教程,笔记本电脑u盘启动盘装系统教程...
  13. js将数字转换成万、亿、万亿
  14. java dispo lock_Rxjava2 学习记录。
  15. 2020中传计算机专硕考研经验贴
  16. idea将junit设置模板_IDEA配置JUnit进行单元测试
  17. Bag of words and Bag of features
  18. ESP32 学习日志(4)——OTA升级(1)-示例解析
  19. plc实验报告流程图_plc实验报告plc实报告.doc
  20. 关于开源软件研究的英文论文_关于开源公司软件的7个神话

热门文章

  1. iphone设置公司企业邮箱
  2. 生活随记 - 惋惜卡哇伊
  3. 图像处理方面的sci期刊_图像处理类的SCI期刊
  4. PHP学习记录【php数据类型】
  5. 单源最短路径:最短路径性质的证明
  6. Vue.js学习笔记—调查问卷WebApp
  7. 操作系统课程设计进程调度模拟
  8. LPTSTR、LPCSTR、LPCTSTR、LPSTR之间的转换
  9. 聚类分析 | MATLAB实现k-Means(k均值聚类)分析
  10. python floor() 函数