Dropbox

VTXアンテナのSWRを測定してみる

部長のところからやってきたLiteVNA 64を押入れの奥から引っ張り出してきました。コンパクトな機器ですが6GHzまで対応している多機能なネットワークアナライザーです。私がこれを持っている理由はただ一つでSWRの計測です。

SWRは日本語では定在波比と言います。日本語になっても全く意味が想像出来ませんね。ざっくり言うと、電波を発射しようとアンテナに電力を送り出した時に、少しだけ電力が逆流してきます(透明なガラスに光を当てると少しだけ反射するかのようなイメージ)。それを数値化したものがSWRです。

理想的な数値は1.0でアンテナに送った電力が全てアンテナで消費されることを示します(SWRでは電波になったのかどうかは分からないです。もしかするとアンテナの近くで熱になっているのかもしれない)。一般的に言えば1.5以下なら合格。2.0以下ならまあまあ大丈夫と言う感じです。もし2.0だと11.1%の電力が戻ってきています。戻ってきた電力はVTXの中で熱に変わると思われます。あまりにSWRが大きいと最悪な場合ではVTXを壊すこともあるかもしれません。と言うことでSWRは小さい方が望ましいです。

[ LiteVNAの設定 ]
概ねOscar Liangさんの「How to Measure Antenna SWR with LiteVNA: A Comprehensive Guide」に従いました。キャリブレーションに関しては「Tinyネットアナ入門 LiteVNA 64のキャリブレーション」も参考になります。細かい操作方法は公式のドキュメントを読みました。

[ 測定してみた ]

手持ちの5.8GHzアンテナでSMAコネクターの付いたものを測定してみました。優秀なものから順に紹介します。

古いTBS(Team-BalckSheep)のStubです。かなり優秀です。どのアンテナにも言えますが個体によって少し違いますが、平均的なSWR値は変わりません。

黄色の線がSWR値のグラフです。横軸が周波数で5.6GHzから6GHzになっています。縦軸がSWRで右側にSWRの数値が表示されています。緑色の線はインピーダンスを表す何か(^^)です。

TBS Triumph、TBS流石としか言いようがない。

TBS TriumphにL字型のコネクターを追加したもの。少し特性が悪くなりますが問題はないレベル。L字型コネクターも他のものと交換して試すべきだったかもしれないです。

EMAX Pagoda-2のとても古いもの。クラッシュしてボロボロだけど数値は良い。

EMAX Pagoda-3Bもまあまあ悪くない。特に日本で使用される周波数では1.5以下になっている。

ところが同じEMAX Pagoda-3Bでも使い古してコネクターが変色している(それが原因か元々の個体差かは不明だけど)はやや悪い。

ImmersionRCのパッチアンテナ。定評がある人気のパッチ、さすがに良い感じです。硬くて外せなかったのでL字コネクターを付けた状態での測定です。

FOXEER ORERO、優秀です。これも斜めにするコネクターを付けた状態です。確かSAITOさんがWorld Games 2022へ参加するときのクラウドファンディングに協力した時の返礼品で、全くの未使用。

優秀な謎アンテナ。どこから来たものか不明。

ここからは即ゴミ箱行きシリーズ

EMAX Nano、これは小さいのが魅力で購入したもののあまりに電波が悪くてすぐに使わなくなったものです。完全に数値に表れていますね。

RUSH Cherry、期待を裏切られた感大きい。とても綺麗な作りで値段もそこそこ高かった気がする。長さ違いで2本ありますが、どちらも同じくらいの成績。

無課金おじさん、bb-tuneでPIDチューンを試す

無課金おじさんBetaflight-MCPを使う」の続きです。

Betaflight-MCPはAIとBetaflight Configuratorを接続する仕組みでした。そのBetaflight-MCPに同梱されているbb-tune-dekstop.zipはPIDチューニングするためのスキルです。その中身はログファイルを解析するPythonのプログラムとAIに対してチューニング手法を指示するための文章です。

