ジャイロ演算周波数とPIDループ演算周波数の設定(Betaflight)【ドローン自作講座】

今回は基本設定タブ内の各項目について教えてください。

基本設定タブには設定項目が沢山あるなあ・・・一度に全部話すと混乱してしまうから、まず「ジャイロ演算周波数とPIDループ演算周波数の設定」について解説しよう!それほど難しくはないので、ひとつひとつ順番に説明していくね。

はい、よろしくお願いします!!

ジャイロ演算周波数とPIDループ演算周波数の設定

コンフィグレーターの画面左側タブ列に基本設定という項目があります。クリックすると基本設定画面が表示されます。左上にドローンの簡略図面が表示され、左右2列に設定項目が並んでいると思います。

ドローンの簡略図の少し下に、ジャイロ演算周波数、PIDループ演算周波数という項目あるます。今回の記事では、この2つについて解説します。

ジャイロ演算周波数

ジャイロ演算周波数の項目は、どの位の頻度でジャイロセンサーが機体姿勢を読み取るかという設定です。具体的には、ジャイロセンサーのサンプリング周波数を何kHzにするかを設定します。

サンプリング周波数は数値が大きくなるほどジャイロセンサーによる機体姿勢読み取り頻度が増し、より精緻な制御が出来るようになります。1000μs(マイクロセカンド)の値を基準に、4kHzなら250μs毎に、8kHzであれば125μs毎の頻度で制御を行います。サンプリング周波数の考え方については、「フライトコントローラーとは」でも説明しています。よろしければご確認ください。

サンプリング周波数の上限値は、フライトコントローラーに搭載されているジャイロセンサーにより異なります。周波数を大きくするほど機体姿勢の読み取り頻度が増します。MPU6000というジャイロセンサーなら上限を8kHzまで設定できます。ISM20608なら32kHまで設定できます。

フライトコントローラーに搭載されているジャイロセンサーのチップを読み取り、センサー毎の演算周波数を自動的にチェックすることがBetaflightにはできません。そのため、設定周波数値を決める際は、CLIコマンドラインで[status]コマンドを使いジャイロセンサーの種別を確認します。ジャイロセンサーの種別がわかれば、それに応じて演算周波数の上限がわかります。

ただし、単にジャイロセンサーのスペックから判断するだけではなく、実際にドローンを飛ばしてみて修正しなければならない時もあります。というのも、ICM20608のジャイロセンサーが使われていても、32kHzの設定では負荷がかかりすぎて飛行に支障が出ることがあるからです。そうした場合は、8kHzに変更してみるなどの調整を行います。

ちなみに、Betaflightのバージョン4.0以降を使う場合は32kHzの設定ができません。32kHzに設定するとノイズによる副作用が大きいからという理由です。バージョン4より以前のベータフライトをお使いの場合で、32kHzに設定する際はジャイロへの過負荷にご注意ください。

  • CLIでジャイロ種別を確認し演算周波数を設定
  • ドローンの飛行具合で設定値を再修正
  • 高い値で設定するとジャイロが過負荷となるので注意

PIDループ演算周波数

ジャイロセンサーからの姿勢状態データと送信機からの操作命令をもとに、フライトコントローラーはESCへモーター回転速度に関する指示を行います。この働きをPID制御と呼びます。

PIDループ演算周波数の項目はESCに対する制御頻度を設定します。設定値には4kHzや8kHzなどの値が入ります。さて、この時にどんな値を設定したらいいのか。これにはふたつの条件があります。

PIDループ演算周波数の設定条件
  • ジャイロ演算周波数以下の値であること
  • ESCのプロトコルを考慮すること

ジャイロセンサーの処理頻度が起点となり、それに応じてPID処理が実行という順番から考えれば、ジャイロセンサーの処理頻度を上回る値を入れても意味がないということがわかると思います。

そして、ESCの処理能力を上回るような値を入れても、ESC側ではデータ処理が追い付かず、未処理データの待ち行列が発生してしまいます。従って、ESCがDSHOT600で動いていれば処理上限が8kHzとなり、それ以上の値を入れることはできません。

ただし、各種パラメーターの矛盾があっても、Betaflightが矛盾を検知できる仕組みにはなっておらず、間違った値でも投入できてしまいます。

ジャイロ演算周波数とPIDループ演算周波数の設定例

それでは、具体的な設定値の決め方を説明します。例えば、ジャイロセンサーがMPU6000でESCがDSHOT600という条件で考えてみます。この場合、MPU6000は8kHzの処理能力が上限となり、DSHOT600も同じく8kHzなので、ジャイロ演算周波数もPIDループ演算周波数も上限値8kHzまで設定できます。

また、ジャイロセンサーがMPU6000で、かつESCがDSHOT1200なら、DSHOT1200は32kHzまで処理できます。この場合、ESCに32kHzの処理能力があるため、PIDループ演算周波数も32kHzとしたいところです。しかしながら、ジャイロセンサー側の処理速度を上回る設定はできないため、PIDループ演算周波数は8kHzと設定します。このケースでは、フライトコントローラー選定の段階でMPU6000ではなくICM20689を選べば、ジャイロ演算周波数もPIDループ演算周波数も32kHzと設定でき、高速処理で飛行できるドローンとなるでしょう(Betaflightのバージョンによっては8kHより大きな値を設定できない場合があります)。

このように、各設定値はフライトコントローラーの能力に依存しますが、実際には一段階低い値での設定をお勧めします。あまり高い数値にすると、ノイズが乗ってしまいます。すべてのドローンに2kHzで設定しても良いといっても、決して過言ではありません。

ジャイロサンプリングレートとPIDループレートとの間に、決まったセットルールはありません。設定条件を考慮しつつ、対象の機体が一番うまく飛行する数値を、飛行経験の中から見つけるしかありません。

復習の意味も込め、ポイントを再掲します。

  • ジャイロ演算周波数の値が大きくなるほどジャイロデータ読み取り回数が増え、より精緻な制御を行う(ジャイロセンサーの種別により上限値を決めるが、値を大きくしすぎると過負荷となるので注意)
  • PIDループ演算とはジャイロセンサーからの姿勢状態データと送信機からの操作命令をもとに、フライトコントローラーがESCに対して行うモーター回転命令
  • PIDループ演算周波数はジャイロ演算周波数以下で、ESCの演算周波数以下の値を設定

ベータフライト4.0以降の演算周波数設定値について

既にこれまでの説明でも述べていますが、ベータフライト4.0以降ジャイロ演算周波数とPIDループ演算周波数は、8kHzが設定可能な上限値となりました。32kHzに設定した場合、ノイズや振動による影響を受けやすくなるためです。

CPU負荷について(重要)

ジャイロ演算周波数とPIDループ演算周波数の2つの値を変更するときは、コンフィグレーターウィンドウの下部にあるCPU負荷を30%以下に抑えてください。値を大きくすればするほどCPU負荷が増しますが、30%を超えるほどの値にしてしまうとアームしない、または飛行が不安定な状況に陥ってしまいます。

ドローン飛行における反応遅延について

送信機のスティック操作に対するドローン飛行時の反応の遅れはPIDループタイムのみに依存する訳ではありません。実際にはフライトコントローラーやESCの演算処理に起因する遅延、モーターの反応時間、機体の慣性重量、FPVからの画像伝送速度、送信機と受信機間の信号伝送速度など様々な要因が存在します。

ドローン自作に関することは、「ドローン製作 ベータフライト設定 完全ガイド」でも詳しく解説しています!

動画でも説明しています

YouTubeチャンネル登録もよろしくお願いします!!

タイトルとURLをコピーしました