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, ロール, ピッチ, ヨー](メートル、度) |
stdev_mt2 | MT2標準偏差 [x, y, z, ロール, ピッチ, ヨー](メートル、度) |
pID | 現在のパイプラインインデックス |
pTYPE | 現在のパイプラインタイプ(例:"pipe_color") |
ts | 起動からのタイムスタンプ(ミリ秒) |
v | 有効性インジケータ。1 = 有効なターゲット、0 = 有効なターゲットなし |
botpose | ボットポーズ(MegaTag):x,y,z, ロール, ピッチ, ヨー(メートル、度) |
botpose_wpired | ボットポーズ(MegaTag、WPI赤ドライバーステーション):x,y,z, ロール, ピッチ, ヨー(メートル、度) |
botpose_wpiblue | ボットポーズ(MegaTag、WPI青ドライバーステーション):x,y,z, ロール, ピッチ, ヨー(メートル、度) |
botpose_orb | ボットポーズ(MegaTag2):x,y,z, ロール, ピッチ, ヨー(メートル、度) |
botpose_orb_wpired | ボットポーズ(MegaTag2、WPI赤ドライバーステーション):x,y,z, ロール, ピッチ, ヨー(メートル、度) |
botpose_orb_wpiblue | ボットポーズ(MegaTag2、WPI青ドライバーステーション):x,y,z, ロール, ピッチ, ヨー(メートル、度) |
botpose_avgarea | ボットポーズの計算に使用されたタグの平均面積 |
botpose_avgdist | ボットポーズの計算に使用されたタグ間の最大距離(メートル) |
botpose_span | ボットポーズの計算に使用されたタグ間の最大距離(メートル) |
botpose_tagcount | ボットポーズの計算に使用されたタグの数 |
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座標(度単位)。右が正、中心が0 |
tx_nocross | 主要ピクセルに対するターゲットの中心のX座標(度単位)。右が正、中心が0 |
txp | クロスヘアに対するターゲットの中心のX座標(ピクセル単位)。右が正、中心が0 |
ty | クロスヘアに対するターゲットの中心のY座標(度単位)。下が正、中心が0 |
ty_nocross | 主要ピクセルに対するターゲットの中心のY座標(度単位)。右が正、中心が0 |
typ | クロスヘアに対するターゲットの中心のY座標(ピクセル単位)。下が正、中心が0 |
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
}
AprilTag/Fiducial の結果
"Fiducial" 配列には、以下の構造を持つエントリが含まれています:
キー名 | 値の説明 |
---|---|
fid | フィデューシ ャルタグID |
fam | フィデューシャルファミリー (16H5C, 25H9C, 36H11C, など) |
pts | 個々のコーナーポイントを返します。有効化する必要があります。 |
skew | 現在未使用 |
t6c_ts | このフィデューシャルによって計算されたターゲット空間におけるカメラのポーズ (x,y,z,ピッチ,ヨー,ロール) (メートル, 度) |
t6r_fs | このフィデューシャルによって計算されたフィールド空間におけるロボットのポーズ (x,y,z,ピッチ,ヨー,ロール) (メートル, 度) |
t6r_fs_orb | このフィデューシャルによって計算されたフィールド空間におけるロボットのポーズ (Megatag2) (x,y,z,ピッチ,ヨー,ロール) (メートル, 度) |
t6r_ts | このフィデューシャルによって計算されたターゲット空間におけるロボットのポーズ (x,y,z,ピッチ,ヨー,ロール) (メートル, 度) |
t6t_cs | このフィデューシャルによって計算されたカメラ空間におけるターゲットのポーズ (x,y,z,ピッチ,ヨー,ロール) (メートル, 度) |
t6t_rs | このフィデューシャルによって計算されたロボット空間におけるターゲットのポーズ (x,y,z,ピッチ,ヨー,ロール) (メートル, 度) |
ta | 画像に対するターゲットのサイズの割合 (0-1) |
tx | クロスヘアに対するターゲットの中心のX座標(度)。右が正、中心が0 |
tx_nocross | 主要ピクセルに対するターゲットの中心のX座標(度)。右が正、中心が0 |
txp | クロスヘアに対するターゲットの中心のX座標(ピクセル)。右が正、中心が0 |
ty | クロスヘアに対するターゲットの中心のY座標(度)。下が正、中心が0 |
ty_nocross | 主要ピクセルに対するターゲットの中心のY座標(度)。右が正、中心が0 |
typ | クロスヘアに対するターゲットの中心のY座標(ピクセル)。下が正、中心が0 |
pts | コーナー配列(ピクセル)[x0,y0,x1,y1.....]. 出力タブで有効化する必要があります |
AprilTagパイプラインのJSONの例
{
"Classifier": [],
"Detector": [],
"Fiducial": [
{
"fID": 2,
"fam": "16H5C",
"pts": [],
"skew": [],
"t6c_ts": [
0.33247368976801916,
-0.05672695778305914,
-2.5042031405987144,
-4.680849607956358,
-5.171154989721864,
4.528697946312339
],
"t6r_fs": [
4.738896418276903,
-1.5926603672041666,
0.5194469577830592,
4.522658587661256,
4.258580454853879,
5.5236539893713275
],
"t6r_ts": [
0.33247368976801916,
-0.05672695778305914,
-2.5042031405987144,
-4.680849607956358,
-5.171154989721864,
4.528697946312339
],
"t6t_cs": [
-0.09991902572799474,
-0.1234042720218289,
2.5218203039582496,
4.278368708252767,
5.508508005282244,
-4.1112864453027775
],
"t6t_rs": [
-0.09991902572799474,
-0.1234042720218289,
2.5218203039582496,
4.278368708252767,
5.508508005282244,
-4.1112864453027775
],
"ta": 0.005711808800697327,
"tx": -2.0525293350219727,
"txp": 149.4874725341797,
"ty": 2.7294836044311523,
"typ": 107.14710235595703
}
],
"Retro": [],
"pID": 0,
"tl": 19.78130340576172,
"ts": 3284447.910569,
"v": 1
}
ニューラル検出器の結果
"Detector" 配列には、以下の構造を持つエントリが含まれています:
キー名 | 値の説明 |
---|---|
class | 人間が読める形式のクラス名文字列 |
classID | クラスID整数 |
conf | 予測の信頼度 |
pts | 個々のコーナーポイントを [x,y] のピクセル単位の配列として表現。中心が0で、右と下が正。有効化する必要があります。 |
ta | 画像に対するターゲットのサイズの割合(0-1) |
tx | クロスヘアに対するターゲットの中心のX座標(度単位)。右が正、中心が0 |
tx_nocross | プリンシパルピクセルに対するターゲットの中心のX座標(度単位)。右が正、中心が0 |
txp | クロスヘアに対するターゲットの中心のX座標(ピクセル単位)。右が正、中心が0 |
ty | クロスヘアに対するターゲットの中心のY座標(度単位)。下が正、中心が0 |
ty_nocross | プリンシパルピクセルに対するターゲットの中心のY座標(度単位)。右が正、中心が0 |
typ | クロスヘアに対するターゲットの中心のY座標(ピクセル単位)。下が正、中心が0 |
pts | コーナーの配列(ピクセル単位)[x0,y0,x1,y1.....]. 出力タブで有効化する必要があります |
検出器パイプラインのJSONの例
{
"Classifier": [],
"Detector": [
{
"class": "person",
"classID": 0,
"conf": 0.83984375,
"pts": [],
"ta": 0.2608712911605835,
"tx": -2.45949649810791,
"txp": 147.5,
"ty": -10.066887855529785,
"typ": 165.5
}
],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 63.50614547729492,
"ts": 4932985.266867,
"v": 1
}
ニューラルクラシファイアの結果
「Classifier」配列には、以下の構造を持つエントリが含まれています:
キー名 | 値の説明 |
---|---|
class | 人間が読める形式のクラス名文字列 |
classID | クラスIDの整数 |
conf | 予測の信頼度 |
クラシファイアパイプラインのJSONの例
{
"Classifier": [
{
"class": "digital clock",
"classID": 531,
"conf": 0.16796875
}
],
"Detector": [],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 16.704740524291992,
"ts": 4751332.7542280005,
"v": 1
}
バーコード結果
"Barcode" 配列には、以下の構造を持つエントリが含まれています:
キー名 | 値の説明 |
---|---|
fam | バーコードファミリー(例:"qr") |
data | デコードされたバーコードデータ(文字列) |
ta | 画像に対するターゲットのサイズの割合(0-1) |
tx | クロスヘアを基準としたターゲットの中心のX座標(度単位)。右が正、中心が0 |
tx_nocross | プリンシパルピクセルを基準としたターゲットの中心のX座標(度単位)。右が正、中心が0 |
txp | クロスヘアを基準としたターゲットの中心のX座標(ピクセル単位)。右が正、中心が0 |
ty | クロスヘアを基準としたターゲットの中心のY座標(度単位)。下が正、中心が0 |
ty_nocross | プリンシパルピクセルを基準としたターゲットの中心のY座標(度単位)。右が正、中心が0 |
typ | クロスヘアを基準としたターゲットの中心のY座標(ピクセル単位)。下が正、中心が0 |
pts | 角の配列(ピクセル)[x0,y0,x1,y1.....]. 出力タブで有効にする必要があります |
バーコードパイプラインのJSONの例
{
"Barcode": [
{
"fam": "QR",
"data": "Hello, World!",
"txp": 150.5,
"typ": 120.75,
"tx": -2.5,
"ty": 1.8,
"tx_nocross": -2.3,
"ty_nocross": 2.0,
"ta": 0.05,
"pts": [[140, 110], [160, 110], [160, 130], [140, 130]]
}
],
"Classifier": [],
"Detector": [],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 15.2,
"ts": 4751332.7542280005,
"v": 1
}