opencodeに対してこのスキルを使えるようにしてと頼んでみました。


一見、ちゃんと出来たように見えましたが、opencodeを再立ち上げするとスキルの定義でエラーが発生しました。

導入ディレクトリー下の”.opencode/opencode.jsonc”というファイルの単純な書き間違いでした。この辺りはローカルLLMの能力の限界によるものです。もう一度頼んだりすれば直るでしょうが、簡単なことなので手で直しました。
正しい内容を下に書いておきます。

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "betaflight": {
      "type": "local",
      "command": ["node", "server/server.js"]
    }
  },
  "skills": {
    "paths": [".opencode/skills/bb-tune"]
  }
}

実際にドローンを接続してBlackBoxログを解析してみるとことにします。そのままでも大丈夫ですが、私はblackbox_decodeというプログラムを持っていましたので、それを使うようにSKILL.mdを少しだけ修正しました。

準備したのはわざとPIDを狂わせた65機を飛行させたものです。step responseを見ると次のような感じです。

このドローンをBetaflight-MCPに接続してopencodeでログの解析をお願いしました。自動的にログがダウンロードされ解析が始まりました。これはなかなか新しいです。


解析結果に基づいて対策が提案されます。このまま進めると提案されたPID値を機体に書き込んで、飛行テストに進むという流れです。

実際は全てのPIDを低くしたのですが、step responseを見ると分かるようにyawがかなり悪い状態です。そこはちゃんと指摘されましたが、推奨されたのはより小さなPI値でした。これは方向性が明らかに違うので、ここまでにしました。もしかするとClaude Desktopで行えば多少違うかもしれませんが、基本的にはSKILL.mdに記述された内容に従っているのだと思います。

自分でチューニングの評価をしながらSKILL.mdを更新していく仕組みが作れれば、基本的な枠組みはこのままで進化していく可能性もあります。

無課金おじさんBetaflight-MCPを使う


生成AIとBetaflight Configuratorを接続する仕組みです。FPV界で知らぬ人がいないYukiFPVによるものです。自然言語で話しかけるとMCP接続されたBetaflight Configuratorを通して機体からデータを取得、あるいは設定出来るのものです。

まだ効果的な使用目的を思いついてはいませんが、大きな可能性を感じます。

Cluade Dekstopを使う場合は添付されている手順に従えば、ほぼ迷うところはありません。私も最初はClaude Desktopで試しました。ただし無料枠が少ないことで有名なCluadeですのであまり大胆に試せません。

ということで無課金で使ってみました。私はMac mini上で常時ローカルLLM(現在はqwen3.6-35b-a3b)を稼働していますので、それを利用してみようということです。選択肢は色々とあります。最初はVScode+CLINEでやってみましたが、操作性が悪い。またCodex CLIは何故かうまく動かず。

結局のところ何時もコーディングで使用しているOpenCodeというフリーのエージェントに落ち着きました。

設定もローカルLLMに任せましたので、ごくごく簡単でした。
ディレクトリーを作成し、そこにbetaflight-mcp.mcpbをおきます。そのディレトクリー上でopencode開き下のようにお願いしただけです。

MCPを組み込んだBetaflight Appを立ち上げ機体に接続し、PID設定値を読み出してみました。

ローカルLLMでも問題なく使用できました。何か面白い使い方を探究してみたいと思います。

付属されているPIDチューニング用のスキルも試しています。これに関してはまた別途書きたいと思います。

LED設定まとめ 2026.07

タイニーレース4波対応LED設定のリンク集です。

[ VTXチャネルとLEDの色設定を行うLuaスクリプト ]
VTXチャネルとLEDの設定は独立したものとして構成したものを送信機のLuaスクリプトで一回の操作で行うものです。
Led4Vtx.lua v1.3
LEDの色とVTXチャネルを同時に設定するLuaスクリプト

[ VTXチャネル設定で自動的にLEDの色を設定する ]
4波で使用するチャネルの組み合わせによっては、この手法が使えます。
LED色のVTXチャネル連動、4波版

