准研一,准备做混动方向,先学一下MPC相关知识

DR_CAN的视频:【MPC模型预测控制器】1_最优化控制和基本概念:

【MPC模型预测控制器】1

1.最优化控制 Optimal Control

最优化控制的目的 Motivation:
在约束条件下达到最优的系统表现 Get the best performance within certain limitation

- 约束条件:物理限制等等;
 - 最优:综合分析的结果,不是绝对的。

举个例子:汽车变道的轨迹选择

如上图所示,有两条线路可以选择,红色的线路1行驶距离短,速度快,较为舒适,绿色的线路2考虑到了紧急避障,需要迅速变道。因而在这个问题中,最优结果是相对的,不是绝对的。

2.数学模型 Mathematical Model

将上述的车辆行驶轨迹用数学模型表示。

2.1 SISO模型

SISO (Single Input Single Output,单输入单输出) 用以下系统框图表示:

r(t):系统参考值
u(t):输入
y(t):输出
e(t):误差 e(t) = y(t) - r(t)

从轨迹追踪的角度来看:

\int_{0}^{t} e^{2} d t 越小,跟踪效果越好(误差越小)
\int_{0}^{t} u^{2} d t 越小,输入越小(输入越小)

引入代价函数(Cost Function):

J=\int_{0}^{t} q e^{2}+r u^{2} d t

最优化的过程即设计控制器的 u ,使得 J 取得最小值
qr 均为调节参数,q\ggr 时,更看重误差,q\llr 时,更看重能耗。

2.2 MIMO模型

再扩展至MIMO(Multiple Input Multiple Output,多输入多输出)用状态空间表示:

\begin{array}{l} \frac{d X}{d t}=A X+B U \\ Y=C X \\ J=\int_{0}^{X} E^{T} Q E+U^{T} R U d t \end{array}

例:

\begin{array}{l} \frac{d}{d t}\left[\begin{array}{l} x_{1} \\ x_{2} \end{array}\right] = A\left[\begin{array}{l} x_{1} \\ x_{2} \end{array}\right]+B\left[\begin{array}{l} u_{1} \\ u_{2} \end{array}\right] \\ {\left[\begin{array}{l} y_{1} \\ y_{2} \end{array}\right] = \left[\begin{array}{l} x_{1} \\ x_{2} \end{array}\right]} \\ \end{array}

参考值 \begin{array}{l} V = \left[\begin{array}{l} v_{1} \\ v_{2} \end{array}\right] = \left[\begin{array}{l} 0 \\ 0 \end{array}\right] \\ \end{array}

误差 E = \left[\begin{array}{l} e_{1} \\ e_{2} \end{array}\right] = \left[\begin{array}{ll} y_{1}-r_{1} \\ y_{2}-r_{2} \end{array}\right] = \left[\begin{array}{l} x_{1} \\ x_{2} \end{array}\right]

\begin{array}{l}E^{T} Q E = \left[\begin{array}{l} x_{1} \\ x_{2} \end{array}\right]^{T}\left[\begin{array}{cc} q_{1} & 0 \\ 0 & q_{2} \end{array}\right]\left[\begin{array}{l} x_{1} \\ x_{2} \end{array}\right] = q_{1} x_{1}^{2}+q_{2} x_{2}^{2} \\ U^{T} R U = r_{1} u_{1}^{2}+r_{2} u_{2}^{2}\end{array}

其中 QR 是调节矩阵,q_1q_2r_1r_2 为调节系数。

3.模型预测概念

通过模型来预测系统在某一未来时间段内的表现来进行优化控制。
注:多用于数位控制,多采用离散型状态空间表达式,即 X_{k+1}=A X_{k}+B U_{k}

离散时采用欧拉法
(在k时刻)
步骤:
Step1:估计/测量读取当前系统状态(可测量则测量,不可测量则估计)

Step2:基于 u_k, u_{k+1},u_{k+2} ...u_{k+N} 进行最优化

如下图所示:
y_k ~ y_{k+2}  预测区间 Predictive Horizon
u_k ~ u_{k+2}  控制区间 Control Horizon

u_k, u_{k+1},u_{k+2} 的选取即为最优化问题

代价函数

J=\sum_{k}^{N-1} E_{k}^{T} Q E_{k}+U_{k}^{T} R U_{k}+E_{N}^{T} F E_{N}

E_{N}^{T} F E_{N} 终端误差 Terminal Cost 表示最终代价(预测时间最末端误差的代价)

Step3:只取 u_k (只选取 k 时刻作为预测结果,因为预测存在局限性)
在预测 k+1 点的时候,预测区间和控制区间向右移动一时刻,以此预测未来的表现,这个过程叫做滚动优化控制 Receding Horizon Control

MPC特点:

  • 在每一步都需要进行一次最优化计算,因此对控制器计算能力要求较高
  • 求解最优化问题时,会考虑系统的约束

下一篇博客将推导MPC数学模型:

【DR_CAN-MPC学习笔记】2.最优化数学建模推导

