0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TinyViewPlusで計測したラップタイムをFPVTracksideで使いたい

Last updated at Posted at 2025-05-02

0.はじめに

今回は、TinyViewPlusとRotorhazardの連携をするところまで説明しますが、上手く出来れば、FPVTracksideとの連携は、単にRotorhazardと接続するだけなので、すんなりいくと思います。

実運用でどうかは未知数ですが、お試しいただければ幸いです。

1. TinyViewPlus

TinyViewPlusは、コース上にarUcoと呼ばれるマーカーを設置し、それを認識することでラップタイムを計測するソフトウェアです。MITライセンスで公開されており、WindowsおよびMacで動作するため、日本国内の室内Whoopレースでは広く利用されています。

単発のレースを行う分には申し分ない機能を備えていますが、大規模なイベントでは機能に不足を感じることがあります。そのため、TinyViewPlusにはOSC(OpenSoundControl)を介して、パイロット名やラップタイムなどの情報を他のレース管理ソフトウェアと送受信する機能を持っています。

大規模なレースを運営する場合、主催者は、独自のレースフォーマットに対応したレース管理ソフトを用意する場合が多いようです。

2. FPVTrackside

FPVTracksideは、タイミングシステムというより、レース管理ソフトといった感じのものです。ImmersionRC LAP RF、RotorHazard、Chorusなどのタイミングシステムと連携して動作します。(TinyViewPlusとは直接連携できません。これを連携させるのが今回の目的です。)FPVTracksideの特徴は以下の通りです。

  • 幅広いレースフォーマットに対応(ユーザーからの多様な機能要望に応え続けた結果、さまざまなレース形式に対応)
  • パイロット登録、予選・決勝などの各ヒート管理、結果管理が可能(TinyViewPlusは単体レースの管理のみで、大規模イベントの場合はExcelなどで管理が必要)
  • ビデオ録画に対応し、レース中の各パイロットのVTX映像の表示だけでなく、レース終了後に再生・検証が可能(FPVTracksideの最も魅力的な機能)
  • レース後の録画再生時に、画面を確認しながらラップタイムの修正が可能
  • オリジナルのテーマを設定し、UIのカスタマイズが可能
  • WebSocketを使用してOBSと連携可能

ただし、TinyViewPlusを利用している場合、以下の点で戸惑うことがあります。

  • キーボードの配列がUS仕様のため、一部記号の入力時に異なる文字が入力される
  • 日本語入力が直接FPVTracksideではできないため、テキストエディタで入力後にコピー&ペーストする必要がある
  • 音声出力のカスタマイズが可能だが、一部修正しきれない箇所がある
  • レース開始時の「3 2 1 START!」の設定方法が良くわからない

3. 本題

FPVTracksideでレース管理を行いたい場合、タイミングシステムとしてIRC LAP RFかRotorHazardを使用することになります。これらはVTXからの電波を受信し、RSSI値を元にゲート通過を判定するシステムです。

しかし、使い慣れたarUcoマーカーを用いたラップ計測をしつつFPVTracksideを活用したい。

そこで考えたのが、RotorHazardのRX5808を取り外し、本来RX5808がRSSIを出力するところに、擬似的なRSSI信号を出力する方法です。

この方法の利点:

  • 擬似的なRSSI信号(0〜1.1V程度の電圧)を用意するだけなので、FPVTracksideやRotorHazardのバージョンアップや仕様変更の影響を受けない。

ただし、ソフトウェア・ハードウェア的に無駄が多いという欠点もあります。

4. 完成したらこんな感じ

この方法を実装して、模擬的に1機分の映像を3台の受信機で同時に受信し、レースをしている感じにした動画がこちらです。

本来なら全く同じタイムになるはずですが、実際には異なります。同じ映像を受信していてもちらつくタイミングが異なったり、明るさに違いがあることが、ラップタイムのズレにつながっていると考えられます。

