LQR线性二次型调节器3(Discrete-time system Linear-Quadratic Regulator design,离散系统分析及MATALB实例)

2023-05-16

离散系统线性二次型调节器,dlqr函数,dare函数

    • 一、 离散时间系统二次型优化:dlqr()函数
      • 1.1 MATLAB函数形式
      • 1.2 举例:
    • 二、离散时间系统李卡提方程求解函数:dare()函数
      • 2.1 MATLAB函数形式
      • 2.2 举例
    • 三、总结:
      • 3.1 离散系统中,函数*dare*()和*dlqr*()计算的结果相等,*K*,*P*,*r*完全相同==;
      • 3.2 公式*k*=(*B^T^PB*+*R*)^-1^*B^T^PA*求解的*k*和*dlqr*()函数、*dare*()函数求解的*k*结果相同==;
      • 3.3 函数*dare*()和*dlqr*()都可以直接求解Riccati方程的解*P*、以及最优反馈增益矩阵K,且他们求解的P和*dlyap*()函数求解的*P*不同;
      • 3.4 以上结论同连续系统。

**注:**MATLAB中LQR函数有 连续离散两种,本篇文章继续前面分析的连续时间系统lqr()函数,分析 离散时间系统LQR()函数dlqr()
lqr算出来的 反馈矩阵K,和用 公式k=(BTPB+R)-1BTPA出来的反馈矩阵k是一样的,本文有详细分析过程。

一、 离散时间系统二次型优化:dlqr()函数

1.1 MATLAB函数形式

对于离散时间系统
在这里插入图片描述
反馈矩阵控制率u=-kx最小化二次型代价函数:
在这里插入图片描述
离散系统MATLAB中lqr()函数形式
在这里插入图片描述
其中输入包含:
在这里插入图片描述
在所有情况中,如果忽略N,则N设定为0。
求出的解包含:
在这里插入图片描述
lqr()返回kPr,其实还可以通过dare()函数求解kPr
① 通过dare()函数求解Riccati方程的解P
通过函数dlap()判断稳定性:
在这里插入图片描述
P要正定,系统才稳定
求解P
在这里插入图片描述
a. 根据dare()函数求解的Prk的含义与[k,P,r)=dlqr()中相同
b. 函数dare()和dlqr()求出的结果是相同的,都能求解Prk;
c. 函数dlap()求出的Pdare()函数、dlqr()函数求出的P不同
② 再根据求解的P去求解反馈增益矩阵k
在这里插入图片描述
这里根据公式求解的kdare()函数、dlqr()函数求出的k是一样的。
③ 最后根据k求解闭环系统矩阵特征值r
在这里插入图片描述

1.2 举例:

Example1:

>> A
A =

    1.1000    2.0000
         0    0.9500

>> B
B =
         0
    0.0790

>> Q
Q =
     1     0
     0     1

>> R
R =
    0.1000
>> eig(A)

ans =

    1.1000
    0.9500

