Armattan Badger 5" Kit (バンドル) <7> PID Tuning 1

さて、いよいよPID Tuningになります。今回のPID Tuning 1では一旦概要の説明からはじめようかと思っています。

PID設定はもう泥沼というか、キリがないというか、上げたり下げたりして「うーん、良いような、悪いような」と、もやもやしながらテストフライトを繰り返している方も多いのではないでしょうか。

今回バンドルを企画するにあたり、もう一度勉強し直して、自分なりに納得の行くセッティングを出せるワークフローを考えたので、次回からそれをご紹介したいと思うのですが、他にも色々方法はあると思うので1つの案と捉えて頂けたらと思います。

PID Tuningをやっていて個人的に思うのは、「なんとなく良くしたい」という目標では当然永久に終わらない作業となります。

当たり前の話ですが、具体的に改善したいトラブルであったり、操作感覚であったりをあらかじめ明確にしてはじめて、それが解決される事が最終的なゴールになるというわけです。
そのゴールを達成する為に、犠牲になる要素も場合によってはあるかも知れません。

全体的な飛行感覚のキャラクターに納得がいかない場合は、プロペラであったり、モーターであったり、場合によってはフレームであったり、可能な場合はFCを別のファームウェアに変更する、不可能な場合は別のFCに変更するなど、機体構成を変更してしまう方がガラッとかわるかなと思います。

とにかく、PIDの設定をはじめる前に自分がどうしたいのか、という事をある程度考えてから作業をはじめるのが最低限必要です。

明らかに問題がある場合は当然それが課題になるのですが、目立った問題がない場合は、上手な人のフライト動画を見て、この人の機体はここでこういう感じに動いているのに自分の機体はそうならない!などという感じで、課題をイメージするのも良いかと思います。

PID設定の説明に入る前に、P(Proportional)、I(Integral)、D(Derivative)、FF(FeedForward)とはそもそもどんな役割でしたっけ?という事を、フライトログを見ながら手短に紹介しておきましょう。

偉そうに言っておいて、自分の理解が間違っていたら申し訳ないのですが、恐らくPID設定作業の上ではとりあえず支障のない説明になっているかと思います。
間違いがあったらお問い合わせからご指摘頂ければ、なるべく訂正するのでご連絡頂けたらと思います。その際は勉強し直すので、資料のURLも合わせて頂けると幸いです。

まずP(Proportional)ですね。上記のグラフはハーフ・ロール・フリップしているところなのですが、赤いグラフがPです。青がSetpoint(操縦によって指示された機体が取るべき姿勢)で紫がGyro(現実の機体の今の姿勢)なのですがPはSetpointとGyroの差を検知して修正する役割があります。

次はI(Integral)です。上記画像は普通に直進して飛行しているところです。直進している間、横から風が吹いたりすると機体の姿勢は本来グラグラしてしまうはずなのですが、Iがそういった要因から姿勢の継続をサポートする役割を果たします。
最近のBetaflightではそうとばかり言えないのですが、基本的には時間経過とともにゆっくり上がってくる動き方をします。

次はD(Derivative)なのですが、Dに関してはもしもDがなかった場合を考えるとわかりやすいかも知れません。上記グラフはDの設定を0にして飛行したものなのですが、赤のグラフのPに動かされて矢印で示した紫のGyroが振動してしまっているのがわかるかと思います。

その波の中心を走る青のSetpointを目指してPがGyroを修正するのですが、P だけでは行き過ぎて(オーバーシュート)しまい、また補正し、また行き過ぎるという事を永遠に繰り返してしまうわけですね。

DはPの増加を検知してアクティブになり、Pよりも高い周波数で逆位相を与える事で、Pのオーバーシュートの収束を早める役割を果たします。そのおかげで激しく動いても紫のGyroがオーバーシュートせずに青のSetpointを追従することができるようになります。

DはPの補助的な設定値とも言えるかも知れません。
Pの信号は直接モーターを動かせるのに対し、Dはモーターには高すぎる周波数の信号のようで、実際にモーターを動かすものではありません。Pの信号に対してより高い周波数で逆位相を加える事でPの収束を早める仕組みになっています。

実際にモーターを動かすよりもずっと高い周波数のDの信号がモーターに送られると、モーターはその信号を処理する事ができず、その分だけ熱を持つことになります。Dの数値を上げる際にモーターの熱に注意する必要があるのはそのためです。

そしてFF(FeedForward)です。今回改めて調べなおして気づいたのですがBetalfight4.1からFeedForward2.0として生まれ変わっていたようです。何がどう変わったか具体的に説明できないのですが、4.1くらいの時から変更してもトラブルが出なくなったなと思っていたので、どんどん改善されているようですね。

FFはスライダーで設定する場合Stick Response Gainを右にスライドすると上げる事ができます。ここで表記されているそのままの意味で、スティック感度を上げる働きをします。
FFを上げすぎるとフリップ後にバウンスバックが出てDを上げて調整しなくてはいけない場合があるものの、Pが過剰な時のように普通に飛行している時の振動の原因とはならない事が特徴のようです。

上記のグラフを見るとわかりやすいのですが、グラフは機体が細かい木の枝にほんの少し触れた時のものです。物に触れて抵抗があると機体は強制的に向きを変えられてしまうのでPIDは全体的にその対応に追われているのですが、オレンジのFFは我関せず。

FFはRC Command(スティック操作が受信機に送られて、受信機からFCへ送られる操作の指示)の移動量に反応して増加するので、GyroとSetpointの関係がどうあろうと、それ自体では反応しないのがこの中で特徴的と言えます。

上記、前回の記事でもご紹介した画像ですが、PIDの設定は主に緑の四角で示した部分の設定になります。図を見ているとわかるかと思うのですが、PIDは信号の流れでいうとフィルターよりもずっと下流の方で実行される数値です。

その為、PID設定を行う前にフィルターの設定を決めて置かないと、せっかく時間をかけてPIDを設定してもフィルターを変更したら全体的にガラッと状況が変わってしまう可能性があるので注意が必要です。

また、今回D関連のフィルターもかなり薄くしているので、Dの値をデフォルト以上にあげた場合はモーターの熱に注意しながらテストフライトを行ってください。

上記の図を見ると非常に分かりやすいのですが、通過したノイズがDの設定値により増幅されてESC→モーターへ送られるので、Dの設定値を高くした場合、急激に発熱する可能性もあります。

なんとなく全体像を説明したところで今回はここまでです。
次回から実際に設定を変更する作業に移りたいと思います!

ArmattanBetaflight

JACK によるブログ

DAYSCAPE ( DIYドローン オンラインショップ ) では、FPVドローン、産業開発ドローンの分野に関する商品の紹介やドローンの組み立て、使用方法などの情報発信を行っています。

ピックアップ