重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

MATLAB の System Identification Toolbox を使ったシステム同定について質問します。
私の勤務先では時々これを使って油圧バルブや油圧ポンプの応答性を測定・評価したりします。
主に私の上司からの指示で測定し、我々が測定して提出したデータを上司が Toolbox のコマンドを使ってデータ解析してボード線図などを描き出します。私はコマンドの使い方などには納得しているのですが、上司からのデータ収集方法の指示に疑問を持っています。
これらの油圧機器はコントローラー側から出力された (矩形波) 電圧指令を途中のドライバーで PWM 指令に変換した電流指令により動きます。その応答は Spool 位置センサーや斜板角センサーなどから出力される電圧を日置電機 (株) 製のメモリーハイコーダー
https://www.hioki.co.jp/jp/products/list/?catego …
で収集して記録します。その際の上司の指示は、コントローラー側の D/A 変換出力直後の電圧データと Spool 位置センサーや斜板角センサーから帰ってきた応答の電圧データを一切のフィルタリング無しで同時に記録して提出するようにというのです。・・・・・確かにこのようにして得られたデータを System Identification Toolbox の arx コマンドなどで処理すればそれなりの答は出てきますが、コントローラー側の D/A 変換出力直後の電圧データを使うことが正しいのかどうか ?、私は疑問に思っています。
例えば足立修一著「システム同定の基礎」(東京電機大学出版) の 99 ページによれば、ARXモデルの入力データ u(k) には雑音信号が全く含まれていないのに対して、コントローラー側の D/A 変換出力直後の電圧データには必ず雑音信号が含まれています。応答データには当然雑音が含まれるのですが、入力データとして雑音の含まれたデータを使ってシステム同定した結果を正しいと考えていいものかどうか (上司によれば「正しい」とのことですが) どなたか教えていただけないでしょうか ?。
以上、よろしくお願いします。

質問者からの補足コメント

  • 単刀直入でわかりやすい回答、有難うございます。ついでですから、もう少し詳しく教えてもらえませんか ?。

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/01/13 20:42
  • 「入力信号とノイズの間に相関関係がありませんから」について arx コマンド自体への入力信号が既にノイズを含んでいてオリジナルの正確な入力がわからないのに、どうやってそれらの間の相関関係がわかるのですか ?。オリジナルの入力がプログラムで発生させた矩形波であればその形を推定するのは簡単ですが、私の勤務先では別の試運転として Joystick と油圧機器の間の応答を調べることもあります。その場合 Joystick は同僚が手動でなるべく一定の周期と振幅になるように Joystick を振りながら油圧バルブなどを動かし、その時の D/A 変換出力と Spool 位置センサー出力を同時に記録しています。その場合オリジナル信号の形は正確にはわからない筈だと思うのですが、その際の arx コマンドに渡す入力信号の中にどれだけのノイズが含まれているというのはどうやってわかるのですか ?。

    No.2の回答に寄せられた補足コメントです。 補足日時:2019/01/13 23:38
  • mabuterol 様、回答をお願いします。

      補足日時:2019/01/18 22:06

A 回答 (5件)

> 「ノイズに関係ない成分が十分に支配的」であると仮定して解析しているのですか ?



違います。
excel の近似曲線の機能と同じで、
  ① プラス側のノイズや誤差と、マイナス側のノイズや誤差が、同等に分布している。
  ② ノイズ周波数が十分に高周波なので、入力信号のノイズに対して、出力は追従できない。
という時に、入出力間の相関を高くしようと同定したら、自然にノイズ信号は無視できる、という事です。


> 入力信号のノイズ成分が十分に無視できると思えない場合は、Sys Id Toolbox を使ってはいけないということでしょうね。

その通りです。
計測時に最も発生しやすいのは、ノイズではなくて、オフセット誤差ですね。

またノイズ成分が中途半端に低周波の場合は、出力がノイズに追従してしまいますから、これも何らかの方法でノイズを除去しないといけません。

ノイズ成分が十分に低周波であれば、出力はノイズに追従しますが
  ① ノイズ混みの入力波形に対して、出力波形を同定するならば問題なし
  ② ノイズを無視した入力波形に対して、出力波形を同定したらダメ
です。


