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

ソフトウェア変更ログ&フィードバック

問題や機能リクエストはメールまたはLimelightフィードバックリポジトリに提出してください

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

2025/2/24 - 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がアシストソースにより速く収束します

  • 以前よりも内部IMUを信頼できるようになったため、デフォルトは低い値0.001に設定されています。アシストモードは、内部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 3からLimelight 3Gにアップグレードされたものは内蔵ファンを適切に使用します
  • Hailoベースのニューラル検出器パイプラインでのクロッピングを修正
  • Hailoベースのエイプリルタグパイプラインでのクロッピングを修正

Limelight OS 2025.0(2024/1/15)

LL4サポート

  • Hailoオブジェクト検出とHailo加速エイプリルタグのサポートを追加
  • LL4の内部IMUのサポートを追加
  • "imumode_set" NTキーを追加
    • 0 - 外部IMUを使用し、内部IMUをシードしない
    • 1 - 外部IMUを使用し、内部IMUをシードする
    • 2 - 内部IMUを使用

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

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

バグ修正

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

Limelight OS 2024.10.2(2024/10/28)

Pythonスナップスクリプト修正(クレジット - FTCチーム23251 TRIPLE FAULT)

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

STDDevs NetworkTables

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

  • networktablesの「stddevs」にはmt1とmt2のすべてのstddevが含まれています(double配列、12要素)

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

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

Limelight OS 2024.10.1(2024/9/15)

Limelight 3Aアップデート

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

エイプリルタグサイズ警告

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

CameraPose_RobotSpace バグ修正

  • NetworkTables/LimelightLib/RESTからUIの設定されたカメラポーズを上書きすることが再び正常に動作するようになりました。

Limelight OS 2024.10(2024/9/4)

FTC用Limelight 3Aサポート

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

エイプリルタグマップアップデート

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

コントロールハブとRoboRioでのUSB Limelightサポート

  • FTCチームはコントロールハブで単一の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(2024/7/7)

  • マップビルダーツールがWPILib .jsonエイプリルタグレイアウトを受け入れ/変換するようになりました
  • Pythonスナップスクリプトに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-Ethernetインターフェースは、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デバイスを1つの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と対話できます。
  • WebUIとの対話なしで完全なLimelight設定が可能です。
  • パイプライン、ニューラルネットワーク、フィールドマップなどをアップロード
  • オプションの「ディスクに保存」機能を使用して、任意のパイプラインパラメータにリアルタイムで変更を加える
  • カスタムPython入力データの投稿、ロボットの向きの設定など。

MegaTag2のアップグレード

  • MegaTag2のジャイロ遅延補償が改善されました。近日中にさらなる改善が予定されています!
  • UIに「ジャイロ遅延調整」スライダーを追加。MegaTag 2の遅延補償を手動で調整するには、ロボットを回転させ、回転中でも位置推定結果が完璧になるようにスライダーを調整します。

標準偏差メトリクス

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

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

  • 「フォーカス」モードでは、ストリーム品質スライダーとクロップボックススライダーにアクセスできます
  • レンズを回転させて「フォーカス」スコアを最大化します。
  • カメラが固定位置にある場合、これは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を使用すると、WebUIとの対話なしで完全なLimelight設定が可能です。
  • パイプライン、ニューラルネットワーク、フィールドマップなどをアップロード
  • オプションの「ディスクに保存」機能を使用して、任意のパイプラインパラメータにリアルタイムで変更を加える
  • Python入力データの投稿、ロボットの向きの設定など。

UIからカメラ方向設定を削除(互換性のない変更)

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

GRIPサポートの削除(互換性のない変更)

「ドライバー」ゼロ処理モードの削除(互換性のない変更)

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

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

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

パイプラインファイルがJSON形式を使用するようになりました(互換性のない変更)

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

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

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

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

モザイクスクリーンショット:

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

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

動的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で実行されるガラスNTサーバーとUSB経由で通信するLimelight 3Gを含む新しいワークフローが可能になります。

Rawfiducialの変更

  • 生のフィデューシャルの「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)

  • 動的3Dオフセット設定のためのfiducial_offset_setを追加

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

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

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

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

バグ修正

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

Limelight OS 2024.5.0 (4/9/24)

  • Linux 6.1にアップグレード

カメラスタックの更新

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

動的ダウンスケーリング

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

MegaTag2の改善

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

「rawdetections」NT配列

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

侵食/膨張の更新

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

LimelightLib 1.6 (4/9/24)

  • void SetFiducialDownscalingOverride(float downscale)を追加

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

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

Limelight OS 2024.4.0 (4/3/24)

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

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 (4/3/24)

以下を追加

getBotPoseEstimate_wpiRed_MegaTag2()
getBotPoseEstimate_wpiBlue_MegaTag2()
SetRobotOrientation()

Limelight OS 2024.3.4 (3/20/24)

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

高精度単一タグソルバー

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

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

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

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

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

botpose、botpose_wpiblue、botpose_wpiredにフィデューシャルごとのメトリクスを含める

[tx, ty, tz, roll, pitch, yaw, tagCount, tagSpan (meters), averageDistance (meters), averageArea (percentage of image), (tags) ]

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

曖昧さは0〜1の範囲の新しいメトリクスで、タグの現在の視点の曖昧さを示します。タグの曖昧さが0.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をゼロにします。以前は、唯一の可視タグがフィルタリングされたタグの場合、botposesはフィールドの中心にリセットされていました(0,0,0ではなく)
  • 2024.2では、まれな場合にNANが特定のネットワークテーブルエントリに投稿されることがありました。これは今後発生しません。

LimelightLib 1.4 (3/21/24)

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

Limelight Hardware Manager 1.4 (3/18/24)

バグ修正

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


Limelight OS 2024.2.2 (3/17/24)

バグ修正

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


Limelight OS 2024.2 (3/8/24)

ゼロクロスヘアターゲティング(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ピクセルの誤差を一貫して得ています。

フィデューシャルフィルターUIの修正

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

その他

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


Limelight OS 2024.1.1 (2/24/24)

  • priorityIDを修正

Limelight OS 2024.1 (2/24/24)

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

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

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

ロボット位置推定の改善(タグ数など)

  • すべてのnetworktables botposeアレイ(botpose、botpose_wpiblue、botpose_wpired)に、タグ数、タグスパン(メートル)、平均距離(メートル)、平均面積(画像の割合)が含まれるようになりました。

  • これらのメトリクスは、アップロードされたフィールドマップに含まれるタグで計算されます。カスタムや移動式のAprilTagはこれらのメトリクスに影響しません。

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

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

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

新機能:優先ID(NTキー priorityid)

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

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

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

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

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

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

  • 優先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

スワーブでの照準と距離測定の例: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アップデート (2/6/24)

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

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

Limelight AprilTagジェネレーター

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

Limelightマップビルダー

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

新しいハードウェアマネージャー

  • Finderツールが「Limelight Hardware Manager」になりました
  • 一から書き直されました。Limelightを確実に検出し、より有用な診断情報を提供し、正常に動作するために再起動が必要なくなりました。
  • ダウンロードページから入手できます notebook screenshot:

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

notebook screenshot:

2024 AprilTagマップとノート検出器

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

Limelight OS 2024.0 (2/6/24)

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

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

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

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

パフォーマンスの向上とバグ修正

  • より高いFPSのAprilTagパイプライン
  • フィールドスペースビジュアライザーのパフォーマンスが大幅に向上しました。

バグ修正

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