目录

①前言

②车辆的运动学方程

③线性化过程

④离散化

⑤推导下一时刻状态

⑥迭代推导

⑦目标函数优化

⑧约束条件

⑨上下限约束

⑩学习遗留问题


①前言

本文主要参考了下面的博客线性时变模型预测控制推导_Jeossirey的博客-CSDN博客_线性时变系统的模型预测控制以自行车模型为例,在推导过程中下角标 r (reference),即参考的意思。https://blog.csdn.net/m0_50888394/article/details/115556185

以及:龚建伟等.《无人驾驶车辆模型预测控制》(第2版)

同时对自己在代码实现时需要用到的推导细节给出了更加详细的说明,以帮助自己更好的理解~算是自己学习过程的记录。好了,下面就正式开始吧!

模型预测控制的核心是通过建立基于状态量的误差量的状态空间方程来推导。第四章通过车辆的运动学方程,采用了非线性系统线性化方法中的第一种:存在参考系统的线性化方法。

②车辆的运动学方程

车辆的运动学方程推导过程略,结果如下:

即:

 ·····························(1.2

选取系统的状态量为,控制量

主要思想:假设参考轨迹给定,且参考轨迹在任意时刻其状态量和控制量均满足:

·····························(1.3

其中,

ps①: 1.是状态转移函数,就理解为数学中表示函数的符号就可以了;

          2. 为车辆后轴中心坐标,为车辆的航向角,为前轮偏角,为车辆后轴中心            的速度;

          3.在该车辆模型中,状态量个数是3个,用表示;控制量个数是2个,用                     表示,在之后的推导过程的说明中,就直接用来表示~~~

③线性化过程

上面的运动学方程是非线性的,所以需要对其进行线性化。对在参考轨迹点采用泰勒级数展开并忽略高阶项,只保留一阶项:

将(1.4)式减去(1.3)式,得:

记: ,  , 。

ps②:  矩阵的大小均为: ,矩阵的大小均为: 。

因此上式可以写成:

其中:

ps③:此运动学模型因为较为简单,故其雅克比矩阵手算其实更为方便,但当遇到比较复杂            的动力学模型时,需借助matlab进行求解,具体可见《无人驾驶车辆模型预测控制》            第五章—> 。

因而线性化后的模型可以写成:

④离散化

对上式采用向前欧拉法进行离散化:

其中,为系统采样时间。

然后得:

 ps④:矩阵的大小: ;矩阵的大小: 。

接下来构造一个新的状态量(把原来的状态量偏差控制量偏差整合到一起):

ps⑤:新构造的状态量 矩阵的大小为: ;分别是状态量个数和控制量个             数。

⑤推导下一时刻状态

 ps⑥:  1.上面 矩阵中的  矩阵的大小为: ;

        2.  矩阵的大小为: ,在第四章中即为 ;

        3.  矩阵的大小为:,在第四章中即为 ;

        4.  矩阵的大小为: 。

输出为:

ps⑦: 1. 上面的  矩阵的大小并不一定是 ,这要看输出状态量的个数,我们将 输出量的个数定义为 。注意:此处的输出量的个数有别于代码中的初始化子函数 中的输出量个 数! 指的是“状态量”中的输出个数,也就是说  。而在第四章中 。

         2. 所以上面  矩阵中的  矩阵的大小为: ,写成  ;那么 矩阵的大小为: ;写成 ; 矩阵的大小为:,写成 。为了方便书写我们在之后的部分直接用代替。如果想详细知道后面部分各个矩阵的具体大小,可参考我第五章的学习内容:————————————

⑥迭代推导

控制时域 ,预测时域 ,且 。

新的状态量:

输出:

ps⑧:因为矩阵的大小为: ,矩阵的大小为:,                矩阵的大小为:。所以矩阵的大小为:,          矩阵 的大小为:矩阵的大小为: 。

总结规律可得输出方程为:

其中,

ps⑨:1.以下带""结尾的矩阵指的是代码中的元胞;

        2. 矩阵大小为:矩阵大小为: 矩阵 的大小为 矩阵的大小为: 。 矩阵大小为:,又因矩阵的大小为: ,所以矩阵的大小为: ,且其中每个矩阵的大小为:,(同一样),矩阵的大小为:矩阵的大小为:

⑦目标函数优化

选择目标函数为:

并定义系统输出量的参考值为:

 ,将式(1.14)代入目标函数式(1.15)中,有:

上面方框中的部分与无关,属于常量,可不加入优化。

ps⑩: 上方蓝色方框中的蓝色字体部分的之所以可以这么合并,是因为,矩阵和矩阵是同型矩阵,都是常数,(根据前面推导的矩阵的大小即可推导)因而可以合并。

故目标函数简化为:

 ps⑪:同理,上面第一个方框中的两项也是常数,故可以合并!

故性能评价函数为:

ps⑫: 1.以上的推导过程中,因为:矩阵的大小为:,  矩阵的大小为 ; 矩阵的大小为:矩阵的大小为:。所以元胞的大小为: ,矩阵大小为:元胞的大小为:矩阵的大小为。              

2.Matlab中二次规划quadprog的标准形式为:

将性能评价函数式(1.16)进行配凑得到:

ps⑬: 1.因为矩阵大小为:矩阵的大小为:元胞的大小为:矩阵大小为:。所以矩阵的大小为:矩阵中右上角的矩阵大小为:,左下角的矩阵的大小为:

⑧约束条件

ps⑭: 1.元胞的大小为:矩阵的大小为:元胞的大小为:矩阵的大小为:元胞的大小为:矩阵的大小为:

 ps⑮:1.元胞的大小为:矩阵的大小为:同!

 ps⑯:上面两个元胞的大小为:矩阵的大小为:

⑨上下限约束

ps⑰:~~~


⑩学习遗留问题

本文学习时的总结,但由于刚刚入门MPC,还有许多问题不能搞得很清楚,因此留下几个自己的疑惑,希望以后回头再解决(有知道的同学希望不吝赐教鸭~)。

《无人驾驶车辆模型预测控制》(第二版)第四章详细学习——算法部分相关推荐

  1. 《无人驾驶车辆模型预测控制第一版》第五章代码(下)

    本代码基于无人驾驶车辆模型预测控制第一版本第五章中的代码予以纠正,下面代码已经过测试. 通过函数来生成参考轨迹(双移线),然后用模型预测控制器去跟踪. 需要会员课程的朋友可以点击文末小卡片 加入 HU ...

  2. 《无人驾驶车辆模型预测控制》(第2版)第五章主动转向详细学习——算法部分(非线性系统线性化)

    一.状态轨迹的线性化方法 1.理解: 第四章的期望轨迹给出了路径上每个点的状态信息(包括状态量和控制量),这类轨迹比较规则,比如直线.圆等,因此其控制量也容易得到,而对于"期望轨迹无法给出所 ...

  3. 《无人驾驶车辆模型预测控制》之车辆运动学模型

    车辆运动学模型是根据车辆转向的几何学的角度关系来描述车辆的运动的.主要关注车辆的轴长.转弯半径.和前轮转角.车辆运动学只需要用较少的车辆参数就可以基本描述车辆的运动情况,但是一般只适合在低速下有一定的 ...

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

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

  5. 数据结构(C语言)第二版 第四章课后答案

    数据结构(C语言)第二版 第四章课后答案 1~5 B B C A B 6~10 B B C B B 11~15 A B D (C,B) C 1.选择题 (1)串是一种特殊的线性表,其特殊性体现在(B) ...

  6. 无人驾驶车辆模型预测控制第四章轨迹跟踪代码(圆形篇)下

    目录 4.Simulink框图搭建 5.MPC代码 注解:克罗内克积 代码详解与推导过程一致:线性时变模型预测控制推导_更适合青年研究者的资源库!公众号:杰哥的无人驾驶便利店-CSDN博客_线性系统模 ...

  7. 无人驾驶车辆模型预测控制(一)

    一些概念 路径跟踪: 跟踪reference path即可,不受时间约束. 轨迹跟踪: path和时间均需跟上. 模型预测控制与运动规划和控制: 低速:运动学特性大 高速:动力学特性影响大 基于简化的 ...

  8. 动手学机器学习(第二版)-第四章训练模型

    第四章 训练模型 线性模型(Linear Regression) 线性模型的一般形式如下 y^=θ0+θ1x1+θ2x2+-+θnxn\hat{y} = \theta_0 + \theta_1 x_1 ...

  9. 《计算机组成原理》第二版第四章课后习题解答

    <计算机组成原理>第四章课后习题解答 本文答案均为网上答案,作者仅将其补全组合在一起,错误之处欢迎指正. 1 .解释下列概念   主存.   辅存.  Cache .  RAM .  SR ...

最新文章

  1. 日常办公会用到的python模块-用 Python 自动化办公能做到哪些有趣或有用的事情?...
  2. Java:四种取整的方法
  3. Python中的条件语句和循环语句
  4. 学习日志-中缀表达式转后缀表达式并计算结果
  5. 手写实现RPC框架基础功能
  6. 看CarbonData如何用四招助力Apache Spark
  7. 【NOI OpenJudge】【1.1】编程基础之输入输出
  8. M2M技术、标准与智慧城市顶层设计方法
  9. Cisco交换机 ——链路聚合
  10. [Matlab]维纳滤波器设计
  11. 【Linux】输出当前工作路径
  12. 【Lintcode】507. Wiggle Sort II
  13. 2021-08-01 半夜睡不着系列之光纤接口类型
  14. 手机测试软件对手机有影响吗,智能手机测试软件的猫腻
  15. 如何实现网站访问量统计(html页面)
  16. h5调用指纹识别_HTML5 + JS 网站追踪技术:帆布指纹识别 Canvas FingerPrinting Universally Unique Identifier,简称UUID...
  17. JS生成随机字符,生成一堆高逼格的乱码。。。
  18. c# rar解压大小_C#解压RAR压缩文件
  19. props的动态传值 以及 v-for列表渲染
  20. MongoDB——文档操作(更新文档)

热门文章

  1. 笔记本电脑有必要分盘吗?电脑是分盘好还是不分盘好
  2. 国外服务器网站在国内访问速度的解决方案
  3. 王者荣耀s12赛季服务器维护,王者荣耀S12赛季更新内容 排位不掉星方法
  4. golang map 删除key后内存不会自动释放,内存泄漏问题
  5. 最全的android各国语言对照表
  6. 关于月底的MWC上海展之旅,亚信科技要先剧透一丢丢!
  7. CAS SSO用户认证原理分析
  8. js html常用功能
  9. 手把手教你修改毕业论文中页眉页脚页码
  10. Ubuntu16.04下双显卡电脑安装显卡驱动