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

ソフトウェア変更履歴 & フィードバック

問題や機能リクエストはメールまたはLimelight Feedback Repoに送信してください

Limelight OS 2025.1 (最終リリース - 2/24/25 テストリリース - 2/18/25)

2/24/25 - 2025.1テストリリースで発生した接続性の問題を修正。

LL4 IMUアップデート

  • IMUセンサーフュージョンの改善
    • 振動やFRCレベルの衝撃下でのパフォーマンスが大幅に向上。フュージョンアプローチに大きな変更。
IMU Updates 2025.1

上の画像は、FRCロボットでのかなり激しい約5分間の練習セッションの結果を示しています。このセッションでは、以下のヘディングを測定しました:

  1. 2025.0を実行しているLimelight 4(llyawOLD)
  2. 2025.1を実行しているLimelight 4(llyaw)
  3. Pigeon 2.0

2つのLL4は同じ向きで取り付けられています。2025.1を実行しているLL4の全体的な精度の大幅な改善に注目してください

  • IMUモード3 - IMU_ASSIST_MT1 - 内部IMUはフィルタリングされたMT1ヨー推定値を使用して継続的なヘディング補正を行います

  • IMUモード4 - IMU_ASSIST_EXTERNALIMU - 内部IMUは外部IMUを使用して継続的なヘディング補正を行います

  • imuassistalpha_set NTキーを追加(デフォルト0.001)- 相補フィルターのアルファ/強度。値が高いほど、内部IMUがアシストソースに素早く収束します

  • デフォルトは低い値0.001に設定されています。これは、以前よりも内部IMUを信頼しているためです。アシストモードは、急速な動きの際に内部IMUの応答性を損なうことなく、選択したアシストソースに向けて内部IMUを非常に穏やかに「引っ張る」ように構築されています。

LL4 熱性能アップデート

  • 'throttle_set'を追加。Nフレームスキップごとに1フレームを処理します。パターン例:

    • throttle_set=1: [スキップ, 処理, スキップ, 処理]
    • throttle_set=2: [スキップ, スキップ, 処理, スキップ, スキップ, 処理]
  • スキップされたフレーム中に出力はゼロ/リセットされません。

  • 無効時にこれを高い数値(50-200)に設定して、LL4の温度を管理してください。

  • オプションとして、パイプラインをビューファインダーとして設定し、無効時にこのパイプラインに切り替えることができます。

LL4とLL3Gの新しいFPSオプション

  • 1280x800で60FPS、55FPS、45FPS、30FPSを追加。
  • 低いキャプチャレートを使用すると、AC照明によるイメージブルーミング/ブリージングを避けるために露出時間を増やすことができます。

REST APIアップデート

  • IMUモードREST APIを追加 - 'update-imumode'
  • スロットルREST APIを追加 - 'update-throttle'
  • IMU ASSIST ALPHA REST APIを追加 - 'update-imuassistalpha'

FMapアップデート

  • FMap Jsonファイルにbase64エンコードされたSVGをオプションで埋め込めるようになりました
  • FMap Jsonファイルにbase64エンコードされたPNGをオプションで埋め込めるようになりました

ReefScapeニューラルネットワークをアップロード

  • B2 Hailoモデルは、FRC2025で最高のパフォーマンスを発揮するモデルです。LL4により適応するためにモノクロ画像でトレーニングされました。
Coral Model

LL3Aアップデート

  • 3Aは2025アップデートで完全にサポートされています

バグ修正

  • 内部IMUを持たないLimelightはimumode_setを無視します
  • Limelight 3GにアップグレードされたLimelight 3は、内蔵ファンを適切に使用します
  • Hailoベースのニューラルディテクターパイプラインでのクロッピングを修正
  • HailoベースのAprilTagパイプラインでのクロッピングを修正

Limelight OS 2025.0 (1/15/24)

LL4サポート

  • Hailoオブジェクト検出とHailoアクセラレーションAprilTagsのサポートを追加
  • LL4の内部IMUのサポートを追加
  • "imumode_set" NTキーを追加
    • 0 - 外部IMUを使用、内部IMUをシードしない
    • 1 - 外部IMUを使用、内部IMUをシードする
    • 2 - 内部IMUを使用

2025フィールドアップデート

  • フィールドの幅と高さが.fmapファイルの一部になりました
  • デフォルトの.fmapを2025フィールドに合わせて更新
  • デフォルトのフィールド画像を更新
  • オンラインマップビルダーでフィールドの幅と高さを設定できるようになりました
  • ダウンロードページの2025 fmapリンクが更新されました。

バグ修正

  • 「すべてのスナップショットを削除」ボタンを修正

Limelight OS 2024.10.2 (10/28/24)

Python Snapscript修正(クレジット - FTCチーム23251 TRIPLE FAULT)

  • Control HubでLimelight3Aを使用している際にPython出力がフリーズしなくなりました
  • Pythonパイプライン間を切り替える際にPython出力がフリーズしなくなりました

MT2エッジケース

https://github.com/LimelightVision/limelight-feedback/issues/23

  • ロボットなしでMT2をテストする際、幾何学的に不可能な状態を生成しやすいです。
  • このエッジケースはmt2 botposeをゼロにするのではなく、カメラポーズをゼロにしていました。
  • このエッジケースが検出されると、ロボットは(0,0,0)に配置されるようになりました

静的IPアドレス指定

https://github.com/LimelightVision/limelight-feedback/issues/25

  • アドレスが.1-.10または.20-.255で終わる場合、IPアドレス設定に警告を追加しました。これらのアドレスはFMSや他のデバイスと干渉する可能性があります
  • 2024.10.1では、アドレス指定スキームが「自動」に設定されている場合でも、UIが静的IPが設定されていると示唆することがありました

STDDevs NetworkTables

https://github.com/LimelightVision/limelight-feedback/issues/24

  • NetworkTablesの"stddevs"にはmt1とmt2のすべての標準偏差が含まれています(double配列、12要素)

モデルアップロードエッジケース

  • 分類器モデルがディテクターパイプラインにアップロードされた場合、画像に「check model」が表示されます
  • ディテクターモデルが分類器パイプラインにアップロードされた場合、画像に「check model」が表示されます

Limelight OS 2024.10.1 (9/15/24)

Limelight 3Aアップデート

  • デフォルトのカラーバランス値を更新
  • デフォルトのAprilTagサイズ設定を101.6 mmに更新
  • デフォルトのビデオストリームフレームレートを30FPSに削減
  • ストリームビットレートを削減するためにビデオストリーム圧縮をわずかに増加

AprilTagサイズ警告

  • 設定されたAprilTagサイズがアップロードされたフィールドマップのサイズと一致しない場合、フィールドスペースビジュアライザーに警告を追加。
Example banner

CameraPose_RobotSpaceバグ修正

  • NetworkTables/LimelightLib/RESTからUIで設定されたカメラポーズをオーバーライドする機能が再び正常に動作するようになりました。

Limelight OS 2024.10 (9/4/24)

FTC用Limelight 3Aサポート

  • Limelight3Aが完全にサポートされました
  • 3AはFTCとFRCの両方で使用可能です

AprilTagマップアップデート

  • マップエディターが標準およびダイヤモンドFTCマップ生成をサポートするようになりました
  • LLOS Webインターフェースは、アップロードされたマップに基づいて正しいフィールドタイプを自動的に表示します
  • ツールとインターフェース全体のすべてのフィールドビジュアライザーがアライアンスゾーンとFTCタイルグリッドを表示します。
  • 3Dビジュアライザーのパフォーマンスが改善されました。

ControlHubとRoboRioでのUSB Limelightサポート

  • FTCチームはControl Hub上で単一のUSB対応Limelightを使用できます
  • FRCチームはRoboRio上で最大16台のUSB対応Limelightを使用できます。USB Limelightはイーサネット Limelightと同様にNetworkTablesに自動的に登録されます。
    • 複数のUSB Limelightを使用するには、各LLに一意のUSBインデックスと一意のホスト名を付けてください。

USB接続性アップグレード

  • MacOSはUSBイーサネットLimelightインターフェースをインターネットアクセスに使用しなくなりました
  • WindowsはUSBイーサネットLimelightインターフェースをインターネットアクセスに使用しようとしなくなりました

REST APIアップデート

  • update-robotorientation POSTリクエストを修正。
  • MT2がNetworkTablesなしで完全にアクセス可能になりました。
  • update-robotorientationルートが使用されると、再起動までNetworkTablesの向き更新が無効になります。

Limelight OS 2024.9.1 (7/7/24)

  • マップビルダーツールがWPILib .json AprilTagレイアウトを受け入れ/変換するようになりました
  • Python SnapscriptsにAprilTag3を追加(from apriltag import apriltag)
  • examples githubリポジトリの例を参照してください
  • WindowsでのUSB接続ゲートウェイの問題を修正。

mosaic screenshot:

Limelight OS 2024.9 (7/5/24)

MegaTagアップグレード

  • Limelight OSはNetworkTables 4.0に移行しました

  • MegaTag2はNT4のgetAtomic()を使用してroboRIOからタイムスタンプ付きIMU更新を取得するようになりました。

  • タイムスタンプ付き画像フレームは、補間が実行される前に最も関連性の高い2つのIMUサンプルとマッチングされます。

  • NT4 flush()がLimelightLibに追加されました。古いバージョンのLimelight OSにFlush()を追加すると、2024.9のパフォーマンスにかなり近づきますが、NT4は常に高い精度を保証します。

  • MT2ビジュアライザーロボットは緑のバンパーを持ち、MT1のビジュアライザーロボットは黄色のバンパーを使用します。

  • メトリクスが折りたたみ可能になり、仮想ロボットを非表示にできるようになりました。

  • 以下のビデオは、ロボット側のflush()を使用した2024.9のMegaTag 2(緑のロボット)が、Flush()なしの2024.5のMegaTag2(赤のロボット)よりも堅牢であることを示しています

USB IDと新しいUSB IPアドレス

  • 設定ページで「USB ID」を設定して、任意のシステムで複数のUSB Limelightを使用できます。
  • システムに表示されるUSBイーサネットインターフェースは、USB IDによって決定されるIPアドレスを使用します
  • Linux/Android/Macシステムはデフォルトで172.29.0.0/24サブネットを使用するようになりました
  • Windowsシステムはデフォルトで172.28.0.0/24サブネットを使用するようになりました。
  • USBIDが設定されている場合、サブネットはLinux/Android/Macでは172.29.(USBID).0/24に、Windowsでは172.28.(USBID).0/24に変更されます。
  • 例えば、ホスト名とUSB IDを調整することで、4台のLimelightデバイスを単一のUSBハブに接続できるようになりました

CPUニューラル分類器

  • CPU .tflite分類器をアップロードして、Google Coralなしでニューラル分類を有効にできます。LL3バリアントで15-18 FPSが期待できます。
  • 2024.9にはデフォルトのCPU分類器が付属しています。
  • この機能を有効にするには、分類器ランタイムを「CPU」に設定してください

CPUニューラルディテクター

  • CPU .tfliteディテクターをアップロードして、Google Coralなしでニューラル検出を有効にできます。LL3バリアントで10 FPSが期待できます。
  • 2024.9にはデフォルトのCPUディテクターが付属しています。
  • この機能を有効にするには、ディテクターランタイムを「CPU」に設定してください

Limelight OS 2024.8 (7/3/24)

  • python出力(PythonOut)、tx、ty、txnc、tync、taをjson結果オブジェクトに追加
  • MT2レイテンシ補正をさらに改善

Limelight OS 2024.7 (5/21/24)

  • Linux 6.6にアップグレード

バグ修正

  • ビジョンパイプライン変換を修正
  • キャリブレーションアップロード、スナップショットアップロード、nnアップロードを修正

Limelight OS 2024.6 (5/8/24)

LimelightLib Python

  • pip install limelightlib-python
  • 当社のPythonライブラリを使用すると、任意のプラットフォームでUSBおよびイーサネットLimelightと対話できます。
  • Web UIの操作なしで完全なLimelight設定が可能です。
  • パイプライン、ニューラルネットワーク、フィールドマップなどをアップロード
  • オプションの「ディスクにフラッシュ」オプションを使用して、任意のパイプラインパラメータにリアルタイムで変更を加えることができます
  • カスタムPython入力データの投稿、ロボットの向きの設定など

MegaTag2アップグレード

  • MegaTag2ジャイロレイテンシ補正が改善されました。さらなる改善にご期待ください!
  • UIに「ジャイロレイテンシ調整」スライダーを追加。MegaTag 2のレイテンシ補正を手動で調整するには、ロボットを回転させ、回転中にローカリゼーション結果が完璧になるまでスライダーを調整できます。

標準偏差メトリクス

  • 3Dフィールドビジュアライザーに、x、y、ヨーのMegaTag1およびMegatag2標準偏差が含まれるようになりました。

新しい「フォーカス」パイプラインタイプ

  • 「フォーカス」モードでは、ストリーム品質スライダーとクロップボックススライダーにアクセスできます
  • レンズを回して「フォーカス」スコアを最大化します。
  • カメラが固定位置にある場合、これは1分もかかりません。固定/マウントされたLimelightでフォーカスすることをお勧めします。

新しい「バーコード」パイプラインタイプ

  • 1280x800で50-60FPSのマルチQRコード検出とデコード
  • 1280x800で50-60FPSのマルチDataMatrix検出とデコード
  • 1280x800で30FPSのマルチUPC、EAN、Code128、PDF417
  • バーコードデータ文字列は「rawbarcodes」NT配列に投稿されます。
  • バーコードパイプラインは、tx、ty、ta、tcornxyなどのすべての2Dメトリクスを入力します。

完全に新しいREST API

  • https://docs.limelightvision.io/docs/docs-limelight/apis/rest-http-api
  • REST / HTTP APIがゼロから再構築されました。
  • REST APIを使用すると、Web UIの操作なしで完全なLimelight設定が可能です。
  • パイプライン、ニューラルネットワーク、フィールドマップなどをアップロード
  • オプションの「ディスクにフラッシュ」オプションを使用して、任意のパイプラインパラメータにリアルタイムで変更を加えることができます
  • Python入力データの投稿、ロボットの向きの設定など

UIからカメラ向き設定を削除(破壊的変更)

  • これは「ストリーム向き」オプションに置き換えられました。キャリブレーションとターゲティングはこのオプションの影響を受けません。
  • 新しいオプションはストリームにのみ影響します。上下反転、90度時計回り、90度反時計回り、水平ミラー、垂直ミラー
  • チームは、回転したカメラを使用する際に、必要に応じてtxとtyを手動で反転する必要があります。

GRIPサポートを削除(破壊的変更)

「ドライバー」ゼロ処理モードを削除(破壊的変更)

  • これは「ビューファインダー」パイプラインタイプに置き換えられました

「ビューファインダー」パイプラインタイプを追加

  • ビューファインダーパイプラインは、最小レイテンシのためにすべての処理を無効にします
  • これにより、チームは表示専用モード用の独自の「ドライバー」パイプラインを設計できます

パイプラインファイルがJSON形式を使用するようになりました(破壊的変更)

  • パイプラインは引き続き.vprファイル拡張子を使用します
  • (2024.6の一部のケースで壊れています)「アップロード」ボタンを使用すると、UIはパイプラインを自動的にJSONに変換します。
  • (完全に機能)https://tools.limelightvision.io/pipeline-upgrade を使用してパイプラインをアップグレードすることもできます

キャリブレーションUXの改善

  • キャリブレーション設定がキャッシュされるようになりました。キャリブレーションするたびにキャリブレーション設定を入力する必要がなくなりました。
  • デフォルトのキャリブレーション辞書が、Calib.ioの推奨800x600mm粗いボードで動作するように更新されました。

キャリブレーションモザイク

  • 以前は、キャリブレーション画像の品質を判断するのが困難でした
  • キャリブレーションタブに「キャリブレーションモザイクをダウンロード」ボタンが追加されました。モザイクは、各画像がキャリブレーションにどのように貢献しているかを正確に示します。

mosaic screenshot:

「重心」ターゲティング領域

  • カラーパイプラインでのオブジェクトトラッキングを改善するために、「出力」タブに重心ターゲティングモードが追加されました

動的3Dオフセット(NT: fiducial_offset_set)

  • パイプラインを変更せずに3Dオフセットを調整できるようになりました。これは、距離やその他のプロパティに基づいて「照準点」を変更する必要がある状況で役立ちます。

Modbusサポートを追加

  • Limelight OSには、検査、物流、産業用アプリケーション向けの常時オンのModbusサーバーが搭載されました
  • Modbusレジスタ仕様はこちらを参照してください:https://docs.limelightvision.io/docs/docs-limelight/apis/modbus
  • デフォルトのModbusサーバーポートはUIの設定タブで変更できます
  • ModbusとSnapscript Pythonパイプラインを通じて、双方向通信を備えた完全にカスタムなビジョンアプリケーションがサポートされるようになりました。

カスタムNTサーバー

  • 設定タブにカスタムNTサーバーのエントリが追加されました。
  • これにより、PC上で実行されるglass NTサーバーとUSB経由で通信するLimelight 3Gを含む新しいワークフローが可能になります。

Rawfiducialの変更

  • raw fiducialsの「area」値は、約0-1の範囲のキャリブレーションされた正規化値になりました

すべてのNetworkTablesとJSONの変更

  • NT getpipetypeを追加 - 現在のパイプラインタイプ文字列を取得(例:pipe_color、pipe_fiducial)

  • NT tcclassを追加 - 分類器パイプラインで検出されたクラス名

  • NT tdclassを追加 - ディテクターパイプラインで検出されたクラス名

  • 保証されたアトミック2Dターゲティング用のNT t2dを追加 - [valid,targetcount, targetlatency, capturelatency, tx, ty, txnc, tync, ta, targetid, classifierID, detectorID, tlong, tshort, thor, tvert, ts(skew)]

  • NT tlong、tshort、thor、tvert、tsを削除

  • NT 'crosshairs'配列を追加 [cx0,cy0,cx1,cy1]

  • NT cx0、cy0、cx1、cy1を削除

  • NT rawbarcodesを追加 - バーコードデータのNT文字列配列。最大32エントリ。

  • すべての「raw」配列は最大32ターゲットを許可(8から増加)

  • fiducial_offset_set動的3Dオフセットセッターを追加

  • jsonトップレベル結果に「pType」を追加

  • jsonトップレベル結果に「stdev_mt1」と「stdev_mt2」を追加(x,y,z,roll,pitch,yaw)(メートル、度)

その他のファイル形式とJSONダンプの変更

  • キャリブレーションファイル形式が簡素化されました。古いキャリブレーションはアップロード時に新しい形式に自動変換されます
  • 結果とステータスJSONダンプから1層のネストが削除されました

バグ修正

  • 以前は、ニューラルパイプラインがアクティブな状態でGoogle Coralが取り外されると、パイプラインは永久に「color/retro」モードに戻っていました
    • 現在は、「CHECK CORAL」または「CHECK MODEL」が画像に印刷されます。パイプラインタイプは変更されません
  • 以前は、fiducial IDフィルターを正常に通過したタグが、緑のアウトラインではなく赤のアウトラインで描画されることがありました。この視覚化の問題は修正されました。
  • AprilTagパイプラインがtcornxy NT配列を入力するようになりました
  • AprilTagパイプラインが最小-最大面積スライダーを完全に尊重するようになりました。以前は、AprilTagパイプラインはタグ面積に基づいて2D結果をフィルタリングしていましたが、3D/ローカリゼーション結果はフィルタリングしていませんでした。

Limelight OS 2024.5.0 (2024/4/9)

  • Linux 6.1へアップグレード

カメラスタックの更新

  • Limelight3Gでのカメラ周辺機器のロックアップを修正するため、カメラスタック全体が更新されました。
    • 症状には以下が含まれます
  • このアップデートを適用した後、露出とゲインの設定を再調整してください。

ダイナミックダウンスケーリング

  • チームは「fiducial_downscale_set」を設定して、現在のパイプラインのダウンスケール設定を上書きできるようになりました
  • 0:UIコントロール、1:1x、2:1.5x、3:2x、4:3x、5:4x
  • 新しいHelpersメソッドで0.0(UIコントロール)、1.0、1.5、2.0、3.0、4.0を使用してください
  • これはオーバーヘッドゼロの操作です。
  • ダイナミックダウンスケールとダイナミッククロップを組み合わせることで、チームは複数のパイプラインを管理せずにFPSを最大化できます

MegaTag2の改善

  • MT2は、90度および-90度のロールを含む「ポートレート」モードなど、Limelightの向きに関係なく動作するようになりました

"rawdetections" NT配列

  • [classID, txnc, tync, ta, corner0x, corner0y, corner1x, corner2y, corner3x, corner3y, corner4x, corner4y]
  • コーナーはキャリブレーションが適用されていないピクセル空間で表されます

Erode/Dilateの更新

  • カラーパイプラインは最大10ステップの膨張と10ステップの収縮をサポートするようになりました
  • カラーパイプラインに「reverse morpho」オプションが追加され、膨張と収縮のステップの順序を逆にできます

LimelightLib 1.6 (2024/4/9)

  • void SetFiducialDownscalingOverride(float downscale)を追加

パイプラインコントロールには0を設定するか、以下のいずれかを設定してパイプラインのダウンスケール設定を上書きします: 1, 1.5, 2, 3, 4

  • RawFiducial[] GetRawFiducials()を追加
  • RawDetection[] GetRawDetections()を追加

Limelight OS 2024.4.0 (2024/4/3)

このアップデートにアイデアを提供してくださったすべてのチームに感謝します。

Megatag 2

Megatag 2は曖昧性のないローカライザーです。Megatag1よりも高い精度と高い精密度を持ち、以下の要件を満たすように構築されました:

  • ポーズの曖昧性問題を排除し、画像/コーナーノイズに対するロバスト性を向上させる。
  • 1つ以上のタグが与えられた場合、視点に関係なく優れたポーズ推定を提供する。
  • 物理的なAprilTagの配置の不正確さに対するロバスト性を向上させる
  • 良好なポーズ推定結果に必要なロボット側のフィルタリング量を削減する

この非常に曖昧な単一タグのケースで、MegaTag2(赤いロボット)とMegatag(青いロボット)の違いに注目してください:

Megatag2では、新しいメソッド呼び出しでロボットの向きを設定する必要があります。完全な例を以下に示します:

      LimelightHelpers.SetRobotOrientation("limelight", m_poseEstimator.getEstimatedPosition().getRotation().getDegrees(), 0, 0, 0, 0, 0);
