怎样求控制器的增益系数k?
步骤:
1. \dot x =A*x + B*u is a state space model, with A and B are known. Now we want to locate the poles p at the desired location, so need the help with designing a controller: u= - k*x。How to choose the gain k?
Answer: Substituting u= - k*x, then \dot = (A-B*K)x, use place function in Matlab to input (A,B,p), obtaining k from the output.
About the introduction of place function, I attach a paragraph from Wikipedia here:
Description
Given the single- or multi-input system
˙x=Ax+Bu
and a vector
p
of desired self-conjugate closed-loop pole locations,place
computes a gain matrixK
such that the state feedback u = –Kx places the closed-loop poles at the locationsp
. In other words, the eigenvalues of A – BK match the entries ofp
(up to the ordering).
K = place(A,B,p)
places the desired closed-loop polesp
by computing a state-feedback gain matrixK
. All the inputs of the plant are assumed to be control inputs. The length ofp
must match the row size ofA
.place
works for multi-input systems and is based on the algorithm from [1]. This algorithm uses the extra degrees of freedom to find a solution that minimizes the sensitivity of the closed-loop poles to perturbations in A or B.
[K,prec,message] = place(A,B,p)
returnsprec
, an estimate of how closely the eigenvalues of A – BK match the specified locationsp
(prec
measures the number of accurate decimal digits in the actual closed-loop poles). If some nonzero closed-loop pole is more than 10% off from the desired location,message
contains a warning message.You can also use
place
for estimator gain selection by transposing theA
matrix and substitutingC'
forB
.l = place(A',C',p).'
Examples
Pole Placement Design
Consider a state-space system
(a,b,c,d)
with two inputs, three outputs, and three states. You can compute the feedback gain matrix needed to place the closed-loop poles atp = [-1 -1.23 -5.0]
byp = [-1 -1.23 -5.0]; K = place(a,b,p)
2. How to design the desired poles? Answer: Choose a suitable value of \omega (bandwith) and \zeta (damping) of the controlling system:
Then use the roots function to input the \omega and \zeta, obtaining the roots (the poles) as the output.
About the introduction of roots function, I attach a paragraph from Wikipedia here:
The
roots
function calculates the roots of a single-variable polynomial represented by a vector of coefficients.For example, create a vector to represent the polynomial x2−x−6, then calculate the roots.
p = [1 -1 -6]; r = roots(p)
r = 3 -2
Then with poles and system matrix (A, B), we can calculate the gain k.
最新文章
- elasticsearch高级配置一 ---- 分片分布规则设置
- python的复制,深拷贝和浅拷贝的区别
- 活学活用,webapi HTTPBasicAuthorize搭建小型云应用的实践
- WIN7设置wifi热点的方法
- C语言sprintf与sscanf函数[总结]
- 用sinopia搭建npm私服
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.5.9
- 坑爹CF April Fools Day Contest题解
- Linux route命令详解和使用示例(查看和操作IP路由表)
- CFUUIDRef和CFStringRef-生成唯一标识符
- sudo gedit xx warning
- 算法导论--python--插入排序
- USB 各型插座插头引脚分布
- Eclipse 里的 Classpath Variables M2_REPO 无法修改(maven)
- Gora_百度百科
- PHP开发API接口及使用
- C#数组与集合
- c++运行时函数
- Contest2156 - 2019-3-7 高一noip基础知识点 测试2 题解版
- htnl 定位