Emuflight 0.4.0 チューニングメモ 2 ~Tinywhoop~

先日のメモに引き続き、今日はEmuflightをセットした機体で4時間飛ばしまくったので、それをまとめます。

前回のはこちら

今日の内容としては、タイムアップに必要なセットアップ項目です。

いろいろ試していたらけっこう癖がつかめてきました。

基本はPIDとフィルター

なんだかんだ言っても、基本のPIDとフィルターが決まってないと他をいじっても駄目ですね。フィルターを極力高い周波数・高いQでセットし、Pを振動ギリギリまで上げて、Dも以上発熱までいかないくらいまで上げる。これはどっちにしても必要でした。

私はフィルターが

  • IMUF Q : 12000
  • IMUF W : 8
  • Gyro Filter : 150Hz PT1
  • D Fiter : 150Hz PT2 (セカンドフィルターなし)

PIDがおおむね

  • P : 70から90
  • I : 70から90
  • D :40から60

の間でセットしました。

仕様がまだ煮詰まってないので具体的な数字は載せていませんが、モーターはHappymodel 0802 22000KV、プロペラがGemfun 31mm 4prop、あとはMobula 6 の仕様です。

最初は19000KVで粘ってたんですが、どうしてもウォッシュアウトするため、22000KVに引き上げました。燃費はそこまで悪くないです。Happymodel 300mAh 1sで2分は飛びます。

Pの値は19000でも22000でもそんな変わらなくてよい感じでした。Iの値は19000でめっちゃ高めにしておいてコーナーでの落ち込みを抑止してたんですが、22000だと浮き上がっちゃうので上の数字にしました。

Dも最初かなり高かったんですが、ちょっと機体のバランスが崩れると異常に電気を食うのでさげて60以下にしました。ただ30だと応答性がわるいので40-60というところです。

このセットアップでおおむねきれいに飛ぶようになりました。

i decay のセットアップ

前回も説明した通り、i decayはI値の蓄積を早く開放するオプションです。最初はMAXの10にしてたんですが、どうも曲がりが悪く、6に落としたところ、踏ん張ってほしいところで舵が抜ける現象に直面、Iの開放が速すぎると判断し、最終的には標準値の4になりました。

この舵の抜け方が独特で、トレースしたいラインに乗ってるのに急にウォッシュアウトしたかのようなラインに切り替わるんです。i decayが高すぎるとそうなるみたいです。結構難しい。

Rate Dynamicsのセットアップ

私はアクロで飛ばしてるので、ここも入れてみました。

でもいまいちどうセットしたらよいかわからなかったので、公式WIKIの値を入れました

Racing – These settings should smooth center-stick a little while still providing an aggressive and responsive feel overall.

# racing
set rate_center_sensitivity = 130
set rate_center_correction = 35
set rate_center_weight = 30
set rate_end_sensitivity = 115
set rate_end_correction = 20
set rate_end_weight = 10

これですね。

このオプション不思議な効果があり、標準値の値より舵が滑らかにつながります。かといってレートを落としてるわけではないです。なので旋回速度を落とさず、滑らかなターンができます。これはいい感じ。

飛びはこんな感じ

最速クラスは13秒台らしいです…

がんばろ…

Emufilght 0.4.0 チューニングメモ ~Tinywhoop~

お久しぶりです。

ブログ放置気味でしたがちょっとチューニングについてメモ書きしようと思いまして、つらつら書きます。

あくまでメモ書きレベルですが、Emuflight 0.4.0のチューニングについてある程度参考になればと思います。

ちなみにMobula 6 のレギュラーエディションでいろいろテストしてます。

Emuflight 0.4.0ってぶっちゃけどうなの?

ここではBetaflightを普段使っている人向けに書くと、Emuflightはちょっとセットアップに苦戦すると思います。なぜなら単純にパラメーターが多くて、考え方がBetaflightとちょっと異なるからです。

Betaflightと比べて、Emuflightはスティックの入力のフィーリングを細かく変化させることができます。その分、セットアップに迷いやすいです。私はEmuflightの旧バージョンまで好きになれなったのですが、それはセットアップが決まらないことにありました。

主にBetaflightにない項目として、

  • SPA
  • i-Decay
  • Feathered PIDs
  • Motor Mixers / Thrust Linearization
  • Smith Predictor
  • IMUF
  • Rate Dynamics

ざっと私のわかる範囲でもこれだけあります。もっと他にもありますが、EmuBoostなんかはFeedforwardと目的は同じですし、I-term Relaxは同じ役割です。

が、改めていじってみると、部分的な機能だけ使ってもかなりいい感じに仕上がります。

順に私のわかる範囲で解説します。

SPA:スティック入力に対するPID変化

スティックのセンターと端でPIDを乗算できます。

SPAが1なら特に変化なし。Betaflightと同じです。SPA-Roll-P-0.80ならロール軸の入力がマックスのとき、P値を現在値×0.8にできます。これは各軸とPIDそれぞれセットアップできるので9個のマトリクスになります。

これはまだ私は使いこなせていません。なのですべて1にしています。利用用途としては、フリースタイルの時の激しい動きと緩やかな動きでPID変化させられるので、いいところどりができそうです。Rate Dynamicsもあるのでここらへんうまく組み合わせると非常に柔軟なセットアップができそうです。