[ 送信機のS1/S2ポットでLEDの色を変更する ]
S1を回して連続的、あるいは段階的にLEDの色を変更する方法
S1ポッドでLEDを決まった色にする設定
4波対応-プロポのポット(S1, S2)でLED色を変更する

[ プリセット ]
Betaflight Configuratorのプリセットを用いてLED設定を行う方法
BetaflighのLED設定を行うプリセットを作りました

[ ハードウェアとファームウェアのビルド ]
FPVドローンのLED実装、ハードウェアとBetaflightのビルド

[ OSDメニューでLEDの色を変更する ]
レースモードプロファイルを使用する方法
OSD menuでLEDの色を変更する

Led4Vtx.lua v1.3

LEDの色とVTXチャネルを同時に設定するLuaスクリプト」をいくつか改良しました。おそらく、これで完成版です。

[ 改良点 ]
v1.1
大きな画面を持つ送信機(T15以上)ではボタンを大きくした

v1.2
切り替えを素早く繰り返すとVTXチャネルとLEDの色の組み合わせがズレる(LED変更がミスる)ことの修正

v1.3
現在のVTXチャネル設定(ELRS TXモジュールに保管されている)を取得して画面右上に表示するようにした。

LED色のVTXチャネル連動、4波版

現在タイニードローンのレースや練習会で使用されている4波のチャネルにはいくつかの組み合わせがあります。中には3波の頃に行っていたVTXチャネル連動のLEDの色変更が使える組み合わせもあります。下の動画のようにVXTXチャネルを何等かの方法で設定するだけでBetaflightが対応する色を自動的に設定してくれるというものです。

[ 実際に使用されている4波の組み合わせ例 ]

1. (E2)5685[LED2], (A8)5725[LED3], (A5)5785[LED4], (A4)5805[LED6]
2. (E1)5705[LED2], (A8)5725[LED3], (A5)5785[LED4], (F5)5820[LED6]
3. (E2)5685[LED2], (E1)5705[LED2], (F3)5780[LED4], (F5)5820[LED6]

この表記は私の https://github.com/nkozawa/IMDAvoider3 で使用しているものです。チャネルと周波数は説明の必要がないと思います。それに続くLED2などと書かれているのがこの説明のキーポイントです。これはLEDストリップ画面にあるラーパレットの番号です。

この画面の数値の部分です。周波数とパレットの番号の関連付けはRacebandを基準にBetaflightの内部で固定的に決められています。詳しくはSetting LED color to the VTx Frequencyをご覧ください。

4波の組み合せ例に戻ると、例の1と2は、LED2,LED3,LED4,LED6と別々のパレットが使われます。反して、例3ではLED2が2回現れます。
< 例1と例2 > チャネル毎に違うパレットが選ばれるためVTXチャネルによるLEDの色変更が可能です。
< 例3 > E2とE1が同じパレットを使用するため、ここで紹介する設定は使用出来ません。VTXチャネルとLEDの色を個別に設定しないといけません。別々の設定をスクリプトで一度に行おうという試みについては「LEDの色とVTXチャネルを同時に設定するLuaスクリプト」をご覧ください。

[ 設定 ]
ここからが本編です。VTXチャネルの組み合わせを全部調べた訳ではありませんが、おそらくLEDカラーパレット2, 3, 4, 6でほぼ網羅出来ると思います。以下、このパレットを使用する設定です。


LEDストリップ画面で設定する場合は上のようになります。カラーパレットの2, 3, 4, 6番の設定は以下の通りです。

パレット番号 H S V
2 Red 0 0 255
3 Green 120 0 255
4 Blue 240 0 255
6 Yellow 60 0 255

プリセットも用意しました。

CLI用のコマンドは以下の通りです。

#--- Set up status mode ---

feature LED_STRIP
set ledstrip_profile = STATUS

# --- Set LED ---

