メインコンテンツまでスキップ

ソフトウェア変更履歴 2021 - 2023

2023.6 (2023/4/18)

簡単なChArUcoキャリブレーションとキャリブレーション可視化ツール

  • ChArUcoキャリブレーションは、オクルージョン、不良なコーナー検出に対応し、ボード全体が見える必要がないため、チェッカーボードキャリブレーションより優れていると考えられています。これにより、画像の端や角に近いキャリブレーションボードのコーナーをより簡単にキャプチャできます。これは歪み係数の推定に非常に重要です。
  • Limelightのキャリブレーションプロセスは各ステップでフィードバックを提供し、良好なキャリブレーション結果に必要なすべての作業を確実に行えるようにします。このプロセスをできるだけ堅牢にするために多大な努力が払われています。
  • 最も重要なのは、キャリブレーション結果をデフォルトのキャリブレーションと並べて視覚化できることです。一目で、キャリブレーション結果が妥当かどうかを理解できます。
  • また、キャリブレーションダッシュボードを学習ツールとして使用することもできます。ダウンロードしたキャリブレーション結果ファイルを変更して再アップロードし、内部パラメータ行列と歪み係数がターゲティング結果、視野角などにどのように影響するかを学ぶことができます。
  • こちらの動画をご覧ください:

2023.5.1 & 2023.5.2 (2023/3/22)

  • 2023.5.0で導入された不具合を修正 - 2023.5は非平面レイアウトのすべてのmegatagを修正しましたが、単一タグのポーズ推定のパフォーマンスが低下していました。これは修正されました。単一タグのポーズ推定は2023.4で使用されていたのと同じソルバーを使用します。

  • よりスムーズなスナップショットインターフェース。スナップショットグリッドは低解像度の128pサムネイルを読み込むようになりました。

  • Limelightのヨーが3D可視化ツールで正しく表示されるようになりました。可視化ツール内部では反時計回りが正の値となります。

  • フィールドスペース可視化ツールで現在追跡中のターゲットを表示するようになりました。


2023.5.0 (2023/3/21)

破壊的変更

  • 不具合修正 - 以前のリリースではLimelightのロボットスペース「ヨー」が反転していました。Webインターフェースでのヨーは内部的に反時計回りが正になりました。

リージョン選択の更新

  • リージョン選択がニューラル検出器パイプラインで期待通りに動作するようになりました。
  • 回転していないターゲット矩形の中央、上部、左、右、上、または下を選択するための5つの新しいリージョンオプションを追加しました。

「hwreport」REST API

  • :5807/hwreportはカメラの内部パラメータと歪み情報を詳細に示すJSON応答を返します。

MegaTag修正

  • 特定の非共面AprilTagレイアウトがMegaTagで機能していませんでした。これは修正され、すべてのフィールドタグでポーズ推定が安定するようになりました。これにより、以前よりもさらに遠距離での安定したポーズ推定が可能になります。

txとtyの精度向上

  • TXとTYはこれまで以上に正確になりました。ターゲットは完全に歪みが補正され、視野角はカメラの内部パラメータによって完全に決定されます。

2023.4.0 (2023/2/18)

ニューラル検出器クラスフィルター

追跡したいクラスを指定して、不要な検出を簡単にフィルタリングできます。

ニューラル検出器の拡張サポート

任意の入力解像度をサポートし、他のオブジェクト検出アーキテクチャをサポートするための追加の出力形状をサポートします。EfficientDet0ベースのモデルがサポートされるようになりました。


2023.3.1 (2023/2/14)

AprilTagの精度向上

すべてのモデルの内部パラメータ行列と、最も重要な歪み係数が改善されました。単一AprilTagの位置推定が顕著に向上しました。

検出器アップロード

検出器アップロードが修正されました。


2023.3 (2023/2/13)

キャプチャレイテンシー(NTキー:「cl」、JSON結果:「cl」)

新しいキャプチャレイテンシーエントリは、Limelightの画像センサーの中央行の露光終了から処理パイプラインの開始までの時間を表します。

AprilTagの新しい品質しきい値

新しい品質しきい値スライダーにより、誤検出されたAprilTagをより簡単にフィルタリングできるようになりました。2023.3で設定されたデフォルト値は、ほとんどの誤検出を除去するはずです。

ロボットスペースでのカメラポーズオーバーライド(NTキー:「camerapose_robotspace_set」、「camerapose_robotspace」)

ロボットスペースにおけるLimelightの位置をリアルタイムで調整できるようになりました。キーがゼロの配列に設定されている場合、Webインターフェースで設定されたポーズが使用されます。