>> P=dlyap(A',Q)

P =

   1.0e+03 *

   -0.0048    0.2328
    0.2328    8.8883  

① 可见由于离散系统矩阵A的特征值有不在单位圆内,所以该系统本身就不稳定,同时通过dlyap()函数求解P,发现P也不正定,所以该系统本身就不稳定
② 这时需要通过闭环控制配置状态反馈矩阵K来实现系统稳定,即让闭环状态矩阵Acl=(A-B**k)特征值在单位圆内,这就是LQR控制起到的作用。

>> [K,P,r] = dlqr(A,B,Q,R)
K =
   2.4950   12.5106

P =
   4.0373    8.5226
   8.5226   31.5400

r =
  0.5308 + 0.2651i
  0.5308 - 0.2651i

① dlqr()直接求解出kPr
② 也可以通过公式k=(BTPB+R)-1BTPA来求解K。

>> K=(B'*P*B+R)^(-1)*B'*P*A
K =
   2.4950   12.5106

公式k=(BTPB+R)-1BTPA求解的kdlqr()函数求解的k结果相同
接下来就可以验证闭环反馈稳定性:

>> Acl=A-B*K

Acl =

    1.1000    2.0000
   -0.1971   -0.0383

>> eig(Acl)

ans =

   0.5308 + 0.2651i
   0.5308 - 0.2651i
   
>> dlyap(Acl',Q)
ans =
    3.2764    5.0884
    5.0884   13.3450   

① 可见由于闭环系统矩阵Acl的特征值都在单位圆内,所以该闭环系统稳定,同时通过dlyap()函数求解P,发现P也正定,各阶主子式均大于0,所以该闭环系统稳定
② 若用最优增益K去计算lyapunov方程的解P,得到的P和LQR求解的P相同,见“Lyapunov稳定性分析3(离散时间系统)”文章链接: Lyapunov稳定性分析3(离散时间系统)

二、离散时间系统李卡提方程求解函数:dare()函数

dare()函数:Discrete-time algebraic Riccati equation solution
作用:通过dare()函数求解离散系统Riccati方程的解P

2.1 MATLAB函数形式

dlqr()函数相同,对于离散系统,形式:
在这里插入图片描述

其中:
在这里插入图片描述

2.2 举例

Example1:
系统矩阵、权值矩阵A,B,Q,R和1.2节中一样

>> [P,r,K] = dare(A,B,Q,R)
P =
    4.0373    8.5226
    8.5226   31.5400

r =
   0.5308 + 0.2651i
   0.5308 - 0.2651i

K =
    2.4950   12.5106

三、总结:

3.1 离散系统中,函数dare()和dlqr()计算的结果相等,K,P,r完全相同==;

3.2 公式k=(BTPB+R)-1BTPA求解的kdlqr()函数、dare()函数求解的k结果相同==;

3.3 函数dare()和dlqr()都可以直接求解Riccati方程的解P、以及最优反馈增益矩阵K,且他们求解的P和dlyap()函数求解的P不同;

3.4 以上结论同连续系统。

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

LQR线性二次型调节器3(Discrete-time system Linear-Quadratic Regulator design,离散系统分析及MATALB实例) 的相关文章

  • oracle 新建用户

    1 打开命令行窗口 xff0c 输入 slqplus 回车 2 create user 用户名 identified by 密码 xff1b 回车 3 授权权限 xff1a grant connect resource dba to 用户名
  • 解决MySQL 8.0 SQLYog工具连接报错1251

    报错提示 xff0c 如图 xff1a 错误号码1251 Client does not support authentication protocol requested by server consider upgrading MySQ
  • vc中m_开头的意义

    一种变量命名方法 匈牙利命名法 xff0c m即member xff0c 即定义的变量为成员变量 这是一种命名规范
  • amixer

    1 查看有多少个接口可以操作 amixer controls amixer contents 2 get系列 amixer sget 39 Playback Path 39 0 3 set系列 amixer cset numid 61 2
  • 目标跟踪算法综述

    前言 目标跟踪是计算机视觉领域研究的一个热点问题 xff0c 其利用视频或图像序列的上下文信息 xff0c 对目标的外观和运动信息进行建模 xff0c 从而对目标运动状态进行预测并标定目标的位置 目标跟踪算法从构建模型的角度可以分为生成式
  • 树莓派开始,玩转Linux30:树莓派网络诊断

    树莓派开始 xff0c 玩转Linux30 xff1a 树莓派网络诊断 通过对网络协议的介绍 xff0c 我们已经了解了互联网通信的基本原理 互联网让树莓派变得更加强大 但这也意味着 xff0c 网络问题会让人非常恼火 下面介绍树莓派常用的
  • vs2017许可证书过期真正的解决方法

    看了网上的好多所谓VS2017的证书许可过期的解决方法 xff0c 感觉 xff0c 可能只有重装是最简单粗暴而且实用的了 其中我发现 xff0c 我的证书过期原因 xff0c 是因为当时系统重装了 xff0c 导致软件只留下的根目录 xf
  • centos防火墙开启、关闭、查看状态。

    一 对于centos7自带的防火墙的相关指令 systemctl stop firewalld service 停止firewall systemctl disable firewalld service 禁止firewall开机启动 sy
  • mavros安装

    mavros 功能包提供了 一台能够运行ros的机载电脑 支持MAVLINK协议的飞控和支持MAVLINK的地面站这三者之间的通讯功能 MAVROS 是 ROS 与 MAVLink 协议之间的 有 34 官方 34 支持的ROS功能包 它当
  • 【cuda安装】Ensure there is enough space in /tmp and that the installation package is not corrupt

    nvidia 64 nvidia usr sudo mkdir usr tmp2 sudo nvidia 的密码 xff1a nvidia 64 nvidia usr sudo chmod 1777 usr tmp2 nvidia 64 n
  • openCV3.4.16和openCV_contirb3.4.16安装全解析

    安装cmake sudo apt get install cmake 安装依赖项 sudo apt get install build essential libgtk2 0 dev libavcodec dev libavformat d
  • YOLO-Darknet-opencv3升级Opencv4出现问题error while loading shared libraries: libopencv_highgui.so.3.4: can

    问题一 xff1a error while loading shared libraries libopencv highgui so 3 4 cannot open shared object file 我们首先查看当前库文件是否是缺少的
  • ubuntu18.04卸载opencv3.4.16安装opencv4.1.2全教程

    最近因为作YOLOP xff0c 搞车道识别和机场跑道识别 xff0c 对opencv版本有较高要求 xff0c 所以将最开始安装的OpenCV3 4 16卸载 xff0c 重新安装4 1 2版本 参考大佬操作的链接 xff0c 中间有些重
  • labelme2coco

    coding utf 8 import argparse import json import matplotlib pyplot as plt import skimage io as io import cv2 from labelme
  • Gazebo+PX4+gazebo_ros+Mavros+world+固定翼无人机

    相机标定 Gazebo中加入一个双目相机及相机参数设置 参考 参考作者内容
  • 项目环境部署(备注:Jetson NX 使用Tensorrt加速自训练yolov4-tiny模型)

    这里请注意几个主要问题 xff1a 本环境是使用刷机的完全新的环境进行的配置 xff1a onnx的版本protcbuf的版本问题相关的安装顺序的问题 这里默认已经获得了训练好的yolo的模型 xff0c 这里常用的是在darknet框架
  • jetson install open3.4.10

    https programmer group ubuntu 18 04 install opencv3 4 5 opencv contrib html uninstall https blog csdn net ytusdc article
  • catkin_make_workspace

    ERROR1 96 CMake Error at opt ros melodic share cv bridge cmake cv bridgeConfig cmake 113 message Project cv bridge speci
  • VScode SSH 远程连接时一直输入密码的问题

    VScode SSH 远程连接时一直输入密码的问题 通过 vscode 远程连接服务器时出现了连接不上 xff0c 而且一直要循环输入密码的问题 xff0c 可能是因为上次异常退出导致 主要解决思路是删除当前 vscode 远端服务后 xf
  • STM32系统和自定义bootloader的实现和应用

    01 bootloader 简介 bootloader其实就是一段启动程序 xff0c 它在芯片启动的时候最先被执行 xff0c 可以用来做一些硬件的初始化或者用作固件热更新 xff0c 当初始化完成之后跳转到对应的应用程序中去 bootl

随机推荐