参考:https://mp.weixin.qq.com/s?__biz=MzI1NjkxOTMyNQ==&mid=2247486444&idx=1&sn=6538bf1fa74429600d8fa10f4f766a58&chksm=ea1e199edd699088aee4b3c72404649751c60a9901ab71421f64e7125759765193bb4827aa15&scene=0&xtrack=1#rd

https://mp.weixin.qq.com/s?__biz=MzI1NjkxOTMyNQ==&mid=2247486554&idx=1&sn=4e3655d0adf0ba126b49d03df63bc64a&chksm=ea1e1e28dd69973eab7f08b2c520d4258877a7dcff8533646d2282bf5cb98a7999e9794a236f&scene=0&xtrack=1#rd

动力学主要研究作用于物体的力与物体运动的关系。

 

车辆动力学模型一般用于分析车辆的平顺性车辆操纵的稳定性

对于车来说,研究车辆动力学,主要是研究车辆轮胎及其相关部件的受力情况。

比如纵向速度控制,通过控制轮胎转速实现;

横向航向控制,通过控制轮胎转角实现。

正常情况下,车辆上的作用力沿着三个不同的轴分布:

纵轴上的力包括驱动力和制动力,以及滚动阻力和拖拽阻力作滚摆运动;

横轴上的力包括转向力、离心力和侧风力,汽车绕横轴作俯仰运动;

立轴上的力包括车辆上下振荡施加的力,汽车绕立轴作偏摆或转向运动。

无论是LQR或是MPC控制,都需要有车辆的模型作为基础

动力学模型

  • 小角度侧偏角

  • 匀速

  • 不考虑环境因素

  • 设e1为横向偏差,e2为航向角偏差,

    进而得:

    其中

  • 其中:


    LQR 理论是现代控制理论中发展最早也最为成熟的一种状态空间设计法。特别可贵的是,LQR可得到状态线性反馈的最优控制规律,易于构成闭环最优控制。

    LQR 最优设计是指设计出的状态反馈控制器 K 要使二次型目标函数 J 取最小值,而 K 由权矩阵 Q 与 R 唯一决定,故此 Q、R 的选择尤为重要。

    而且 Matlab 的应用 LQR 理论仿真提供了条件,更为我们实现稳、准、快的控制目标提供了方便。

    线性二次调节器(Linear Quadratic Regulator 或LQR)是基于模型的控制器,它使用车辆的状态来使误差最小化

    Apollo 使用 LQR 进行横向控制。横向控制包含四个组件:

    横向误差

    横向误差的变化率

    朝向误差

    朝向误差的变化率

    变化率与导数相同,我们用变量名上面的一个点来代表。

    我们称这四个组件的集合为X,这个集合X捕获车辆的状态。除了状态之外,该车有三个控制输入:转向加速制动。我们将这个控制输入集合称为U。

    我们考虑有如下离散线性系统:

    为了达到上述效果,定义代价函数:

    其中x为状态量,u为控制量,Q为状态权重矩阵,R为控制权重矩阵为最终状态权重矩阵,N为到达最终状态的控制序列数

    其中K即为通过迭代求解黎卡提方程得到的等效闭环反馈矩阵

    至此,LQR算法求解过程可以总结为:

    1. 令P等于最终状态权重矩阵;

    2. 迭代黎卡提方程求出新的P;

    3. 当两次P的差值足够小时,计算反馈矩阵K;

    4. 根据反馈矩阵K获取最优控制量u;

    采用《Apollo控制算法之汽车动力学模型》一文中的模型,代入AD、BD、到以上算法对应各项,因模型中的CD项为常量,在LQR求解完成后加入即可获得最终所需的系统控制量。

另外参见:

https://blog.csdn.net/heyijia0327/article/details/39270597