エレベーター上のLimelightの例: エレベーター上のLimelight

最大露光時間の増加

最大露光時間が33ms(以前は12.5ms)になりました。高フレームレートのキャプチャモードは引き続き(1/fps)秒に制限されています。例えば、90Hzパイプラインでは、11ms以上の露光時間では画像が明るくなりません。

Botposeの更新

NetworkTablesの3つのbotpose配列すべてに、合計レイテンシー(キャプチャレイテンシー + ターゲティングレイテンシー)を表す7番目のエントリがあります。

バグ修正

  • ShuffleboardでのLL3 MJPEGストリームを修正
  • camModeを修正 - ドライバーモードで明るく使いやすい画像が生成されるようになりました
  • 露光ラベルが修正されました - 各「目盛り」は0.1msではなく0.01msを表します
  • ニューラルネット検出器のアップロードを修正

2023.2 (2023/1/28)

3Dをこれまで以上に簡単に。

WPILib互換のBotposes

Botposeはすぐに使えるようになりました。

これらはWPILib座標系と一致します。megatag botposeの例:

すべてのbotposeはWebインターフェースのフィールドスペース可視化ツールに直接表示されるため、すべてが正しく機能していることを一目で確認できます。

3Dデータへの簡単なアクセス(破壊的変更)

ターゲットスペースでのRobotPoseは、AprilTagに関してLimelightから得られる最も有用なデータと言えます。これだけで、フィールド上のAprilTagに対してドライブトレインを完璧に位置合わせできます。

  • NetworkTablesキー「campose」は現在「camerapose_targetspace」になりました
  • NetworkTablesキー「targetpose」は現在「targetpose_cameraspace」になりました
  • 新しいNetworkTablesキー - 「targetpose_robotspace」
  • 新しいNetworkTablesキー - 「botpose_targetspace」

ニューラルネットアップロード

Teachable Machineモデルをライムライト分類器パイプラインにアップロードできます。Tensorflow Lite EdgeTPU互換モデルであることを確認してください。 .tfliteファイルと.txtラベルファイルを別々にアップロードしてください。


2023.1 (1/19/23)

MegaTagとパフォーマンス向上

誤りの修正

UIのデフォルトマーカーサイズパラメータが152.4mm(203.2mmから下方修正)に修正されました。これが精度問題の主な原因でした。

トラッキング安定性の向上

AprilTagの検出とデコードを調整する方法はいくつかあります。特に低光量/低露出環境での安定性を全体的に向上させました。

超高速グレースケール化

グレースケール化が以前より3〜6倍高速になりました。チームはAprilTagをトラッキングする際に常にグレーのビデオストリームを見ることになります。

パフォーマンス向上のためのクロップ

AprilTagパイプラインにクロップスライダーが追加されました。画像をクロップすることで、どの解像度でもフレームレートが向上します。

より簡単なフィルタリング

AprilTagパイプラインに「IDフィルター」フィールドが1つ追加され、JSON出力、botpose対応タグ、tx/ty対応タグをフィルタリングします。二重フィルター設定はバグが多く、混乱を招いていました。

破壊的変更

NTキー「camtran」は現在「campose」になりました

JSON更新

「botpose」がjson結果ダンプの一部になりました

フィールドスペースビジュアライザーの更新

フィールドスペースビジュアライザーが2023 FRCフィールドを表示するようになりました。これにより、botposeの精度を一目で判断しやすくなりました。

Limelight MegaTag(新しいbotpose)

私の最優先事項は、より高い精度、ノイズの低減、曖昧さへの耐性を持つbotposeの書き直しでした。Limelightの新しいbotpose実装はMegaTagと呼ばれています。複数の個別のフィールドスペースポーズの単純な平均でbotposeを計算する代わりに、MegaTagは基本的にすべてのタグを複数のキーポイントを持つ1つの巨大な3Dタグに組み合わせます。これには大きなメリットがあります。

次のGIFは、タグのフリップを誘発するように設計された状況を示しています: 緑の円筒:個別のタグごとのボットポーズ 青の円筒:2023.0.1 BotPose 白の円筒:新しいMegaTag Botpose

新しいbotpose(白い円筒)が古いbotpose(青い円筒)と比較して非常に安定していることに注目してください。txとty値も確認できます。

タグの曖昧さを示すフルスクリーンはこちらです:

メリットは以下の通りです:

複数のタグが視界に入っている場合、Botposeは曖昧さ(タグのフリップ)に対して耐性があります(タグが近くて同一平面上にある場合を除く。理想的にはキーポイントが同一平面上にないこと)。複数のタグが視界に入っている場合、Botposeはタグの角のノイズに対してより耐性があります。タグ同士が離れているほど、効果は高まります。これは平面タグに限定されません。完全な3Dおよびあらゆる向きの任意の数のタグにスケールします。床のタグと天井のタグは完璧に機能します。

この仕組みの一側面を単純な平面ケースで示す図です。実際の結果は描写されているものよりも優れています。描かれているMegaTagは1点ではなく3点に大きな誤差が適用されています。3D結合MegaTagのサイズとキーポイント数が増えるにつれて、その安定性は向上します。

ニューラルネットのアップロードは2023.2に延期されました!


2023.0.0 および 2023.0.1 (1/11/23)

AprilTags、ロボット位置推定、ディープニューラルネットワーク、書き直されたスクリーンショットインターフェースなどを導入。

機能、変更点、バグ修正

  • 新しいセンサーキャプチャパイプラインとゲイン制御
    • 新しいキャプチャパイプラインにより、2022年版と比較して100倍短い露出時間が可能になりました。また、新しいパイプラインではゲイン制御も可能になりました。これはAprilTagsトラッキングにとって非常に重要であり、レトロリフレクティブターゲットの追跡をこれまで以上に確実にします。Limelight OS 2023以前は、Limelightのセンサーゲインは非決定的でした(それでも動作するようにいくつかの工夫を実装していました)。
    • 新しい「センサーゲイン」スライダーにより、チームは露出スライダーを調整せずに、これまで以上に画像を暗くしたり明るくしたりすることができます。ゲインを上げると画像のノイズが増加します。
    • 低いゲインと新しい低露出時間を組み合わせることで、フル輝度のLEDとレトロリフレクティブターゲットでほぼ完全に黒い画像を生成することが可能になりました。これにより、レトロリフレクティブターゲットを追跡する際のLEDや太陽光の反射を軽減するのに役立ちます。
    • センサーゲインを上げて露出を減らすことで、チームはAprilTagsを追跡する際の高露出時間によるモーションブラーの影響を最小限に抑えることができます。
    • すべての機能(90fps、ハードウェアズームなど)を維持しながら、この新しいパイプラインを開発することに成功しました。
  • より多くの解像度オプション
    • LL1、LL2、およびLL2+に2つの新しいキャプチャ解像度が追加されました:640x480x90fpsと1280x960x22fps
  • 最適化されたWebインターフェース
    • WebGUIはロボットネットワーク上で最大3倍速く読み込みと初期化が行われるようになりました。
  • 書き直されたスナップショットインターフェース
    • スナップショット機能が完全に書き直され、画像のアップロード、ダウンロード、削除が可能になりました。また、ドキュメントに詳述されているスナップショットをキャプチャするための新しいAPIもあります。
  • SolvePnPの改善
    • solvePnPベースのカメラ位置推定機能には、4フレームごとにその精度を深刻に制限する厄介なバグがありました。これが修正され、レトロリフレクティブ/カラーSolvePNP可視化のための新しい完全3Dキャンバスが構築されました。
  • Webインターフェースのバグ修正
    • 2022年に非常にまれな問題があり、フラッシュ後の最初の起動時にWebインターフェースが永続的に壊れ、ユーザーに再フラッシュを強制することがありました。根本原因が発見され、完全に修正されました。
  • 新しいAPI
    • LimelightにはRESTとWebsocket APIが含まれるようになりました。REST、Websocket、およびNetworkTables APIはすべて新しいJSONダンプ機能をサポートしており、すべてのターゲットのすべてのデータを人間が読みやすく、解析が簡単な形式でFRCおよびその他のすべてのアプリケーション向けに一覧表示します。

