车辆控制知识总结(一):LQR算法

2023-05-16

目录

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变化量多少时可以看做不变收敛了。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

车辆控制知识总结(一):LQR算法 的相关文章

  • Visual studio C++:LQR轨迹跟踪仿真

    前言 xff1a 因为工作需要开始学习车辆横纵向控制 xff0c 然后学到了LQR xff0c 正好写一个博客把程序保存下来 为了加强C 43 43 代码能力 xff0c 本次仿真的所有文件均用C 43 43 完成 代码结构梳理 开始之前非
  • Apollo代码学习(七)—MPC与LQR比较 (百度Apollo中用到了PID、MPC和LQR三种控制器)

    摘自 xff1a https blog csdn net u013914471 article details 84324754 Apollo代码学习 七 MPC与LQR比较 follow轻尘 2018 11 29 17 32 56 179
  • 我已经多次看到说LQR和MPC相似

    https zhuanlan zhihu com p 139145957 https blog csdn net sinat 16643223 article details 109707776
  • 基于LQR的一阶倒立摆控制仿真

    1 LQR简介 LQR linear quadratic regulator 即线性二次型调节器 xff0c 其对象是现代理论中以状态空间形式给出的线性系统 LQR最优设计是指设计出的状态反馈控制器 K要使二次型目标函数J 取最小值 而 K
  • matlab求解lqr法的Q和R矩阵,基于MATLAB的LQR控制器设计方法研究

    邮局订阅号 xff1a 82 946 360 元 年 技术创新 控制系统 PLC 技术应用 200 例 您的论文得到两院院士关注 基于 MATLAB 的 LQR 控制器设计方法研究 Research of LQR Controller De
  • 【自动驾驶】LQR控制实现轨迹跟踪 | python实现 | c++实现

    文章目录 参考资料1 基本概念1 1 运动学模型的离散状态方程1 2 LQR求解步骤 2 python实现2 1 车辆模型2 2 相关参数设置2 3 生成轨迹曲线2 4 角度归一化2 5 解代数里卡提方程2 6 LQR控制算法2 7 主函数
  • 无人驾驶-控制-LQR(运动学)

    无人驾驶 控制 LQR xff08 运动学 xff09 一 车辆建模 二 参考轨迹 利用泰勒展开 xff0c 进行线性化 xff1a 离散化处理 对离散后的式子进行处理 xff0c 得到X k 43 1 的表达式 综上 xff1a 由于系统
  • LQR控制算法的浅析

    目录 前言 一 知识点补充 1 拉格朗日乘子法 2 积分中值定理 3 向前欧拉法 xff0c 向后欧拉法 xff0c 中点欧拉法 4 向量的导数 5 矩阵求逆引理 记住就好 xff0c 推导见链接 二 连续时间下的LQR推导 1 系统状态方
  • 车辆控制知识总结(一):LQR算法

    目录 1 LQR简介 2 现代控制理论基础 2 1 状态空间描述 2 2 线性定常系统的状态空间描述框图 2 3 线性系统连续系统的反馈控制 2 31 全状态反馈控制器 3 LQR设计控制器的方法 3 1 什么是二次型 3 3 连续时间下的
  • LQR控制算法推导以及简单分析

    首先 xff0c 这篇文章是看了几个大神的博客后 xff0c 自己抄录以及整理的内容 xff0c 其中有些自己的想法 xff0c 但是原理部分基本都是学习大神们的 xff0c 在此先说明一下 1 全状态反馈控制系统 在介绍LQR之前 xff
  • 使用PID和LQR控制器进行多旋翼飞行器控制

    任务内容 通过调整PID和LQR控制器以实现稳定悬停的多旋翼飞行器 xff0c 运用在无论是在仿真中还是在实际系统中 参考内容 LQR控制部分基础参考内容 xff1a LQR控制器 参考链接 xff1a Linear Quadratic R
  • 路径跟踪之LQR控制算法

    xff08 一 xff09 车辆建模 两自由度车辆模型为 xff1a 考虑恒定不变 xff0c 则上述模型可以看作一个输入为 状态变量为的控制系统 xff0c 可以表示为 xff1a 对于参考轨迹 xff0c 可以表示为 xff1a 将 x
  • MPC与LQR的详细对比分析

    从以下几个方面进行阐述 xff1a 一 xff0c 研究对象 xff1a 是否线性 二 xff0c 状态方程 xff1a 离散化 三 xff0c 目标函数 xff1a 误差和控制量的极小值 四 xff0c 工作时域 xff1a 预测时域 x
  • 百度Apollo 2.0 车辆控制算法之LQR控制算法解读

    百度Apollo 2 0 车辆控制算法之LQR控制算法解读 Apollo 中横向控制的LQR控制算法在Latcontroller cc 中实现 根据车辆的二自由度动力学模型 1 根据魔术公式在小角度偏角的情况下有 轮胎的侧向力与轮胎的偏离角
  • 离散LQR:原理,求解与拓展

    该文档用以总结离散LQR的基本原理 xff0c 反馈控制率的求解和一些拓展 xff08 时变系统 xff0c 跟踪命题等 xff09 主要参考的是Stanford的课程EE363 Linear Dynamical Systems的部分课件
  • Mujoco-欠驱动的二阶单摆的LQR控制

    MuJoCo Lec7 span class token keyword void span span class token function f span span class token punctuation span span c
  • LQR制导

    LQR制导 引言 在ardupilot中固定翼飞机横航向位置控制 xff08 制导律 xff09 采用L1制导律 xff0c 最近想将一些其他的控制理论用于ardupilot代码中 xff0c 通过ardupilot论坛 xff0c 看到已
  • LQR控制器——简单实现与仿真

    对B站一位良心up主的视频学习总结 安利 https www bilibili com video BV1RW411q7FD spm id from trigger reload 对于可镇定的线性系统 x A x B u dot x Ax
  • [现代控制理论]11_现代控制理论串讲_完结_pdf获取

    DR CAN的现代控制理论的笔记就结束了 加上这篇一共11篇 现代控制理论 11 现代控制理论串讲 完结 pdf获取 现代控制理论 10 可观测性与分离原理 观测器与控制器 现代控制理论 9 状态观测器设计 龙伯格观测器 现代控制理论 8
  • [现代控制理论]11_现代控制理论串讲_完结_pdf获取

    DR CAN的现代控制理论的笔记就结束了 加上这篇一共11篇 现代控制理论 11 现代控制理论串讲 完结 pdf获取 现代控制理论 10 可观测性与分离原理 观测器与控制器 现代控制理论 9 状态观测器设计 龙伯格观测器 现代控制理论 8