# led
led 0 0,0::CV:14
led 1 1,0::CV:14
led 2 2,0::CV:14
led 3 3,0::CV:14
led 4 4,0::CV:14
led 5 5,0::CV:14
led 6 6,0::CV:14
led 7 7,0::CV:14
led 8 8,0::CV:14
led 9 9,0::CV:14
led 10 10,0::CV:14
led 11 11,0::CV:14
led 12 12,0::CV:14
led 13 13,0::CV:14
led 14 14,0::CV:14
led 15 15,0::CV:14
led 16 0,1::CV:14
led 17 1,1::CV:14
led 18 2,1::CV:14
led 19 3,1::CV:14
led 20 4,1::CV:14
led 21 5,1::CV:14
led 22 6,1::CV:14
led 23 7,1::CV:14
led 24 8,1::CV:14
led 25 9,1::CV:14
led 26 10,1::CV:14
led 27 11,1::CV:14
led 28 12,1::CV:14
led 29 13,1::CV:14
led 30 14,1::CV:14
led 31 15,1::CV:14
led 32 0,2::CV:14
led 33 1,2::CV:14
led 34 2,2::CV:14
led 35 3,2::CV:14
led 36 4,2::CV:14
led 37 5,2::CV:14
led 38 6,2::CV:14
led 39 7,2::CV:14
led 40 8,2::CV:14
led 41 9,2::CV:14
led 42 10,2::CV:14
led 43 11,2::CV:14
led 44 12,2::CV:14
led 45 13,2::CV:14
led 46 14,2::CV:14
led 47 15,2::CV:14
led 48 0,3::CV:14
led 49 1,3::CV:14
led 50 2,3::CV:14
led 51 3,3::CV:14
led 52 4,3::CV:14
led 53 5,3::CV:14
led 54 6,3::CV:14
led 55 7,3::CV:14
led 56 8,3::CV:14
led 57 9,3::CV:14
led 58 10,3::CV:14
led 59 11,3::CV:14
led 60 12,3::CV:14
led 61 13,3::CV:14
led 62 14,3::CV:14
led 63 15,3::CV:14

# color
color 2 0,0,255
color 3 120,0,255
color 4 240,0,255
color 6 60,0,255

macOSでBlackboxログファイルのコピーを少しだけ便利にする方法

macOSでBlackboxログファイルは普通にコピー出来ますが、そのあとでファイル名を変更をするためにはまずロックを外さなければなりません。これが何気に面倒です。そこでコピーしたあとで自動的にロックを外す仕組みを作りました。

[ 手順 ]
– 下にあるスクリプトをbblcopy.scptという名前でどこかに保管します。
– ドローンを接続してBetaflight Configurator/blackboxで「大容量ストレージモードを有効化」を行います。
– Finderからbblcopy.scptをダブルクリックするとスクリプトエディターが立ち上がります。
– スクリプト/実行
– コピー元であるドローンのログが表示されますのでコピーしたいものを選択します(複数可)。
– 次のダイアログでコピー先を選択。
以上でログファイルがコピーされロックも外れます。すぐにファィル名の変更が可能です。

[ メニューバーからスクリプトを起動する ]
まず、bblcopy.scptを所定の場所にコピーする。私は以下の手順をとりました。

mkdir ~/Library/Scripts
cp bblcopy.scpt ~/Library/Scripts

Finderから行う場合は、移動メニューを出してOptionを押すとメニューにライブラリが現れるのでそこで作業します。

そして、スクリプトエディタを立ち上げて設定を開き「メニューバーにスクリプトメニューを表示」にチェックを入れます。


こんな感じで何時でもサクッと起動できるようになります。

[ 補足 ]
コピー先を覚えておくために~/Library/Application Support/bblcopy/にファイルを作っています。

# bblcopy.scpt — Blackbox log コピー用 AppleScript

property lastDestPath : ""