i-Decay:I値の高い時のネガを消しつつ高い値を実行できるようにする

ちょっと動作を追い切れていませんが、要するに「素早い動作の時のI値の蓄積(i-trem windup)を参照して素早くI値を減少させる係数」らしいです。I-trem Relaxとちょっと似てますが、Relaxが溜まるのを抑制するのに対し、Decayは減少を加速させます。

I値が過剰にたまると、動きを収束させるのに余計に時間がかかるので、適切に下げたいという目的です。逆にI値が十分に高くないと、動きが一向に収束せず、不安定な動きにつながります。

これを二次的にDecayとRelaxで制御できるわけです。

私はDecayは8と高めのほうが良い気がします。(10がマックス)

高くしてもそんなにネガを感じませんし、下げると激しい動きの際に動きがバタつきます(Iの蓄積が開放されていないとこうなる)

基本的には4~8で好みのセットアップでいいと思います。

Feathered PIDs:D値の挙動の調整

よくKISSはなめらかでBetaflightはそうではない、と言われるポイントはここだと思われます。Feathered PIDsが0のときKISSの計算(エラーベース)、100のときBetaflightの計算(測定ベース)になるそうです。

コードをみてみると(src/main/flight/pid.cのcalculate D component)、Gyroベースでの計算がエラーベース、Setpointベースでの計算が測定ベースと思われます。

細かい話を抜きにすると、原理的に素早く応答するのはFeathered PIDsが0のときですが、細かな動きに反応しすぎるかもしれません。100の時はセットポイントの差が生まれてから動くので若干鈍いはずですが、滑らかになりそうです。

私は0がいいですね。KISSとおなじ計算方法です。ちなみに50は半々になりミックスできます。これは言葉だとフィーリングが伝わりずらいのでぜひ0と100で飛ばして比較してください。

Motor Mixers / Thrust Linearization:モーターのミキサーを最適化する/推力の線形化

これかなりトピックだと思います。

Motor Mixerは通常のミキサーの問題点をいくつかのアプローチから解決します。詳しくは調べ切れていませんが、ミキサーが飽和するゼロスロットル付近とフルスロットル付近の挙動がかなり変わります。2PASSを使っていますが、Legacyと比較してよりスムーズにつながる印象です。

Thrust Linearizationは推力線形化という形で、スロットルに対してリニアな推力を提供します。実は、プロペラとモーターの組み合わせによって、スロットルはエキスポがかかった状態になっており、まっすぐではありません。これをあらかじめ補正し、直線的にします。

なので、どのスロットル位置でも立ち上がりがリニアになり、操作性が向上します。

もう一つは、2PASS時にmixer_lazinessオプションをつけることで、推力線形化とミキサーの双方でいいことがあるようです。解説読んでもよくわからんので、誰か教えて…

Smith Predictor:スミス予測器を使用

スミス予測器って何ぞや?

って疑問には、文献調べてくださいってしか言えない(制御工学の知識がいるし僕も説明しきれない)ですが、具体的にはIMUの実際の入力値と出力されるデジタル値の間に遅延があり、これを見かけ上PIDループから切り離すことができます。

つまるところ、Gyroのもともと持っている遅延がPIDループに入っちゃうとデメリットなので、それを分離することでよりよいPID計算しましょう、ってことです。

基本的にはONですね。OFFとの差が微妙ですが、動きの正確性が増すイメージです。デメリットを感じません。

IMUF:カルマンフィルターベースのIMUフィルター

これもちょっと知識不足で申し訳ない、通常のLPFとIMUFの関係性が整理しきれていません。

つまるところ、Gyroの値をカルマンフィルターかけるってことです。値が高いほどGyroを信頼しフィルタリングが薄くなります。低いと強いフィルターがかかり滑らかになります。

結構飛びが変わりまして、3000と12000だと全然違います。ぱっきぱっきに動くのが12000で、3000はかなりなだらかです。

Tinyは高めが合うと思います。私は12000です。

その他Wの値の調整とかもありますが、これはフィーリングなのでいろいろ試してほしいです。

Rate Dynamics:スティックレートのダイナミックな変化

これもちょっと私は追い切れていませんが、要するにスティックのセンターとエンドで動的にレートを変化させるオプションです。

いわば、プロポのスティックの動きそのものを仮想的に変化させます。

なので、PIDやフィルターと分離して動きのチューニングが可能です。

難しくてまだいいセットアップが見つかりませんが、公式のWIKIにいくつか凡例があるので試してみてください。

とりあえず、Betaflightと全然違うけど、うまく決まるとすげー滑らかに飛ぶ

これがEmufightの特色ではないでしょうか。

特に上で説明した特徴的なセットアップを活用できると、Betaflightでは絶対できない動きを実現できます。

弱点は答えが多数ありすぎて迷子になることです。難しい。

また分かったことあったら追記します。

Redpineプロトコルについて

どうもです。

最近はFPVの腕を磨くために毎日ドローンしてるshyachiです。

1カ月くらい前から

ドローンの腕めっちゃ落ちてるやんけ!

ってなりまして、改めてより高みを目指す所存でございます。

まあ、さぼってただけですけど(爆

さて、本題。

Redpineプロトコルについてお話ししたいと思います。

“Redpineプロトコルについて” の続きを読む