Dropbox

GoPro互換マウントを搭載したFPVドローンにInsta360 GO 3を載せるべくマウントを作成しました。

STLファイルはThingiverseにて公開しています。
https://www.thingiverse.com/thing:6125159

またマウントの販売も行なっています。
https://dskozak.stores.jp/items/64b4f64502b7ef003222cdb5

Insta360 GO 3をsub100なドローンに載せるべくマウントを作成しました。RunCam Thumb Proのマウントと互換性を持たせて現在RunCam Thumb Proを載せているドローンにそのまま搭載できるようにしました。

やや重いですが、何とか飛べます。リカバリー失敗して接地したりもしましたが、アクロバティックな飛び方も出来ました。

この動画は3SなGG BONE FIVE F/Sですが2Sで飛ばしているTinyAPEでも同様に飛ばせました。実はかなりダメダメなフライトでしたがスタビライズでスムースになりました。

Insta360 GO 3をFPVで使ってみた感想をいくつか書いておきます。
– 初代と同じく後から縦横比やスタビライズの掛け方を変更できるようにするためにはFreeFrame動画で撮影する。FPVにはFreeFrameが適しています。これだとGyroflowも使えます。
– GO3本体のボタンにFreeFrame動画を割り当てましたがポッド(液晶の付いた部分)とは常に接続されているのでドローンを地面に置いたあとにポッドからプレビュー画面を確認の上でポッドから録画スタートする方が便利だと思いました。
– 64GBモデルでバッテリー4本飛ばしてストレージ使用量20%でした。十分とは言えますが、128GBにしておけば良かったかなと少し思います。

マウントのSTLファイルはThingiverseにて公開しています。
https://www.thingiverse.com/thing:6123410

またマウントの販売も行なっています。
https://dskozak.stores.jp/items/64b21ef5e29535006d3865bd

いずれFPVドローンに載せるつもりのInsta360 GO 3を取り急ぎ車に載せて運転の様子を撮影してみました。

入手したのは64GBの標準キットです。GoPro標準マウントが必要な場合は別売のマウントが必要ですが、一般的な用途であれば標準キット(通常版)で十分です。すでに紹介動画も多数ありますし、ここでは詳細は省き使ってみた感想的なことを書いておきます。

GO 3の今までになかった特徴は液晶パネル付きのポッドに取り付けると一般的なアクションカメラ的に使えるところです。まずはアクションカメラ的な使い方を試してみます。

車のダッシュボード上にキット付属のスティキーパッドで良い具合に固定できます。簡単に剥がすことが出来るのですが、普通に運転していて動いてしまうようなことはないという絶妙な粘着力です。また車のUSB充電コネクターから給電しながら録画すれば電池切れの心配はありません。

最初はFreeFrame動画で撮影しました。これは最初のInst360 GOと同じで、センサー全体を生かした四角い動画を収録して、ポストプロセスにて16:9, 9:16など画像縦横比の変更や手ブレ補正をかけるモードです。2688×2688 50FPS、約80Mb/sで録画するため64GBの内蔵ストレージは1時間30分ほどで一杯になってしまいました。iPhoneにデータを吸い上げてから続きのテストを行いました。iPhoneにコピーしたデータはiPhone上のアプリケーションで処理することも出来ますし、生データをiPhoneからPCにコピーしてPC上のアプリケーションで処理することも簡単に行えます。

64GBのストレージでは長時間ドライブの記録は無理かとも思いましたが、今回のGO 3ではアプリケーションによるポストプロセスが必要のない撮って出しの出来る動画撮影も出来ます。解像度を低めにすれば大幅に記録容量を節約できます。64GBでも1080P/30FPSなら4時間以上、1440P/30FPSならば3時間弱の録画が可能です。ということで1440P 30FPSでも録画してみました。

録画した結果はYouTubeにアップロードしています。

ISO/シャッタースピード全て自動にセットしています。トンネルの出入りでの明るさ調整も滑らかで好印象です。FPVドローンでのGoPro撮影では少なくともISOを固定しています。そうしないと木陰から陽の当たるところに出る時などに不自然な明るさの変化がありました。GO 3はもしかすると自動のままでも大丈夫かもしれません。夜間の撮影はややノイズが多いような気もします。

