开发者说 | Apollo控制算法之汽车动力学模型和LQR控制
动力学主要研究作用于物体的力与物体运动的关系。
车辆动力学模型一般用于分析车辆的平顺性和车辆操纵的稳定性。
对于车来说,研究车辆动力学,主要是研究车辆轮胎及其相关部件的受力情况。
比如纵向速度控制,通过控制轮胎转速实现;
横向航向控制,通过控制轮胎转角实现。
正常情况下,车辆上的作用力沿着三个不同的轴分布:
纵轴上的力包括驱动力和制动力,以及滚动阻力和拖拽阻力作滚摆运动;
横轴上的力包括转向力、离心力和侧风力,汽车绕横轴作俯仰运动;
立轴上的力包括车辆上下振荡施加的力,汽车绕立轴作偏摆或转向运动。
无论是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算法求解过程可以总结为:
令P等于最终状态权重矩阵;
迭代黎卡提方程求出新的P;
当两次P的差值足够小时,计算反馈矩阵K;
根据反馈矩阵K获取最优控制量u;
采用《Apollo控制算法之汽车动力学模型》一文中的模型,代入AD、BD、到以上算法对应各项,因模型中的CD项为常量,在LQR求解完成后加入即可获得最终所需的系统控制量。
另外参见:
https://blog.csdn.net/heyijia0327/article/details/39270597
最新文章
- os.popen(command)
- Android-Application
- 分页管理的AJAX实现
- 基于Extjs的web表单设计器 第七节——取数公式设计之取数公式的使用
- 【原创】VNC-view配置
- IL学习资料
- Combobox 成员添加
- JMeter的基本介绍和入门
- 新版本的strcpy_s
- iOS开发UITableView基本使用方法总结
- 搭建ejabberd集群
- ili 一例业务系统框架
- run as gradle test,未执行@Test中的内容(待解决)
- XFF的学习+修改源码--Are you in class
- 阿里云centos安装ftp与svn过程
- sell 项目 类目表 设计 及 创建
- git pull fatal: refusing to merge unrelated histories
- BTM事务配置
- 2018.11.15 RF antenna impedance-matching
- 将四个按钮放入一个父控件的好处:方便移动,只需要改变父控件的y值,就可移动四个按钮
热门文章
- Linux下的查找技巧
- Codeforces 822C Hacker, pack your bags! - 贪心
- weblogic10以下,许可证过期解决办法
- DNS 基础
- upc组队赛1 过分的谜题【找规律】
- 【原理、应用】Quartz集群原理及配置应用
- c# 之 Microsoft.Practices.EnterpriseLibrary连接Oracle
- P4213 【模板】杜教筛(Sum)(杜教筛)
- Vue.extend提供自定义组件的构造器
- QT中QLineEdit的editingFinished()信号在按下回车时会触发两次的解决办法