> 矩形波の入力信号であればノイズを全く含まないコントローラー内部の信号が既知なので、その入力信号を SysId Toolbox に渡したほうが (D/A 変換の特性まで含まれるかもしれませんが) 精度的に良いような気がします。

上記②に該当する危険があるのでダメです。
出力 y(t) となるような、制御対象 P(s) への入力は、あくまで r(t) + d(t) であるから、です。

ただしノイズ成分を計測するという事は、計測誤差が含まれてくるので、d(t) を無視する事による誤差と、計測誤差と、どちらの影響が大きいかという trade-off になります。
    • good
    • 0
この回答へのお礼

よくわかりました。何度も回答、有難うございました。

お礼日時:2019/01/20 08:39

> 普通の方法でプログラミングすれば入力信号のノイズは無視されるのでしょうか ?



私は『システム同定の基礎』を読んだ事が無いので、必要であれば画像を貼り付けて頂きたいですが、現時点での回答としては、EXCEL の近似曲線の機能を想像してみて下さい。

x = 0, 1, 2,,, 10 なる 11 個の入力データに対して、y = x なるデータを用意して、縦軸 y 横軸 x の散布図グラフを描き、EXCEL の線形近似を使ってみます。近似直線の数式と R^2 を表示させると、当然ですが y = x かつ R^2 =1 です。

次に u = x + =A1 + (RAND() - 0.5) なる式を使って、入力に ±0.5 の振幅のランダムな誤差を重ねてみましょう。縦軸 y, 横軸 u のグラフを描いて線形近似した数式は、誤差に引っ張られてしまいますが、y = x に近い値になるし、11 点しか無い割に R^2 = 1 に近い数字が維持できます。数値は rand 関数の御機嫌次第ですが、私の場合は y = 0.9986 u + 0.0395, R^2 = 0.99 でした。ちなみに x を 0, 1,,, 100 までの 101 点のデータに増やした場合、y = 1.001 u - 0.0346, R^2 = 0.9996 でした。

つまり出力を、ノイズに関係ない成分と、ノイズに関係する成分との重ね合わせと考えた時に、ノイズに関係ない成分が十分に支配的であれば、その特徴を抽出して十分な精度で同定できてしまいます。



もし古典制御を御存知であれば、フィードバック無しの open loop 制御系において
x(s) + d(s) ⇒ P(s) ⇒ y(s)
なる簡単な制御ブロックを考えた時に、d(s) が y(s) に、どう影響するか、という事です。

ノイズを除去する手段として、計測後のデータ解析時に後処理でフィルターを使う方法は一般的ではありますが、油圧機器を用いた試験の場合、ハードウェア応答特性 P(s) が持つフィルターによって勝手にノイズを除去してくれているのだから、わざわざ後処理でフィルターを使う必要が無いのです。

むしろ後処理でフィルターを使ってしまうと、ノイズ成分 d(s) が消えますが、r(s) にゲイン低下と位相遅れを発生させてしまうので、フィルター時定数によっては同定結果に悪い影響を与えます。

だから如何なる場合にもノイズを無視して良いわけでなくて、あくまで計測対象 P(s) の応答特性(ついでに計測器の伝達関数)に対して、ノイズ成分が十分に無視できると分かっている場合には、無視して構いません。きちんと設計された試験設備で油圧機器を同定試験するなら、ノイズは無視できると思いますが、どうでしょうか?
    • good
    • 0
この回答へのお礼

システムの入力信号と出力信号の測定データを System Identification Toolbox のコマンドに渡す時に、ソフトウェア側ではその入力信号の「ノイズに関係ない成分が十分に支配的」であると仮定して解析しているのですか ?。入力信号のノイズ成分が十分に無視できると思えない場合は、Sys Id Toolbox を使ってはいけないということでしょうね。矩形波の入力信号であればノイズを全く含まないコントローラー内部の信号が既知なので、その入力信号を SysId Toolbox に渡したほうが (D/A 変換の特性まで含まれるかもしれませんが) 精度的に良いような気がします。(但し Joystick を手で振る場合はその方法が使えませんけども。)

お礼日時:2019/01/19 22:11

御質問の件、なるほど、ごもっともな良い質問だと思います。



あなたの学歴が分からず、御存知かどうか分かりませんが、例えばローパスフィルタ (LPF) ってありますよね。伝達関数で 1 / (1 + τ s) と表現されるようなやつです。