ゼロコードの学習ベースビジョンとGoogle Coralサポート

  • Google Coralがすべてのライムライトモデルでサポートされるようになりました。Google Coralは、8ビットニューラルネットワークの推論のために特別に構築された4TOPs(1秒あたり数兆回の演算)のUSBハードウェアアクセラレータです。
  • 数年前のレトロリフレクティブトラッキングと同様に、FRCロボットでの学習ベースのビジョンへの参入障壁は、平均的なチームが試みるには高すぎました。私たちは、ライムライトでレトロリフレクティブターゲットと同じくらい簡単に学習ベースのビジョンを実現するために必要なすべてのインフラストラクチャを開発しました。
  • クラウドGPUクラスター、トレーニングスクリプト、データセット集約ツール、そして人間のラベリングチームが準備できています。私たちはディープニューラルネットワークをFRCコミュニティに初めてもたらすことに興奮しています。
  • 現在、物体検出モデルと画像分類モデルの2種類のモデルをサポートしています。
    • 物体検出モデルは、検出されたすべてのオブジェクトに対して「クラスID」とバウンディングボックス(レトロリフレクティブターゲットと同様)を提供します。これはリアルタイムのゲームピーストラッキングに最適です。
      • こちらで画像を提出して、FRC初の物体検出モデルに貢献してください:https://datasets.limelightvision.io/frc2023
      • 検出ネットワークを使用するには、tx、ty、ta、tclassのネットワークテーブルキーまたはJSONダンプを使用してください
    • 画像分類モデルは画像を取り込み、単一のクラスラベルを生成します。
      • 詳細を学び、ライムライト用の独自のモデルのトレーニングを開始するには、Googleのティーチャブルマシンをチェックしてください。
      • https://www.youtube.com/watch?v=T2qQGqZxkD0
      • ティーチャブルマシンのモデルはライムライトと直接互換性があります。
      • 画像分類器は、内部ロボット状態、フィールド機能の状態などを分類するために使用できます。
      • これらのモデルを使用するには、tclassネットワークテーブルキーを使用してください。
  • Limelight OS 2023.0では、カスタムモデルをアップロードする機能は提供されていません。これは2023.1で間もなく有効になります。

ゼロコードAprilTagサポート

  • AprilTagsはライムライトでレトロリフレクティブターゲットと同じくらい簡単です。IDという形で自然なハードフィルターがあるため、roboRIOにビジョン関連のフィルタリングを行わせる理由はさらに少なくなります。
  • 開始するには、通常通りtx、ty、taを使用してください。コード変更は必要ありません。任意のターゲット特性でソートし、ターゲットグループを利用するなどが可能です。
  • AprilTagsは常に正方形で常に一意に識別可能なため、完全な3Dポーズ計算のための完璧なプラットフォームを提供します。
  • このサポートチャネルでこの機能に対して受け取ったフィードバックは非常に肯定的でした。私たちは2Dトラッキングからフィールド上の完全な3Dロボット位置推定まで、AprilTagsをできるだけ簡単にしました。
  • 詳細については、フィールドマップ仕様と座標系のドキュメントをご覧ください。
  • ライムライトでAprilTagsを使用する方法は4つあります:
  • 2DでのAprilTags
    • tx、ty、taを使用します。特定のタグIDを探すようにパイプラインを設定します。
    • <gif>
  • 注目点3D AprilTags
    • tx、ty、ta、tidネットワークテーブルキーを使用します。注目点オフセットは、AprilTagsが直接取り付けられていないターゲットを追跡するために、ほとんどのチームが必要とするものです。
    • <gif>
  • 完全3D
    • LL、ロボット、またはタグを完全3Dで追跡します。camposeまたはjsonを使用して、関連データをroboRioに取り込みます。
    • <gif>
  • フィールド空間ロボット位置推定
    • ライムライトの取り付け方法を伝え、フィールドマップをアップロードすると、LLはWPILib Pose Estimatorで使用するためのロボットのフィールドポーズを提供します。
    • 私たちのフィールド座標系では、(0,0)は角ではなくフィールドの中心に配置されています。
    • この機能にはbotposeネットワークテーブルキーを使用します。
    • <gif>

2022.3.0 (4/13/22)

バグ修正とハートビート。

バグ修正

  • USBカメラストリームと複数のストリームインスタンスに関連するパフォーマンス、ストリーム安定性、ストリームラグの問題を修正。

機能と変更点

  • "hb" ハートビートNetworkTableキー
    • "hb"値は処理フレームごとに1ずつ増加し、2000000000でゼロにリセットされます。

2022.2.3 (3/16/22)

バグ修正とロボットコードクロップフィルタリング。

バグ修正

  • "stream"ネットワークテーブルキーとピクチャーインピクチャーモードを修正
  • "snapshot"ネットワークテーブルキーを修正。スクリーンショットを撮るには、ユーザーは"snapshot"キーを"1"に設定する前に"0"に設定する必要があります。
  • Webインターフェースから余分なPython関連のアラートを削除

機能と変更点

  • 手動クロップフィルタリング
    • "crop"ネットワークテーブル配列を使用して、チームはロボットコードからクロップ矩形を制御できるようになりました。
    • "crop"キーが機能するためには、現在のパイプラインがデフォルトの広く開いたクロップ矩形(minXとminYに-1、maxXとmaxYに+1)を使用している必要があります。
    • さらに、"crop"ネットワークテーブル配列には正確に4つの値が必要で、それらの値の少なくとも1つはゼロ以外である必要があります。

