零碎的知识点(七):线性二次调节器(LQR)是什么?

news2025/1/13 9:20:47

线性二次调节器(LQR)是什么?

      • 1. LQR的定义与目标
      • 2. LQR的原理
      • 3. LQR的性质
      • 4. 举例说明
        • 问题描述
        • 解步骤
        • 仿真结果
      • 5. 实际应用
      • 总结

线性二次调节器(LQR) 是一种经典的最优控制方法,用于求解线性系统的状态反馈控制问题。其目标是在满足动态约束的前提下,通过设计状态反馈控制器,使系统的性能指标达到最优。


1. LQR的定义与目标

LQR主要解决以下问题:

  • 系统的状态描述为线性动态系统:
    x ˙ ( t ) = A x ( t ) + B u ( t ) \dot{x}(t) = A x(t) + B u(t) x˙(t)=Ax(t)+Bu(t)
    其中:

    • x ( t ) ∈ R n x(t) \in \mathbb{R}^n x(t)Rn 是系统状态向量;
    • u ( t ) ∈ R m u(t) \in \mathbb{R}^m u(t)Rm 是控制输入;
    • A ∈ R n × n A \in \mathbb{R}^{n \times n} ARn×n 是状态矩阵;
    • B ∈ R n × m B \in \mathbb{R}^{n \times m} BRn×m 是控制矩阵。
  • 设计一个控制律 u ( t ) = − K x ( t ) u(t) = -K x(t) u(t)=Kx(t),其中 K K K 是控制增益矩阵,使以下性能指标 J J J 最小化:
    J = ∫ 0 ∞ ( x ( t ) T Q x ( t ) + u ( t ) T R u ( t ) ) d t J = \int_{0}^{\infty} \left( x(t)^T Q x(t) + u(t)^T R u(t) \right) dt J=0(x(t)TQx(t)+u(t)TRu(t))dt
    其中:

    • Q ∈ R n × n Q \in \mathbb{R}^{n \times n} QRn×n 是对状态 x ( t ) x(t) x(t) 的加权矩阵(正定或半正定);
    • R ∈ R m × m R \in \mathbb{R}^{m \times m} RRm×m 是对控制输入 u ( t ) u(t) u(t) 的加权矩阵(正定)。

2. LQR的原理

性能指标 J J J

性能指标 J J J 的物理意义是权衡系统偏离零状态(通过 x ( t ) T Q x ( t ) x(t)^T Q x(t) x(t)TQx(t))和控制能量消耗(通过 u ( t ) T R u ( t ) u(t)^T R u(t) u(t)TRu(t))的代价。设计 Q Q Q R R R 时:

  • 较大的 Q Q Q 强调减少状态偏离;
  • 较大的 R R R 强调控制能量的节省。
最优解的计算

LQR 的核心是通过Riccati方程计算最优状态反馈增益矩阵 K K K。具体步骤如下:

  1. 计算解 Riccati 方程的对称正定矩阵 P P P
    A T P + P A − P B R − 1 B T P + Q = 0 A^T P + P A - P B R^{-1} B^T P + Q = 0 ATP+PAPBR1BTP+Q=0
    这是一个连续时间代数 Riccati 方程(CARE)。
  2. 利用 P P P 计算反馈增益矩阵:
    K = R − 1 B T P K = R^{-1} B^T P K=R1BTP
控制律

最优控制律为:
u ( t ) = − K x ( t ) u(t) = -K x(t) u(t)=Kx(t)


3. LQR的性质

  • 稳定性:如果 Q Q Q R R R 正定,LQR 控制器设计的闭环系统是渐进稳定的。
  • 鲁棒性:LQR 对模型的参数扰动具有一定的鲁棒性,但仅限于小扰动。
  • 灵活性:通过调整 Q Q Q R R R,可以改变状态和控制能量之间的权衡。

4. 举例说明

问题描述

一个简单的二阶质量-弹簧-阻尼系统:
m x ¨ + c x ˙ + k x = F m \ddot{x} + c \dot{x} + k x = F mx¨+cx˙+kx=F
将其转换为状态空间形式:
[ x ˙ 1 x ˙ 2 ] = [ 0 1 − k m − c m ] [ x 1 x 2 ] + [ 0 1 m ] u \begin{bmatrix} \dot{x}_1 \\ \dot{x}_2 \end{bmatrix} = \begin{bmatrix} 0 & 1 \\ -\frac{k}{m} & -\frac{c}{m} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} + \begin{bmatrix} 0 \\ \frac{1}{m} \end{bmatrix} u [x˙1x˙2]=[0mk1mc][x1x2]+[0m1]u
其中:

  • x 1 = x x_1 = x x1=x 是位移;
  • x 2 = x ˙ x_2 = \dot{x} x2=x˙ 是速度;
  • u = F u = F u=F 是控制输入。