on run
    set prefsFolder to (POSIX path of (path to home folder)) & "Library/Application Support/bblcopy/"
    set prefsFile to prefsFolder & "last_dest.txt"
    do shell script "mkdir -p " & quoted form of prefsFolder

    try
        set savedPath to (do shell script "cat " & quoted form of prefsFile)
        if savedPath ≠ "" and (do shell script "test -d " & quoted form of savedPath & " && echo yes || echo no") = "yes" then
            set lastDestPath to savedPath
        end if
    end try

    if lastDestPath = "" then
        set lastDestPath to POSIX path of (path to desktop folder)
    end if

    set volumeMounted to (do shell script "test -d /Volumes/BETAFLT && echo yes || echo no") = "yes"
    if not volumeMounted then
        display dialog "/Volumes/BETAFLT がマウントされていません。Betaflight Configuratorから大容量ストレージモードを有効にして下さい。" ¬
            with title "ボリュームが見つかりません" ¬
            buttons {"OK"} default button "OK" ¬
            with icon caution
        return
    end if

    set srcFiles to choose file ¬
        with prompt "コピー元ファイルを選択(複数可)" ¬
        default location (POSIX file "/Volumes/BETAFLT/") ¬
        multiple selections allowed true

    if srcFiles = {} then return

    set destFolder to choose folder ¬
        with prompt "コピー先フォルダーを選択" ¬
        default location (POSIX file lastDestPath)

    set lastDestPath to POSIX path of destFolder
    do shell script "echo " & quoted form of lastDestPath & " > " & quoted form of prefsFile

    set destPOSIX to POSIX path of destFolder
    set copiedCount to 0
    set skippedCount to 0
    set overwriteAll to false

    repeat with f in srcFiles
        set srcPOSIX to POSIX path of f
        set baseName to (do shell script "basename " & quoted form of srcPOSIX)
        set destPath to destPOSIX & baseName
        set fileExists to (do shell script "test -e " & quoted form of destPath & " && echo yes || echo no") = "yes"

        set doCopy to true
        if fileExists and not overwriteAll then
            display dialog (baseName & " は既にコピー先に存在します。上書きしますか?") ¬
                with title "同名ファイルの確認" ¬
                buttons {"スキップ", "すべて上書き", "上書き"} ¬
                default button "上書き"
            set theButton to button returned of result
            if theButton = "スキップ" then
                set doCopy to false
            else if theButton = "すべて上書き" then
                set overwriteAll to true
            end if
        end if

        if doCopy then
            do shell script "cp -f " & quoted form of srcPOSIX & " " & quoted form of destPath
            do shell script "chflags nouchg " & quoted form of destPath
            set copiedCount to copiedCount + 1
        else
            set skippedCount to skippedCount + 1
        end if
    end repeat

    set resultMessage to (copiedCount as text) & " 件のファイルをコピーしました"
    if skippedCount > 0 then
        set resultMessage to resultMessage & "(" & (skippedCount as text) & " 件スキップ)"
    end if

    display notification resultMessage ¬
        with title "Blackbox Log コピー完了" ¬
        subtitle destPOSIX

    display dialog (resultMessage & "。" & return & return & destPOSIX) ¬
        with title "コピー完了" ¬
        buttons {"OK"} default button "OK"
end run

LEDの色とVTXチャネルを同時に設定するLuaスクリプト

WTW四国ではタイニーレースにおいてLEDの装着と周波数毎に決められた色で発光させることをレギュレーションに取り入れています。これにより観戦者のレースへの理解度が深まることは間違いありません。

3波でのレースにおいてはVTX周波数とLEDの色の対応付けを行うことが容易でした。それが4波になって、この関連付けが不可能なチャネルの組み合わせが出てきました。そのためVTXチャネルとLEDの色を別々に設定する必要があり事前準備も実際の使用にも煩雑さが生じました。

そこで長い間、温めていたアイデアを実装いたしました。準備作業は比較的簡単で済みます。またレースの現場では送信機のLuaスクリプト上のワンアクションでVTXとLEDの設定が行えるものです。

