メインコンテンツへスキップ

サーボモードフィルター設定の説明

JAKA約5分

サーボモードフィルター設定の説明

はじめに

ユーザーはusersetting設定ファイルのSERVOMOVE内で、パラメータFILTER_TYPEの値を変更することでフィルタータイプを選択できます。

この値は次のように設定できます:

  • 0:フィルターを使用しない;
  • 1:関節空間の一次ローパスフィルターを使用、LPF_1ST;
  • 2:関節空間の三次非線形フィルターを使用、NLF_JOINT;
  • 3:関節空間の多段平均フィルターを使用、MMF_JOINT;
  • 4:デカルト空間の三次非線形フィルターを使用、NLF_CART;
  • 5:デカルト空間の速度予測フィルターを使用、NLF_MMF_COMB。

関節空間のフィルターは関節運動とデカルト運動の両方に有効です。デカルト空間のフィルターはデカルト運動のみに有効です。

呼び出し方法:

  • SDKを介して呼び出す;
  • Pythonスクリプトで実行する。

一次ローパスフィルター(LPF_1ST)

一次ローパスフィルターを使用するには、カットオフ周波数LPF_CUTOFF_FREQを設定するだけです。LPF_CUTOFF_FREQが大きいほど精度が高くなりますが、滑らかさが低下します。LPF_CUTOFF_FREQが小さいほど精度が低くなりますが、滑らかさが向上します。

カットオフ周波数が0.1と0.5の場合のフィルター効果の比較
カットオフ周波数が0.1と0.5の場合のフィルター効果の比較

実機の測定結果によると、LPF_CUTOFF_FREQを0.1に設定すると動きは非常にスムーズですが、精度が悪く、動作が大きく歪み、正確な位置決めができません。パラメータを徐々に大きくすると、確かに精度が向上し、滑らかさが低下し、ぎくしゃく感が強まります。40以上に上げても明確な違いはありません。

したがって、正確な位置決めを特に必要とせず、滑らかさと安定性を重視する場合は、小さいパラメータを使用できます。逆に、精度を重視する場合は、より大きなパラメータを試すことができます。

三次非線形フィルター(NLF_JOINT)

三次非線形フィルターの本質は、最大ジャーク、加速度および速度制限に基づいて目標を追従するオンラインS字曲線プランナーです。

関節空間の三次非線形フィルターを使用する場合、次のパラメータを設定する必要があります:

  • NLF_MAX_VR:関節速度制限、単位 °/s。関節速度制限はフィルタープランニングの速度に関係し、設定値が大きいほど速度が速くなります。

  • NLF_MAX_AR:関節加速度制限、単位 °/s2。

  • NLF_MAX_JR:関節のジャーク制限、単位 °/s³。

デフォルトパラメータ(NLF_MAX_VR=120; NLF_MAX_AR=180; NLF_MAX_JR=720)でのフィルタリング計画では、速度曲線が比較的滑らかになります。下図のように:

ジャーク、加速度、速度の制限値が大きいほど、目標追従能力は高くなりますが、ジャーク制限が大きすぎると速度の振動が発生し、その振幅も増加します。ジャーク制限は2000未満が望ましく、下図のように、ロボットの速度に絶え間ない振動が発生します:

例:

もしパラメータ値が次のようである場合:

  • NLF_MAX_VR=120
  • NLF_MAX_AR=720
  • NLF_MAX_JR=5000

その場合の速度曲線は次の通りです:

実機での測定結果を見ると、このモードを使用した場合、動作過程の精度は全体的にあまり高くありません。パラメータが小さいほど精度は高くなり、パラメータが大きいほど精度は低下しますが、滑らかさは向上します。

三次非線形フィルタは、動作中の軌跡精度を重視しないが、滑らかさを重視する場面に適しています。

多段平均フィルタ(MMF_JOINT)

このタイプのフィルタを使用する場合、設定すべきパラメータは次の通りです:

  • MMF_MAX_BUF:平均フィルタのバッファサイズを示します。フィルタバッファを小さく設定しすぎる(< 3)と、計画の失敗を引き起こす可能性があります。バッファ値も大きすぎる(> 100)のは好ましくありません。制御器に負荷を与え、計画遅延を引き起こし、バッファ値が大きくなるほど遅延時間が長くなります。

  • MMF_KP:位置フィルタ係数

  • MMF_KV:速度フィルタ係数

  • MMF_KA:加速度フィルタ係数

これら3つのフィルタ係数は主要なパラメータであり、位置フィルタ係数KP、速度フィルタ係数KV、加速度フィルタ係数KAを調整することで、平滑化後の指令と元の指令との位置誤差を調整します。

パラメータが正常範囲内のときの速度曲線:

パラメータが正常範囲外のときの速度曲線:

実機での測定結果によれば、各フィルタ係数は負の値にできず、0~1の範囲内で設定する必要があります。そうでない場合、激しい振動、関節の過電流、コントローラの電源断などが発生する可能性があります。

