Dropbox

Betaflight filter tuning

PIDチューンは、謎が多くFPVドローンを始めてからずっと良い解説を求めて来ました。多くのことをYouTubeのUAV Techチャネルで学びました。最近では同じくYouTubeでChris Rosserさんのチャネルに注目しています。とても詳細な技術的な事柄をわかり易く解説し実践的なチューニングにつながる動画を公開されています。

この6月からPIDチューニングについての解説をいくつかの動画で公開されています。それらについて自分の理解を深める意味で日本語で要点について書き起こしてみることにしました。今回は最初の回でフィルター設定についてです。結果としてほぼ全てのシーンについて日本語訳をつけることになりました。加えて私自身の解釈なども少しだけ書いてあります。

最初にあるのがYouTube上のタイムスタンプです。グラフや画面コピーが沢山出てきますので動画を見ながら日本語を見てもらうと理解がしやすいかと思います。文中、カタカナになったり英字表記だったりして読みづらいかもしれませんがご容赦ください。

解説の前提は、
– RPMフィルターの設定が出来ていること
– 5インチ機を想定している、whoopにも通じることがほとんど
– Blackboxログが取得出来るFCであること、また説明ではOnboardフラッシュを念頭においています
– Blackboxログを見るためのBetaflight Blackbox Log Explorerが導入されていること

Timestamps:
0:00 – Intro

0:57 – Check the Mechanicals
機械的物理的チェック
– ネジの緩みが無いこと(強く締めすぎるのもまたよくありません)
– FCの上に配線を通していないこと、とくにジャイロ付近に注意 -> もしジャイロチップに配線が当たると大きなノイズの原因になります [これは盲点でした、まったく気にしたことがないです、小型機では完全にFC上をフリーにするのは難しいですがジャイロノイズを念頭においた配線を心がけたいと思います]
– ESC(電源線)にキャパシター(コンデンサー)が付いていること(6Sでは必須、4Sでも強く勧めます)
– Bidirectional D-shot(RPMフィルター)が設定されていてエラー0%であること
– プロペラは通常の飛行を想定したものであること -> もし少し曲がったプロペラで飛ばす事が多いのならばその状態に
– VTXアンテナはしっかりと固定されていること、前後にぐらつくことがないように -> 写真のように長いアンテナをTPUで出来たマウントに取り付けるのは理想的ではありません、短いアンテナが良いですが、長いアンテナを使う場合はPLAなどの素材でマウントを作った方が良い -> アンテナの振動が機体の振動につながります

3:35 – Fly a tuning flight on defaults
フィルターとPIDsを既定値のまま飛ばしてログを取ります
–  チューニング飛行には以下の動作を何度か行います
> フルスティック360度スナップロール
> フルスティック360度スナップフリップ
> フルスティック360度スナップヨースピン
> 3秒以上かけてゆっくりとスロットルを0からフルスロットルまで動かす
– 既定値でモーターはスムースに回転すべきです
– もしラフな感じならば最初の物理チェックに戻ります -> 特別に大きな機体などでは強いフィルターを設定しないとスムースにならないかも知れませんが皆さんが飛ばしている7インチ以下のサイズならばBF既定値で問題ないはず
– フライトの前にログを設定します

5:31 – Set up logging in BF
Betaflight Logの設定
– Blackbox logging rateは2KHzにセット
– Blackbox debug modeにはGYRO_SCALEDをセット [フィルター前のジャイロデータが取れます]
– Onboard chipの場合、Free spaceが十分にあることを確認、Erase FlashボタンでFeee spaceが得られます
– (変更した場合)Save and rebootを押します

7:13 – Filters 101
フィルターの設定にあたりセオリーから解説します
– 2つの種類のフィルターがあります
> Low pass
> Notch
– Low passは高い周波数を減衰します
– Notchは特定の周波数近辺を減衰します

