JSON Sonuç Spesifikasyonu
Limelight'ın JSON sonuç çıktısı, hedefleme sonuçlarını içeren bir dizi koleksiyonudur. Retroreflektif, fiducial, sinir ağı sınıflandırıcı ve sinir ağı dedektör sonuçları için ayrı diziler mevcuttur. JSON, insan tarafından okunabilir ve herhangi bir platformda herhangi bir dilde kolayca ayrıştırılabilir, bu nedenle çoğu kullanım durumu için mükemmeldir.
Aynı JSON sonuç çıktısı REST/HTTP, Websocket ve NetworkTables API'leri kullanılarak alınabilir.
Bu JSON çıktısını ayrıştırmak, FRC kütüphanelerimizle inanılmaz derecede kolaydır.
Limelightlib, JSON Dump'ı bir LimelightResults nesnesine ayrıştıran yerleşik işlevselliğe sahiptir.
https://github.com/LimelightVision/limelightlib-wpijava
https://github.com/LimelightVision/limelightlib-wpicpp
Her JSON sonucu aşağıdaki girişleri içerir:
| Anahtar Adı | Değer Açıklaması |
|---|---|
| tl | Hedefleme gecikmesi (bu karede izleme döngüsü tarafından tüketilen milisaniye) |
| cl | Yakalama gecikmesi (orta satırın pozlamasının bitiminden izleme döngüsünün başlangıcına kadar geçen milisaniye) |
| tx | Artı İşaretinden Hedefe Yatay Ofset (LL1: -27 derece ile 27 derece arası / LL2: -29.8 ile 29.8 derece arası) |
| ty | Artı İşaretinden Hedefe Dikey Ofset (LL1: -20.5 derece ile 20.5 derece arası / LL2: -24.85 ile 24.85 derece arası) |
| txnc | Ana Pikselden Hedefe Yatay Ofset (derece) |
| tync | Ana Pikselden Hedefe Dikey Ofset (derece) |
| ta | Hedefin düzeltilmemiş, normalize edilmiş alanı (0-100) |
| PythonOut | Python SnapScript Pipeline'larından çıktı verileri |
| stdev_mt1 | MT1 Standart Sapma [x, y, z, roll, pitch, yaw] (metre, derece) |
| stdev_mt2 | MT2 Standart Sapma [x, y, z, roll, pitch, yaw] (metre, derece) |
| pID | Mevcut Pipeline indeksi |
| pTYPE | Mevcut Pipeline Türü örn. "pipe_color" |
| ts | Açılıştan itibaren milisaniye cinsinden zaman damgası. |
| v | Geçerlilik göstergesi. 1 = geçerli hedefler, 0 = geçerli hedef yok |
| botpose | Botpose (MegaTag): x,y,z, roll, pitch, yaw (metre, derece) |
| botpose_wpired | Botpose (MegaTag, WPI Kırmızı sürücü istasyonu): x,y,z, roll, pitch, yaw (metre, derece) |
| botpose_wpiblue | Botpose (MegaTag, WPI Mavi sürücü istasyonu): x,y,z, roll, pitch, yaw (metre, derece) |
| botpose_orb | Botpose (MegaTag2): x,y,z, roll, pitch, yaw (metre, derece) |
| botpose_orb_wpired | Botpose (MegaTag2, WPI Kırmızı sürücü istasyonu): x,y,z, roll, pitch, yaw (metre, derece) |
| botpose_orb_wpiblue | Botpose (MegaTag2, WPI Mavi sürücü istasyonu): x,y,z, roll, pitch, yaw (metre, derece) |
| botpose_avgarea | Botpose hesaplamak için kullanılan etiketlerin ortalama alanı |
| botpose_avgdist | Botpose hesaplamak için kullanılan etiketler arasındaki maksimum mesafe (metre) |
| botpose_span | Botpose hesaplamak için kullanılan etiketler arasındaki maksimum mesafe (metre) |
| botpose_tagcount | Botpose hesaplamak için kullanılan etiket sayısı |
| Retro | Renk/Retroreflektif pipeline sonuç dizisi |
| Fiducial | AprilTag pipeline sonuç dizisi |
| Detector | Sinir Ağı Dedektör pipeline sonuç dizisi |
| Classifier | Sınıflandırıcı pipeline sonuç dizisi |
| Barcode | Barkod pipeline sonuç dizisi |
Renk/Retroreflektif Sonuçları
"Retro" dizisi aşağıdaki yapıya sahip girişler içerir:
| Anahtar Adı | Değer Açıklaması |
|---|---|
| t6c_ts | solvepnp tarafından hesaplanan hedef uzayında Kamera Pozu (x,y,z,rx,ry,rz) |
| t6r_fs | solvepnp tarafından hesaplanan saha uzayında Robot Pozu (x,y,z,rx,ry,rz) |
| t6r_ts | solvepnp tarafından hesaplanan hedef uzayında Robot Pozu (x,y,z,rx,ry,rz) |
| t6t_cs | solvepnp tarafından hesaplanan kamera uzayında Hedef Pozu (x,y,z,rx,ry,rz) |
| t6t_rs | solvepnp tarafından hesaplanan robot uzayında Hedef Pozu (x,y,z,rx,ry,rz) |
| ta | Hedefin görüntünün yüzdesi olarak boyutu (0-1) |
| tx | Artı işaretine göre hedefin merkezinin derece cinsinden X koordinatı. Pozitif-sağ, merkez-sıfır |
| tx_nocross | Ana piksele göre hedefin merkezinin derece cinsinden X koordinatı. Pozitif-sağ, merkez-sıfır |
| txp | Artı işaretine göre hedefin merkezinin piksel cinsinden X koordinatı. Pozitif-sağ, merkez-sıfır |
| ty | Artı işaretine göre hedefin merkezinin derece cinsinden Y koordinatı. Pozitif-aşağı, merkez-sıfır |
| ty_nocross | Ana piksele göre hedefin merkezinin derece cinsinden Y koordinatı. Pozitif-sağ, merkez-sıfır |
| typ | Artı işaretine göre hedefin merkezinin piksel cinsinden Y koordinatı. Pozitif-aşağı, merkez-sıfır |
| pts | Köşeler dizisi (piksel) [x0,y0,x1,y1.....]. Çıktı sekmesinde etkinleştirilmelidir |
Renk / Retroreflektif Pipeline'ları için Örnek 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 Sonuçları
"Fiducial" dizisi aşağıdaki yapıya sahip girişler içerir:
| Anahtar Adı | Değer Açıklaması |
|---|---|
| fid | Fiducial etiket ID'si |
| fam | Fiducial Ailesi (16H5C, 25H9C, 36H11C, vb.) |
| pts | Bireysel köşe noktalarını döndür. Etkinleştirilmelidir. |
| skew | Şu anda kullanılmıyor |
| t6c_ts | Bu fiducial tarafından hesaplanan hedef uzayında Kamera Pozu (x,y,z,pitch,yaw,roll) (metre, derece) |
| t6r_fs | Bu fiducial tarafından hesaplanan saha uzayında Robot Pozu (x,y,z,pitch,yaw,roll) (metre, derece) |
| t6r_fs_orb | Bu fiducial tarafından hesaplanan saha uzayında Robot Pozu (Megatag2) (x,y,z,pitch,yaw,roll) (metre, derece) |
| t6r_ts | Bu fiducial tarafından hesaplanan hedef uzayında Robot Pozu (x,y,z,pitch,yaw,roll) (metre, derece) |
| t6t_cs | Bu fiducial tarafından hesaplanan kamera uzayında Hedef Pozu (x,y,z,pitch,yaw,roll) (metre, derece) |
| t6t_rs | Bu fiducial tarafından hesaplanan robot uzayında Hedef Pozu (x,y,z,pitch,yaw,roll) (metre, derece) |
| ta | Hedefin görüntünün yüzdesi olarak boyutu (0-1) |
| tx | Artı işaretine göre hedefin merkezinin derece cinsinden X koordinatı. Pozitif-sağ, merkez-sıfır |
| tx_nocross | Ana piksele göre hedefin merkezinin derece cinsinden X koordinatı. Pozitif-sağ, merkez-sıfır |
| txp | Artı işaretine göre hedefin merkezinin piksel cinsinden X koordinatı. Pozitif-sağ, merkez-sıfır |
| ty | Artı işaretine göre hedefin merkezinin derece cinsinden Y koordinatı. Pozitif-aşağı, merkez-sıfır |
| ty_nocross | Ana piksele göre hedefin merkezinin derece cinsinden Y koordinatı. Pozitif-sağ, merkez-sıfır |
| typ | Artı işaretine göre hedefin merkezinin piksel cinsinden Y koordinatı. Pozitif-aşağı, merkez-sıfır |
| pts | Köşeler dizisi (piksel) [x0,y0,x1,y1.....]. Çıktı sekmesinde etkinleştirilmelidir |
AprilTag Pipeline'ları için Örnek 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
}
Sinir Ağı Dedektör Sonuçları
"Detector" dizisi aşağıdaki yapıya sahip girişler içerir:
| Anahtar Adı | Değer Açıklaması |
|---|---|
| class | İnsan tarafından okunabilir sınıf adı dizesi |
| classID | ClassID tamsayısı |
| conf | Tahminin güven değeri |
| pts | Piksel cinsinden [x,y] dizisi olarak bireysel köşe noktaları. Merkez-sıfır, pozitif sağ ve aşağı. Etkinleştirilmelidir. |
| ta | Hedefin görüntünün yüzdesi olarak boyutu (0-1) |
| tx | Artı işaretine göre hedefin merkezinin derece cinsinden X koordinatı. Pozitif-sağ, merkez-sıfır |
| tx_nocross | Ana piksele göre hedefin merkezinin derece cinsinden X koordinatı. Pozitif-sağ, merkez-sıfır |
| txp | Artı işaretine göre hedefin merkezinin piksel cinsinden X koordinatı. Pozitif-sağ, merkez-sıfır |
| ty | Artı işaretine göre hedefin merkezinin derece cinsinden Y koordinatı. Pozitif-aşağı, merkez-sıfır |
| ty_nocross | Ana piksele göre hedefin merkezinin derece cinsinden Y koordinatı. Pozitif-sağ, merkez-sıfır |
| typ | Artı işaretine göre hedefin merkezinin piksel cinsinden Y koordinatı. Pozitif-aşağı, merkez-sıfır |
| pts | Köşeler dizisi (piksel) [x0,y0,x1,y1.....]. Çıktı sekmesinde etkinleştirilmelidir |
Dedektör Pipeline'ları için Örnek 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
}
Sinir Ağı Sınıflandırıcı Sonuçları
"Classifier" dizisi aşağıdaki yapıya sahip girişler içerir:
| Anahtar Adı | Değer Açıklaması |
|---|---|
| class | İnsan tarafından okunabilir sınıf adı dizesi |
| classID | ClassID tamsayısı |
| conf | Tahminin güven değeri |
Sınıflandırıcı Pipeline'ları için Örnek JSON
{
"Classifier": [
{
"class": "digital clock",
"classID": 531,
"conf": 0.16796875
}
],
"Detector": [],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 16.704740524291992,
"ts": 4751332.7542280005,
"v": 1
}
Barkod Sonuçları
"Barcode" dizisi aşağıdaki yapıya sahip girişler içerir:
| Anahtar Adı | Değer Açıklaması |
|---|---|
| fam | Barkod Ailesi örn. "qr" |
| data | Çözülmüş barkod verisi dize olarak |
| ta | Hedefin görüntünün yüzdesi olarak boyutu (0-1) |
| tx | Artı işaretine göre hedefin merkezinin derece cinsinden X koordinatı. Pozitif-sağ, merkez-sıfır |
| tx_nocross | Ana piksele göre hedefin merkezinin derece cinsinden X koordinatı. Pozitif-sağ, merkez-sıfır |
| txp | Artı işaretine göre hedefin merkezinin piksel cinsinden X koordinatı. Pozitif-sağ, merkez-sıfır |
| ty | Artı işaretine göre hedefin merkezinin derece cinsinden Y koordinatı. Pozitif-aşağı, merkez-sıfır |
| ty_nocross | Ana piksele göre hedefin merkezinin derece cinsinden Y koordinatı. Pozitif-sağ, merkez-sıfır |
| typ | Artı işaretine göre hedefin merkezinin piksel cinsinden Y koordinatı. Pozitif-aşağı, merkez-sıfır |
| pts | Köşeler dizisi (piksel) [x0,y0,x1,y1.....]. Çıktı sekmesinde etkinleştirilmelidir |
Barkod Pipeline'ları için Örnek 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
}