开发者说 | Apollo控制算法之汽车动力学模型和LQR控制的更多相关文章

  1. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 client对象模型(CSOM)基础

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览  client对象模型(CSOM)基础         在SP2 ...

  2. 【Java】JMM内存模型和JVM内存结构

    JMM内存模型和JVM内存结构 JAVA内存模型(Java Memory Model) Java内存模型,一般指的是JDK 5 开始使用的新的内存模型,主要由JSR-133: JavaTM Memor ...

  3. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 介绍SP2013中远程APIs

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览  介绍SP2013中远程APIs         当SP首次開始 ...

  4. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 JavaScript

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览  JavaScript         与托管.NETclien ...

  5. BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览 托管代码(.NET)

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第9章节--client对象模型和REST APIs概览  托管代码(.NET)         在SP2010中,微软提 ...

  6. 从零3D基础入门XNA 4.0(2)——模型和BasicEffect

    [题外话] 上一篇文章介绍了3D开发基础与XNA开发程序的整体结构,以及使用Model类的Draw方法将模型绘制到屏幕上.本文接着上一篇文章继续,介绍XNA中模型的结构.BasicEffect的使用以 ...

  7. NOSQL数据模型和CAP原理

    NOSQL数据模型和CAP原理 http://blog.sina.com.cn/s/blog_7800d9210100t33v.html 我本来一直觉得NoSQL其实很容易理解的,我本身也已经对NoS ...

  8. 网络知识学习1---(基础知识:ISO/OSI七层模型和TCP/IP四层模型)

    以下的内容和之后的几篇博客只是比较初级的介绍,想要深入学习的话建议自己钻研<TCP/IP详解 卷1:协议> 1.ISO/OSI七层模型    下四层是为数据传输服务的,物理层是真正的传输数 ...

  9. 黑马-----内存模型和volatile详解

    黑马程序员:Java培训.Android培训.iOS培训..Net培训 JAVA线程-内存模型和volatile详解 一.单核内存模型 1.程序运行时,将临时数据存放到Cache中 2.将CPU计算所 ...

随机推荐

  1. Android之扫描文件或文件夹

    我们或许经常会遇到这种情况,明明保存了图片,但是当你打开图片时,却没有找到这张图片,手机重启之后才能看到.这是因为SD卡并没有重新挂载,图库也无法把这张图片加载进去,解决这个问题非常简单,只需要我们重 ...

  2. Codeforces 437D The Child and Zoo - 树分治 - 贪心 - 并查集 - 最大生成树

    Of course our child likes walking in a zoo. The zoo has n areas, that are numbered from 1 to n. The ...

  3. topcoder srm 701 div1 -3

    1.一堆石子有$n$个,Alice,Bob轮流拿,给定每个人每次可以拿的石子的数目的集合.谁先不能拿谁输.问谁能赢? 思路:对于先手来说,输赢的局面一定是从某个数字开始呈循环状态.所以找到这个循环开始 ...

  4. IPVS负载均衡

    概念: ipvs (IP Virtual Server) 实现了传输层负载均衡,也就是我们常说的4层LAN交换,作为 Linux 内核的一部分.ipvs运行在主机上,在真实服务器集群前充当负载均衡器. ...

  5. html 之 img hspace 和 vspace 属性

    案例<img src="w3school.gif" hspace="30" vspace="30" /> 描述 通常图形浏览器不 ...

  6. P4313 文理分科

    思路 遇到这种利益冲突的最终利益最大化问题 考虑转化为最小割,使得损失的价值最小 相当于文科是S,理科是T,选出最小割就是确定损失代价最小的方案 然后就把S向每个点连一条cap=art[i][j]的边 ...

  7. HDU 5976 Detachment(拆分)

    HDU 5976 Detachment(拆分) 00 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)   Problem D ...

  8. js为什么返回两个对象字符串 objcet objcet ?

    js中两个使用 toString() 对有个有对象的数组进行操作时,为什么返回两个对象字符串 objcet objcet ? [{}].toString(); 返回 "[object Obj ...

  9. Hexo搭建(VPS)

    都说 hexo 是静态的 Blog,当时不明觉厉= =.后来终于知道了什么意思......所谓的静态,其实就是因为你不能改云端,而是依赖本地数据,然后使用命令将本地数据变成 web 数据再使用浏览器进 ...

  10. Oracle imp导入数据

    拿到别人给的dmp文件如何导入自己的库中呢?上码: 代码: imp dms/123321@orcl file=F:\TP_ZG_20171208.DMP feedback=10000 buffer=1 ...