2022.2.2 (2/23/22)

Week 0とFMS信頼性テストに基づくすべてのチームの必須アップグレード。

バグ修正

  • 開いているWebインターフェース、FMS、FMSのようなセットアップ、複数のビューアデバイスなどに関連するハング/接続の喪失/ターゲティングの喪失を修正。

機能と変更点

  • クロップフィルタリング

    • 指定されたクロップ矩形の外側のすべてのピクセルを無視します
    • フライホイールがフィールド上に特定のスイートスポットを持っている場合、クロップフィルターを使用して特定のパイプラインでピクセルの大部分を無視することができます。この機能は、チームが非ターゲットを追跡する確率を減らすのに役立ちます。
    • カーゴを追跡している場合は、この機能を使用して画像の特定の部分内のカーゴのみを探します。チームのバンパー、遠くのターゲットなどを無視することを検討してください。
  • コーナー機能がスマートターゲットグループ化と互換性を持つようになりました

    • これはRIOでより高度なカスタムビジョンを行いたいチーム向けです
    • "tcornxy"コーナーの制限が64コーナーに増加
    • 輪郭の単純化と強制凸機能がスマートターゲットグループ化とコーナー送信で適切に機能するようになりました
  • IQRフィルターの最大値が3.0に増加

  • Webインターフェースのライブターゲット更新レートが30fpsから15fpsに削減され、Webインターフェースが開いている間の帯域幅とCPU負荷を軽減

2022.1 (1/25/22)

バグ修正

  • Limelight 2で特に使用されているCPUの約1/75に影響する問題(および修正!)について、サプライヤーの1社から情報を入手しました(特定のバッチに関連している可能性があります)。これは理にかなっており、2022イメージと2020イメージの間で残っていた数少ない起動の違いの1つでした。
  • GRIPの入力とSolvePNPモデルのアップロードボタンを修正

機能

  • 色相レインボー

    • 新しい色相レインボーにより、色相のしきい値の設定がより簡単になりました。
  • 色相反転

    • 新しい色相反転機能は、赤い物体を追跡したい場合に重要な機能です。赤は色相範囲の始まりと終わりの両方に位置しているためです:
  • 新しいPythonライブラリ

    • scipy、scikit-image、pywavelets、pillow、pyserialをPythonサンドボックスに追加しました。

2022.0および2022.0.3 (1/15/22)

これは大きなアップデートです。主な変更点は以下の4つです:

機能

  • スマートターゲットグループ化

    • すべての個別ターゲットフィルターに合格するターゲットを自動的にグループ化します。
    • -グループサイズスライダーの最小値- から -グループサイズスライダーの最大値- の間の任意の数のターゲットを動的にグループ化します。
  • 外れ値の除外

    • このゴールは他のゴールよりも難しいですが、フィルタリングの機会が増えます。概念的に、このゴールは単なる「緑色のブロブ」以上のものです。ゴールが互いに近い複数のターゲットで構成されていることがわかっているため、単独で存在する外れ値のターゲットを実際に除外することができます。
    • 今年のゴールには、ほぼ完全に良好なターゲットフィルタリングに依存し、カメラストリームで不要な外れ値が見られるか予想される場合にのみ、外れ値の除外を使用してください。標準的なターゲットフィルタリングが不十分な場合、外れ値検出は逆効果になる可能性があります!
  • Limelight 2022イメージのアップグレード ソフトウェアから何百もの可動部品を削除しました。結果は次のとおりです:

    • 圧縮イメージサイズ:2020年の1.3 GB → 2022年は76MB(17倍削減!)
    • ダウンロード時間:2020年の数十分 → 2022年は数秒
    • フラッシュ時間:2020年の5分以上 → 2022年は数秒
    • 起動時間:2020年の35秒以上 → 2022年は14秒(LEDが点灯するまで10秒)
  • 完全なPythonスクリプティング

    • Limelightは、ロボット工学におけるコンピュータビジョンの機能の一部を多くの学生に公開することに成功しました。Pythonスクリプティングにより、チームは独自の画像処理パイプラインを作成することで、さらに一歩前進できるようになりました。
  • このアップデートはLimelight 1を含むすべてのLimelightハードウェアと互換性があります。

  • 既知の問題:Pythonでハードウェアズームを使用すると、予期しない結果が生じます。

  • 2022.0.3では5802 GRIPストリームが復元され、一部の起動時間最適化を元に戻すことで一部のLL2ユニットの起動問題に対処しています。起動時間は16秒に増加しています。