FRC プログラミング Limelight Lib を使用して (WPILib Java & C++)
- https://github.com/LimelightVision/limelightlib-wpijava
- https://github.com/LimelightVision/limelightlib-wpicpp
JavaDocs: https://limelightlib-wpijava-reference.limelightvision.io
使用方法
これは単一ファイルのライブラリです。必要なのは、最新リリース(https://github.com/LimelightVision/limelightlib-wpijava/releases)から LimelightHelpers.java ファイルをコピーして、Javaプロジェクトの「robot」フォルダに配置するだけです。Limelightのオブジェクトを作成する必要はありません - このライブラリはシンプルで機能的であり、使いやすさと信頼性を最大化しています。
成功のためのヒント
- シンプルに始めましょう!多くの成功しているFRCチームは基本的なアプローチを効果的に使用しています。例えば、2024年のチーム2056はゲームピーストラッキングにニューラルネットワークではなく、標準的な90FPSカラーパイプラインを使用しました。
- 実際に必要なものを考えましょう:フィールド全体のローカライゼーションが必要ですか?それとも単純なターゲットセンタリング(例:
driveSpeed = result.getTx() * 0.03
)で十分ですか?
主要な概念
1. 基本的な使用方法
すべてのメソッドはLimelightの名前パラメータを受け付けます。空白またはnullを指定すると「limelight」が使用されます:
// 基本的なターゲティングデータ
double tx = LimelightHelpers.getTX(""); // 照準からターゲットまでの水平オフセット(度)
double ty = LimelightHelpers.getTY(""); // 照準からターゲットまでの垂直オフセット(度)
double ta = LimelightHelpers.getTA(""); // ターゲット面積(画像の0%から100%)
boolean hasTarget = LimelightHelpers.getTV(""); // 有効なターゲットがありますか?
double txnc = LimelightHelpers.getTXNC(""); // 主要ピクセル/ポイントからターゲットまでの水平オフセット(度)
double tync = LimelightHelpers.getTYNC(""); // 主要ピクセル/ポイントからターゲットまでの垂直オフセット(度)
2. パイプライン管理
パイプラインは、Limelightが画像を処理する方法を変更する即座に切り替え可能なプログラムのようなものです。ウェブインターフェースで10種類の異なるパイプラインを設定できます:
// パイプライン0に切り替え
LimelightHelpers.setPipelineIndex("", 0);
3. LED制御
明るい照明LEDを持つLimelightでは、異なる状況に応じてLEDを制御できます:
// 現在のパイプラインにLEDの制御を任せる
LimelightHelpers.setLEDMode_PipelineControl("");
// LEDを強制的にオン/オフ/点滅させる
LimelightHelpers.setLEDMode_ForceOn("");
LimelightHelpers.setLEDMode_ForceOff("");
LimelightHelpers.setLEDMode_ForceBlink("");