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

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

2023.6 (2023/4/18)

簡単なChArUcoキャリブレーション&キャリブレーションビジュアライザー

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

2023.5.1 & 2023.5.2 (2023/3/22)

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

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

  • Limelight Yawが3Dビジュアライザーで正しく表示されるようになりました。ビジュアライザーと内部的にccw-positive(反時計回りが正)です。

  • フィールドスペースビジュアライザーで現在追跡中のターゲットを表示


2023.5.0 (2023/3/21)

破壊的変更

  • リグレッションを修正 - Limelightロボットスペース「Yaw」は以前のリリースで反転していました。Web UIのLimelight yawは内部的にCCW-Positive(反時計回りが正)になりました。

領域選択の更新

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

"hwreport" REST API

  • :5807/hwreportはカメラの内部パラメータと歪み情報を詳述するJSONレスポンスを返します

MegaTag修正

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

txとtyの精度向上

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

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から増加)になりました。高fpsキャプチャモードは依然として(1/fps)秒に制限されています。例えば、90hzパイプラインでは、11msの露光時間を超えても画像は明るくなりません。

Botposeの更新

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

バグ修正

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

2023.2 (2023/1/28)

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

WPILib互換のBotpose

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

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

すべてのbotposeはWebインターフェースのフィールドスペースビジュアライザーに直接表示され、すべてが正しく動作していることを一目で確認できます。

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

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

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

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

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


2023.1 (2023/1/19)

MegaTagとパフォーマンス向上

間違いの修正

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

追跡安定性の向上

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

超高速グレースケール化

グレースケール化が以前の3倍〜6倍高速になりました。AprilTagを追跡している間、チームは常にグレーのビデオストリームを見ることになります。

パフォーマンスのためのクロッピング

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

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

AprilTagパイプラインに単一の「IDフィルター」フィールドが追加され、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 (2023/1/11)

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

機能、変更、バグ修正

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

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

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

ゼロコードAprilTagサポート

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

2022.3.0 (2022/4/13)

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

バグ修正

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

機能と変更

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

2022.2.3 (2022/3/16)

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

バグ修正

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

機能と変更

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

2022.2.2 (2022/2/23)

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

バグ修正

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

機能と変更

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

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

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

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


2022.1 (2022年1月25日)

バグ修正

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

機能

  • 色相レインボー

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

    • 新しい色相反転機能は、赤いオブジェクトを追跡したい場合に重要な機能です。赤は色相範囲の最初と最後の両方にあるためです:
  • 新しいPythonライブラリ

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

2022.0 および 2022.0.3 (2022年1月15日)

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

機能

  • スマートターゲットグルーピング

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

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

    • 圧縮イメージサイズ:2020年の1.3 GB → 2022年は76MB(17分の1に削減!)
    • ダウンロード時間: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秒に増加しています。