LimelightHelpers.PoseEstimate mt2 = LimelightHelpers.getBotPoseEstimate_wpiBlue_MegaTag2("limelight");
if(Math.abs(m_gyro.getRate()) > 720) // 角速度が毎秒720度を超える場合、ビジョンの更新を無視
{
doRejectUpdate = true;
}
if(mt2.tagCount == 0)
{
doRejectUpdate = true;
}
if(!doRejectUpdate)
{
m_poseEstimator.setVisionMeasurementStdDevs(VecBuilder.fill(.6,.6,9999999));
m_poseEstimator.addVisionMeasurement(
mt2.pose,
mt2.timestampSeconds);
}

Megatag2は、単一のタグが与えられた場合、任意の距離で優れた曖昧性のない結果を提供します。 これは、関連性があり、希望する配置許容範囲内にあるタグのみに焦点を当てることが完全に実行可能であることを意味します。 タグが正しい位置にない場合や関連性がない場合は、新しいダイナミックフィルター機能でフィルタリングしてください。

ダイナミックAprilTagフィルタリング

  • MegaTag2はできるだけ多くのAprilTagを蓄積することに必死ではないため、適切に配置された関連性のあるタグを安全にフィルタリングできます:
int[] validIDs = {3,4};
LimelightHelpers.SetFiducialIDFiltersOverride("limelight", validIDs);

MegaTag2への移行

Megatag2が正しく動作するには、ロボットの向きが必要です。0度、360度、720度などの向きは、ロボットがレッドアライアンスの壁に向いていることを意味します。 これはPathPlanner、Chorero、Botpose、およびBotpose_wpiblueで使用されているのと同じ規則です。

SetRobotOrientation()をコードに追加したら、内蔵の3Dビジュアライザーを確認してください。近距離では、Megatag2とMegatag1は完全に一致しなくても近い値を示すはずです。遠距離では、Megatag 2(赤いロボット)はMegatag1(青いロボット)よりも正確で安定しているはずです。

内蔵ビジュアライザーが良好な結果を示したら、自律期間中にMegatag2を使用してロボットをガイドできます。

追加を推奨する唯一のフィルターは「最大角速度」フィルターです。高い角速度では、ポーズ推定の信頼性がやや低下する場合があります。

サンプルリポジトリには、このフィルターを含むMegatag2の例があります。

    if(Math.abs(m_gyro.getRate()) > 720) // 角速度が毎秒720度を超える場合、ビジョンの更新を無視
{
doRejectUpdate = true;
}
if(mt2.tagCount == 0)
{
doRejectUpdate = true;
}

LimelightLib 1.5 (2024/4/3)

追加

getBotPoseEstimate_wpiRed_MegaTag2()
getBotPoseEstimate_wpiBlue_MegaTag2()
SetRobotOrientation()

Limelight OS 2024.3.4 (2024/3/20)

このアップデートにアイデアを提供してくださったすべてのチームに感謝します。

より高精度な単一タグソルバー

MegaTagの単一タグ3Dソルバーが改善されました。遠距離でも以前よりはるかに安定しています。

JSONがデフォルトで無効に(破壊的変更)

  • Shuffleboardなどの自動サブスクライブダッシュボードを使用しているチームの帯域幅使用量を削減するため、JSONがデフォルトで無効になりました。
  • これにより、RoboRIOのNT負荷とCPU使用率も削減されるはずです。
  • 出力タブでパイプラインごとにJSONを再有効化してください。
  • このアップデートには、さらに多くのチームがポーズ推定でJSONから移行できるようにする変更が含まれています。

歪み補正された面積(破壊的変更)

任意のターゲットの面積を計算する前に、コーナーの歪みが補正されます。

botpose、botpose_wpiblue、botpose_wpiredにタグごとのメトリクスを含める

[tx, ty, tz, roll, pitch, yaw, tagCount, tagSpan(メートル), averageDistance(メートル), averageArea(画像の割合), (tags) ]

megatagローカリゼーションで使用されるすべてのタグについて、上記の配列には(tagID, txnc, tync, ta, distanceToCamera, distanceToRobot, ambiguity)が含まれるようになりました

Ambiguityは0-1の範囲の新しいメトリクスで、タグの現在の視点の曖昧性を示します。タグの曖昧性が.9を超える単一タグの更新はおそらく拒否すべきです。

"rawtargets"と"rawfiducials" NT配列(破壊的変更)

  • rawtargets - ターゲットごとの(txnc,tync,ta)
  • rawfiducials - ターゲットごとの(tagID, txnc, tync, ta, distanceToCamera, distanceToRobot, ambiguity)
  • 以前のrawtargets NTエントリ(tx0,ty0など)は削除されました。