色々なメカなどとても良く出来ていて所有するだけでも満足感が得られます。唯一、後悔しているのは128GBにしておけば良かったなということくらいです。

OWON HDS2102Sは多機能ですが、ここでは主機能である2chオシロスコープについて基本操作を書いておきます。操作パネルが分かりづらいので手っ取り早く使うための手順を書いておきます。その他の細かい事柄は徐々にわかってくるものと思います。

オシロスコープの基本操作はわかっているものとして書いていきます。プローブはx10が規定値です。またプローブの調整についても書きません。

プローブを一本だけ使って1chの操作から始めます。電源をオンにして何か適当な波形が出るところを計測してみます。何もなければスコープの右側にある矩形波が出ているテスト端子に接続します。まずは[Auto]ボタンを押します。だいたい何となく波形が表示されるように自動的に設定されます。これを起点に細かい調整を行います。

[ 水平方向の調整 ]
水平方向、時間軸の調整を行うにはまず[HOR]ボタンを押します。一瞬、方向ボタンの説明が出ます。中央の方向ボタンの上下でタイムベースのレンジが変わります。波形の幅が変化します。一マスあたりの時間は画面の上の方に”M:500us”の様に表示されています。方向ボタンの左右を押すと波形が左右に移動します。最初はトリガーポイントが中央にありますが、それが少しづつ変化します。

[ 垂直方向の調整 ]
垂直方向、電圧軸の調整を行うには[CH1/2]ボタンを一度押します。水平方向の時と同じく方向ボタンの説明が出ます。方向ボタンの左右でレンジが変わります。一マスあたりの電圧は下の方に”1 1.00V”の様にチャネル番号と共に表示されています。方向ボタンの上下で波形が上下に動かせます。

[ トリガー ]
複雑な波形の場合、自動で設定したトリガーポイントでは都合が良くないことが多いです。[Trig/△]ボタンを押して、上下のボタンでトリガーポイントを移動します。初期状態では波形の上昇時にトリガーがかかります。下降時にトリガーがかかるように変更するには[Trig/△]ボタンを押します、ファンクションキーのメニューを2/2を出します。これは必要に応じて[F4]ボタンを押します。[F1]ボタンを押してSlopeを変更します。トリガーの情報はスクリーン右下に表示されています。

[ 2ch測定 ]
プローブ2本使って[Auto]ボタンを押せばそれぞれのチャネルが上下に適当に配置されます。[CH1/2]を押すたびにCH1とCH2の選択が切り替わり、それぞれで垂直方向の調整とカップリングなどチャネル毎の設定を行います。トリガーは初期状態ではCH1に設定されています。CH2でトリガーを取る場合は[Trig/△]ボタンを押します、ファンクションキーのメニューを1/2を出します。[F1]ボタンを押してSourceをCH2に変更します。

これだけ分かっていれば、とりあえず普通に使えます。シングルショット、画像の停止、画面上の2地点間の時間差の測定など必要な機能は揃っていますし、基本操作が分かればメニューを探って行けば見つかります。

2020年に剥きプロとInsta360GOが登場し小さいFPV機にも録画用のカメラを載せることが普通になりました。それ以来、わたしのFPVドローンには何かしらカメラを搭載しています。マウントは既製品がほとんど存在せず3Dプリンターで部品を作ってきました。ドローンに付属しているマウント部品があれば、それに合わせてカメラ側のマウントを作るし、カメラに良いマウントが付いていればそちらに合わせたてドローン側を作ります。問題は互換性のないマウントを複数持つことになり、カメラを別のドローンと入れ替えることが簡単ではないことです。

大きいものならばGoProマウントというディファクトスタンダードがあります。小型機用も独自にマウントを共通化したいという思いはいつも頭のどこかにありました。