Luaスクリプトはhttps://github.com/nkozawa/Led4Vtxで公開しています。以下の説明はGitHubサイトにあるREADMEにほんの少しだけ追加の情報を付け加えたものでほぼ同じです。

[ ドローンの設定 ]

LEDストリップ画面で機能にカラーを設定し、何かしら任意の色でLEDが光るようになれば準備完了です。

CLIで変更する場合は以下のコマンドを使用します。
https://github.com/nkozawa/Led4Vtx/blob/main/LED_Simple_Color.txt

プリセットも用意しました。

[ 二つのスクリプト ]
フルスペックなLed4Vtx.luaと簡易版のLed4VtxLite.luaがあります。

< Led4Vtx.lua >
単体ではLEDの色の設定しか出来ません。VTXチャネルの設定はEasyVTXchのお気に入り機能を使用します。EasyVTXchでお気に入りを登録した後でLed4VtxでLEDの色の長押しでお気に入り登録を行います。そうすると自動的にEasyVTXchでお気に入りしたVTXチャネルがLEDの色のお気に入りと関連付けられます。

導入はLed4Vtx.luaを送信機のSCRIPTS/TOOLSにコピーします。もしすでに古いバージョンのLed4Vtx.luacが存在する場合は削除してから新しいLed4Vtx.luaをコピーして下さい。

< Led4VtxLite.lua >
画面での設定を一切省いたものです。頻繁に設定を変更する場合には全く不向きです。予め設定してあるled4vtxlite.favが必要となります。現在四国のレース設定である、E2=赤、E1=緑、F3=青、F5=黄に設定したファイルをGitHubで提供しています。
もし変更が必要であればled4vtxlite.favを編集します。

E2,Red
E1,Green
F3,Blue
F5,Yellow

内容は見ての通りです。使用出来る色名はRed, Orange, Yellow, Green, Cyan, Blue, Violetです。

導入はLed4VtxLite.luaとled4vtxlite.favをSCRIPTS/TOOLSにコピーします。もしすでに古いバージョンのLed4VtxLite.luacが存在する場合は削除してから新しいLed4VtxLite.luaをコピーして下さい。

[ 注意点 ]
– 現在のバージョンでは素早くLED、VTXチャネルを切り替えようとすると正しく動きません。連続して操作する場合は少し時間をあける必要があります。
– このプログラムを実行するとBetaflightのカラーパレットが全て変更されます。もし元の状態に戻す必要がある場合は下のCLIコマンドを実行して下さい。
https://github.com/nkozawa/Led4Vtx/blob/main/defaultPalette.txt

EACHINE ROTG01 PRO 受信機 x 4 => HDMI x 1

EACHINE ROTG01 PROで受信したVTXからの映像4台分を一つのHDMI画面にまとめてみようという試みです。つまりはHawkeye Four EyesあるいはHDZero Event VRXの真似をしようということです。

[ 目的 ]
TinyViewPlusNGFPVTrackSideの入力として使用するためです。

TinyViewPlusのMac版ではROTG01 PROを4台接続することは出来ますが、どの受信機が何番目に出てくるかが全く制御できません。レースの現場ではとても使用できるものではありませんでした。Four EyesやEvent VRXで一つの映像にまとめたものをTinyViewPlusNGでそれを分割することがMacにおける唯一の解です。
– FPVTrackSideでは今の所、複数のROTG01 PROを接続しても一つの画像しか得られません。そのため画面分割を使用するしかありません。Windows版は複数ROTG01 PROが使用できるように改善される見込みです。
– そもそもPCのUSBポートが少なくて4台もROTG01 PROを接続できない。そのためFour Eyesを使えるようにということでTinyViewPlus-NGが出来たそうです。

