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

9 Ansichten (letzte 30 Tage)
Takahiro OHASHI
Takahiro OHASHI am 7 Nov. 2019
Kommentiert: Takahiro OHASHI am 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 Kommentare
Toshinobu Shintai
Toshinobu Shintai am 9 Nov. 2019
再度確認なのですが、Zero-Poleブロックの設定はどのようになっているか教えていただくことはできますでしょうか。
私のMATLABでは添付画像のように設定項目がありまして、バターワースと微分を構成する場合は、きちんと伝達関数が構成されるように極とゼロ点とゲインを設定しなければならないようになっています。
Takahiro OHASHI
Takahiro OHASHI am 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
文字だけになりますが、パラメータが表記されている画像も添付しておきます。

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Toshinobu Shintai
Toshinobu Shintai am 10 Nov. 2019
ひとまず、Zero-Poleブロックの使い方を間違えていることが分かりました。ただ、領域エラーが発生している理由はよく分かりません。
Zero-Poleブロックの「極」「零点」の項目には、極と零点の値を並べたベクトルを指定します。よってOHASHI様の指定の仕方だと
(s - 0) * (2*pi*omega_c)^n
----------------------------------------
(s - 0) * (s - 0)
という伝達関数が出来上がります。これはただの積分になっています。
2次バターワースかつ微分をZero-Poleブロックで表現するには、私の画像で示した指定方法を取らなければなりません。
  3 Kommentare
Toshinobu Shintai
Toshinobu Shintai am 10 Nov. 2019
はい。二つ目のコメントに添付した画像のことです。
Takahiro OHASHI
Takahiro OHASHI am 10 Nov. 2019
Zero-Poleブロックの中身が想定した通りになっていることを、周波数応答から確認できました。改めてありがとうございます。
領域エラーについては引き続き原因を探っていこうと思います。

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu S-Parameters and Linear Components finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!