最近RunCam Thumb Proを活用することが増えてきて、その付属マウントがちょうど良い大きさで作られていることが分かりました。RunCamのサイトには図面もありますし、これを活用することにしました。

[ 継ぎ手部分のモデル ]
 

STEPファイル
機体ベースのSTLファイル
カメラ側のSTLファイル
RunCamの図面は余裕が考慮されていないので少し隙間を与えています。PLAで出力して軽く噛み合わせることが出来ます。

とりあえず成果物は二つあります。

[ RunCam Thumb ]

STLファイルはThingiversにあります。
https://www.thingiverse.com/thing:6074400
出力品の販売もあります。
https://dskozak.stores.jp/items/6486d2ef7e9540002bfca556

[ Caddx Peanut ]

STLファイルはThingiversにあります。
https://www.thingiverse.com/thing:5012350
出力品の販売もあります。
https://dskozak.stores.jp/items/648aba1183d26a002e8d3ef6

どちらも過去に紹介したRunCam Thumb Pro用のマウントを搭載した機体にそのまま搭載できます(電源ケーブルは別の話しになりますけど)。
TinyApe用RunCam Thumb Proマウントの作成
GG BONE FIVE F/S用のRunCam Thumb Proマウントの作成

信奉するChris RosserさんのビデオBetaflight 4.4 Tuning Guide + Tips and Tricks for the BEST tune!で室内でもPIDチューニングが可能であることが紹介されていました。最近の小型AIO FCにはブラックボックスが搭載されるようにもなりましたし、室内機でも本格的なPIDチューニングを試してみるしかないです。

手順についてはChris Rosserさんのビデオを見ていただくのが間違いが無くてよいのですが、実際にわたしが試したチューニングの様子を紹介します。

チューニングを行ったのはSub250 Whoopfly16です。75サイズの1Sドローンで屋外でも軽快に飛行できます。

チューニングはPIDtoolboxを使用してブラックボックスログを確認して行います。

[ RPMフィルター設定 ]
 
双方向DSHOTを使用しRPMフィルターを有効にしておきます。モーター極数の設定も忘れずに変更しておきます。ざっくり言うと小型モーターは12, 大きいのは14ですが、実際にモーターベルに付いている磁石の数を数えるのが確実です。

[ RC_LINKプリセット ]

RC Linkに合わせたプリセットを適用します。これによってRCスムージングとFFが適切な値にセットされるはずです。

[ ブラックボックスの設定 ]
ブラックボックスログレートを2KHz, デバックモードにGYRO_SCALEDを指定しておきます。

[ フィルターの設定 ]

RPMフィルターを使用した場合のChris Rosserさんのオススメにしました。Betaflightの規定値よりだいぶ軽くなっています。ジャイロの静的フィルターは使わずRPMフィルターと動的ノッチフィルターだけを使用します。D値ローパスフィルター1は画面のように変更します。周波数は機体サイズによって変わります。詳細は最初に紹介したビデオの12:28にあります。D値フィルターはこのひとつだけです。
フィルターは効果さえあれば軽い方が良いです。余談ですが軽いというのはプロセッサー負荷よりもジャイロデータのフィルターによる遅延の少なさという意味合いが大きいです。軽くするためにはフィルターの種類を少なく、かつカットオフ周波数を可能な限り高くすることが必要です。

[ ジャイロノイズの確認 ]
ジャイロノイズを確認するためのテスト飛行はスロットルを滑らかに最小から最大まで動かし様々なモーター回転値でのデータを取得するのが理想です。屋外ならば100%スロットルまで試します。室内テストではなかなか最大値は難しいので可能な範囲でスロットルを動かします。
取得したブラックボックスログをPIDtoolbox/Spectral Analyzer/Freq x Throttleで解析します。