设参数为:

  • m = 1 m = 1 m=1 kg;
  • c = 0.5 c = 0.5 c=0.5 Ns/m;
  • k = 2 k = 2 k=2 N/m;
  • Q = diag ( 1 , 1 ) Q = \text{diag}(1, 1) Q=diag(1,1)
  • R = 0.1 R = 0.1 R=0.1
解步骤
  1. 确定状态矩阵 A A A 和控制矩阵 B B B
    A = [ 0 1 − 2 − 0.5 ] , B = [ 0 1 ] A = \begin{bmatrix} 0 & 1 \\ -2 & -0.5 \end{bmatrix}, \quad B = \begin{bmatrix} 0 \\ 1 \end{bmatrix} A=[0210.5],B=[01]

  2. 解 Riccati 方程,得到 P P P
    P = [ 2.236 1.118 1.118 2.618 ] P = \begin{bmatrix} 2.236 & 1.118 \\ 1.118 & 2.618 \end{bmatrix} P=[2.2361.1181.1182.618]

  3. 计算最优增益矩阵 K K K
    K = R − 1 B T P = [ 4.472 3.618 ] K = R^{-1} B^T P = \begin{bmatrix} 4.472 & 3.618 \end{bmatrix} K=R1BTP=[4.4723.618]

  4. 最优控制律:
    u ( t ) = − K x ( t ) = − [ 4.472    3.618 ] [ x 1 x 2 ] u(t) = -K x(t) = -[4.472 \; 3.618] \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} u(t)=Kx(t)=[4.4723.618][x1x2]

仿真结果

在闭环控制下,系统状态 x ( t ) x(t) x(t) 会快速趋于零,同时控制输入 u ( t ) u(t) u(t) 保持较小,体现了状态偏差和控制能量的优化。


5. 实际应用

  1. 航天器姿态控制
    LQR 用于最优设计航天器的姿态调节控制器,确保姿态调整时能量最低。

  2. 机器人控制
    在机器人路径跟踪中,LQR 用于控制机器人的位置和速度。

  3. 车辆动力学控制
    在自动驾驶系统中,LQR 常用于轨迹跟踪问题,设计车辆的方向和速度控制。


总结

LQR 是一种功能强大且理论完善的最优控制方法,通过解决 Riccati 方程和设计反馈增益矩阵,能够为线性系统提供稳定且高效的控制策略。它的应用遍及多个工程领域,是现代控制理论的重要组成部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2275906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java】-- 利用 jar 命令将配置文件添加到 jar 中

目录 1、准备 2、目标 3、步骤 3.1、安装 jdk 3.2、添加配置文件 3.3、校验 1、准备 java 环境hadoop-core-1.2.1.jar 和 core-site.xml 2、目标 将 core-site.xml 添加到 hadoop-core-1.2.1.jar 中。 3、步骤 3.1、安装 jdk 3.2、添加配置文件 jar -cvf hadoop-core-…

day14-Linux系统基础权限知识精讲

1. 给文件加特殊属性 1.1 chattr a:只能追加内容,不能删除 i:不能修改,不能删除;保护关键文件,防止非法写入 [rootoldboy ~]# chattr a test.txt [rootoldboy ~]# chattr i test.txt [rootoldboy ~]# echo 123 >> test.txt -bash: t…

Android使用系统消息与定时器实现霓虹灯效果

演示效果: 界面设计: 在帧布局FrameLayout中添加6个TextView 依次设置这6个TextView的宽,高,权重 也可在XML中直接设置 添加自定义颜色 关联自定义颜色到数组变量 关联6个TextView控件到数组变量 处理自定义系统消息 Handler _sysHandler new Han…

数据结构大作业——家谱管理系统(超详细!完整代码!)

目录 设计思路: 一、项目背景 二、功能分析 查询功能流程图: 管理功能流程图: 三、设计 四、实现 代码实现: 头文件 结构体 函数声明及定义 创建家谱树头结点 绘制家谱树(打印) 建立右兄弟…

vue3+elementPlus之后台管理系统(从0到1)(day1)

vue3官方文档:https://cn.vuejs.org/guide/introduction.html 1、项目创建 确保电脑已安装node 查看命令: node -v进入项目目录,创建项目 npm init vuelatest Need to install the following packages: create-vue3.13.0 Ok to procee…

汉图科技XP356DNL高速激光打印一体机综合性能测评

