JSON結果仕様
LimelightのJSON結果出力は、ターゲティング結果を含む配列のコレクションです。再帰反射、フィデューシャル、ニューラル分類器、ニューラル検出器の結果用に別々の配列が存在します。 JSONは人間が読みやすく、どのプラットフォームのどの言語でも簡単にパースできるため、ほとんどのユースケースに最適です。
同じJSON結果出力は、REST/HTTP、Websocket、NetworkTables APIを使用して取得できます。
このJSON出力のパースは、FRCライブラリを使用すると非常に簡単です。
Limelightlibには、JSON DumpをLimelightResultsオブジェクトにパースする組み込み機能があります。
https://github.com/LimelightVision/limelightlib-wpijava
https://github.com/LimelightVision/limelightlib-wpicpp
すべてのJSON結果には以下のエントリが含まれます:
| キー名 | 値の説明 |
|---|---|
| tl | ターゲティングレイテンシ(このフレームのトラッキングループで消費されたミリ秒) |
| cl | キャプチャレイテンシ(中央行の露光終了からトラッキングループ開始までのミリ秒) |
| tx | クロスヘアからターゲットへの水平オフセ ット(LL1: -27度〜27度 / LL2: -29.8〜29.8度) |
| ty | クロスヘアからターゲットへの垂直オフセット(LL1: -20.5度〜20.5度 / LL2: -24.85〜24.85度) |
| txnc | プリンシパルピクセルからターゲットへの水平オフセット(度) |
| tync | プリンシパルピクセルからターゲットへの垂直オフセット(度) |
| ta | 歪み補正済み、正規化されたターゲット面積(0-100) |
| PythonOut | Python SnapScriptパイプラインからの出力データ |
| stdev_mt1 | MT1標準偏差 [x, y, z, roll, pitch, yaw](メートル、度) |
| stdev_mt2 | MT2標準偏差 [x, y, z, roll, pitch, yaw](メートル、度) |
| pID | 現在のパイプラインインデックス |
| pTYPE | 現在のパイプラインタイプ 例: "pipe_color" |
| ts | 起動からのタイムスタンプ(ミリ秒) |
| v | 有効性インジケータ。1 = 有効なターゲット、0 = 有効なターゲットなし |
| botpose | Botpose(MegaTag): x,y,z, roll, pitch, yaw(メートル、度) |
| botpose_wpired | Botpose(MegaTag、WPI赤ドライバーステーション): x,y,z, roll, pitch, yaw(メートル、度) |
| botpose_wpiblue | Botpose(MegaTag、WPI青ドライバーステーション): x,y,z, roll, pitch, yaw(メートル、度) |
| botpose_orb | Botpose(MegaTag2): x,y,z, roll, pitch, yaw(メートル、度) |
| botpose_orb_wpired | Botpose(MegaTag2、WPI赤ドライバーステーション): x,y,z, roll, pitch, yaw(メートル、度) |
| botpose_orb_wpiblue | Botpose(MegaTag2、WPI青ドライバーステーション): x,y,z, roll, pitch, yaw(メートル、度) |
| botpose_avgarea | botpose計算に使用されたタグの平均面積 |
| botpose_avgdist | botpose計算に使用されたタグ間の最大距離(メートル) |
| botpose_span | botpose計算に使用されたタグ間の最大距離(メートル) |
| botpose_tagcount | botpose計算に使用されたタグの数 |
| Retro | カラー/再帰反射パイプライン結果配列 |
| Fiducial | AprilTagパイプライン結果配列 |
| Detector | ニューラル検出器パイプライン結果配列 |
| Classifier | 分類器パイプライン結果配列 |
| Barcode | バーコードパイプライン結果配列 |
カラー/再帰反射結果
"Retro"配列には以下の構造のエントリが含まれます:
| キー名 | 値の説明 |
|---|---|
| t6c_ts | solvepnpで計算されたターゲット空間でのカメラ姿勢 (x,y,z,rx,ry,rz) |
| t6r_fs | solvepnpで計算されたフィールド空間でのロボット姿勢 (x,y,z,rx,ry,rz) |
| t6r_ts | solvepnpで計算されたターゲット空間でのロボット姿勢 (x,y,z,rx,ry,rz) |
| t6t_cs | solvepnpで計算されたカメラ空間でのターゲット姿勢 (x,y,z,rx,ry,rz) |
| t6t_rs | solvepnpで計算されたロボット空間でのターゲット姿勢 (x,y,z,rx,ry,rz) |
| ta | 画像に対するターゲットのサイズ(パーセンテージ、0-1) |
| tx | クロスヘアに対する ターゲット中心のX座標(度)。右が正、中心がゼロ |
| tx_nocross | プリンシパルピクセルに対するターゲット中心のX座標(度)。右が正、中心がゼロ |
| txp | クロスヘアに対するターゲット中心のX座標(ピクセル)。右が正、中心がゼロ |
| ty | クロスヘアに対するターゲット中心のY座標(度)。下が正、中心がゼロ |
| ty_nocross | プリンシパルピクセルに対するターゲット中心のY座標(度)。右が正、中心がゼロ |
| typ | クロスヘアに対するターゲット中心のY座標(ピクセル)。下が正、中心がゼロ |
| pts | コーナー配列(ピクセル)[x0,y0,x1,y1.....]。出力タブで有効にする必要があります |
カラー/再帰反射パイプラインのJSON例
{
"Barcode": [],
"Classifier": [],
"Detector": [],
"Fiducial": [],
"PythonOut": [],
"Retro": [
{
"pts": [],
"t6c_ts": [],
"t6r_fs": [],
"t6r_ts": [],
"t6t_cs": [],
"t6t_rs": [],
"ta": 0.00531171215698123,
"tx": -4.535492777705656,
"tx_nocross": -4.428826910553056,
"txp": 542.53076171875,
"ty": -1.1722867231218714,
"ty_nocross": -0.09285491974145543,
"typ": 504.5538635253906
},
{
"pts": [],
"t6c_ts": [],
"t6r_fs": [],
"t6r_ts": [],
"t6t_cs": [],
"t6t_rs": [],
"ta": 0.005779948551207781,
"tx": 8.465099348209478,
"tx_nocross": 8.571765215362078,
"txp": 822.1087036132812,
"ty": -2.524207730360601,
"ty_nocross": -1.444775926980185,
"typ": 533.6112060546875
},
],
"botpose": [
0,
0,
0,
0,
0,
0
],
"botpose_avgarea": 0,
"botpose_avgdist": 0,
"botpose_orb": [
0,
0,
0,
0,
0,
0
],
"botpose_orb_wpiblue": [
0,
0,
0,
0,
0,
0
],
"botpose_orb_wpired": [
0,
0,
0,
0,
0,
0
],
"botpose_span": 0,
"botpose_tagcount": 0,
"botpose_wpiblue": [
0,
0,
0,
0,
0,
0
],
"botpose_wpired": [
0,
0,
0,
0,
0,
0
],
"cl": 37.619998931884766,
"focus_metric": 0,
"pID": 0,
"pTYPE": "pipe_color",
"stdev_mt1": [
0,
0,
0,
0,
0,
0
],
"stdev_mt2": [
0,
0,
0,
0,
0,
0
],
"t6c_rs": [
0,
0,
0,
0,
0,
0
],
"ta": 0.39156023412942886,
"tl": 22.64053726196289,
"ts": 215248.979204,
"tx": -4.3848327488723555,
"txnc": -4.278166881719756,
"ty": -1.1144596937982527,
"tync": -0.035027890417836716,
"v": 1
}