左からフィルター前のジャイロ値、フィルター後のジャイロ値、D値のフィルター前と後です。一番左のグラフの取得にはブラックボックスデバッグモードのGYRO_SCALEDが必要です。ジャイロの下の方で光っている部分は実際の機体の姿勢を表す真のジャイロデータです。100Hzより上に現れるデータはノイズと考えて良いです(クラッシュした時は別ですけど)。フィルター前のジャイロデータで右上がりの濃いデータがあります。これはモーターからくる振動です。横軸のスロットル位置、すなわちモーターの回転数に比例してノイズの周波数が上がっていることを示します。これを効果的に取り除くのがRPMフィルターです。
このグラフを見る限りフィルターはうまく働いているようです。D値の方は詳しくありませんが、 他の機体のデータと比較しても悪く無い方と思います、機体の固有振動などがあるとスロットル位置に関係なく一定の周波数のノイズが現れることがあるかもしれません、その場合は静的ノッチフィルターで対処する必要があります。

テスト飛行後に念の為、モーターが加熱していないかどうかも確認しておきます。

[ PIDチューニング ]
いよいよPIDチューニングです。室内でアングルモードで行います。PID値の変更はスライダーで行います。Betaflight ConfiguratorでもOSDメニューでもどちらでも調整出来ます。まず最初にI強度を0にします。もしアクロモードでチューニングを行う場合はFF値も0にします。

まずは現状の確認です。なるべく色々とスティックを動かし20秒ほど飛行します。ブラックボックスデータを所得しPIDtoolbox/Step Resp Toolで解析します。

このままでも普通に飛ばせそうにも思えますが、ややオーバーシュートして、その後に波打っているのを直していきます。

最初に見出すのはPDバランスです。調整するスライダーはP&I強度です。実際のところD値を固定してP値を探る作業になります。現状ではオーバーシュート気味なのでP値を小さくする方向で素直に収束するところを見つけます。P&I強度を徐々に下げて行って取得したデータをひとつのグラフで表現しました。

本来は1に収束するはずですが、1より少し大きいところで収束しているのは謎ですが、軌跡の形状だけで判断してみます。なかなか微妙ですが水色(RollのP値が22のもの)が一番理想に近いように見えます。これはP&I強度が0.5のものです。

次に基準値倍率設定の最適値を探ります。上の設定でP値がだいぶ小さくなったのでレスポンスがかなり遅くなっています。倍率設定でPDバランスを変えることなく両方の値を変更出来ます。軌跡が乱れることなく素早く立ち上がるように設定します。目安としては規定値のPに近くなるところが良いのではないかと思います。

赤が基準値倍率を2.0にしたものです。YAWをみるとちょっと強めすぎにも思えますが、このまま進めます。もし基準値倍率が2.0では足りない場合の調整方法についてはビデオの23:31からご覧ください。

I値(アクロの場合はFF値も)を元に戻して最終確認です。

3軸ともなかなか良い感じになりました。ややオーバーシュートしてすぐに安定しているのが良い設定と思います。

PIDスライダーの最終的な状態は以下の通りです。

[ 動的アイドル値の設定 ]
Chris Rosserを信用して1.6インチでのおすすめ値の94を設定しました。28:41に解説があります。ここで各プロペラサイズと推奨値が書かれています。1.2インチについては推奨値がありません。室内飛行では必要ないからかもしれません。もし設定するとすれば1.6インチと同じにしておけば良いのではないかと思います。

以上でチューニングは完了です。正直なところわたしの飛ばし方ではチューニング前と後で変化を感じることはありませんでした。

以前、紹介したPIDtoolboxの使用方法と基本的には変わりませんが新しいバージョンでの手順を説明しておきます。macOSでの例ですがWindowsでも概ね同じだと思います。

導入方法は、https://www.nkozawa.com/blog/archives/7160に書いてあります。

[ ログの取得 ]
Blackboxログを取得する際にはBlacboxデバッグモードにGYRO_SCALEDを指定しGYROのフィルター前のデータを取得するようにします。また、レートは1KHz2KHzがお勧めだそうです。