[ ハードウェア ]
– ROTG01 PROという受信機でUVC (USB Video Class)を持ったものを4台。他の似たような受信機も使用できると思います。
– Raspberry Pi4BとRaspberry Pi5でテストしました。 (メモリーはおそらく小さめでも大丈夫です)
– microHDMIケーブル。Raspberry PiのHDMIコネクターはとても小さいやつです。
– HDMI to USB変換器、私が使っているのは「GUERMOK USB 3.0 HDMI to USB C オーディオ キャプチャ カード」というやつです。似たようなものでも性能的に問題がある製品もあるようなので要注意です。

USB-AにROOTG01 PROを接続します。システムが立ち上がってからUSBを挿入していくと、その順番でデバイス番号が割り当てられます。電源投入前に全て接続しておけば、USBコネクターとデバイス番号がいつも同じ関係に出来ます。HDMIコネクターは二つあるどちらでも稼働できるようにシステムを構成しています。
電源はRaspberry Pi用に販売している容量の少し大きいものを使用しています。
必要性はよくわかりませんがRaspberry Piには冷却ファンを付けています。この構成で12時間以上連続稼働可能でした。

[ ソフトウェア ]
githubでraspi4eyesを公開しました。導入手順も詳しく書いてますので、実際の導入にあたってはgithubをご覧ください。導入にあたっていくつかの選択肢があります。それについて書いておきます。

< Raspberry Pi Desktop上で動かす >
README.mdに書いてある手順に従ってください。

< 軽量化システムを構築する >
Rasoverry Piのシステムは容量小さめのMicroSDカードに収まります。専用のシステムを構築するのが良いと思います。Desktopを使わない「Cageを使用したヘッドレス環境での起動手順」というのを用意しています。私はRaspiberry Pi4BにOSはRaspberry Pi OS Lite (64-bit)を新規に導入して専用システムを構築しました。
またOSの起動時に自動的にraspi4eyesが立ち上げる設定についても、この手順書に書いてあります。
軽量化システムのメモリーの様子です。

               total        used        free      shared  buff/cache   available
Mem:         3886904      399860     3189784       65496      424224     3487044
Swap:              0           0           0

< ターンキーシステム化 >
いきなり電源オフしても壊れないようにします。使用後にいちいちログインしてシャットダウンするのはあまりカッコの良いものではありません。使用する時は、必要な接続を行い電源を入れるだけ。使用後は電源をいきなり止めて仕舞えば良いという構成にすれば使い勝手がとてもよくなります。最近のRaspberry OSではとても簡単に実現できます。「ターンキーシステム化のための Overlay File System 設定手順

< noise_threshold >
raspi4eyesの機能の一つに砂嵐画面を検知して黒い画面に切り替えるというものがあります。これはHDZero Event VRXの同様の機能を真似してみようと実装しました。それを制御するための項目がconfig.jsonの中の”noise_threshold”です。規定値として0.4が入っています。受信機の特性や環境によっては砂嵐が時々見えてしまうかも知れません。その時はこの数値を少し増やしてみてください。私はある一つの受信機のために数値を0.42に変更しました。おそらく0.5くらいまでは増やしても大丈夫そうです。


< adjust.json >
砂嵐画面を出さないと困ることがひとつあります。それはROTG01 PROの周波数調整を行う時です。微調整はドローンからの画像が出ているときにすれば良いですが、最初に設定する時は砂嵐画面を出しておきたいです。そのためには先の”noise_threshold”を0にすれば良いです。これを0にしたconfigファイルadjust.jsonを用意しています。これをconfig.jsonの代わりに使用すれば良いです。DISPLAY=:0 .venv/bin/python raspi4eyes.py --config adjust.jsonあるいはcage -s -- .venv/bin/python raspi4eyes.py --config adjust.jsonのように使用します。

[ TinyViewPlusNG ]
fpv.xmlをこんなふうに設定しました。

<camera>
    <name>USB3 Video</name>
    <camnum>4</camnum>
    <description>4:3</description>
    <grab>
        <width>1920</width>
        <height>1080</height>
    </grab>
    <crop>
        <x>0</x>
        <y>0</y>
        <width>1920</width>
        <height>1080</height>
    </crop>
    <draw>
        <aspectRatio>4:3</aspectRatio>
    </draw>
    <fourCamHorizontal>0</fourCamHorizontal>
