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色を数値配列として取得 |
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)はメートル単位、回転(Roll,Pitch,Yaw)は度単位、総遅延(cl+tl)、タグ数、タグスパン、カメラからの平均タグ距離、平均タグ面積(画像の割合) |
botpose_wpiblue | doubleArray | フィールド空間におけるロボットの変換(青ドライバーステーションWPILIB原点)。平行移動(X,Y,Z)はメートル単位、回転(Roll,Pitch,Yaw)は度単位、総遅延(cl+tl)、タグ数、タグスパン、カメラからの平均タグ距離、平均タグ面積(画像の割合) |
botpose_wpired | doubleArray | フィールド空間におけるロボットの変換(赤ドライバーステーションWPILIB原点)。平行移動(X,Y,Z)はメートル単位、回転(Roll,Pitch,Yaw)は度単位、総遅延(cl+tl)、タグ数、タグスパン、カメラからの平均タグ距離、平均タグ面積(画像の割合) |
botpose_orb | doubleArray | フィールド空間におけるロボットの変換(Megatag2)。平行移動(X,Y,Z)はメートル単位、回転(Roll,Pitch,Yaw)は度単位、総遅延(cl+tl)、タグ数、タグスパン、カメラからの平均タグ距離、平均タグ面積(画像の割合) |
botpose_orb_wpiblue | doubleArray | フィールド空間におけるロボットの変換(Megatag2)(青ドライバーステーションWPILIB原点)。平行移動(X,Y,Z)はメートル単位、回転(Roll,Pitch,Yaw)は度単位、総遅延(cl+tl)、タグ数、タグスパン、カメラからの平均タグ距離、平均タグ面積(画像の割合) |
botpose_orb_wpired | doubleArray | フィールド空間におけるロボットの変換(Megatag2)(赤ドライバーステーシ ョンWPILIB原点)。平行移動(X,Y,Z)はメートル単位、回転(Roll,Pitch,Yaw)は度単位、総遅延(cl+tl)、タグ数、タグスパン、カメラからの平均タグ距離、平均タグ面積(画像の割合) |
camerapose_targetspace | doubleArray | 視界内の主要AprilTagの座標系におけるカメラの3D変換(配列(6))[tx, ty, tz, pitch, yaw, roll](メートル、度) |
targetpose_cameraspace | doubleArray | カメラの座標系における視界内の主要AprilTagの3D変換(配列(6))[tx, ty, tz, pitch, yaw, roll](メートル、度) |
targetpose_robotspace | doubleArray | ロボットの座標系における視界内の主要AprilTagの3D変換(配列(6))[tx, ty, tz, pitch, yaw, roll](メートル、度) |
botpose_targetspace | doubleArray | 視界内の主要AprilTagの座標系におけるロボットの3D変換(配列(6))[tx, ty, tz, pitch, yaw, roll](メートル、度) |
camerapose_robotspace | doubleArray | ロボットの座標系におけるカメラの3D変換(配列(6)) |
tid | int | 視界内の主要AprilTagのID |
stddevs | doubleArray | MegaTag標準偏差 [MT1x, MT1y, MT1z, MT1roll, MT1pitch, MT1Yaw, MT2x, MT2y, MT2z, MT2roll, MT2pitch, MT2yaw] |
camerapose_robotspace_set | doubleArray | ロボットの座標系におけるカメラのポーズを設定します。 |
priorityid | int | tx/tyターゲティングに必要なIDを設定します。他のターゲットを無視します。位置特定には影響しません |
robot_orientation_set | doubleArray | ロボットの向きと角速度を度と度/秒で設定[yaw,yawrate,pitch,pitchrate,roll,rollrate] |
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>);