8:01 – Low pass filter
– Low passは高い周波数を減衰します
– cut-off周波数付近から減衰し始め高い周波数のノイズをより強力に減衰する
PT1(single pole):
– 位相遅延(位相シフト)が小さいがフィルター効果も小さい
Bi-quad(double pole):
– Cut-offが鋭く、よりフィルター効果があります、また位相遅延も大きい

10:09 – Notch filter
– Notchは特定の周波数の周りを減衰します
– 目標周波数を大きく減衰し、その両側は減衰が少なくなります
– 目標周波数を低く、また幅広くするとフィルターを実行するにあたり遅延が大きくなります

11:44 – Filter Delay (Phase Delay)
– すべてのフィルターは位相遅延を引き起こします
– これはジャイロが動作を検知してから信号がPIDループに到達するまでの時間差になります
– これはフィルターの数学的な必要性から引き起こされるものでありFCの処理速度とは関係ありません [ちょっと考えてみると分かりますか、信号の変化から周波数を見極めるためにはしばらく変化を見続ける必要があります、どこかで見かけたのですがsingle poleで1/4周期必要らしいです]
– cut off周波数が低いほど遅延も大きくなる [位相で遅延するわけですので実時間を考えると周波数が低いほど遅延時間が長くなります、極端な例を言うと限りなく0Hzに近い周波数を見極めるためには無限の時間が必要になります]
– フィルター遅延はクワッドコプターの性能、とくにpropwashの扱いに影響を与えます
– 位相遅延は小さいほど良い、すなわち機体の振動、モーターの異音や加熱が出ない状態で
最低限のフィルター設定が望ましい

14:31 – Dynamic filtering
– Betaflightにはdynamic low pass filtersとdynamic notch filtersがあります
– フィルターの機能としては先に話したものと同じです、ただcut-off周波数が飛行中に変化するのです
– dynamic low pass filtersはスロットルポジションに連動して変化します
– dynamic notch filterはノイズのピーク周波数を追いかけて変化します
– RPM notch filtersはESCから得られるモーター回転数に合わせて変化します

15:36 – Betaflight filter settings
– Gyro Lowpass Filters
 > Gyro Lowpass 1 Dynamic Filter: 高い周波数を減衰するフィルターです、周波数はスロットルポジションに連動して変化します、Min Cutoff Frequency=200はスロットルを最小にしたときのcut off周波数です、Max Cutoff Frequency=500はスロットルを最大にした時のcut off周波数です、その中間ではスロットルに応じて直線的に変化します、Dynamic filter type=PT1ということであまり過激ではないフィルタータイプです
> Gyro Lowpass 1 Filter: その下はstatis(静的)なフィルターです、cut off周波数は変化しません、もしスロットルポジションによる周波数の変化を望まない場合は上のdynamicフィルターをオフにして、このstaticフィルターをオンにします
> Gyro Lowpass 2 Filter: これは上と同様のstatisフィルターです
– Gyro Notch Filters: これはstatisなnotchフィルターです、通常は必要ないと思います、center frequencyはターゲット周波数です、cutoff frequencyは50%の減衰が得られる周波数です [centerを中心に幅を持たせて減衰するわけですが、その下側を指定するのがcutoffです、centerから同じ幅で上側にも50%減衰するポイントがあります]
– Gyro RPM Filter: Hurmonics Numberは回転数の何倍の周波数までフィルターするかを指定します、3が適切な番号と思います、これでnotchフィルターのターゲット周波数としてモーターの回転数、モーターの回転数の倍、モーターの回転数の3倍が適用されます、2つ目の数値はMin Frequencyです、RPM notch filterの下限周波数を示します、低すぎるターゲット周波数は遅延が大きくなるので良くないです
– Dynamic Notch Filter
> Dynamic Notch Width Percent: [動画ではただ幅と言っています、2つのDynamic Notch Filterの間隔のような感じみたいです、0を指定するとDynamic Notchは一つだけになります、これがRPMフィルター使用時のおすすめです]
> Dynamic Notch Q: Notchフィルターの幅あるいはシャープさを表す係数です
> Dynamic Notch Min: ノイズをスキャンする下限周波数
> Dynamic Notch Max: ノイズをスキャンする上限周波数
[Min/Maxの間で強いノイズピークを見つけ出してフィルターしてくれる便利なものです]
– D Term: 右側はGyroデータではなくD Termを対象としたフィルターでそれぞれの定義はGyroのものと同じです
– Yaw Lowpass Cutoff Frequency: PT1フィルターでcut off frequency 70になっています [軽く流されています、存在意義など他の資料を見ても良くわからなかったです]

20:58 – Viewing your Blackbox log
– BlackboxタブでActivate Mass Storage Device ModeをクリックするとFC上のフラッシュチップがPCにドライブとして接続されます
– btfl_001.bblファイルをダブルクリックしてBlackbox Explorerを起動します
– ログが開いたらGyro scaledをクリックしてスペクトログラフを開きます [Graph setup/+Add graph/Debugの追加が必要かも]
– 左上でFreq. vs Throttleを選択します
– 右上のスライダーでゲインを調整し、3軸とも確認します

23:00 – What is each filter best at? – Gyro
– RPMフィルターがモーターノイズに最適です
– dynamic notchはフレーム共振にロックして取り除きます
– 上手に組み上げられていればその他のフィルター(low passなど)は必要ありません
– よって、私達はしばしばそれらをオフにします

25:54 – What is each filter best at? – D Term
– D Termが少しややこしいのはデリバティブ機能 [PIDのD] の性質として高い周波数の動きをより増幅するからです、そのためもし何もフィルターを使用しなかった場合、高い周波数のノイズが増幅されPIDループに過剰に作用し振動やモーターの加熱、フライアウェイなどにつながります
– ですから必ずlow passフィルターが必要です
– もしgyro low passフィルターをオフにしたらD Termのlow passフィルターは少し強くした方が良い
– 一般に、この方法 [Gyro low passオフ、D Term low pass強め] の方が位相遅延を少なくしフィルターの質を改善出来る

27:24 –
– RPMフィルターを使用すると縦線がしばしば現れます
– これは機体の共振による典型的な症状です
– これはスロットルの位置に関係なく一定の周波数を示しているのでstatic(静的ローパス)フィルターを使います
– クリーンな設定であれば、ひとつの100Hz Biquadフィルターから試すのが良い、もし振動やモーターの加熱が見られるならば90とか80Hzを試してみます、もしモーターの加熱などが見られなければ105, 110, 120Hzなどを試します、決して70Hz以下にはしないでください [遅延も問題になりますし、低い周波数には実際の機体の動きが含まれているので安易にフィルター出来ない]

29:42 – My recommendation for clean builds
私のクリーンビルドのフィルター設定
– gyro low passフィルターなし
– gyro notchフィルターもなし
– RPMフィルターを使用(設定値は画面を参照)
– dynamic notchフィルターは使用(設定値は画面を参照)
– d termは画面の通りひとつのlow passフィルターのみ設定(設定値は画面を参照)

31:50 – Dynamic notch and the AOS 5
AOS 5という共振を極力小さくしたフレームの話しなので詳しい日本語解説は割愛、簡単に言うと注意深く共振を抑えたフレームならばgyro dynamci notchフィルターさえも必要ないそうです

33:29 – Outro

[ スライダーによるフィルター設定との対比、スライダーを動かして数値を眺めてみると分かりますが、Gyro/D termそれぞれのLow passフィルターの周波数を変化させています。スライダーを左に持っていくと周波数を低く、右にすると周波数が高くなります。これでモーター加熱やフライアウェイの発生しない範囲で遅延を小さくするポイントを見つけるというのは合理的な手法です。この動画ではスライダーだけでは実現出来ないGyro Low Passフィルターをオフにするといった積極的な手法を実行しています。]

Trackback

no comment untill now

Add your comment now