5. この方法を実現するのに必要なもの

  1. Windows PC 1台目(TinyViewPlusとRotorHazardを動作させる)

  2. Windows PC 2台目(FPVTracksideを動作させる)

  3. VTX受信機(UVC対応、3機でレースする場合は3台必要。例:EachineROTG、SKYDROID、FUAV など)

  4. HDMI → UVCコンバータ(1台目PCの画面出力を2台目PCに取り込み、FPVTracksideのビデオソースとして利用するために使用)
    Amazonリンク

  5. 基板

    必要な部品

    1. 抵抗 2KΩ(24本)※2.2KΩでも代用可
    2. 抵抗 1KΩ(17本)
    3. 抵抗 10KΩ(7本)
    4. Arduino Nano(ATmega328P搭載の無印Nano推奨)
      ファームウェア
    5. STM32C8T6搭載Bluepill + STLINKV2(C6T6はメモリ不足のため不可)
      ファームウェア
      STM32CubeProgrammer
    6. ピンヘッダ、ピンソケット(Arduino NanoやBluepillの取り外しが可能な構造推奨)
    7. USBシリアルコンバータ
      Adafruit CP2102N Friendがファーストチョイスですが、Pololu製SwitchScienceでもよいうかもしれません。
    8. 2N7000(NCH FET)

    完成イメージ
    IMG_8227.jpg

6. ソフトウェアのインストール(TinyViewPlus As Sensors 以下TVPAS)

  1. こちらよりTinyViewPlusAsSensors.zipをダウンロードし、解凍
  2. binフォルダ内の TinyViewPlusAsSensors.exe を実行
  3. 実行出来なかった場合、Microsoft Visual C++ 再頒布可能パッケージをインストール後、実行
  4. Arduino NanoのCOMポートを調べ、dataフォルダ内の settings.xml を開き、設定を更新
    settings.png

6. ソフトウェアのインストール(Rotorhazard)

https://github.com/rickgode/Windows-RotorHazard-Install
ここを参考にTVPASをインストールした1台目PCにRotorhazardをインストールします。

config.jsonを編集して、CP2102Nのcomポートを指定することを忘れずに。
rh.png
起動logを確認し、赤い線の所、設定したcomポートと接続されているか。Nodeが4つ認識されているかを確認してください。

最後に、デスクトップにrotorhazard起動用のショートカットをデスクトップあたりに作っておきましょう。
shortcut.png
私の場合、C:\User Program\RotorHazard-4.2.1\以下にrotorhazardをインストールしているので、リンク先は以下の通りになります。

C:\Windows\System32\cmd.exe /K "cd C:\User Program\RotorHazard-4.2.1\ && python -m venv --system-site-packages .venv && .venv\Scripts\activate.bat && cd src\server

7. 動作確認

TVPASとRotorhazardを起動した後、webブラウザで http://localhost:5000 を開きます。

TVPASの4分割画面と、RotorhazardのNodeは、このように対応しています。
1tvp.png

それを参考にRotorhazardのFrequencySetupを実行してください。
frequency.png

Sensor Tuningの画面を開いて、Arucoを認識させて反応があれば、導入は成功です。
tuning.png

8.マーカーの認識状況と、RSSIの値

マーカーを認識した後、次のフレームでマーカーが消えると、TVPASは、Rotorhazardに、ゲート通過の信号を送ります。通過信号は、マーカーの認識状況によって違います。

有効マーカー(Valid Marker)
マーカーが映像の中心部を向いている場合、有効マーカーとして認識されます。この場合、機体はゲートの輪の中心を飛行していると推定されます。

valid.png

無効マーカー(Inalid Marker)
マーカーが映像の中心部を向いていない場合、無効マーカーとして認識されます。この場合、機体はゲートの輪の外側を飛行していると推定されます。

invalid.png

マーカー検出状況によるRSSIの違い

  1. 最後に認識したマーカーが2個以上の有効マーカーで、無効マーカーは1つもない場合、
    0.2秒間 rssi=160のパルスを出します。
    DETECTMPRMAL.png

2.2個以上の有効マーカーを検出したが、無効マーカーも検出している。
0.2秒間 rssi =110のパルスを出します。
DETECTMIDDLE.png

3.有効マーカーを検出せず、無効マーカーだけ検出した。
0.2秒間 rssi=70のパルスを出します。
DETECTLOOSE.png

以上を踏まえ、各ノードのEnterAt ExitAtを設定してください

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?