NetworkTables API
Limelight OSはNetworkTables 4クライアントを搭載しています。設定UIで構成されたチーム番号/IDに基づいて、FRCロボットで実行されているNetworkTables 4サーバーに自動接続します。
すべてのデータは、デバイス名と一致するテーブル(例:「limelight」)に公開されます。カメラにホスト名/ニックネームが割り当てられている場合、テーブル名は完全なlimelight名(例:「limelight-top」)と一致します。
LimelightLib WPIJavaとLimelightLib WPICPPは、NetworkTablesを介してLimelightデバイスと対話します。
基本的なターゲティングデータ
以下のコードを使用してください:
- Java
- LabView
- C++
- Python
NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDouble(0);
nt::NetworkTableInstance::GetDefault().GetTable("limelight")->GetNumber("<variablename>",0.0);
NetworkTables.getTable("limelight").getNumber('<variablename>');
以下のデータを取得するために:
キー | 型 | 説明 |
---|---|---|
tv | int | 有効なターゲットが存在する場合は1。有効なターゲットが存在しない場合は0 |
tx | double | クロスヘアからターゲットまでの水平オフセット(LL1:-27度から27度 / LL2:-29.8度から29.8度) |
ty | double | クロスヘアからターゲットまでの垂直オフセット(LL1:-20.5度から20.5度 / LL2:-24.85度から24.85度) |
txnc | double | プリンシパルピクセルからターゲットまでの水平オフセット(度) |
tync | double | プリンシパルピクセルからターゲットまでの垂直オフセット(度) |
ta | double | ターゲットエリア(画像の0%から100%) |
tl | double | パイプラインのレイテンシー寄与(ms)。総レイテンシーを得るには"cl"に加算する |
cl | double | キャプチャパイプラインのレイテンシー(ms)。センサーの中央行の露光終了からトラッキングパイプラインの開始までの時間 |
t2d | double | マッチしたタイムスタンプの統計値を含む配列:[targetValid, targetCount, targetLatency, captureLatency, tx, ty, txnc, tync, ta, tid, targetClassIndexDetector, targetClassIndexClassifier, targetLongSidePixels, targetShortSidePixels, targetHorizontalExtentPixels, targetVerticalExtentPixels, targetSkewDegrees] |
getpipe | int | カメラの実際のアクティブパイプラインインデックス(0 .. 9) |
getpipetype | string | パイプラインタイプ(例:"pipe_color") |
json | string | ターゲティング結果の完全なJSONダンプ。'output'タブでパイプラインごとに有効にする必要がある |
tclass | string | 主要なニューラル検出器の結果またはニューラル分類器の結果のクラス名 |
tc | doubleArray | クロスヘア領域(3x3ピクセル領域)の下の平均HSV色をNumberArrayとして取得 |
hb | double | ハートビート値。フレームごとに1回増加し、20億でリセット |
hw | doubleArray | ハードウェアメトリクス [fps, CPU温度, RAM使用量, 温度] |
crosshairs | doubleArray | 2Dクロスヘア [cx0, cy0, cx1, cy1] |
tcclass | string | 分類器パイプラインの計算されたクラスの名前 |
tdclass | string | 検出器パイプラインの主要な検出の名前 |
AprilTagと3Dデータ
以下のコードを使用してください:
- Java
- C++
NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDoubleArray(new double[6]);
nt::NetworkTableInstance::GetDefault().GetTable("limelight")->GetNumberArray("<variablename>",std::vector<double>(6));
このデータを取得するには:
キー | 型 | 説明 |
---|---|---|
botpose | doubleArray | フィールド空間でのロボットの変換。平行移動(X,Y,Z)はメートル単位、回転(ロール,ピッチ,ヨー)は度単位、総遅延(cl+tl)、タグ数、タグスパン、カメラからの平均タグ距離、平均タグ面積(画像の割合) |
botpose_wpiblue | doubleArray | フィールド空間でのロボットの変換(青ドライバーステーションWPILIB原点)。平行移動(X,Y,Z)はメートル単位、回転(ロール,ピッチ,ヨー)は度単位、総遅延(cl+tl)、タグ数、タグスパン、カメラからの平均タグ距離、平均タグ面積(画像の割合) |
botpose_wpired | doubleArray | フィールド空間でのロボットの変換(赤ドライバーステーションWPILIB原点)。平行移動(X,Y,Z)はメートル単位、回転(ロール,ピッチ,ヨー)は度単位、総遅延(cl+tl)、タグ数、タグスパン、カメラからの平均タグ距離、平均タグ面積(画像の割合) |
botpose_orb | doubleArray | フィールド空間でのロボットの変換(Megatag2)。平行移動(X,Y,Z)はメートル単位、回転(ロール,ピッチ,ヨー)は度単位、総遅延(cl+tl)、タグ数、タグスパン、カメラからの平均タグ距離、平均タグ面積(画像の割合) |
botpose_orb_wpiblue | doubleArray | フィールド空間でのロボットの変換(Megatag2)(青ドライバーステーションWPILIB原点)。平行移動(X,Y,Z)はメートル単位、回転(ロール,ピッチ,ヨー)は度単位、総遅延(cl+tl)、タグ数、タグスパン、カメラからの平均タグ距離、平均タグ面積(画像の割合) |
botpose_orb_wpired | doubleArray | フィールド空間でのロボット の変換(Megatag2)(赤ドライバーステーションWPILIB原点)。平行移動(X,Y,Z)はメートル単位、回転(ロール,ピッチ,ヨー)は度単位、総遅延(cl+tl)、タグ数、タグスパン、カメラからの平均タグ距離、平均タグ面積(画像の割合) |
camerapose_targetspace | doubleArray | 視界内の主要AprilTagの座標系におけるカメラの3D変換(配列(6)) [tx, ty, tz, ピッチ, ヨー, ロール] (メートル, 度) |
targetpose_cameraspace | doubleArray | カメラの座標系における視界内の主要AprilTagの3D変換(配列(6)) [tx, ty, tz, ピッチ, ヨー, ロール] (メートル, 度) |
targetpose_robotspace | doubleArray | ロボットの座標系における視界内の主要AprilTagの3D変換(配列(6)) [tx, ty, tz, ピッチ, ヨー, ロール] (メートル, 度) |
botpose_targetspace | doubleArray | 視界内の主要AprilTagの座標系におけるロボットの3D変換(配列(6)) [tx, ty, tz, ピッチ, ヨー, ロール] (メートル, 度) |
camerapose_robotspace | doubleArray | ロボットの座標系におけるカメラの3D変換(配列(6)) |
tid | int | 視界内の主要AprilTagのID |
camerapose_robotspace_set | doubleArray | ロボットの座標系におけるカメラのポーズを設定します。 |
priorityid | int | tx/tyターゲティングに必要なIDを設定します。他のターゲットを無視します。ローカライゼーションには影響しません。 |
robot_orientation_set | doubleArray | ロボットの向きと角速度を度と度/秒で設定します[ヨー,ヨーレート,ピッチ,ピッチレート,ロール,ロールレート] |
fiducial_id_filters_set | doubleArray | ローカライゼ ーションに有効なフィデューシャルIDをオーバーライドします(配列) |
fiducial_offset_set | doubleArray | 3D注目点オフセットを設定します[x,y,z] |
カメラコントロール
以下のコードを使用してください:
- Java
- LabView
- C++
- Python
NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").setNumber(<value>);
nt::NetworkTableInstance::GetDefault().GetTable("limelight")->PutNumber("<variablename>",<value>);
NetworkTables.getTable("limelight").putNumber('<variablename>',<value>)