Dropbox

さらに最新版ではいろいろと変わりました。v0.62での例はhttps://www.nkozawa.com/blog/archives/7178をご覧ください。

最新版導入したら随分と画面が変わっていました。導入などはこの記事を見ていただくとして新しい画面についてはPIDtoolbox v0.44を御覧ください。

BlackBoxログは奥深くなかなか完全に使いこなすことは難しいですが、なんとなく少しずつ使うようにしています。今までは標準のBetaflight Blackbox Explorerを使用していました。これは時系列での事象を確認するのに適したツールです。この動作のときにはpropwashが起きているとかスティックの動きに追従出来ていないとか、受信機からの信号が失われてfailsafeになる様子、あるいはクラッシュ後にdis-armする代わりに飛行モード切り替えスイッチ動かしているみたいな事も分かります。

もう一つのBlockboxを解析するツールであるPIDtoolboxについて簡単な使い方を調べたので、それについて書いてみたいと思います。私自身が使いこなすというレベルではないので走らせ方と初歩的な解説にとどまります。それすら間違ったことを書いている可能性を踏まえて読んでみてください。PIDtoolboxはログ全体を見渡して統計的な処理を施し、視覚に訴えるデータを表示するツールです。PIDの調整やジャイロのノイズに対して絶対値で語るだけの知識がなくても調整前後あるいは良い機体と悪い機体のデータをグラフで比較することにより問題点が見えてきます。

[ 導入 ]
PIDtoolboxはGithubにて開発管理が行われています。ダウンロードはreleaseページで行います。2020/09/10時点の最新バージョンはv0.392です。以下の話は、このバージョンでの話です。

Windows版もMac版もほとんど同じです。ダウンロードしたzipファイルを展開しruntime_installation_file/MyAppinstaller_webというプログラムを実行し導入作業を行います。このインストーラーの主な目的はMATLABという外部プログラムの導入です。ところが、ついでにPIDtoolboxをプログラムメニューにも登録します。これが曲者でWindowsスタートメニューあるいはmacOSのアプリケーションからPIDtoolboxを起動しても動きません。もうひとつの外部プログラムであるblackbox_decodeがうまく動かないからです。macOSでは予めblackbox_decodeを単独で一度だけ走らせて置く必要があります(野良プログラムを動かすための儀式を済ませておくためです)。
結局のところ、zipを展開したところにあるmain/PIDtoolboxを直接起動するのが良いようです。MATLABは必要なので先のインストーラーの実行はスキップ出来ません。

< 補足 > 2023/05/23
v0.61ではインストールされた場所からの起動して動くようになっています。導入時にblackbox_decodeを展開したフォルダーを指定するようになったことがミソのようです。

[ ファイルの選択と読み込み ]

Select File [A]とSelect File [B]と2つのblackbocログが選択出来ます。PIDやフィルターの設定前後のログを同時に表示して比較する事が出来ます。Windowsでは任意の場所のログファイルを開くことが出来るようですが、macOSではログファイルをプログラムのあるフォルダー(zip展開後のmain下)にコピーしておく必要があるようです。

< 補足 > 2023/05/23
v0.61で試したところ、ログファイルは任意の場所にあるものを指定するようになりました。逆にmainフォルダーはログファイルを一時的にコピーする場所になりましたので、そこにコピーして使用することは出来なくなりました。

ファイルを選択後”Load+Run”を押します。ログによってはSELECT LOG NUMBERというダイアログが出ます。たいていの場合はdurationの一番長いものを選べば良いと思います。

最初に現れるのはBlackbox Explorerと似たような画面です。横軸が時間で上のチェックボックスで選択したデータが表示されます。ここで重要なのは統計的解析に先立ってデータの範囲を選択しておくことです。st(s)とend(s)というフィールドを使用します。st(s)には予め2と入力されています。これで離陸後の安定飛行部分が指定されてます。end(s)はログの最後になっているため、着陸時の乱れたジャイロデータも含まれてしまいますので、適当に値を調整します。

除外された範囲はグラフ上でグレーアウトされるので視覚的に確認できます。

[ Spectral Analyzer ]
Spectral Analyzerボタンを押すと新しいウインドウが開きます。そこで表示したいデータを選択してRunボタンを押します。

この機能はノイズの分布とフィルターの効き具合を確認するのに適しています。そこで上の例ではGyro, Gypro prefilt, Dterm, Dterm prefiltを選択しています。prefiltはフィルターする前のデータです。残念ながらGyro prefiltは既定値のままでは取れませんので、ここでは意味のあるデータは表示されていません。

グラフの横軸はスロットルで縦軸は周波数です。Gyroの値の0から80Hzくらいは実際の機体の挙動から発生するものです、それより高い周波数はノイズあるいは異常振動と考えられます。スロットルを上げるとややノイズが多くなっていますが、Gyroを見る限り問題のない機体と言えます。実際に飛び方もモーターの熱も問題ありません。Dtermにノイズが多いようなので何かしら問題があるようですが、まだ良く分かっていません。

2-Dというチェックボックスを入れると周波数分布が表示されます。これを見るとDtermもまずまずフィルターされているので、問題ないのかも知れません。別の機体のデータではもっと綺麗なDtermグラフが得られるので、やはりちょっと気になります。

[ Step Resp Tool ]
データの比較例を紹介するためにまず2つのデータを読み込んでみます。

データBは既定値のPID, データAはD値を少し強くしたものです。

Step Resp Toolボタンを押すと下のようなウインドウが開くのでRunボタンを押します。

PID制御の状態を表したグラフです。操縦者はスティックを動かしてドローンをコントロールします。スティックの動きはFCで処理されてsetpointという値を作り出します。これはドローンが操縦者の意図にそって動いた時に出力されるべきGyroの値を示します。別の言い方をするとPIDコントローラーはGyroの値がsetpointを追従するようにモーターの回転を制御します。理想的にはBlackbox Explorerでsetpointとgyroデーターを表示した時にぴったりと重なることです。実際にはGyroが幾分遅れますし、オーバーシュートしたりなかなか安定しなかったりします。

Blackbox Explorerでは個々の動作について追従具合を見ますがStep Resp Toolではログ全体を見渡して総合的な追従具合を表現しています。立ち上がりの速さがレスポンスの良さを表現し、そのあと1に収束している様子を見ます。この例では立ち上がりでいくらかのオーパーシュートがあり、徐々に1に収束しています。

この例では、最初PIDを既定値で飛ばしたて得たデータが右側の状態です。試しにDを少し増やして飛ばしたのが左側です。左はサンプル数が少なくてギクシャクしたグラフですが、ヴァイブレーションとまでは言わないですが、どうも右より収束が良くない気がします。ということでDを増やしたのはあまり良いことではなかったように思えます。もともとの状態は悪くはない気がします。実験的にもうちょっとPIDを変化させて、このグラフが変わるかどうかを見てみたいと思っています。

[ PID Error Tool ]

これについては語られるほどの知識がありません。おそらくは左のグラフで幅が小さいほうが望ましいのでしょう。この場合、2つのログに大きな差はないものと思います。

[ PIDtoolboxを使うに至った事例 ]
ちゃんと飛ぶのだけれどモーターが加熱してしまう機体のログをBlackbox Explorer調べてみました。

モーターのトレースが小刻みに振動しています。他の機体ではもっとなめらかに変化しています。Gyroに注目するとPitchの様子が明らかにおかしいです。この時点ではPIDtoolboxを使う前でした。山の間隔を調べてみるとどうも80Hz付近のように見えたのでStatic Notch Filterで70-90Hzあたりを減衰させてみました。

これで飛ばしてみました。しかしながらログをみてもほとんど変化がありません。フィルターが思うように効いていないのか周波数を間違ったのか、そのあたりをはっきりさせるためにPIDtoolboxを使ってみることにしました。

Gyroのフィルター前のデータを取得するためにBlackboxにGYRO_SCALEDを指定した。

それで取得したログのSpectra Analyzerのグラフです。

左の2つが既定値のフィルター、右側が80Hzを中心としたstatic notchフィルターを入れたデータです。それぞれのGyroとGyro prefiltを表示しています。

– まずびっくりしたのは周波数的にはまんべんなく分布していることです。波形に特徴があるので特定周波数が特に強いはずですが、このグラフには表れていません。
– Gyro [B]を見ると80Hz付近が切り取られているのでstatic notchフィルターは確かに効いています。
– Gyro prefiltを見ると実は300Hzより上の周波数にデータが出ている、これらは効果的にフィルター群で取り除かれていたということを認識しました。300Hzから500Hzにかけてのスペクトラムが右肩上がりなのはスロットルポジションに追従して変化している、言い換えるとモーターの回転数に影響されたものだと推測出来ます。

それにしても、PitchのGyroの様子がおかしいという確認は出来ましたが原因も対策もよく分かりません。このSpectral Analyzerを見ると飛べているのが不思議に見えますが、Blackbox Explorerを見ると実際は機体の動きは取れていて、その波に小刻みにノイズが乗っている感じに見えます。FCの問題に思えますが、まだ結論は出ていません。

Trackback

only 1 comment untill now

  1. […] 導入方法などは以前の記事を御覧ください。 […]

Add your comment now