ブロックを積みながら(191) Scilab/Xcos、Xcosデモ、ハイブリッドオブザーバ

Joseph Halfmoon

制御素人老人がScilab/Xcosのデモを動かしながら「制御」を学ばんと無謀な試みを続けてます。今回は「ハイブリッドな」オブザーバです。ハイブリッド車じゃありませんよ、観測器です。ハイブリッドの意味は連続系を扱えるのだけれども時々ジャンプを入れて離散的な挙動もする、ということみたいです。ほんとか?それでいいのか?

※「ブロックを積みながら」投稿順 index はこちら

※動作確認にはWindows 11の パソコン(64bit)上にインストールしたScilabの以下バージョンを使用しています。

    Scilab 2024.0.0

今回演習のデモ

Scilabのデモ選択ウインドウで以下のところから選択できるデモが今回のターゲットです。HybObserver

開いたフローが以下に。HyblidObserver

前々回の「カルマンフィルタ」回のフローとクリソツなフローであります。ただし、前々回、カルマンフィルタであったブロックがHybrid Observerになっております。この時点でいくつか不審な点これあり。

    1. 観察対象の「System」と観察器の「Hybrid Observer」のSuper Blockが存在するが、背景色がついている上にポートにお名前まで表示されている。これってどうやるの?
    2. 起動しただけなのに左肩にEstimation errortという表示があるけど、どうして?

2の方の理由ははっきり言って不明。RUNすると正常に動作し、error表示も消えます。なにか初期化時に発生した問題が見えているみたいっすけど、今回は踏みつぶしてまかり通ります。いつもだな。

一方、1の方は調べてみました。SuperBlockを右クリックする画面でSuperBlockRightClick

書式>編集と選んでいくと以下のようなウインドウが開きます。BlockLegend

上記のように、SuperBlockに付加するLegendやブロックの背景色などをセットできるウインドウでした。ここを操作すれば黄色の背景に Hybrid Observer などと表示できるみたい。

一方、端子の表示名については、該当のSuperBlockを開いた後で、それぞれの端子ブロックの右クリックメニューから同様なウインドウを開いて設定することで文字列を付加できるみたいです。portName

使いこなせておらんなあ。

Hybrid Observerのスーパーブロック

今回キモとなるのは「Hybrid」Observerの中で使われている以下のブロックです。TCLSSとな。以下helpファイルからブロックの外観の引用っす。TLCSShelp

お惚け老人のザックリした理解であると、左にある入力2つのうち、上の方の一つと右の出力を使っている分には、連続系の状態空間システムであるCLSSと同じ挙動をするようです。しかし、上の赤三角にイベントが到来すると、左の入力の下の方からイベント時の値が取り込まれて状態が上書きされるみたいです。ダラダラと連続で動いていたら、イベント到来で突然値がジャンプすると。

これを使っているスーパーブロックの中身が以下です。

HybObserverSuperBlock一方、連続系で動いている「System」の中身が以下です。

Systemこうしてみると、同じ行列AとBで同じように定義されています。しかし、片やSystemの方にはノイズが載っており、TCLSSブロックの方にはノイズの載っていない値が入力されてます。そのままだとノイズの分だけズレていってしまうじゃありませんか。

シミュレーション結果

以下はシミュレーションのコンテキスト設定です。Context

TCLSSブロックにトリガをかけるイベントは dt 毎に発生する設定なので、3「秒」毎に実際の値(System前後のノイズを含む)値に強制ジャンプする筈。HyblidObserverWave上記のように3、6、9...と3の倍数のところでカタカタ離散的な動作をしてますが、結局落ち着くところに落ち着いている感じデス。データの「現物合わせ」か?現物あわせ、嫌いじゃないケド。

ブロックを積みながら(190) Scilab/Xcos、Xcosデモ、離散カルマンフィルタ へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です