2014年5月29日

ピルエット補正とはなんなのか(2)

前回の「そもそもピルエット補正とはなんなのか」で、コメント欄でnobさんとクマー隊長に非常に多くの意見をいただきました。


特に問題になったのは、私が前回の記事で
「ピルエット補正とは、ジャイロの補正が一瞬遅れて機体に反映される遅れ時間の間に機体が回転している位相ずれを考慮し補正することである」
と書き、ほんの一瞬の間の微小な補正であると書いたのに対し、nobさんは3軸ジャイロメーカーの説明とご自身の観察結果から、
「オプチマイゼーションをオンにして地上でスワッシュを傾けて機体を手で回転させると機体の回転にかかわらずスワッシュの傾きが一定方向になるように動きます。」
と表現されています。これは一瞬の補正ではなくゆっくり操作してもはっきり見える効果なので、別物ではないか?というものです。


何度も食い下がっては説明し直してもらうことを繰り返し、これは私がIゲインの考慮を忘れていためではないかとわかってきました。




直前のPID説明記事に倣って、今回はヘリを上から見た図で考えます。
右ピルエットをしながら、何らかの要因でヘリがぐらっと左に傾いた場合を考えます。


このように、ピルエットしながらぐらぐら傾いた機体を制御するには、毎フレームごとにP補正項の値と、I補正の元になる積算エラーの値を三角関数で前フレームと(地面に対して)同じ方向に維持するようにする。これがピルエット補正ではないかと思います。


これを、机に機体を置いて実行すると、「Iゲインの効果によりスワッシュが傾いたところでスティックを離し、機体を手で持ってヨー回転させてやるとスワッシュが正しい元の向き(上の図で言えば画面右方向)を向き続けるようになる」 という現象が見られるはずです。

6 件のコメント:

  1. この図よくわかります。
    でも、私の思っている事とは別物の気がします。
    フタバの説明にローテーショナル・イコライザとフェーズ・イコライザという2つの補正があります。私のは、ローテーショナルイコライザーでsachihoさんのはフェーズイコライザーだと思います。
    下記url参照してみて下さい。
    http://www.rc.futaba.co.jp/news/webdir/32.html

    返信削除
    返信
    1. ありがとうございます。
      futabaの説明は数少ない日本語情報なので何度も読み返しました。

      ちょっと「右横風が吹いてヘリが右に傾いて(右トリムで)ホバリングしているとき」という説明が、人間が舵を入れているみたいな書き方で違和感を感じますが、そこは置いといて、「右横風で外乱を受けながらヘリがホバリングし、軽い右傾き状態を維持するためにジャイロがスワッシュを右にちょんちょん傾けながら飛んでいるときに」と思って読むと、この仕事をするのはジャイロのP補正とI補正のはずです。

      そして説明文と効果を読む限り、
      ピルエット時のI補正を回転させ位相保証するのがローテーショナルイコライザーであり、P補正の微少時間における位相保証がフェーズイコライザーである
      ように思います。

      (私の1回目の記事ではI補正の位相保証の話が出てこなかったので、フェーズイコライザーの説明に見えたと思います。nobさんの手で機体を回転させた時の話を参考にして、そういった効果を生むI補正の回転を書き加えたのが今回の記事、という意図で書いてみました。)

      削除
  2. すみません、またまた間違い(^^;;;
    実機で、動きをじっくり確認してみました。

    3軸ジャイロ機は、スティック入力が無くても、地面に対する現在の姿勢を維持するのですねー!
    例えば、ダウンを入れて前進させると、スティックを戻してもその姿勢を維持して、どこまでも前進していきましたwww

    ところで、ここまで来て、やっぱりピル補正の基本的なところに対しては、nobさんもsachihoさんも(私も)、同じことを言ってませんか?
    つまり、nobさんのおっしゃる「オプチマイゼーションをオンにして地上でスワッシュを傾けて機体を手で回転させると機体の回転にかかわらずスワッシュの傾きが一定方向になるように動きます。」というのは、機体を地面に対して一定の角度になるように維持する制御に他ならないと思うのですが。。。

    そして、その角度は、速度変化が起きない角度にしているのではないかと思っています。実際の現象として、ピル補正機は、ピルエットしながら水平面に等速で動きますので(もちろん、静止状態なら静止状態)。

    その上で、それをどのように実現しているかは、具体的には分かりませんが、例えば、sachihoさんのおっしゃるような遅れに対する制御かもしれませんし、フィードフォワードさせたりしてるのかもしれませんし、PIDのPやI成分を強くしているのかもしれませんし、そのほか別のものかもしれません。。。。

    ただ、3軸ジャイロが加速度ではなく角速度を検出しているので、等速で移動させるための機体の傾きを発生させる制御というのは、一工夫必要となる気がします。

    っと、現時点での考えです(^^;;

    返信削除
    返信
    1. で、ですよね! ヘリにもよると思いますが、特に130Xは一度傾けたら風がガンガン煽られてもびくともせず傾きを維持する、と思っていたので少しほっとしました。

      ピルエット補正の効果に関しては、ローター面と地面の角度が一定=メインシャフトの向きが一定 であるように維持する機能だというので3人とも認識は合っていると思います。

      それを実現する方法として、上のnobさんのリンクにあるようにスワッシュ傾き方向を維持する制御と、位相遅れを保証する制御の2つがあるらしいというところまで分かってきましたが、それが今回の記事に出てきた「積分エラーの回転」と、「その瞬間のエラーの位相保証」の2つではなかろうか、というのが現時点での理解です。

      いずれにせよ積分エラーの回転に関してはソフトでmultiWiiに入れてみれば効果が試せますので近いうちやってみます。

      それと、「ピルエット時だけPやI成分を強くする」というのを実は私も思いついてやってみたのですが、ぜんぜんピルエット安定性に繋がりませんでした(笑)

      削除
  3. フタバの説明をよく読むと全然違ってましたね。位相という言葉だけで判断してしまいました。すみません。

    フェーズイコライザーというのはなかなか難しいアルゴリズムが要りそうですね。フタバの言ってる位相差は、ローター回転とピルエットスピードの差で生まれる位相差なので、メカの反応速度が原因の位相のずれとは違うみたいです。回転数の差による位相のずれは、ピルエットの方向によって反対の補正をかける必要がありそうです。原理的には、ローター回転とピルエット方向が同じでローター回転とピルエットスピードがイコールなら位相差は90度になりエレベーター引いたらエルロンだけが左に切れることになるということですね。

    説明にあるローター回転2000RPMでピルエットスピード720度/秒なら回転数差が1:16.65なので、補正する角度=ローターが90度回転する間に機体の回転する角度(90÷16.65=)5.4度ということですね。しかし、これをピルエット方向によって±する必要があります。
    でも、ピルエットスピード720度/秒は決して速くないですが、マイクロヘリの場合はローター回転が4000回転以上なので補正は半分以下でいいことになり、これは大型ヘリでローター回転が低い場合の補正という事でしょうか?

    フタバの言うローテーショナルイコライザーについて以下が認識の違うところですが、と言っても補正の内容は同じなのですが、

    "そこは置いといて、「右横風で外乱を受けながらヘリがホバリングし、軽い右傾き状態を維持するためにジャイロがスワッシュを右にちょんちょん傾け
    ながら飛んでいるときに」と思って読むと、この仕事をするのはジャイロのP補正とI補正のはずです。"

    いや、この仕事ができるのは、加速度計かGPSを持ってないとできないはずです、APMなどのコントローラーは手放し定点ホバリング(LOITER)をするためにGPSや加速度計を使って相当苦労しています。右横風を受けてヘリがドリフトしても一般の3軸ジャイロは補正できないので右に舵を入れてドリフトと釣り合わせないとホバリングできません。

    上記はホバリングするためにチョンと右に舵を打ってすぐに戻した場合だとおっしゃるかもしれませんが、この前の"ヘリのPID制御の算出"も違和感を持って読んでいたのですが、次の表現で

    "で、ですよね! ヘリにもよると思いますが、特に130Xは一度傾けたら風がガンガン煽られてもびくともせず傾きを維持する、と思っていたので少しほっとしました。"

    解りました。そう、ヘリによるのだと思います。

    普通の3軸ジャイロは、テールの制御を除いて減衰型Iゲインを採用しています。厳密なヘッドロックではありません。なので上記のようにならず、スティック入れて少し経つとスワッシュは中立に戻ります。なぜそうするかというと、離陸時に少しでもヘリが傾いているとどんどん積分値がたまってスワッシュが振りきれて立ちごけの危険があるからです。

    なので、一般のジャイロはチョンと舵を入れただけでは定速で進まず(風の中でホバリングせず)、スティックを入れ続ける必要があります。

    なんか長いコメント攻めで申し訳ありませんでしたが、今回かなり私自身も勉強になりました。

    返信削除
    返信
    1. こちらこそ、なかなか話が通じない聞き手で何度も長文を書かせてしまって申し訳なかったですが、とてつもなく勉強になりました。これほどの情報をコメント欄に埋もれさせてしまうのはもったいないので、理解できたものからぜひ日記に反映させていきたいです。

      また、おかげさまでmultiWiiにもピルエット補正を実装する目処もだいぶ立ってきました。

      フェーズイコライザは私の言うフィードバックの遅れの話ではなく、ユーザーの舵が正確に機体の向きに効かずに位相がずれる補償みたいですね。なので同じような着眼点ですがピルエット補正には直接関係なさそうです。

      横風ホバの件はちょっと日本語に手を抜いて書いてしまいました。横風が変化すれば横に流されるのは当然と(暗黙のうちに思っていて)、だいたい一定の位置にいられるように平均風速くらいに合わせて機体を傾けているホバ状態、という前提で、「風に煽られて傾きが変わらないようにするのは」PIゲインの仕事だ、という気持ちで書きました。


      しかしなによりも、減衰型Iゲインの話を聞いて衝撃を受けました! 理由もなるほど納得です。
      nobさんの前回のコメントでKbar検証をしたときに、Iゲインが勝手に減衰するのを見てがっかりして、設定を間違えたのかなー、やっぱり別のジャイロを買えばよかったかなー、と思っていたのですが、大型機ジャイロでは普通の概念なのですねぇ。。

      そしてKbarのI補正減衰はけっこう速いので、これだとローター重量で安定する250以上はともかく、V120に適用すると純正よりはマシかもしれませんがそれほどすばらしい(強風時のフライト)性能は発揮できないかもなぁ…と思っています。

      そして手持ちのいろんなマイクロヘリコントローラで確認しましたが、まったく減衰しないIゲインを持ってるのはFBL80と、Blade機全てでした。

      隊長も含めて、Bladeヘリユーザーが何故「どんなに暴れても一定の場所にとどまる感じでとにかく飛ばしやすい」と感じるかが、この性質に関わっているのではないかなーと思うようになってきました。

      multiWiiはどちらの実装にも簡単に切り替えられますので、今後そのへんも同じ機体で切り替えて比べてみたいと思います。

      削除