2014年5月29日

ヘリのPID補正の算出

ちょっと寄り道して、3軸ジャイロのPID補正によってヘリが何を何に近づけるように制御されているかを再確認しておきます。


まずユーザーの指示があったとき。

上の図のように、スティック指示は仮想的な目標値を動かすだけで、その後機体がどんな動きをして目標値に向けて動き出すかはジャイロに任されています。


まず、P補正項は「ジャイロ制御1ループあたりのエラー量」すなわち、3軸ジャイロの角速度読み値そのものが補正としてすぐ使われるので、非常にレスポンスが速いです。

また、I補正の元になる積算エラーは上の絵だとエラーを積み上げた巨大な量として書かれていますが、実際には機体が常にP補正やI補正で指令値をおっかけていますので、通常は積算エラーもほとんど0付近をふらふらしていて、P補正項とエラーの量は大差ありません。



ただ、機体を机に置いてモーターコネクタを外してスティック操作をする、といった操作をするとちょっと話は別です。

P補正項はスティックを倒している間だけ生まれて、スティックを戻すと即座に消滅します。
しかしI補正項の元になる積算エラーは、機体が操作に全く反応しないので、スティックを倒していた時間の分だけ積算されて、その後スティックを戻しても積算された角度(上の絵でいうと灰色の機体の向きですね)のまま積算エラーの値はずーっと変化しません。


この時スワッシュがどう動くか考えてみると
  1. 最初はスワッシュが水平な状態で
  2. エレベータダウンを少し入れる
  3. Pゲインが即座に生まれ、そのぶんだけスワッシュが瞬時に前に傾く
  4. Iゲインが積算されはじめ、スワッシュの傾きがじわじわ増加する
  5. (サーボのトラベルにも上限があるのであまり長い時間スティックを倒し続けるとサーボが振り切って傾きMAXで止まりますが)
  6. スティックを戻す
  7. Pゲインが消滅するのでそれに応じた分だけスワッシュが瞬時にぴくっと戻る
  8. でも積算エラーは(増え止まっただけで減らないので)大きな値のまま存在し、スワッシュは前に傾きっぱなしで停止する
という動きをします。(ジャイロの個性によっては上記のように素直じゃないものもあります)


ここでおもしろいのは、PゲインとIゲインの大小によってこの動きは全く異なって見えるという点です
  • Iゲインが0だと、4のじわじわ動く部分はありません。また8の現象も起こらず、7でスワッシュが瞬時に水平に戻ります
  • Pゲインが0だと、3と7のピクッと反応する部分は無く、じわじわ傾いて、傾きっぱなしになります。
これほど反応が違うにもかかわらず、どちらの極端なセッティングでもヘリはそれなりにローター面を維持して飛んでくれます。ただ汎用性を考えると両方をある程度入れておくのがベストなようです。






机の上に機体を置くと上記のように見えますが、同じ機能をフライト中の機体安定という面で観察すると
このように機体の向きが灰色の指令値を維持するように涙ぐましく制御します。

もちろんホバリング中でなくても、機体を前に傾けた状態でスティックを離せばその傾き維持しようと必死で頑張ります。

(nobさんにコメント欄でいろいろ教わりましたが)機体を前に傾けた状態=前に加速していって高速前進フライトになる姿勢なので、風の影響で頭上げをはじめとするいろんな力が機体に働き、スティック入力がないにもかかわらずかなりエラーが大きい状態=スワッシュが傾いて仕事をする状態でヘリは飛び続けます。


あ、どちらの説明にもDゲインの説明が抜けていますが、D補正は上記の2つと違って単体では機体を目標値に近づける効果がありません。(振動を抑制するので、補正強度を高めるためにPゲイン係数を大きく取っても振動が酷くならない、という目的で使います)
そもそもPID補正でD項は0にしておいて使わない、というケースも多数あるため、フィードバック制御の理解にとってはあまり重要ではありません。

0 件のコメント:

コメントを投稿