当前位置: 首页 > news >正文

状态反馈镇定之非线性系统反馈线性化

目录

1.反馈镇定补充知识

1.1何谓反馈线性化?

1.2平衡点的镇定

1.3什么样的系统才可反馈线性化?

1.3.1 标准型

 1.3.2 控制器形

例子①

例子②

1.3.3 观测器形

2. 反馈线性化

2.1仿真实例1

2.1仿真实例2


1.反馈镇定补充知识

1.1何谓反馈线性化?

对非线性系统施加状态反馈使所得到的闭环系统成为线性的,或若闭环系统仍为非线性,则仍可找到一局部坐标系(j,U)或即定义在U上的非异状态变换z=j(x)使非线性系统在新坐标下具有线性控制系统的形式。如果变换j是全局的、亦即U=Rn,则称为全局反馈线性化,否则只能称局部反馈线性化。

1.2平衡点的镇定

对于系统的任一平衡点Xss,都可以通过变量替换X-Xss转换成平衡点在原点的问题,所以对于李雅普诺夫稳定性问题或者反馈镇定问题都可以标准化为原点的镇定问题。即:

1.3什么样的系统才可反馈线性化?

有三种:存在相对阶的标准型控制器形

1.3.1 标准型

假定存在如下的状态空间系统

 存在变量替换z = T(x),将上述系统转化为标准型:

η'称为内部动态系统是不可观的,ξ'和y称为外部动态系统,当ξ = 0,则称f(η,0)为动态方程f(η,ξ)的的零动态;此外如果系统在所研究的区域存在渐进稳定的平衡点,则称系统在这个区域是最小相位的;如果上述的替换变量z = T(x)使的f(η=0,ξ=0)是系统的一个平衡点,则此时系统最小相位等价于零动态,所以判断系统是否为最小相位,可以通过给出零动态方程时系统是否存在渐进平衡点。

如下:

 1.3.2 控制器形

显然存在

使得上述系统转化为可控线性系统:

 所以任何能通过转化写成控制器形的系统都是可以反馈线性化的

例子①

 考虑有如下的系统:x' = f+g*u

 我们首先要证明系统是对合的:

计算其lie括号运算:

 可见,其秩可以是2,所以上述系统是对合的。

现在寻找h(x)变量,则存在z = T(x)将上述系统替换为控制器形,T(x)为:

其中:col表column即列的意思;Lf表lie/李导数运算:Lfh(x) = f*h'。

h满足如下条件:

由于 

​​​​​​​所以h(x)与x2是独立的,即h(x)中不含x2。

所以选择h(x) = x1,则Lfh(x) = asinx2,所以得到坐标变换z = T(x)=[x1;asinx2].

可见,线性化并不是唯一的

例子②

考虑如下的4维机械手臂模型:

其lie括号运算为:

​​​​​​​ 即

 可见是满秩的,所该机械手臂系统是对合的。

寻找转化为控制器形的h(x)变量,其满足以下条件:

这里和上面的例子一样,读者感兴趣自己推导,所以最终取h(x) = x1,所以坐标变化向量z = T(x)为:

1.3.3 观测器形

非线性系统是可观的。

2. 反馈线性化

对于非线性系统的镇定可以通过先将其线性化,再进行反馈设计将其镇定。假设有如下的一般形式非线性系统:

x = f(x,u)

其中,f(0,0) = 0。

线性化公式:

 假设系统是可镇定的,则可以按照线性系统状态反馈设计u = -k*x使得系统镇定在平衡点。 

2.1仿真实例1

假设有如下的倒立摆系统:

 通过上述得线性化公式在平衡点原点进行线性化,有:

显然系统是可控的,此时我们假设需要将角度停留在delta,所以前馈控制uss= sinθ/c,并取反馈控制uδ = -K*x = -k1*x1-k2*x2,其中k1 > -cosδ/c,k2 > -b/c(即保证A-B*K是Hurwitz矩阵),即总控制律u = uss+uδ。仿真结果如下:

可以看到x1能够在有限时间内停留在δ,并且x2能够趋于0,即系统能够通过反馈镇定在平衡点镇定。

注:由于线性系统的理论很成熟,所非线性系统处理可以这样通过线性化的方法近似处理,即在操作点将其线性化(可以理解成平衡点),然后再分析、研究得到线性模型。但是这样的线性化本质上是近似的,所以并不能充分反应非线性系统的全部动态特性。

2.1仿真实例2

未完待续......

如果有帮助,麻烦帮忙点个赞是我最大的分享动力,非常感谢!

注:仅为便利自己学习,错误在所难免,如有侵权,请联系删除,有兴趣的学者可以参考学习交流,谢谢!

参考资料:

《Nonlinear control---Hassan K. Khalil》

相关文章:

  • 【408计算机组成原理】—加减运算和溢出判断(八)
  • vue3 setup的四点注意
  • Python 输入与输出
  • 基于JAVA校园租赁系统的设计与实现计算机毕业设计源码+系统+数据库+lw文档+部署
  • 【Linux初阶】从0到1带你用云服务器搭建Linux环境
  • Kubernetes技术与架构-10
  • 基于微信小程序云开(统计学生信息并导出excel)3.0版
  • 【JAVAEE框架】浅谈 AOP 及代码实现
  • React获取DOM和获取组件实例的方式
  • [Spark、hadoop]spark Streaming的核心DStream
  • 【Vue】父子组件通信
  • API接口开发其实特简单,Python Flask Web 框架教程来了
  • SpringMVC03之拦截器和JSR303
  • 索引失效案例
  • 机器学习笔记 - Albumentations库实现的图像增强功能一览
  • 【刷算法】从上往下打印二叉树
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • echarts花样作死的坑
  • Hibernate最全面试题
  • Java方法详解
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • nginx 配置多 域名 + 多 https
  • vagrant 添加本地 box 安装 laravel homestead
  • vue脚手架vue-cli
  • 浏览器缓存机制分析
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 使用SAX解析XML
  • 小程序开发中的那些坑
  • 正则与JS中的正则
  • 最简单的无缝轮播
  • 做一名精致的JavaScripter 01:JavaScript简介
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • AI算硅基生命吗,为什么?
  • HanLP分词命名实体提取详解
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #if 1...#endif
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (黑马C++)L06 重载与继承
  • (区间dp) (经典例题) 石子合并
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET开源项目介绍及资源推荐:数据持久层
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • .pop ----remove 删除
  • @软考考生,这份软考高分攻略你须知道
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [ai笔记4] 将AI工具场景化,应用于生活和工作
  • [ASP]青辰网络考试管理系统NES X3.5
  • [BT]BUUCTF刷题第8天(3.26)
  • [BZOJ 2142]礼物(扩展Lucas定理)