バグ修正

  • priorityIDが見つからない場合、すべての単一タグ3D情報をゼロにする。以前は、priorityTagが見つからない場合、Tx、Ta、Ty、Tvのみがゼロにされていました
  • UIの「IDフィルター」機能によって唯一の可視タグがフィルタリングされた場合、botposeをゼロにする。以前は、唯一の可視タグがフィルタリングされたタグの場合、botposeは(0,0,0)ではなくフィールドの中心にリセットされていました
  • 2024.2は、まれなケースで特定のnetworktablesエントリにNANを投稿していました。これは今後発生しません。

LimelightLib 1.4 (2024/3/21)

  • 2024.3.4 Raw Fiducialsのサポートを追加。PoseEstimatesには、id、txnc、tync、ta、distanceToCamera、distanceToRobot、ambiguityを含むrawFiducialsの配列が含まれるようになりました

Limelight Hardware Manager 1.4 (2024/3/18)

バグ修正

検出されたUSB Limelightが、2つの部分的なエントリではなく、単一のエントリとして正しく表示されるようになりました。


Limelight OS 2024.2.2 (2024/3/17)

バグ修正

TXとTYがNTエントリでクロスヘアを正しく尊重するようになりました。


Limelight OS 2024.2 (2024/3/8)

JSONでのゼロクロスヘアターゲティング(tx_nocross、ty_nocross)とNT(txnc、tync)

カスタム内部パラメータキャリブレーションでtx/tyターゲティングを使用している場合、Limelightのクロスヘアがカメラの主点ピクセルと一致していないため、カメラ間のばらつきが依然として見られる可能性があります。より高いtx/ty精度を必要とするチームは、クロスヘアを主点ピクセルに一致するように設定するか、これらの新しいメトリクスを使用できます。

tx/tyの潜在的な破壊的変更

今シーズン初めに、JSONでのtx、ty、およびtx + tyのカスタムキャリブレーションを壊すバグが導入されました。Limelight OSはいくつかのケースでデフォルトのキャリブレーションに戻っていました。

キャリブレーションのアップグレード

キャプチャされた画像の数に関係なく、キャリブレーションがほぼ瞬時に行われるようになりました。また、特定の状況で約30枚以上の画像がある場合に発生するクラッシュも修正しました。

紙のターゲットで15-20枚の画像を使用すると、約1ピクセルの再投影誤差が一貫して得られ、高品質のcalib.ioターゲットでは0.3ピクセルの誤差が得られています。

Fiducialフィルター UIの修正

Fiducialフィルターのテキストボックスが任意の数のフィルターを受け入れるようになりました。

その他

AprilTagジェネレーターは、165.1 mmタグでのスケーリングを防ぐために「ボーダーなし」がデフォルトになりました。


Limelight OS 2024.1.1 (2024/2/24)

  • priorityIDを修正

Limelight OS 2024.1 (2024/2/24)

HWメトリクス(networktablesのhwキー、/status GETリクエスト)

キャリブレーションの改善

  • キャリブレーション画像に有効な検出が1つだけ含まれている場合に発生する可能性のあるクラッシュを修正。Web UIのフィードバックを改善。

ロボットローカリゼーションの改善(タグカウントなど)

  • すべてのnetworktables botpose配列(botpose、botpose_wpiblue、botpose_wpired)にTag Count、Tag Span(メートル)、Average Distance(メートル)、Average Area(画像の割合)が含まれるようになりました

  • これらのメトリクスは、アップロードされたフィールドマップに含まれるタグで計算されます。カスタムおよび/またはモバイルAprilTagはこれらのメトリクスに影響しません。

  • デバイスキャリブレーションとこのbotpose配列のアップグレードにより、今年のほとんどのユースケースでJSONは必要ないと考えています。

  • JSONダンプには、便宜上botpose_avgarea、botpose_avgdist、botpose_span、botpose_tagcountが含まれるようになりました。

[tx,ty,tz,rx,ry,rz,latency,tagcount,tagspan,avgdist,avgarea]

新機能:Priority ID(NTキー priorityid)

  • ロボットがオドメトリベースの機能とtx/tyベースの機能の両方を使用している場合、おそらく次のUXの問題に遭遇したことがあるでしょう:

  • このアップデート以前は、tx/tyターゲティングの優先タグIDを簡単に切り替える方法がありませんでした。

  • UIにはIDフィルターがありますが、

    • 動的ではありません
    • megaTagローカリゼーションからタグを削除します。
  • これは、チームが複数のパイプラインを作成していたことを意味します:3Dローカリゼーション用に1つ、tx/tyタグごとに1つ(タグ7でのブルーサイドシューティング用に1つ、タグ6でのブルーサイドアンプ用に1つなど)。

  • 新しいpriority ID機能(NTキー priorityid)を使用すると、Limelightに「すべてのタグ検出、フィルタリング、ソートが完了した後、priority IDに一致するタグに焦点を当てる」と指示できます。

  • これはローカリゼーションには一切影響せず、JSON結果のタグの順序をわずかに変更するだけです。

  • priority idが-1でない場合、選択したタグが見えない限り、tx/ty/taは0を返します。