[ PIDtoolboxデータ読み込み ]
macOSにおいて古いバージョンではPIDtoolboxが存在するフォルダーにログをコピーしてから読み込みを行なっていましたが、最近のバージョンでは任意の場所にあるログを読み込めるようになりました。内部的にPIDtoolboxと同じ場所に一時的にログファイルをコピーするようになったので、ここにログファイルを置いておくことは出来なくなりました。
ファイルの読み込み方法は以前と同じで右上にあるSelectボタンで行います。ファイルダイアログが開くので目的のログファイルを選びます。もし複数のフライトが記録されている場合には次のウインドウが開くので目的のフライトを選択します。

[ トリム ]
ログが読み込まれるとグラフが表れます。グラフの最初と最後は少しだけグレーアウトされています。これは安定した飛行をしている部分のみを解析対象とするためです。その範囲を変更したいこともあります。その場合、右側にある’Trim ON’を使います。これをオンにすると十字のカーソルが現れますので、最初にログ解析開始位置、次に終了位置を指定します。

PIDtoolboxには沢山の機能がありますが、わたしは二つの機能しか使用していません。それらについて紹介していきます。

[ スペクトログラム ]
ジャイロノイズの様子やフィルターの効き具合を確認します。
– 最初の画面で’Spectral Analyzer’ボタンを押します。
– ‘Spectral Analyzer’ウインドウが開くので右側中央あたりの’Freq x Throttle’ボタンを押します。
– さらに新しいウインドウが開いたら右上の’Run’ボタンを押します。

同様のグラフはBlackbox Explorerでも得られますが、必要なデータが一度に得られるのでPIDtoolboxが使いやすいです。

10個のグラフが表示されています。それぞれ縦軸が周波数、横軸がスロットルポジションとなっています。このデータは室内飛行で取得したものなのでスロットルが65%くらいまでしかあげられませんでした。屋外でこのデータを取得する場合、スロットルをなるべくゆっくりと100%まで上げると良いデータが収集出来ると思います。
グラフの種類は規定値で左からジャイロのフィルター前(このデータの取得にはGYRO_SCALEDの指定が必要)、フィルター後のジャイロデータ、DTERMのフィルター前、フィルター後になります。

100Hz以下に多くのデータがあります。これは実際の機体の動きを表すジャイロデータです。この部分がフィルターによって失われてはいけません(起こり得ませんが)。100Hz近辺から上の周波数は機体の制御に必要では無いノイズということになります。左端のグラフで右肩上がりに濃い色が現れているのはスロットルポジションに合わせて(モーターの回転数に比例して)周波数が上がっていくノイズです。これがRPMフィルターのターゲットになります。他には目立ったノイズは見当たりませんのでRPMフィルターさえあれば他のフィルターは必要がなさそうです。

DTERMノイズについては語るほどの知識はありません。だいたいこんな感じならば良いのではないかと思います。

[ ステップレスポンス ]
フィルターの設定が決まったら、いよいよPIDチューニングです。
– 最初のウインドウで’Step Resp Tool’ボタンを押します。
– 新しいウインドウが開くので’Run’ボタンを押すと結果が表示されます。

このグラフはスティックの動きに実際の機体の動きがどれくらい追従しているかを表します。フライト全体で3軸それぞれについてsetpointとgyroのデータを処理してグラフを作ってくれているのでとてもわかりやすいです。Blackbox Explorerで見ようとするとフライト全体ではなく、飛行中の個々の動きにおいてsetpointとgyroのデータを眺めて判断しないといけないので時間がかかります。

理想的な動きはなるべく速くかつスムースに1に収束することです。このグラフが波打っている時には実際に機体も振動するような動きになっています。また立ち上がりがゆっくりすぎるとスティクに対する反応が鈍い機体ということになります。ざっくり言うとPDバランスにより滑らかに振動することなく1に収束させ、さらにPD双方の強さで反応を速くするという感じです。具体的な調整事例については別途書きたいと思います。

メインの画面で複数のログを読み込むことにより、複数のログデータをプロットすることも出来ます。

PID値も表示されるので、調整によりどう変わったのかが一目でわかります。

PIDToolBoxの最新版は以前と随分と変わりましたので、私のmacOS Venturaでの実際の導入例を紹介いたします。

以前と比べると随分と素直になりましたが、特にmacOSでは起動するまでに色々と手順を押さえておかねばならないことがあります。

