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

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

2023.6 (4/18/23)

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

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

2023.5.1 & 2023.5.2 (3/22/23)

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

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

  • Limelightのヨーが3Dビジュアライザーで正しく表示されるようになりました。ビジュアライザー内部では反時計回りが正の値となります。

  • フィールドスペースビジュアライザーで、現在追跡中のターゲットを表示するようになりました。


2023.5.0 (3/21/23)

重要な変更点

  • 以前のリリースでLimelightのロボット空間における"Yaw"が反転していた不具合を修正。LimelightのウェブUI上のyawは内部的に反時計回りが正となりました。

領域選択の更新

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

"hwreport" REST API

  • :5807/hwreportでカメラの内部パラメータと歪み情報を含むJSONレスポンスを返すようになりました。

MegaTagの修正

  • 特定の非共面AprilTagレイアウトがMegaTagで正しく動作していなかった問題を修正。これにより、すべてのフィールドタグでポーズ推定が安定するようになりました。これにより、これまで以上に遠距離でも安定したポーズ推定が可能になります。

txとtyの精度向上

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

2023.4.0 (2/18/23)

Neural Detector クラスフィルター

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

Neural Detector の拡張サポート

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


2023.3.1 (2/14/23)

AprilTagの精度向上

すべてのモデルにおいて、内部パラメータ行列と、特に重要な歪み係数が改善されました。単一のAprilTagローカライゼーションで顕著な改善が見られます。

検出器のアップロード

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


2023.3 (2/13/23)

キャプチャレイテンシー (NT キー: "cl", JSON 結果: "cl")

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

AprilTagsの新しい品質閾値

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

ロボット空間でのカメラ位置の上書き (NT キー: "camerapose_robotspace_set", "camerapose_robotspace")

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

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

最大露光時間の増加

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

Botposeの更新

NetworkTablesの3つのbotpose配列すべてに、7番目のエントリとして総レイテンシー(キャプチャレイテンシー + ターゲティングレイテンシー)が追加されました。

バグ修正

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

2023.2 (1/28/23)

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

WPILib互換のBotpose

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

これらはWPILibの座標系に対応しています。 megatag botposeの例:

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

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

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

  • NetworkTablesのキー "campose" は "camerapose_targetspace" に変更
  • NetworkTablesのキー "targetpose" は "targetpose_cameraspace" に変更
  • 新しいNetworkTablesのキー - "targetpose_robotspace"
  • 新しいNetworkTablesのキー - "botpose_targetspace"

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

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


2023.1 (1/19/23)

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は曖昧さ(タグの反転)に対して耐性を持ちます(タグが近くて同一平面上にある場合を除く。理想的にはキーポイントは同一平面上にないことが望ましい)。複数のタグが視界にある場合、タグコーナーのノイズに対してより耐性を持ちます。タグ同士が離れているほど、より良い結果が得られます。これは平面タグに限定されません。完全な3Dで任意の数のタグ、任意の向きに対応します。床のタグと天井のタグも完璧に機能します。

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

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

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

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サポート

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

ゼロコードのAprilTagサポート

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

2022.3.0 (4/13/22)

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

バグ修正

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

機能と変更点

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

2022.2.3 (3/16/22)

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

バグ修正

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

機能と変更点

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

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 (2022年1月15日)

これは大きなアップデートです。主な変更点は以下の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秒に増加しています。