合理的なパラメータ範囲で調整すれば、パラメータ間の効果に大きな差はなく、精度は比較的良好で応答も速いですが、滑らかさが不十分で、始動・停止時の衝撃が大きいという欠点があります。

非線形フィルタ(NLF_CART)(デカルト空間)

このフィルタの実現原理は、最大躍度に基づいて目標を追従するオンラインのS字カーブプランナーであり、servopにのみ適用されます。

このタイプのフィルタを使用する場合、設定すべきパラメータは次の通りです:

  • NLF_MAX_VP: エンドの直線速度制限値(単位:mm/s)。
  • NLF_MAX_AP:エンドの直線加速度制限値(単位:mm/s2)。
  • NLF_MAX_JP:エンドの直線躍度制限値(単位:mm/s3)。
  • NLF_MAX_VR:エンドの姿勢速度制限値(単位:°/s)。
  • NLF_MAX_AR:エンドの姿勢加速度制限値(単位:°/s2)。
  • NLF_MAX_JR:エンドの姿勢躍度制限値(単位:°/s3)。

例:

もしパラメータ値が次のようである場合:

  • NLF_MAX_VP=1000
  • NLF_MAX_AP=500
  • NLF_MAX_JP=800
  • NLF_MAX_VR=120
  • NLF_MAX_AR=180
  • NLF_MAX_JR=720

その場合の速度曲線は次の通りです:

三次非線形フィルタと同様に、速度・加速度・躍度の制限が大きいほど目標追従能力は高くなりますが、過大な制限値は速度変動をより激しくします。躍度は5000以下が望ましいです。

例:

もしパラメータ値が次のようである場合:

  • NLF_MAX_VP=1000
  • NLF_MAX_AP=3500
  • NLF_MAX_JP=5000
  • NLF_MAX_VR=120
  • NLF_MAX_AR=180
  • NLF_MAX_JR=720

その場合の速度曲線は次の通りです:

このモードは積分によって位置を算出するため、累積誤差が存在します。パラメータを大きく設定しすぎると、目標位置の上下で小さな動きを繰り返し、停止できない場合があります。

ユーザーは実際の状況に応じて適切なパラメータを選択する必要があります。

速度予見フィルタ(NLF_MMF_COMB)(デカルト空間)

このタイプのフィルタを使用する場合、設定すべきパラメータは次の通りです:

  • MMF_KP:位置フィルタ係数。この係数を小さくするとフィルタ効果はより滑らかになりますが、位置精度が低下します。係数を大きくすると応答が速く精度も高くなりますが、動作の不安定や振動が発生する可能性があります。特に元データのノイズが大きい場合に顕著です。
  • MMF_MAX_BUF:平均フィルタのバッファサイズを示します。バッファが大きいほど滑らかになりますが、精度損失が大きくなり、計画遅延時間も長くなります。

具体的なパラメータ設定は実際のデータ状況に応じて調整してください。

実機でのフィードバック

実機によるテスト結果から見ると、servojを実行する場合は一次ローパスフィルタが最も良好な効果を示し、servopを実行する場合は速度予見が比較的良い結果を示します。

説明:

緑:わずかな変化

黄色:中程度の変化

ピンク:激しい変化

フィルターパラメータポイント数の変化(元は1352個)軌跡波形の変化
一次ローパスフィルター(LPF)カットオフ周波数(cutoffFreq):0.21377(+25)変化が大きいが、波形は滑らか
カットオフ周波数(cutoffFreq):0.5変化がやや大きく、波形は比較的滑らか
カットオフ周波数(cutoffFreq):0.8変化が大きい
非線形フィルター(NLF)速度上限値(max_vr):21356(+4)非常に大きく、元の波形を失い、軌跡は直線に近づく
加速度上限値(max_ar):2
躍度上限値(max_jr):4
速度上限値(max_vr):101364(+12)非常に大きく、元の波形を失い、軌跡は斜線に近づく
加速度上限値(max_ar):10
躍度上限値(max_jr):20
速度上限値(max_vr):401369(+17)非常に大きく、元の波形を失い、軌跡は元の傾向のみ残る
加速度上限値(max_ar):40
ジャーク上限値(max_jr):80
多段平均フィルタ(MMF)バッファサイズ(max_buff):41371(+19)小さい
位置フィルタ係数(kp):0.25
速度フィルタ係数(kv):0.25
加速度フィルタ係数(ka):0.25
バッファサイズ(max_buff):41367(+15)小さい
位置フィルタ係数(kp):0.5
速度フィルタ係数(kv):0.5
加速度フィルタ係数(ka):0.5
バッファサイズ(max_buff):41357(+5)小さい
位置フィルタ係数(kp):1
速度フィルタ係数(kv):1
加速度フィルタ係数(ka):1
速度先読みフィルタ(speed_foresight)バッファサイズ(max_buff):21353(+1)小さい
位置フィルタ係数(kp):0.5
バッファサイズ(max_buff):4
位置フィルタ係数(kp):1
バッファサイズ(max_buff):61354(+2)
位置フィルタ係数(kp):2
最終更新日: