2014年5月26日

そもそもピルエット補正とはなんなのか

最近、T-REX150、V977のようにマイクロヘリでもピルエット補正が話題になることが増えてきました。これをmultiWiiに実装してやりたいと思っているのですが、まずピルエット補正とは何なのか理解しなければいけません。

ピルエット補正については実際のところ何をしているのかちゃんとした説明がめったにありませんが、とにかく効果としてはピルエットしてもそのままのローター傾きを維持してピルエットする。というものだと思われます。



まず大事なのは、ピルエット補正とはあくまで傾きの維持であり、必ずしも定点ピルエットを意味しません。

たとえば右に90度だけピルエットする場合を考えると、シングルローターヘリ(時計回りローターの場合)は常に右に傾いてホバっていますから、傾きを維持してピルエットできたとすると、当然ながら機体は前に傾いており左右方向は水平になります。
その結果ヘリはローター傾きのために前に、テールローター反作用のために左に動きますので左前にすっ飛んでいきます。(なので、スローピルエットさせるときは人間が右後ろにサイクリックを引きながらピルエットさせていますよね)

これは(少なくとも3D向けのアクロコントローラでは)特に補正すべきものではなく、むしろ確実にこうなるようにローター面の傾きを維持してピルエットするのがピルエット補正です。



そもそもローター傾きの維持は3軸ジャイロの基本機能なのに、何故それ以上に補正が必要かというと、フィードバックの遅れ時間があるためです。

CPUの処理性能+メカ遅れで、機体の傾きからメインローター揚力への反映まで数msから100msくらいの遅れ時間がありますが、この間にピルエットにより機体の向きが大きく変わってしまうと、
  1. 高速右ピルエット中に
  2. 機体が(例えばテールローターの)外乱により左に傾きつつある
  3. ジャイロが右に傾けて戻そうとし、スワッシュサーボに右指令を出す
  4. サーボの動きがローターに伝わるより前に、機体がピルエットしてどんどん右を向く
  5. もはや機体は左だけでなく後ろにも傾きつつあることになる
  6. ようやくスワッシュが動きローターに伝わって右に機体を傾けようとする
  7. 結果として、機体は左右方向には補正されるが後ろには補正の悪影響で傾く
みたいなことが起こります。このように補正の悪影響で機体が傾いてしまうと、同じ条件で動かし続ける限りどんどんずれが累積されるので無視できないのと、傾かないようにいくらスワッシュ方向のPゲインを上げても症状が悪化するだけで改善しません。



この対策として、スワッシュ方向のPID補正結果をサーボに伝える前に、ヨー方向ジャイロの現在値を見て機体の回転速度を出し、伝達遅れ時間の間に変化した角度の分だけ前後と左右方向の指令をミキシングして位相ずれを補正してやるのが、ピルエット補正の基本と思われます。

といっても、伝達遅れ時間の部分は機体やサーボによって違うので、結局この1パラメータだけは調整可能にして「ピルエット補正係数」みたいな実装になると思います。

17 件のコメント:

  1. T-REX150やV977は操作したことがないのでピルエット補正がどういうものかが良く解っていません。

    が、V-BAR、ZYX、MICROBEASTなんかはすべてピルエットオプチマイゼーションという機能が付いています。
    これは、スワッシュを傾けた後ピルエットを開始すると、最初の傾き方向をピルエット中維持する機能です。

    ピルエット補正=オプチマイゼーションだとおもってたのですが、sachihoさんの言うような機体の動きとメカの反応速度のタイムラグを埋める補正ならオプチマイゼーションとは違った機能なのでしょうね。

    ジャイロは機体に設置されているため機体の移動方向ではなく設置されている機体の傾きを一定に保とうとします。なのでピルエット中も進行方向ではなく回転しながらも機体の角度を一定に保とうとします。逆説的ですがこれは風などの影響で機体が水平のままドリフトする場合は3軸ジャイロは効果がない事からもわかります。

    結果、高速直線飛行をしている時にピルエットを始めた場合にオプチマイゼーションがないとピルエット開始と同時に機体に対するスワッシュ角度を維持しようとして機体はサークル状に動きだしあて舵が必要ですが、オプチマイゼーションがあると機体の向きにかか
    わらず今までの進行方向にスワッシュを傾けるためあて舵を入れなくても直線飛行の状態のままピルエットしてくれます。これはフライバーの時代はフライバーの慣性力で同じような効果が得られたようです。

    静止状態のピルエットでは、オプチマイゼーションの効果で同一軸でのピルエットではなくても、うねらずに軸が通ったように見えるので補正効果があるのだと勝手に思ってました。もっと深い制御があるのですね。

    返信削除
    返信
    1. おおお、詳細説明ありがとうございます。
      まともなヘリもジャイロも持ったことが無いので、限り無くこちらが嘘を書いている可能性のほうが高いです。
      申し訳ないのですが、以下に私の考えた順序を書きますので、事実と違ってそうなところを見つけたら指摘いただけると助かります。(どなたでも)

      ピルエット補正が機能していると、高速直線フライト中にピルエットしてもそのままの傾きで直線フライトを維持すると考えたところまでは多分同じだと思います。
      ただこちらの考えでは直線フライト中はエレベータのスティック入力はニュートラルであり、スワッシュは機体に対して水平である(機体は進行方向にローター面を傾けた状態をずっと維持しているだけで高速フライトし続けている)と思っていました。
      そうすると、この状態でピルエットしたら、そもそもスワッシュが機体に対して傾いてないわけですから、ホバ状態と同じようにただ単にメインシャフトまわりにぐるぐる回るだけで希望するピルエットになる、と考えました。

      ただ実際マイクロヘリでこれをやるとたいてい綺麗にまわらず、1回転するうちにかなりローター面の向きが変わってしまいます。この原因の一つがジャイロ補正中にヨー回転することによる位相ずれであり、それを補正しローター面の向きを維持するのがピルエット補正ではなかろうか、と考えました。
      (したがって、ローター重量が大きい大型ヘリではピルエット補正は無くてもほとんど気にならない、とも考えました)



      上記のとおりスワッシュが傾いている状態(=例えば機体が猛烈に前転しようと動き出す状態)を全く想定していなかったので、その場合にピルエットが行われた場合にどんな補正があるべきか考えたことはありませんでした。

      ただ逆に、nobさんのコメントにあるようなピルエット補正が働いていたとすると、ケツホバ状態から始めたとして、スワッシュを前に一気に傾けたと同時にピルエットを開始すると、機体はピルエットしながらも人間から見て前転方向にうまいことじわじわ傾いていく、という動作をする気がします。
      これだとサイクリックを頑張ってぐるぐる操作しなくても多回転ピルフリの前半部分ができてしまうことにならないか?と不思議に思います。
      (実際はピルフリのときって、mode2だとヨー回転に合わせてスティックをぐるぐる回し続けますよね)

      削除
  2. むむー、深く考えたこと無かった。。。

    動きとしては、サイクリックの入力が無い限り(=スワッシュが機体に対して水平)、ピルエット中の機体の水平面方向(前後・左右方向)の加速度変化が生じない制御、ということですよね?
    つまり、ピルエット中、サイクリックの入力が無い限り、静止なら静止を維持、定速なら定速を維持、加速なら加速を維持する状態と。。。

    仮にそうであれば、これは、単純に、地面に対する機体の傾きを常に一定にする制御なんだろうな~っと思ってました。
    すなわち、普通は、ピルエット1回転中に、重心バランスやらなんやらで機体の傾きが変わり、その結果、傾いた方向に加速度変化が生じてしまうところ、この傾きを一定にすることで、加速度変化を生じさせないようにして、結局、現在の移動方向、速度、加速度を維持するのかと。。。
    (この点で、nobさんもsachihoさんも同じことをおっしゃってるような?)

    一方、スワッシュが傾いている=サイクリック入力がある場合は、それはサイクリック入力が優先される(ピル補正がキャンセルされる)のか、あるいは、ピル補正の量自体は、サイクリック入力に比べればごくわずかでしょうから、このような場合にはあまり影響しないのかもしれません。

    あと、もし、ピルエット中の機体の速度、加速度を一定にする機能なのであれば、機体の傾きによる必要は必ずしも無く、機体の水平方向の加速度変化を検出してそれを打ち消せばよいので、3軸ジャイロ出力の角軸方向の微分(加速度変化)を見て、それを打ち消す方向に出力すればよし、なのかなー?
    (もっとも、それは、機体の傾きを見ているのと同じか。。。w)

    なーんて、つらつら考えた中年の夜でしたwww

    返信削除
  3. ついしん。。。

    この機体の傾きを一定にする制御を、ピルエットで姿勢が変わっていく中でも行うのがピル補正の妙なのでしょうねー。

    ・・・結局、sachihoさんの記事本文と同じ結論に到達(^^;

    返信削除
  4. 考えれば考えるほどこんがらがってきますが、まず、直線飛行中は絶えず一定のエレベータ入力はありますよね。でないとスワッシュ水平だと機体は上昇するけど高度一定の直線飛行はできません。
    ピルフリの件は、多分ですが、エレベーターだけでもピルフリはできると思います。ぐるぐる回すのは1/4づつエレベータとエルロンにフリップを受け持たせようとするからでその方が操作量が少なく機敏にフリップさせられるから?ではないでしょうか。

    クマー隊長のおっしゃるようにスティック操作が変化したときは多分オプチマイゼーションはキャンセルされると思います。でないと、ピルエットサークルはできませんからね。

    それから加速度の話が出てきましたが、普通の3軸ジャイロは加速度センサーは搭載していないので基本傾きだけを感知してフィードバックしてると思います。

    返信削除
  5. おおぉ、こんなに盛り上がるとは! お二方ありがとうございます。
    とりあえずスティック操作があるときの話ではないようなので、ピルフリ時にどうこうという疑問にはこだわらないようにします。

    クマー隊長のおっしゃる内容は
    ・サイクリック入力がない限り機体の加速度は一定
    ・ピルエット補正とは地面に対する機体の傾きを一定にする機能
    という点で私の理解と同じだと思うので、細かい表現の違いはありますが同じことを言っているように思います。

    3軸ジャイロはもともと機体の傾きを直接検出するセンサーではなく、角速度を検出し、CPUで積分することで機体の傾きをなるべく把握しようとするものなので、角軸方向の微分が0になるようにPID補正することで機体の傾きを維持しています。まさに隊長がおっしゃる通りのことをしています。

    nobさんと私の理解が合わないポイントは、水平飛行中にエレベータ入力があるかどうか、という点に尽きるようですね。
    正直飛ばしている時にどうしているか自分でもあまり覚えていないのと、頭上げが起こる機体ではそもそもローター面の傾きが保持すらされないのでよくわからないのですが、シミュレータの場合にはスロットル以外全てセンターでも高速前進しないでしょうか?

    スワッシュ水平といっても地面に水平と言う意味ではなく、機体に対しての水平なので、機体が前に傾いていればローターは斜め前上方のまっすぐメインシャフト延長方向に力を発揮し、地面に対して鉛直方向の成分が重力とつりあう程度にコレクティブを上げていれば、余った前方向成分の力がヘリを加速させると思います。
    (その後どこかで空気抵抗とつりあって一定の前進速度とつりあうはずです)

    返信削除
  6. ええ〜?
    そんな機体にはであったことがないです。
    と言うか、理想的な機体で、メインマスト上に重心があったとしても、ローター面より下なので、ローターが引っ張るとモーメントが発生し機体はアップ方向に回転しようとするため、エレベーターは入れ続ける必要があります。ましてや普通の機体は後ろ重なのでなおさらです。

    返信削除
    返信
    1. えーと、その無理をなんとか実現しようとするのが3軸ジャイロの仕事かとおもっていたのですが。。
      気にしている時間の長さが双方で違っているのかもしれません。
      私の場合マイクロ限定で飛行場も限られているので、高速直線という場合でもせいぜい二、三秒です。
      機体を傾けた時に、数秒であれば手放しでも傾きを維持しますが、ずーっと待っているとだんだん風の抵抗で水平に戻る傾向はたしかにあります。
      これをもって手放し前進okとするかngとするか、みたいな違いだったりするでしょうか?

      削除
  7. 無理を何とか実現するためにジャイロはスワッシュを傾けるんじゃ?
    2~3秒は前傾を維持するのはその間入力が無くてもジャイロがスワッシュの傾きを維持しているから?

    話が拡散してきましたが、最初に戻ると、

    記事に書いてある、ローターの傾きの維持は3軸ジャイロの基本機能でフィードバックの遅れがあるために補正が必要 とありますが、MIKADOの解説かなにかに、直進飛行の時は機体は前傾していて、この状態でピルエットすると機体の前傾が保たれたままピルエットするので飛行方向が変わり、ファンネルになっちゃうって読んだことがあります。ノーズインファンネルですね。これは極端ですがその傾向はあると思います。これを補正するのがオプチマイゼーションだそうです。

    3軸ジャイロは機体の傾きを維持(または傾かないように維持)しようとしピルエット中も機体の傾きを変えないのが基本機能なのでスワッシュが傾いているとピルエット中も機体に対して同じ方向に傾いたままのはずです。
    ところが、オプチマイゼーションをオンにして地上でスワッシュを傾けて機体を手で回転させると機体の回転にかかわらずスワッシュの傾きが一定方向になるように動きます。これは、ジャイロの基本機能とは全く違った動きです。

    こだわっているところは、フィードバックの遅れの補正ではこの機能が実現できないのではないかということです。
    もっとも、最初にも書きましたが、ピルエット補正という機能がこれと同じかどうかはわかりません。マイクロヘリでは高速直線飛行なんてやる人いないから不要かもしれません。

    では、直線飛行中スワッシュが傾くかどうかですが、重心とローター面の関係以外にも、前にも話しがでた左右のローターの揚力差による頭上げ(あの時は誤解して右に傾くと思ってましたが、右回転ローターはジャイロプリセッションで頭上げし、プラス風の影響でテールローターの推力が上がり右に向くのが正解です)などもあるので高速になればなるほど高度一定飛行ではエレベーターダウンは必要で、向かい風と追い風でも操作量は違います。仮にジャイロがすごく優秀でこの補正もやってくれたとしてもスワッシュが傾いていることには変わりなく傾きが維持されればされるほどこの状態でピルエットすると飛行方向は変わるのではないでしょうか?

    余談ですがMASTER CP等の6軸と称してるジャイロはチョンと打つとそのまま勝手にどこまでも進んでいくのでこの傾向がありますが、扱いにくくて私は嫌いです。

    推測ですが、sachihoさんが考えた、PID制御だけじゃなくフィードバックの遅れの解消などの補正は、一般のシングルローター用の3軸ジャイロでは補正として持っているのではないでしょうか?ジャイロのグレードにもよりますが、自分がヘリを再開してからでも、新しいジャイロと最初に買ったジャイロでは性能に雲泥の差があります。V120なんかのジャイロは相当古い部類じゃないでしょうか?

    これは、自分でオートパイロットのAPM2.5を設定していて、最新の3軸ジャイロに比べるとジャイロの性能面では今一つ、特にテールに関係する制御は今2なのでも感じます。マニュアルには外付けジャイロは不要で十分な性能なんて書いてありますが、今では全く不十分です。クアッド用のコントローラーなので3Dもやらないしピルエットもしませんから必要ないんですけどね

    返信削除
    返信
    1. 本当に詳しい説明ありがとうございます。
      おかげでようやく見えて来ました。
      スティック入力が無く、スワッシュの傾きが100%ジャイロの意思によるものである場合、ピルエットしてもスワッシュの向きが変わらない=フィードバック位相差を補正する、となって、お互いの話が整合する気がします。
      今出先なので、後でもう一度よく考えてまとめようと思います。

      削除
  8. スティック入力があってもです。kbarお持ちですよね。機体水平でエレベーターダウン入れて、機体を水平のまま回転させて見て下さい。体感できると思います。

    返信削除
    返信
    1. はい。やってみます。
      一つ確認ですが、エレベータダウンを入れっぱなしですか?
      それともダウン入れて、スワッシュが傾いたらスティックを離して機体を回転でOKでしょうか?

      削除
  9. 返信
    1. やってみました・・・が、うまくnobさんのおっしゃる現象が観測できませんでした。

      まず一つには、うちの設定が悪いのかKbarでは(スロットルを上げていても)エレベータスティックを離したらすぐにスワッシュがほぼセンターに戻ってしまいます。
      nobさんのコメントどおりエレベータダウンをいれっぱなしで機体を手でピルエットさせると・・・機体につれてスワッシュも常に機体の前方向を向くように回転してしまいました。ただこれは、何件か前のコメントでnobさんもおっしゃっているように、このスティック入力まで補正で別の向きにされてしまうとファンネルができなくなるので、大きなスティック入力が入りっぱなしの場合はさすがに補正されなくて当然のようにも思います。

      結局うちのKbarでは機体を手でヨー回転させたときの効果があるかどうか判定不能でした。

      130XとFBL80の純正コントローラはスワッシュの傾きが、スティックを離しても保持されたので機体をピルエットさせてみましたが、スワッシュは機体と一緒に向きが変わってしまいました。この2機にはピルエット補正機能が無いようです。

      ちょっとスティック入れっぱなしの場合に関してはnobさんのコメントと完全にこちらの理解が一致していないのですが、少なくともスティックを離している場合はnobさんが最初から書いて下さっている、機体を回してもスワッシュの方向は動かない、という動作をする理由がわかったのでまずそこから記事にまとめてみます。

      削除
    2. 補足です。
      Kbarでスティックを入れた後戻してからのケースですが、わずかに残ったスワッシュ傾きが、ヨー回転で機体に付いてこないでスワッシュの傾きが地面に対して維持されているのを確認できました!

      削除
  10. おお、深い内容に(^^;

    まず、、、、3軸ジャイロの基本を間違えて認識していましたー!www
    あれは、角速度を検出しているのであって、加速度を検出しているのではないのですねー!www
    なので、、、、ジャイロに加速度センサーがあって、水平方向の動きを一定にする制御ができれば、3軸ジャイロとは別の制御であっても、動きとしてピル補正と同じことができるのではないかーっということで。

    まあ、それはとりあえず置いて。。。


    まず、nobさんのおっしゃるとおり、定速移動中は、一定の角度でスワッシュは傾いているはずですねー。
    そして、ピル補正が効いている場面では、コレクティブの入力が無くても、定速移動が維持されます(逆に、静止状態なら静止のまま)。

    一方、ピル補正が効いていない場面では、定速前進中に、コレクティブ入力がなくなると、機体が水平に戻り、前進が止まります(よね?)。

    つまり、通常時は、必ずしも機体の傾きを一定の保つのではなく、おそらく、コレクティブ入力がなくなると、ゲインに従い、機体が水平に戻る制御を電脳がしている(バー付きの場合のベル成分?ヒラー成分?どっちかに相当する動きを実現。。。)のに対して、ピル補正時においては、機体の傾きを維持している(すなわち、その傾きを維持するように電脳がスワッシュの傾きを制御している)ということだと思います。

    これは、もちろん速度や時間の長短には関係はないと思います。

    ということで、単純にざっくり言えば、ピル補正というのは、通常字とは異なり、コレクティブ入力が無い限り、機体の傾きを維持する制御ではないかと考えている次第です。

    って、すでに論点が違ってたらすみませんー!www

    返信削除
    返信
    1. ありがとうございますー。
      まず前半部分ですが、それは隊長、いわゆる6軸と3軸の切り替えというやつではないでしょうか! 6軸モードでのピルエットは簡単に定点でいくらでも回れるという記事をどこかで見た機がします。

      そして後半部分ですが、可変ピッチFBL機ってどれでも、前進中に(コレクティブじゃなくてサイクリック?またはエレベータ?)入力が無くてもしばらく傾きを保って前進しません…か?

      スティックを離すと水平に戻る機能は、隊長自身が前半で書かれているように、3軸ジャイロには水平が検出不可能であるため、6軸じゃない限り電子制御では実現不能です。

      ジャイロの姿勢維持補正が弱すぎると風の抵抗なんかで勝手に水平に戻ってしまう、というケースはあるかもしれませんが、それはピルエットを全くしなくても判別できる違いなので、今回の話題とはあまり関係ない気がします。すみません。。

      削除