车辆控制知识总结(一):LQR算法
目录
1 LQR简介
2 现代控制理论基础
2.1 状态空间描述
2.2 线性定常系统的状态空间描述框图
2.3 线性系统连续系统的反馈控制
2.31 全状态反馈控制器
3 LQR设计控制器的方法
3.1 什么是二次型
3.3 连续时间下的LQR调节器设计步骤
3.3.1 Q、R矩阵选取
3.3.2 求解Riccati方程得到矩阵P
3.3.3 计算反馈矩阵
3.3.4 计算控制量
3.4 离散时间下的LQR调节器的设计(重要!!)
3.41 推导
3.42 推导结果
3.43 离散lqr算法步骤:
转载参考资料:
LQR:Linear Quadratic Regulator 线性二次型调节器_One.Wan的博客-CSDN博客_线性二次型调节器
【控制理论】离散及连续的LQR控制算法原理推导_CHH3213的博客-CSDN博客_lqr控制
1 LQR简介
LQR:Linear Quadratic Regulator 线性二次型调节器,常用于车辆的横向控制中。
那么,什么是LQR呢?
如果所研究的系统是线性的,且性能指标为状态变量和控制变量的二次型函数,则最优控制问题称为线性二次型问题。
而LQR,Linear Quadratic Regulator,即线性二次型调节器, 是求解线性二次型问题常用的求解方法。
LQR ,其对象是现代控制理论中以状态空间形式给出的线性系统,而目标函数为对象状态和控制输入的二次型函数。
LQR最优设计是指设计出的状态反馈控制器 K要使二次型目标函数J 取最小值,而 K由权矩阵Q 与 R 唯一决定,故此 Q、 R 的选择尤为重要。
LQR理论是现代控制理论中发展最早也最为成熟的一种状态空间设计法。特别可贵的是,LQR可得到状态线性反馈的最优控制规律,易于构成闭环最优控制。
2 现代控制理论基础
2.1 状态空间描述
2.2 线性定常系统的状态空间描述框图
2.3 线性系统连续系统的反馈控制
经典控制理论中,我们依据描述对象输入输出行为的传递函数模型来设计控制器,因此只能用系统的可测量输出作为反馈信号。
而现代控制理论则是用刻画系统内部特征的状态空间模型来描述对象,除了可测量的输出信号外,还可以用系统的内部状态来作为反馈信号。
根据可利用的信息是系统的输出还是状态,相应的反馈控制可分为输出反馈和状态反馈。
现代控制理论中,更多地使用状态反馈,由于状态反馈能提供更丰富的状态信息和可供选择的自由度,因而能使系统更容易获得更为优异的性能。其实,输出反馈是可以看做是部分状态反馈。
2.31 全状态反馈控制器
(1)设计一个状态反馈控制器,如下图所示:多了个K反馈环节,一般直接取u=-Kx;
(2)设计完反馈控制器的架构之后,下面要保证反馈系统的稳定性。
反馈系统稳定性的充要条件是系统闭环传递函数的所有极点均有负实部,即均在复频域S平面的左侧。
根据稳定性判定的条件,首先求闭环系统的传递函数。
为了书写一致性,我们重写系统状态表达式将r替换成u:意思是最后实际是Y(s)/r(s);
可以得到系统的闭环传递函数的形式如式(6)所示,只需要分母表达式。可见系统传递的极点就是矩阵A − BK的特征值。
因此,可以通过配置K矩阵 (r*n矩阵),使闭环系统达到我们期望的状态。
问题是:当系统变量很多的时候,即使设计好了极点,但是矩阵K也不好计算。接下来开始引入LQR帮助求解K。
3 LQR设计控制器的方法
3.1 什么是二次型
在不指定优化标准的前提下,控制领域中的“最优”体现在“输出能够完全跟踪控制,即在每一时刻输出量与控制量完全一致”。实际过程并不是这样完美的过程,每一时刻都会存在误差。退而求其次,追求在整个工作时间的范围内误差最小,与轨迹误差类似,我们研究状态误差。
因此,把整个工作时间内每一时刻状态的误差都累加起来,只要累加值更小,便会更加接近系统性能的期望。
1 首先,假设状态向量x(t)的维度为1以及闭环系统稳定。
2. 扩充状态变量到n个,则代价函数为:
类似的J的函数称为二次型函数,变量的最高次数是2。
所有展开的函数最高次数为2的,这种类型的函数统称为二次型函数。
3.2 二次型最优控制(注意:代价函数前面有公式加系数1/2)
3.3 连续时间下的LQR调节器设计步骤
3.3.1 Q、R矩阵选取
Q为半正定的状态加权矩阵, R为正定的控制加权矩阵(注意这里),两者通常取为对角阵。Q矩阵元素变大意味着希望状态量能够快速趋近于零;R矩阵元素变大意味着希望控制输入能够尽可能小,它意味着系统的状态衰减将变慢。所以,Q、R的选取,要综合看具体的实际应用场景来调节。
3.3.2 求解Riccati方程得到矩阵P
我们求解的前提是假定系统处于稳定状态,此时的状态反馈为 u(t)=-Kx(t);
将状态方程代入到代价函数中
状态方程:x ˙ ( t ) = ( A − B K ) x ( t )
式(10)中A,B,Q,R 都是已知量,那么通过式(10)可以求解出 P(n×n维),式(10)就是著名的连续时间代数Riccati方程(CARE)。
3.3.3 计算反馈矩阵
根据P,可计算出反馈矩阵K=R-1BTP;
3.3.4 计算控制量
u=-Kx;
3.4 离散时间下的LQR调节器的设计(重要!!)
3.41 推导
首先,对状态方程进行离散化,如下图:Apollo是第二种
接着,以这个离散的系统进行dlqr推导,注意此时的代价函数略微不同,多了一项。
推导参考:
自动驾驶控制算法(四)离散LQR算法推导 - 知乎
基础算法-LQR-离散时间有限边界 | Henry-Z
3.42 推导结果
3.43 离散lqr算法步骤:
一般迭代个几十步,P就不变了!!收敛了!!
输入A、B、Q、R、最大迭代次数N,以及精度,即P变化量多少时可以看做不变收敛了。
车辆控制知识总结(一):LQR算法相关推荐
- 自动驾驶规划控制(A*、pure pursuit、LQR算法,使用c++在ubuntu和ros环境下实现)
文章目录 1 目录概述 2 算法介绍 2.1 Astart改进 2.2 ROS(Gazebo仿真) 2.2.1 使用Gazebo仿真需要安装的功能包 2.2.2 创建工作空间 catkin_ws 2. ...
- Agv、Rgv 车辆控制调度系统开发第二篇
系列文章目录 Agv.Rgv 车辆控制调度系统开发第二篇(理论片) 文章目录 系列文章目录 前言 一.什么是调度系统? 问题 二.问题分析 1.寻找路线 2.避碰算法 3.移车算法 4.解锁算法 总结 ...
- Agv、Rgv 车辆控制调度系统开发第八篇-错误纠正
Agv.Rgv 车辆控制调度系统开发第八篇-错误纠正 前言 开始写博客到现在也有一年多了,这一年多分析了调度的很多东西,我也全网搜索过,网上真正分享调度知识的基本没有,虽然我也没有把核心的代码展示出来 ...
- 自动驾驶算法详解(3): LQR算法进行轨迹跟踪,lqr_speed_steering_control( )的python实现
前言: LQR算法在自动驾驶应用中,一般用在NOP.TJA.LCC这些算法的横向控制中,一般与曲率的前馈控制一起使用,来实现轨迹跟踪的目标,通过控制方向盘转角来实现横向控制. 本文将使用python来 ...
- Agv、Rgv 车辆控制调度系统开发知识点篇
拖欠更新说明 因为最近工作比较忙,把更新的事给忘了,看到好多人的催更,然后紧急补上一篇大家先了解下知识点 创建目录结构 上一次讲到,做调度系统需要的几个目录 1.寻路 2.避碰 3.解锁 4.任务调度 ...
- Agv、Rgv 车辆控制调度系统开发第一篇
Agv.Rgv 车辆控制调度系统第一篇 为什么要做这个系统 先看作品 从头讲起 算法讲解 编程语言 从哪里开始 继续深入 预告 链接 问题解答 为什么要做这个系统 说白了是为了赚钱,在一个项目中发现公 ...
- 车辆动力学知识总结(三) 二自由度动力学模型
车辆动力学知识总结(三) 二自由度动力学模型 目录 1 轮胎侧偏特性 1.1 侧偏力和侧偏角 1.2 轮胎侧偏刚度获取 2 二自由度车辆动力学模型(两轮侧向动力学模型) 2.1 侧向加速度 2.2 车 ...
- Agv、Rgv 车辆控制调度系统开发第五篇-避碰
Agv.Rgv 车辆控制调度系统开发第五篇-避碰 前言 上期结束的时候说讲避碰,这期就主要谈一下避碰的原理,避碰是之前给其他人讲调度时,别人提了一个场景里面有三种车,10种货架问我怎么调度,当时确实被 ...
- Agv、Rgv 车辆控制调度系统开发第六篇-流程控制器
Agv.Rgv 车辆控制调度系统开发第六篇-流程控制器 Agv.Rgv 车辆控制调度系统开发第六篇-流程控制器 Agv.Rgv 车辆控制调度系统开发第六篇-流程控制器 前言 一.PCS是什么? 二.P ...
- Agv、Rgv 车辆控制调度系统开发第四篇
Agv.Rgv 车辆控制调度系统开发第四篇 车辆调度模拟器 前言 一.车辆模拟器是什么? 二.如何做模拟器 1.动作仿真模拟器 2.完全仿真模拟器 总结 下期预告 系列文章链接 其他文章 新篇章 前言 ...
最新文章
- python中opencv中inrange用法_python-opencv中的cv2.inRange函数
- python3的数据类型以及模块的含义
- 4.7 mini趴 走进猎豹
- 增强现实系统的三大关键技术是什么?
- 解决ubuntu系统安装完后启动项里没有ubuntu的问题
- javascript跨域实践
- 深入理解条件过滤Conditional
- 模糊查询时,页面没有数据,数据库编辑器里可以正常显示数据
- Leetcode 363.矩形区域不超过k的最大数值和
- Python学习之字典详解
- 浙大研究生hadoop工作分享
- android微信支付指纹支付密码错误,安卓微信支付怎么设置指纹锁
- 游戏太难通关?教你用CE和Python写一个属于自己的植物大战僵尸修改器(无限阳光,无限金币,无冷却时间)
- html 文字阴影 一重投影,鼠标移入文字添加阴影 溢出的文字 添加多重颜色
- 游戏UI界面设计视频教程全套
- 几款好用的Tooltips 提示框插件
- Ubuntu系统切换五笔输入法
- 防止你的WP7手机偷跑流量——系统设置篇
- 【毕业设计_课程设计】基于大数据个性化音乐推荐算法分析
- 计算机设备的名称,计算机设备名称词汇
热门文章
- 小米 redmibook 14 锐龙版 安装linux ubuntu 20 19 18 deepin 无线网卡驱动问题解决方案
- 一个很好用的桌面取色器和一个在线取色器
- Python3.WRF的投影转换
- 程序员做饭指南,GitHub教程来了
- 固态硬盘测试软件有哪些,手把手教你测试固态硬盘!硬盘测试软件大汇总
- python: SHA256算法的实现和消息的哈希散列值计算
- charset参数 sqluldr2_sqluldr2 oracle直接导出数据为文本的小工具使用
- pcb天线和纯铜天线_PCB天线和FPC天线有怎样的特性
- 2022-2027年(新版)中国工程造价咨询行业现状动态与未来前景预测报告
- 最好用的100个黑科技网站