3

目的

現在、を使用して状態空間モデルのファミリに基づいて不確実なシステムを作成しようとしていますucoverこのために、私はドキュメント「Modeling a Family of Responses as an Uncertain System」に基づいてスクリプトを作成しています。これは、単一入力単一出力システム (SISO) に基づいて不確実なシステムを作成する手法を明示的に示していますが、これは、MIMO システムにも十分に使用できます。

技術的な詳細

具体的には、ucoverMIMO システムをサポートしていることがドキュメントに記載されています。

USYS = ucover(PARRAY,PNOM,ORD1,ORD2,UTYPE) returns an uncertain 
  system USYS with nominal value PNOM and whose range of behaviors 
  includes all LTI responses in the LTI array PARRAY. PNOM and PARRAY 
  can be SS, TF, ZPK, or FRD models. USYS is of class UFRD if PNOM
  is an FRD model and of class USS otherwise.

ORD1 and ORD2 specify the order (number of states) of each diagonal  
  entry of W1 and W2. If PNOM has NU inputs and NY outputs, ORD1 and ORD2
  should be vectors of length:  

UTYPE           ORD1          ORD2  
InputMult       NU-by-1       NU-by-1  
OutputMult      NY-by-1       NY-by-1  
Additive        NY-by-1       NU-by-1  

私の場合、2 つの入力と 2 つの出力の両方を使用しているため、ORD1 と ORD2 の両方を 2 x 1 にする必要があります。ソート済み)。

試み

SISO の例に基づいて、MIMO の例を作成しようとしました。これを以下に示します。

noInputs=2;
noOutputs=2;
noOfStates=4;

Anom=rand(noOfStates,noOfStates);
Bnom=rand(noOfStates,noInputs);
Cnom=rand(noOutputs,noOfStates);
Dnom=rand(noOutputs,noInputs);
Pnom=ss(Anom, Bnom, Cnom, Dnom);


p1 = Pnom*tf(1,[.06 1]);              % extra lag
p2 = Pnom*tf([-.02 1],[.02 1]);       % time delay
p3 = Pnom*tf(50^2,[1 2*.1*50 50^2]);

Parray = stack(1,p1,p2,p3);
Parrayg = frd(Parray,logspace(-1,3,60));
[P,Info] = ucover(Parrayg,Pnom,[8 8]',[8 8]','InputMult');
Wt = Info.W1;
bodemag((Pnom-Parray)/Pnom,'b--',Wt,'r'); grid
title('Relative Gaps vs. Magnitude of Wt')

問題

ドキュメンテーションの画像とは異なり、私の不確実なモデル (ボード線図を通した場合) はリード対角線上の応答のみを示します。私が何を意味するかについては、スクリーンショットを参照してください。

ここに画像の説明を入力

青が個々のモデル、赤が不確実なモデルです。

質問

すべての入力と出力の間の応答を正しくカバーする MIMO 状態空間モデルのファミリに基づいて、不確実なシステムを作成するにはどうすればよいですか?

4

3 に答える 3

0

[8,8]'不確実性順序構造体として使用する場合ord1,ord2、matlab は不確実性ブロックにそれぞれ 2 つの対角ブロックを持たせようとします。

ただし、matlab は対角重み付け関数のみをサポートし (非凸検索に関するいくつかの複雑さのため)、プロットしているのは、2x2 フル ブロック LTI 動的不確実性を乗算する対角重み付けです。W1 は行に影響し、W2 は不確実性の列に影響します。

したがって、その不確実性に重みを掛けたサンプルをチェックしてから、プラントをチェックする必要があります。次に、それを不確実なモデル スタックと比較できます。非対角エントリが実質的にゼロ (<1e-10) であるため、ほとんど分離されていることに注意してください。しかし、W1、W2 探索は H 無限大ノルムを探すため、ボード線図の各ブロックで完全なカバーを見ることはできません。必要な最小不確実性量の行/列を結合します (ヘルプ ファイルの例を参照してください)。そのため、デモでは重みごとに 1 つのプロットが表示されます。

各ブロックに個別に影響する各不確実性をモデル化する場合は、不確実性が対角線上の 4 つの 1x1(スカラー) LTI 動的不確実性になるように、新しい拡張 LFT を形成する必要があります。その場合、ord1 と ord2 に 4 つのエントリを持つことができます。

于 2015-05-28T19:36:51.783 に答える
0

離散時間または連続時間の不確実なシステムを作成するには、ussと関連付けて使用できますureal

簡単な例

不確実なプロペラ半径を定義する

% Propeller radius (m)
rp = ureal('rp',13.4e-2,'Range',[0.08 0.16]);

不確実な連続時間システムを定義する

tenzo_unc = uss(A,Bw,Clocal,D,'statename',states,'inputname',inputs,'outputname',outputsLocal);

ステップ応答をシミュレートします。

N = 5;
% Prende alcuni campioni del sistema incerto e calcola bound su incertezze
for i=1:1:N
sys{i} = usample(tenzo_unc);
step(sys{i})
hold on
cprintf('text','.');
end

完全な例

LQR を使用したクワッドコプターの不確実な線形化モデル制御。コードはこちらから入手できます

ステップ応答

ここに画像の説明を入力

閉ループ ステップ応答

ここに画像の説明を入力

    <script src="https://gist.github.com/GiovanniBalestrieri/f90a20780eb2496e730c8b74cf49dd0f.js"></script>

注: ユーティリティ cprintf がない場合は、このスクリプトをフォルダーに含めて使用してください。

于 2017-03-24T16:41:31.943 に答える