# obscont

オブザーバベース コントローラ

## 呼び出しの手順

    [K]=obscont(P,Kc,Kf)
                [J,r]=obscont(P,Kc,Kf)

## パラメータ

P

  状態空間形式,連続または離散時間の `syslin` リスト (ノミナルプラント)

Kc

  実数行列, (全状態) 制御器ゲイン

Kf

  実数行列, フィルタゲイン

K

  `syslin` リスト (制御器)

J

  `syslin` リスト (拡張制御器)

r

  1x2 行ベクトル

## 説明

`obscont` は 行列`[A,B,C,D]` (`syslin` リスト) を有するノミナルプラント `P` に関連する オブザーバベース コントローラを返す.

全状態制御ゲインは `Kc` であり, フィルタゲインは `Kf` である. これらのゲインは,例えば,極配置法により計算できる.

`A+B*Kc` と `A+Kf*C` は (通常) 安定と仮定される.

`K` は補償器 `K: y->u`の状態空間表現であり, 以下を含んでいる

`xdot = A x + B u, y=C x + D u, zdot= (A + Kf C)z -Kf y +B u, u=Kc z`

`K` は線形システム (`syslin` リスト) であり, その行列は以下のように与えられる: `K=[A+B*Kc+Kf*C+Kf*D*Kc,Kf,-Kc]`.

(負の)フィードバック `K` を有する 閉ループフィードバックシステム `Cl: v ->y` (すなわち, `y = P u, u = v - K y`, または

    xdot = A x + B u,
       y = C x + D u,
    zdot = (A + Kf C) z - Kf y + B u,
       u = v -F z

) は `Cl = P/.(-K)`で指定される.

`Cl` (`spec(cl('A'))` ) の極は `A+B*Kc` および `A+Kf*C`の固有値に配置される.

引数が2つの場合、`obscont`は LFTにより全ての安定化フィードバックをパラメータ表現する (正方)線形システム`K`を返す.

`Q` を `r(2)`x`r(1)`次, すなわち, 入力の数 x `P`の出力の数, の任意の安定な線形システム. 次に,`P`の安定化制御器 `K` は `K=lft(J,r,Q)`で表すことができる. `Q=0`に対応する制御器は `K=J(1:nu,1:ny)` (この `K` は`K=obscont(P,Kc,Kf)`の 戻り値)である. `r` は `size(P)`,すなわち, ベクトル [出力の数, 入力の数];

## 例

    ny=2;nu=3;nx=4;P=ssrand(ny,nu,nx);[A,B,C,D]=abcd(P);
    Kc=-ppol(A,B,[-1,-1,-1,-1]);  //コントローラゲイン
    Kf=-ppol(A',C',[-2,-2,-2,-2]);Kf=Kf';    //オブザーバゲイン
    cl=P/.(-obscont(P,Kc,Kf));spec(cl('A'))   //閉ループ系
    [J,r]=obscont(P,Kc,Kf);
    Q=ssrand(nu,ny,3);Q('A')=Q('A')-(max(real(spec(Q('A'))))+0.5)*eye(Q('A'))
    //Q is a stable parameter
    K=lft(J,r,Q);
    spec(h_cl(P,K))  // 閉ループ A 行列 (要安定);

## 参照

- ppol
- lqg
- lqr
- lqe
- h_inf
- lft
- syslin
- feedback
- observer