その他

  • 3D AprilTagパイプラインでデュアルターゲットモードを使用中に画面全体に「x」が表示される問題を修正
  • REST APIがニューラルネットワークラベルのアップロード(/uploadlabels)で拡張されました
  • /status jsonにデバイスのニックネームを含める

LimelightLib 1.3

  • LimelightLib(JavaおよびCPP)が更新され、ローカリゼーションがこれまで以上に簡単になりました。
  LimelightHelpers.PoseEstimate limelightMeasurement = LimelightHelpers.getBotPoseEstimate_wpiBlue("limelight");
if(limelightMeasurement.tagCount >= 2)
{
m_poseEstimator.setVisionMeasurementStdDevs(VecBuilder.fill(.7,.7,9999999));
m_poseEstimator.addVisionMeasurement(
limelightMeasurement.pose,
limelightMeasurement.timestampSeconds);
}


チーム向けの新しいリソース

Limelightフィードバックと課題トラッカー:https://github.com/LimelightVision/limelight-feedback/issues

サンプルリポジトリ:https://github.com/LimelightVision/limelight-examples

Swerveでのエイミングとレンジングの例:https://docs.limelightvision.io/docs/docs-limelight/tutorials/tutorial-swerve-aiming-and-ranging

MegaTagローカリゼーションの例:https://docs.limelightvision.io/docs/docs-limelight/tutorials/tutorial-swerve-pose-estimation

最近の貢献者jasondaming、Gold876、JosephTLockwood、Andrew Gasser、virtualdに感謝します


Limelight 2024アップデート (2024/2/6)

Limelightドキュメントのアップグレード

  • ドキュメントがセットアッププロセスを効率化するために書き直されました

Limelight AprilTagジェネレーター

  • https://tools.limelightvision.io/ に、史上初のオンラインAprilTagジェネレーターが追加されました。
  • 用紙サイズ、マーカーサイズ、タグIDを選択して、印刷可能なPDFを生成します。
  • Safariでは現時点でタグが正しく表示されない場合があります。

Limelightマップビルダー

  • https://tools.limelightvision.io/map-builder
  • 直感的なUIでカスタムAprilTagマップを構築できるようになりました。
  • デフォルトのファミリーとタグサイズが2024フィールドに合わせて更新されました。

新しいHardware Manager

  • Finder ToolがLimelight Hardware Managerになりました
  • ゼロから書き直されました。Limelightを確実に検出し、より有用な診断情報を提供し、正しく動作するために再起動を必要としなくなりました。
  • ダウンロードページから今すぐ入手してください notebook screenshot:

独自のニューラルネットワークをトレーニング

notebook screenshot:

2024 AprilTagマップとNote検出器

  • マップと検出器モデルがダウンロードページと最新のLimelight OSイメージに追加されました。

Limelight OS 2024.0 (2024/2/6)

ChArUcoキャリブレーションの修正

  • ChArUco検出器のサブピクセル精度が向上しました。クリップボードターゲットと20枚の画像で1-2ピクセルの再投影誤差が達成可能になりました。
  • 同じカメラと同じターゲットを使用して、2023.6では20ピクセルのRPEが達成され、2024.0では1.14ピクセルのRPEが達成されました。
  • 入力フィールドは文字と特殊文字を受け付けなくなりました。これにより、クラッシュの可能性が排除されます。

すぐに使えるMegatag精度の向上

  • このアップデート以前は、Limelightの内部Megatagマップジェネレーターは、.fmapファイルで提供されるタグサイズではなく、UIのタグサイズスライダーを参照していました。
  • Megatagは、fmapファイルで設定されたタグサイズを尊重し、サイズスライダーを無視するようになりました。
  • サイズスライダーが165.1 mmに設定されていない場合、ローカリゼーション精度の即座の改善に気づくでしょう

パフォーマンスのアップグレードとバグ修正

  • より高いFPSのAprilTagパイプライン
  • Field-Space Visualizerのパフォーマンスが大幅に向上しました。

バグ修正

  • 3Dビジュアライザーのapriltagsが、不正確または破損したタグ画像で描画されることがありました。タグは常に正しく表示されるようになりました。
  • "v" / tv / "valid"は、有効な検出がある場合にのみ「1」を返すようになりました。以前は、tvは常に「1」でした