[ 準備 ]
https://github.com/bw1129/PIDtoolboxのReleaseのリンクから最新版をダウンロードします。この記事を執筆している時点ではv0.62でした。
– ダウンロードしたzipファイルを使いやすい場所に展開します。展開した場所がプログラムの実行場所であり、ログの一時置き場としても使われます。わたしはデスクトップにPIDtoolbox_v0.62_osxというフォルダーのまま展開して使用することにしました。
– README_PLEASE.txtというファイルがあります。この中に導入手順が書かれています。英語ですがdeeplで翻訳すると完璧な日本語になるので、それに従えば大丈夫です。ここでは画面のコピーも交えて重要なところを説明していきます。

[ MATLAB導入 ]
– MyAppInstaller_webを起動します。これでMATLABというツールを導入します。同時にアプリケーションフォルダーにpidtoolbox.comというフォルダーが作られ、アプリケーションメニューからPIDToolboxが起動できるようになりますが使用しない方が良いようです。これは消してしまった方が良いと思います。
– Macあるあるですが署名されていないプログラムはダブルクリックしても起動しません。
MyAppInstaller_webを右クリックして開くを選択します。

こんなプロンプトが出るので開くをクリックします。
– PIDtoolboxのダウンロードウインドウが表示され、しばらくすると下のようなウインドウが出て管理者パスワードが要求されます。(もしかするともう一度MyAppInstaller_webを起動しないといけないかも知れません)

– あとは画面に従って導入を完了させます。

[ PIDtoolboxの起動 ]
– PIDtoolboxの起動に先立ちblackbox_decodeと必要に応じてblackbox_decode_INAVを起動できるようにしておきます。例によって署名が無いプログラムですので、右クリックで開くを実行し一度起動できればOKです。
– PIDtoolboxはアプリケーションメニューではなく、デスクトップ下にコピーしたものを起動します。これも最初の起動は右クリックで開く必要があります。二度目からはダブルクリックで起動できます。
– 最初に起動すると下のメッセージが表示されます。

次にファイルダイアログが表示されるのでPIDtoolboxのあるmainフォルダーを指定します。この指定は後から’Reset main directory’という機能で変更することも可能です。

[ ログファイルの読み込み ]
Selectボタンでログファイルを読み込みます。古いバージョンの時はmainの下にログファイルを移動させておく必要がありましたが、最新版では任意の場所からログを読むことが出来ます。逆にmainは一時的にログをコピーする場所になりましたので、ここにログファイルを置くことが出来ません。以上でPIDtoolboxが使用できるようになりました。

ログの解析事例についてはまた改めて書きたいと思います。

GG BONE FIVE F/Sは日本人の手によるU100gフリースタイル・フレームです。堅牢さを持たせてかつ100g以下を実現した素晴らしいフレームです。それにRunCam Thumb Proを載せるマウントを作成しました。

STLファイルはThingiverseで公開しています。
https://www.thingiverse.com/thing:6042204

また3D印刷したものと必要なネジをセットにして販売もしています。
https://dskozak.stores.jp/items/646d5876675488002e030e2d

U100gで完成機として購入出来るフリースタイル機であるDarwinFPVのTinyApeに手軽に4K動画が撮影出来るRunCam Thumb Proをマウントするべく試行錯誤していました。

最初はフレームに直にマウントして試してみましたが、やはり細かい振動が気になりました。機体の方も調整の余地はあるかも知れませんが、十分に楽しく飛ばせているのでソフトマウントを試すことにしました。いくつかのバージョンを経てなんとか満足出来るものが完成しました。それでもまだ小さな振動があるのは小型機の宿命なのか腕の問題なのかは分かりませんがGyroflow必須です。

バッテリーは長さにもよりますが下側にマウントするように変更します。

STLファイルはThingiverseで公開しています。
https://www.thingiverse.com/thing:6024966

また3D印刷したものと必要なネジをセットにして販売もしています。
https://dskozak.stores.jp/items/64603091cd92fe00827ab7b9