この LPF に正弦波を入力した時、遮断周波数より高周波信号はエネルギーが半分以下に減衰した状態で出力され、遮断周波数より低周波信号は、エネルギーを半分以上キープしたまま出力されますね。ついでに位相の遅れも生じます。つまり入力信号に加算されているノイズ成分が遮断周波数より高周波であれば、出力波形としては現れて来ないわけです。

試験対象の油圧機器の周波数特性(ボード線図)を描いた事はありますか? 理想的には、正確な周波数の正弦波入力に対して、出力信号を計測します。しかし現在、大抵の計測器や、データ解析ソフトには Fast Fourier Transform 機能がついていて、例えばジョイスティックを手で適当に、振幅を変えながら操作するような、適当な入力信号でも FFT のおかげで、それなりまともなボード線図が描けます。

油圧制御の多くの論文では、制御対象ハードウェアの周波数特性を2次遅れ 1 / (1 + τ1 s)(1 + τ2 s)で近似しています。τ1 や τ2 から決まる遮断周波数より高周波成分が、入力信号に含まれても、出力には影響しません。影響がほとんど無いので、自然に無視されます。


ここまで御質問に回答したつもりですが、ご理解いただけたでしょうか?
時間領域で解析すると、入力のノイズ信号が気になってしまいますが
① 周波数領域に変換して解析
② ハードウェアの持つ2次遅れの特性により、高周波のノイズ成分は影響しなくなる
という事になります。



ところでポンプや油圧バルブの応答試験、私も計測した事がありますが、難しいですよね。

先ほどからボード線図なんて教科書どおりの事を書いていますけれど、ポンプもバルブも、ソレノイドで直接に駆動できるなら良いですが、間にパイロット圧が介入するようだと、非線形の特性を持ってしまいます。行きと帰りで特性は違うし、ニュートラル付近と、ストロークエンド付近で特性は違うし、教科書どおりにいかない事ばかりで、大変ですよねぇ。同じ業界の人間として、陰ながら応援しています。

回答が分かりにくかったり、あるいは私が間違っている事もあると思いますので、引き続き議論が必要の際は、ご遠慮なく。
    • good
    • 0
この回答へのお礼

回答、有難うございます。私は理学部の物理学科卒で大学を卒業したときには制御理論の「せ」の字も知りませんでしたが、20代のときに一通り勉強してボード線図や現代制御、FFTの数式なども理解できます。ロボット制御や画像処理プログラミングも C/C++ 言語でやったことがあるので正規化相関のパターンマッチングなどもわかります。勤務先の Simulink プログラミングでは 2 次のフィルターを使って圧力データのノイズを除去したり不完全微分を使って急激な変化を検出したりしています。
測定データの解析結果はいつも周波数領域で見ていますが、物理現象として自然にノイズが無視されるというのとソフトウェア内部でノイズが無視されるというのはわけが違うような気がします。例えば画像処理ソフトや Robot Vision の Calibration ソフトなどではノイズを除去するために特別なテクニックが必要だったり、ロボット単体の Calibration でも特異値分解などを使って誤差を解析している論文もあります。下手なプログラミングではノイズに引っ張られて異常な結果が出たりするので、それを防止する方法が必要になるのです。
MATLAB の System Identification Toolbox がどのようにプログラミングされているのかはわかりませんが、前記「システム同定の基礎」にはパラメーターの計算方法が書いてありますよね。それを私が真面目に計算したことはまだ一度も無いのですが、それらを普通の方法でプログラミングすれば入力信号のノイズは無視されるのでしょうか ?。それとも System Identification Toolbox のコマンド群では入力信号のいかなるノイズでもうまく除去できる特別な白色化フィルターなどが組み込まれているのでしょうか ?。

お礼日時:2019/01/19 11:24

もう少し詳しくとおっしゃっても、何を詳しく書けば良いのでしょう?

この回答への補足あり
    • good
    • 0

この分野、私の専門なので、めちゃくちゃ語れるけれど、気持ちを抑えて回答だけ。



ノイズなのであれば、入力信号とノイズの間に相関関係がありませんから、まともなシステム同定ツールであれば無視してくれますよ。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!