MATLAB Answers

バタワースフィルタを​併用した1回微分にお​ける領域エラーについ​て

8 views (last 30 days)
Takahiro OHASHI
Takahiro OHASHI on 7 Nov 2019
Commented: Takahiro OHASHI on 10 Nov 2019
私はMatlab Simulinkを用いてロボットの動作シミュレーションを行っているのですが、微分器の影響でエラーが出てしまい困っています。
ロボットの運動方程式、インピーダンス制御則は式(1)(2)のように表されます。
ただし、ロボットの慣性Mr・望みの慣性Mdは、手先位置rから算出されるqの変数を含みます。
・・・(1)
・・・(2)
現状は式(2)において、位置を1回微分して速度を算出する際に、Simulinkのブロックの1つであるZero-Poleを用いて微分を行っています。上記の図のように、Zero-Pole内では1回微分する際に2次のパターワースフィルタ(カットオフ周波数ωcは20 [Hz])を用いてプロバーになるようにしています。それを用いると以下のようなエラーが出ます。
% 「領域エラーです。実数 x から複素数の結果を計算するには、'asin(complex(x))' を使用してください。」
ちなみにZero-Poleを用いずに、加速度の積分により速度を算出する場合はエラーが出ずにコンパイルは正常に完了します。
また、Zero-Poleを用いてもエラーが出ずコンパイルが完了した条件は次の2つになります。
・位置の2回微分で加速度を算出する場合
・PID制御も用いているのですが、そこでのZero-Poleによる微分を用いた場合
原因がわかる方はおられますでしょうか?
現状は実機実験とほぼ同様のシミュレーションを作成したいため、Zero-Poleを用いて微分は行う必要があります。

  4 Comments

Show 1 older comment
Takahiro OHASHI
Takahiro OHASHI on 7 Nov 2019
返信ありがとうございます。
はい、SimulinkのZoro-Poleブロックです。
私の理解ではZero-Poleとバタワースフィルタは別々ではなく、以下の写真のようにZero-Poleの中で1回微分と2次バタワースフィルタを構成しているという認識です。
Zoro_Pole_2.png
Toshinobu Shintai
Toshinobu Shintai on 9 Nov 2019
再度確認なのですが、Zero-Poleブロックの設定はどのようになっているか教えていただくことはできますでしょうか。
私のMATLABでは添付画像のように設定項目がありまして、バターワースと微分を構成する場合は、きちんと伝達関数が構成されるように極とゼロ点とゲインを設定しなければならないようになっています。
Takahiro OHASHI
Takahiro OHASHI on 9 Nov 2019
ご丁寧にありがとうございます。
パラメータの設定は以下のようになっています。
・零点    :DiffLPF(1).Zeros = 0
・極     :DiffLPF(1).Poles = zeros(1,2)
・ゲイン   :DiffLPF(1).Gain = (2*pi*omega_c)^n
        ※omega_c = 20 [Hz](カットオフ周波数)
・絶対許容誤差:auto
文字だけになりますが、パラメータが表記されている画像も添付しておきます。

Sign in to comment.

Answers (1)

Toshinobu Shintai
Toshinobu Shintai on 10 Nov 2019
ひとまず、Zero-Poleブロックの使い方を間違えていることが分かりました。ただ、領域エラーが発生している理由はよく分かりません。
Zero-Poleブロックの「極」「零点」の項目には、極と零点の値を並べたベクトルを指定します。よってOHASHI様の指定の仕方だと
(s - 0) * (2*pi*omega_c)^n
----------------------------------------
(s - 0) * (s - 0)
という伝達関数が出来上がります。これはただの積分になっています。
2次バターワースかつ微分をZero-Poleブロックで表現するには、私の画像で示した指定方法を取らなければなりません。

  3 Comments

Takahiro OHASHI
Takahiro OHASHI on 10 Nov 2019
Zero-Poleブロックの指摘、ありがとうございます。
Shintaiさんの画像というのは2つ目のコメントに添付してくださった画像ということで合っていますしょうか?一度その画像の指定方法で取り組んでみようと思います。
Toshinobu Shintai
Toshinobu Shintai on 10 Nov 2019
はい。二つ目のコメントに添付した画像のことです。
Takahiro OHASHI
Takahiro OHASHI on 10 Nov 2019
Zero-Poleブロックの中身が想定した通りになっていることを、周波数応答から確認できました。改めてありがとうございます。
領域エラーについては引き続き原因を探っていこうと思います。

Sign in to comment.

Sign in to answer this question.