ドローン自作講座も残すところPIDの解説のみとなりましたね。
PIDは普段なじみのない言葉だから、概念というか正しいイメージを持つことが大切だよ。まずはこの記事を読んでみて、更に詳しく知りたいときはこちらの本も参考にしてくださいね!
PIDとは
PIDで何を設定するのか、ひとことでいってしまうとスロットルやロール、ピッチなどの送信機スティック操作に対して、ドローンをどれだけ機敏に、または緩慢に反応させるかの調整です。
PIDの奥深いところは、同じ数値に設定したとしても対象となるドローンの性能、フライトコントローラーやESC、モーター等のスペックにより、結果として現れる反応の仕方が違ってくるという部分です。
そのため、コンフィグレータに投入する各種数値だけでドローンがどんな飛行をするのかを判断することは難しく、実際に飛行させながら少しずつ設定値を変えてみるのが一般的なやり方です。
ただし、あまりプレッシャーを感じる必要はありません。少々矛盾した言い方になるかもしれませんが、これからドローンを始めようという方は、特に設定を変更することはありません。飛行に関する経験を積んだのち、チューニングしてみるのがよろしいかと思われます。安易に数値を変更すると、ちゃんと飛んでくれなくなったり、思いもよらない方向へ飛び、周囲の器物を破損したり誰かに怪我をさせてしまう、ということにもなりかねません。また、モーターやESCに過負荷がかかり過ぎ壊れてしまうこともあります。
飛行経験を積み、操縦のスキルがそれなりに高くなり、自分自身の飛行スタイルが見えてきたら、それに応じて設定値を変更し、自分なりのチューニングにトライしてみましょう。
PIDチューニングの考え方
PIDチューニングは飛行における反応の強弱を調整すると前述しましたが、実際の設定画面を見てみましょう(Betaflightのバージョンにより画面構成は多少異なりますが、設定項目や設定の考え方は同じです)。
PIDでは、ROLL/PITCH/YAW毎にProportional/Integral/Derivativeの値を設定します。ちなみに、PIDはProportional(比例)、 Integral(積分)、 Derivative(微分)の頭文字をとったものです。
- PIDはロール/ピッチ/ヨーの3軸に対する調整
- PIDの設定値に従い、送信機~フライトコントローラー(各種センサ) ~ESC間の動作を制御
- PIDの各数値を基に、ジャイロセンサー等のデータと送信機操作命令の差異を計算し、エラーを低減させるための働きを継続的に実行
Proportionalとは
目標値と現状を比較し、差分が大きいほどモーターの回転を加速させるのがProportional(プロポーショナル)の働きです。また、目標値に近づいたらモーターの回転を緩めます。
- Proportionalとは、現在の機体姿勢と送信機スティック操作による目標姿勢が離れている場合ほどモーターを高回転させる調整を行う制御
ドローンにおけるProportional制御とは
ドローンにおけるProportional制御(P制御)とは、どのようなものでしょうか?現在の状況と目標値との間の差分を比較し、目標値から離れているときにはモーターを速く回転させるのがP制御です。フライトコントローラーに搭載されたセンサーにより、飛行姿勢や加速情報をチェックし、送信機(プロポ)からの操作命令から乖離していれば、その差分を小さくするための計算を行います。
Proportionalの値(P値)を大きくするほど、姿勢制御開始時の動作が機敏になります。現在の機体姿勢が、目標姿勢と離れていればいるほどモーターの回転数を上げ、目標姿勢に近づいてきたら回転をゆっくりにします。いいかえると、Proportionalの値を大きくするほど、少しのスティック操作でも大きく姿勢や速度が変化するという事になります。そして、目標値に近づいたら、モーターの回転速度を緩めます。
Integralとは
続いてIntegral(インテグラル)について説明します。外部からの影響などにより生じる誤差を小さくするのがIntegral制御(I制御)です。
- Integralとは、蓄積した過去の誤差情報をもとにモーター回転を調整する制御
ドローンにおけるIntegral制御とは
強い風が吹いていたり、バッテリーからの電圧が変動するなど様々な外的要因により、ドローンが目標とする飛行姿勢に近づけない場合があります。また、直前の動作による慣性力が強すぎ、次の動作が影響を受けることも考えられます。
こうした外的要因の影響を誤差情報として蓄積し、モーターの回転を制御するのがIntegralの役割です。Integralの値(I値)を大きくすれば、目標値(送信機操作)に近づいた時の安定度(姿勢保持力)が増し、次の動作へ移りやすくなります。目標とする飛行状況に近づき収束状態となった時点で、残存する誤差が出来る限り小さくなるような制御を行います。
例えば、風が吹き機体が押し流されているような場合には、その力に反するようにモーターの回転速度をキープさせます。
Derivativeとは
目標値に近づき現状との差分が小さくなってきたらP制御の働きを抑えるような調整が必要となります。この役割を担うのがDerivative(デリバティブ)による制御(D制御)です。
- Derivativelとは、現状の値が目標値に近づいたら、P制御によるオーバーシュートを回避し、一定の飛行姿勢を保つよう調整する制御
ドローンにおけるDerivative制御とは
現在の飛行姿勢が送信機スティック操作による目標値に近づいてきたら、一定の姿勢変化やスピードで飛行できるような制御を行います。Derivativeの値(D値)を大きくするほど、飛行制御が全般的に緩やかになります。例えていうなら、ジェット戦闘機的な飛行から、プロペラ飛行機のようなのんびりとした飛行になるといったイメージです。
目標値と現状の飛行姿勢の乖離が大きいほど、P制御によりモーター回転は加速されます。そして、目標に近づいたらスムーズにモーター回転を緩めることができればいいのですが、P制御だけではコントロールが難しく、オーバーシュートや振動が発生してしまいます。オーバーシュートとは目標値以上に動作が行き過ぎてしまうことです。
機体の動きを俊敏にしたくてP値を大きくしたのですから設定値を下げたくない場合もあるか思います。そうした場合にオーバーシュートや振動を抑制してくれるのがD制御です。
D値の調整は未来のエラーを予測するといったイメージが出来ると思います。目標値に近づき現状との差分が減りつつあるときに、P値を抑えるようなコントロールを行います。
PID設定の実際
PIDの概念を理解できでれば、各値の設定方針についてもイメージを持ちやすくなります。実際にドローンを飛ばし、どのような飛行をするのかチェックしながら、それぞれの値を少しずつチューニングしてみましょう。
Proportionalの設定
Proportionalでは、送信機のスティック操作に対してどれだけ忠実に飛行させるかを調整します。P値を大きくすれば、感度や応答速度が高まりシャープな飛行動作となります。P値を小さくすればソフトな飛行動作となります。
P値を大きくする程、モーターを高速回転させ望む飛行状況に早く近づけようとする制御が行われます。ただし、P値が大き過ぎるとオーバーシュートが発生し、更に値を大きくすると振動が起こり目標値に収束しなくなります。反対に、P値が小さいと動作が緩慢になり、目標値に到達するための時間が大きくなります。
Integralの設定
Integralの設定により、風などの外側からの力に対する姿勢保持力を高めます。また、機体が進行する慣性力に対して次の動作へ切り替えるための力を大きくします。姿勢の保持力と、減速させるための力の調整を行います。
ドローンが流されるような強い風の日には、I値を高めるか、送信機のスティック操作で機体の位置を補正するかを選びます。あまりI値を大きくしすぎると、飛行動作が鈍く感じられ、P値を低くした場合に似た動きになります。
Derivativeの設定
DerivativeはP制御により引き起こされる過度の機体補正を緩和し、機体の振動を低減させます。例えていうならば、車のサスペンションに取り付けられたダンパーのような働きです。
ただし、過度にD値を大きくしすぎても、機体の振動を引き起こし操作応答性を低下させてしまいます。また、D値を小さくしすぎてしまうと機体の姿勢転換の際、P制御に対するブレーキとならず、過剰な姿勢変化を起こしてしまいます。
これらのバランス調整が大切で、対象となるドローン機体を何度も飛行させながら調整する必要があります。
- P制御:素早い飛行動作となるが、P値を大きくし過ぎると過度な姿勢変化と機体振動が発生
- D制御:P制御に伴うオーバーシュートや振動を抑えることが可能
- I制御:外力による誤差を排除し、目標値に収束させるような制御を行う
PIDチューニングの詳細な手順やノウハウ、PIDと並び重要は調整項目であるFeedforwrd(フィードフォワード)やRate、フィルター設定等については、こちらの本で詳細な解説をしています!
動画でも解説しています
YouTubeのチャンネル登録もよろしくお願いします!!
コメント