【DR_CAN-MPC学习笔记】1.最优化控制和MPC基本概念相关推荐

  1. 【OpenGL学习笔记⑧】——键盘控制正方体+光源【冯氏光照模型 光照原理 环境光照+漫反射光照+镜面光照】

    ✅ 重点参考了 LearnOpenGL CN 的内容,但大部分知识内容,小编已作改写,以方便读者理解. 文章目录 零. 成果预览图 一. 光照原理与投光物的配置 1.1 光照原理 1.2 投光物 二. ...

  2. Unity学习笔记1-键盘控制开关灯(Point Light)

    Unity学习笔记1-键盘控制开关灯(Point Light) 实现开关灯用键盘上的两个按键控制,效果如下所示 1-创建材质球(Material):HighLight和OffLight **: )Li ...

  3. Unity学习笔记--赛车的控制代码

    Unity学习笔记–赛车的控制代码 using System.Collections; using System.Collections.Generic; using UnityEngine;publ ...

  4. MSP432E401Y学习笔记2-按键控制_查询

    MSP432E401Y学习笔记2-按键控制_查询 前言 一.原理图查看需要控制的IO 二.写代码 1.将点灯的工程拷贝一份 2.配置LED 2.mian文件 前言 今天通过按键控制LED灯的亮灭,按键 ...

  5. 嵌入式学习笔记——寄存器实现控制LED小灯

    文章目录 前言 GPIO通用输出模式 初始化LED小灯的GPIO 原理图 初始化代码 初始化的效果 功能函数封装 直接分开宏定义两个 使用条件运算符 封装函数实现简单的功能 KEIL MDK一些技巧 ...

  6. 知识图谱·概念与技术--第1章学习笔记--知识图谱概述--知识图谱的概念,与传统语义网络的区别

    知识图谱·概念与技术--第1章学习笔记--知识图谱概述--知识图谱的概念,与传统语义网络的区别 知识图谱的概念,与传统语义网络的区别 狭义概念 作为语义网络的内涵 与传统语义网络的区别 优点 缺点 与 ...

  7. 【DR_CAN-MPC学习笔记】34.详细的MPC建模例子和matlab代码

    上一篇博客:[DR_CAN-MPC学习笔记]2.最优化数学建模推导 参照二次规划一般形式,详细推导了MPC的数学模型,即最小化代价函数的表达式,最终推导结果为: DR_CAN的视频: [MPC模型预测 ...

  8. DR_CAN的学习笔记--1现代控制理论

    本文是在学习B站up主DR_CAN博士之后的学习笔记以及一些个人的感悟.B站链接为https://space.bilibili.com/230105574/,感兴趣的可以去B站看视频. 本文针对的读者 ...

  9. 狂神说学习笔记 Java流程控制

    目录 Java流程控制 1.用户交互Scanner Scanner对象 next() nextLine(): 2.顺序结构 3.选择结构 4.循环结构 5.Break & Continue 6 ...

最新文章

  1. 如何在Windows上做Python开发?微软出了官方教程(附链接)
  2. office2007安装出现windows installer服务不能更新一个或多个受保护的windows文件
  3. 002_支持并发的内部类饿汉单例
  4. 力扣- -241.为运算表达式设计优先级
  5. shell变一些小技巧
  6. 导入第三方依赖库slidingmenu
  7. JDK 5、6、7、8、9、10、11、12、13、14 新特性汇总
  8. 【java基础知识】JDK环境下载安装过程(windows环境/Linux环境)+IDEA配置
  9. 数据的格式化和处理(复习)
  10. Linux 后台开发常用命令目录(更新 ing)
  11. JSON正确的下载网址及编译
  12. CNZZ、51啦、量子恒道、谷歌网站流量统计比较
  13. matlab数组元素的个数,matlab数组元素个数
  14. matlab模拟光伏发电,一种基于MATLAB的小型独立光伏发电仿真模型的制作方法
  15. 档案计算机管理软件,档案管理软件系统
  16. Android Dialog弹出对话框整理总结
  17. 为啥UI设计的值放到android studio中显示不准确?
  18. st公司stm32MCU,cubemx创建工程,Drivers文件夹下内容不可见问题的描述与粗略解决方法
  19. mongodb mysql 知乎_为什么 MongoDB 索引选择B-树,而 Mysql 索引选择B+树(精干总结)...
  20. win10系统如何将鼠标从主屏幕上侧切换到外接屏幕

热门文章

  1. JVM -XX:MaxDirectMemorySize
  2. 递推递归练习 B - 王小二切饼
  3. 如何在JavaScript中对对象数组进行排序
  4. 复制微信号并跳转到微信界面
  5. 一个体育生的编程之路
  6. 计算机毕业设计之仿12306火车票购票平台
  7. 任正非一语中的,未来科技的发展核心靠他们!
  8. 特斯拉充电电流设置多大_【干货】特斯拉电动汽车4种充电方式详解!
  9. Entity Framework 6三层架构入门:创建数据访问层DAL
  10. 刘銮雄-公道不在人心,是非只在时势