汉图科技XP356DNL高速激光打印一体机效率方面表现出色,支持A4纸型的高速打印,单面打印速度高达35页/分钟,自动双面打印速度可达32面/分钟,这样的速度在日常办公中能够极大地提高打印效率,减少等待时间,满足…

【芯片封测学习专栏 -- 什么是 Chiplet 技术】

请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 OverviewChiplet 背景UCIeChiplet 的挑战 Overview Chiplet 又称为小芯片。该技术通过将大型SoC划分为更小的芯片,使得每个部分都能采用不同…

1.CSS的复合选择器

1.1 什么是复合选择器 在CSS中,可以根据选择器的类型把选择器分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上,对基础选择器进行组合形成的。 复合选择器可以更精准、更高效的选择目标元素(标签) 复…

【MySQL】SQL菜鸟教程(一)

1.常见命令 1.1 总览 命令作用SELECT从数据库中提取数据UPDATE更新数据库中的数据DELETE从数据库中删除数据INSERT INTO向数据库中插入新数据CREATE DATABASE创建新数据库ALTER DATABASE修改数据库CREATE TABLE创建新表ALTER TABLE变更数据表DROP TABLE删除表CREATE INDEX创建…

docker 自建rustdesk服务器测试

参考https://blog.csdn.net/tootsy_you/article/details/130010564 注意: docker-compose.yml version: 3networks:rustdesk-net:external: falseservices:hbbs:container_name: hbbsports:- 21115:21115- 21116:21116- 21116:21116/udp- 21118:21118image: rust…

检验统计量与p值笔记

一、背景 以雨量数据为例,当获得一个站点一年的日雨量数据后,我们需要估计该站点的雨量的概率分布情况,因此我们利用有参估计的方式如极大似然法估计得到了假定该随机变量服从某一分布的参数,从而得到该站点的概率密度函数&#x…

每日十题八股-2025年1月12日

1.为什么四次挥手之后要等2MSL? 2.服务端出现大量的timewait有哪些原因? 3.TCP和UDP区别是什么? 4.TCP为什么可靠传输 5.怎么用udp实现http? 6.tcp粘包怎么解决? 7.TCP的拥塞控制介绍一下? 8.描述一下打开百度首页后发生的网络过…

制造企业“数字化转型”典型场景参考

聚焦产业链上下游企业研发设计、生产制造、运维服务、经营管理、供应链管理等场景,以场景为切入点梳理数字化转型痛点需求,绘制重点行业、重点产业链数字化转型场景图谱(简称“一图谱”),明确企业数字化转型路径&#…

Web渗透测试之XSS跨站脚本 防御[WAF]绕过手法

目录 XSS防御绕过汇总 参考这篇文章绕过 XSS payload XSS防御绕过汇总 服务端知道有网络攻击或者xss攻 Html

《机器学习》——sklearn库中CountVectorizer方法(词频矩阵)

CountVectorizer方法介绍 CountVectorizer 是 scikit-learn 库中的一个工具,它主要用于将文本数据转换为词频矩阵,而不是传统意义上的词向量转换,但可以作为词向量转换的一种基础形式。用于将文本数据转换为词频矩阵,它是文本特征…

session-manager-plugin: command not found 解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Linux之读者写者模型与特殊锁的学习

目录 读者写者模型 特殊锁 悲观锁 自旋锁 在前几期,我们学习了多线程的生产者和消费者模型,生产者和消费者模型中,有三种关系,两个角色,一个场所,那么读者写者模型和生产者消费者模型有什么关联吗&…

期刊(中英),期刊分区,期刊所在数据库(中英),出版商区别和联系

目录 对期刊、分区、数据库、出版商整体了解期刊(中英)期刊分区期刊所在数据库总结 出版商 对期刊、分区、数据库、出版商整体了解 下图是我对这四部分的一个理解,其中期刊根据论文使用语言分为中英两种,期刊分区是用来评判论文质…

数学函数的参数和返回值探秘

数学函数的参数和返回值探秘 一、数学函数的参数1.1 隐式类型转换1.2 隐式类型转换的秘密 二、数学函数的返回值 本文所说的数学函数单指<math.h>中的系统函数&#xff0c;这些函数对参数和返回值的要求与其他类函数是有一点不同的。尤其是参数部分&#xff0c;是有值得深…

炸砖块游戏的最终图案

描述 小红正在玩一个“炸砖块”游戏,游戏的规则如下:初始有一个 n * m 的砖块矩阵。小红会炸 k 次,每次会向一个位置投炸弹,如果这个位置有一个砖块,则砖块消失,上方的砖块向下落。小红希望你画出最终砖块的图案。 输入描述 第一行输入三个正整数 n, m, k,代表矩阵的行…