随机推荐

  • 微服务横行的今天, 你的文档跟上节奏了么?

    转载自 xff1a https blog maxleap cn archives 1241 说起微服务 想必现在的技术圈内人士个个都能谈笑风云 娓娓道来 的确 技术变革日新月异 各种工具框架雨后春笋般涌现 现在我们可以轻巧便捷地根据自己的业
  • 微服务实战:从架构到发布(一)

    转载自 xff1a https blog maxleap cn archives 195 引言 xff1a 微服务 是当前软件架构领域非常热门的词汇 xff0c 能找到很多关于微服务的定义 准则 xff0c 以及如何从微服务中获益的文章 x
  • 《次时代Java编程(一):续 vertx-sync实践》

    转载自 xff1a https blog maxleap cn archives 1013 vertx sync是什么 上一篇我们已经讲了 Fiber 相关的知识 xff0c 想必大家对Java实现类似Golang的coroutine已经有
  • 我的2016--"狗血"

    偶然看到了CSDN的 我的2016 主题征文活动 xff0c 突然感慨一番 xff0c 今年又快结束了 xff0c 而我这一年的经历 xff0c 可以浓缩为两个字 xff1a 狗血 然而 xff0c 我能用上如此不羁的词汇 xff0c 并未
  • 华为OD机试 - 买卖股票的最佳时机(Java)

    一 题目描述 给定一个数组 prices xff0c 它的第 i 个元素 prices i 表示一支给定股票第 i 天的价格 你只能选择 某一天 买入这只股票 xff0c 并选择在 未来的某一个不同的日子 卖出该股票 设计一个算法来计算你所
  • Linux下安装、配置、启动Apache

    环境 Centos 6 5 64位操作系统 安装Apache前准备 xff1a 1 检查该环境中是否已经存在httpd服务的配置文件 xff0c 默认存储路径 xff1a etc httpd httpd conf xff08 这是cento
  • 我从来没有得到过你,却好像已经失去了你千万次。

    为什么从来没有得到的东西 xff0c 也会让人有一种失去的感觉 xff1f 如题 xff01 xff01
  • power yourself

    1 不要做繁琐的计划 2 远离魔鬼 躲避诱惑 3 保持早睡早起的习惯 4 记录自己的成长轨迹 5 选择性离开网络世界
  • 希望余生尽早开始

    我爱你在暖和的天气感冒 我爱你用一小时来点菜 我爱你皱着眉头看我 好像我是疯子一样 我爱跟你分别后 仍然萦绕不散的余香 我想在睡前和你聊天 我来这 并不是因为我寂寞 也不是因为今天是除夕 是因为发现 如果你想要与某人共度余生 那你就会希望余
  • 又一年--在深圳

    一晃再晃 xff1b 一拖再拖 xff1b 我还是独自一个人奋战 xff0c 在这座繁华都市 严重的错觉就是 xff0c 总以为自己不想加班 xff0c 却发现只有加班的日子才过的充实 xff0c 也许事不知道业余时间该干嘛 这一年 xff
  • Debian下安装配置fcitx

    本人新装Debian7 LXDE桌面 xff0c 下面介绍一下安装配置fcitx的步骤 在此之前 xff0c 需要先保证locale的中文支持 xff1a 1 locale a xff0c 得到若干语言编码组合 xff0c 其中需要有zh
  • ROS: catkin_make/catkin_make_isolated/catkin build/colcon的区别

    1 catkin make catkin make 是第一个构建catkin工作区的脚本 xff0c 因此在许多教程中使用 它有几个缺点 xff08 需要包中的非标准逻辑来声明跨包目标依赖关系 xff09 和限制 xff08 不能处理普通的
  • 关于Segmentation fault (core dumped)几个简单问题

    有的程序可以通过编译 xff0c 但在运行时会出现Segment fault 段错误 这通常都是指针错误引起的 但这不像编译错误一样会提示到文件一行 xff0c 而是没有任何信息 一种办法是用gdb的step 一步一步寻找 但要step一个
  • CUDA C 编程指南

    CUDA C Programming Guide CUDA C 编程指南 导读 田子宸 浙大水硕在读 184 人 赞同了该文章
  • 2014华为校招机试高级题——if语法中的括号判断

    http blog csdn net wy4649 article details 11725073 package com huawei job import java util ArrayList import java util Sc
  • MySQL插入数据时报错Cause: java.sql.SQLException: #HY000

    造成这个错误的原因是数据库中有字段要求不能为空 xff0c 但insert语句中没有提供该字段的数据
  • 操作系统经典书籍推荐

    推荐原则 xff1a 宁缺勿滥 xff0c 决不混进糟粕 好书不一定对所有人都合适 xff0c 但对于它的目标读者群来说 xff0c 一定是好书 选书原则 xff1a 有国外的 xff0c 不看国产的 有原版的 xff0c 不看翻译的 看大
  • 英特尔T265 通过Python API获得位置(姿态)数据

    如果你想在树莓派或者jetson nano等嵌入式设备上使用Python API获得T265的数据 xff0c 需要编译pyrealsense2 jetson nano的安装可以参考这篇文章 xff1a jetson nano 编译pyre
  • 英特尔 t265 保存地图 (Python API)

    保存地图 span class token keyword import span pyrealsense2 span class token keyword as span rs span class token keyword impo
  • 车辆控制知识总结(一):LQR算法

    目录 1 LQR简介 2 现代控制理论基础 2 1 状态空间描述 2 2 线性定常系统的状态空间描述框图 2 3 线性系统连续系统的反馈控制 2 31 全状态反馈控制器 3 LQR设计控制器的方法 3 1 什么是二次型 3 3 连续时间下的