</camera>

[ FPVTrackSide ]
最初、4:3の解像度を選ぶべきと思っていましたが、どれが最適かよくわかっていないです。いろいろ試してみて下さい。レートは60Hzが良いと思います。
Video Inputの設定でChannel Splitsを2 x 2にすると画面を4分割してくれます。

DJI Avata 360の動画をDaVinci Resolveでグリグリ編集する

空飛ぶ360度カメラ、DJI Avata 360、とりあえず良さそうなところをゆったり飛ばして後からどこを見せるかを考えれば良いというシチュエーションによっては最強のツールです。

そのため従来の編集作業に加えてグルグル回すという作業が必要になります。そのためのツールとしてDJI Studioという動画編集アプリケーションとAdobe Premiere用のプラグインがありました。それに加えて待望のDaVinci Resolve用のプラグインDJI Reframeもついに提供されました。pkgファイルをダウンロードして導入すれば準備完了です。

最初にDJI StudioとDJI Reframeプラグイの違いについて書いておきます。

DJI Studioではあらかじめプログラムされた動きが用意されているので、簡単にグリグリ出来ます。また、目標を設定して追従させるインテリジェントトラッキングという機能はDJI Studioにしかありません。自分で細かく動きを決めるキーフレームという機能もあります。普通に軽く編集するだけならDJI Studioで十分です。

Premiereは持っていないので分かりませんがDaVinci ResolveのDJI Reframeで行えることはDJI Studioのキーフレームの機能だけです。キーフレーム間の変化量はDaVinci Resolveの方が自由度が高いです。なんと言っても、その他の多彩な動画編集機能と同時に使えることが最大の強みです。

簡単に手順を紹介します。

[ DJI StudioでDaVinci Resolve向けにExportする ]

DJI Studioに元の動画ファイルを読み込んでタイムラインを作成し「エクスポート/パノラマ動画/DaVinci Resolveフォーマット」を実行します。かなり時間がかかるので予め必要な部分だけに編集しておくのが良いと思います。

[ DaVinci Resolveに動画を読み込む ]

動画を読み込みタイムラインを作成したところです。360度全てが映り込んだ画面が表示されます。

[ DJI Reframeを適用する ]

「エフェクト/OpenFX/フィルター」にDJI Reframeがあります。それをタイムラインにドラッグ・ドロップします。するとプレビュー画面が変わります。

[ パラメーターを表示する ]

赤丸で囲った四角のアイコンをクリックしてパラメーターを表示します。これは表示しなくても編集作業は出来ますが、出しておいた方が格段にわかりやすくなります。

[ 横回転させてみる ]
360度の編集を横回転を例として紹介します。目標はタイムラインの35秒から左にパンを始めて40秒で360度回転して終了するというものです。

まずインスペクタでエフェクト/OpenFXを出しておきます。タイムラインの現在位置を35秒のところにしてインスペクタのPanの右の方にある小さな菱形をクリックします。すると菱形が赤くなりキーフレームが記録されます。これを起点とします。

40秒のところに移動して先ほどと同様にPanの小さな菱形をクリックし、ここを終点とします。そしてPanの数値を360とします。タイムラインのパラメーターを見るとどこにキーフレームを打ったが明確に分かります。

これで回転動作が出来ました。タイムラインを再生させて確認します。

この要領でTiltやRotate, FOVなどを組み合わせていきます。

このままだと二つのキーフレームの間の数値の変化は一定速度です。これを例えば最初はゆっくりでだんだん加速するみたいなこともできます。

パラメーターの左横のカーブしたアイコンとPanの左端のカーブアイコンをクリックした状態です。これで表示されるグラフを変更すると数値変化の具合を調整できます。

最後に複数の動作を組み合わせた例を紹介しておきます。