Ana içeriğe geç

JSON Sonuçları 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 dilde, herhangi bir platformda ayrıştırılması kolaydır, bu nedenle çoğu kullanım senaryosu 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ı
tlHedefleme gecikmesi (bu kare için izleme döngüsü tarafından tüketilen milisaniye)
clYakalama gecikmesi (orta satırın pozlamasının sonu ile izleme döngüsünün başlangıcı arasındaki milisaniye)
txHedefin Artı İşaretinden Yatay Sapması (LL1: -27 derece ile 27 derece arası / LL2: -29.8 ile 29.8 derece arası)
tyHedefin Artı İşaretinden Dikey Sapması (LL1: -20.5 derece ile 20.5 derece arası / LL2: -24.85 ile 24.85 derece arası)
txncHedefin Ana Pikselden Yatay Sapması (derece)
tyncHedefin Ana Pikselden Dikey Sapması (derece)
taHedefin bozulmamış, normalize edilmiş alanı (0-100)
PythonOutPython SnapScript Pipeline'larından çıktı verileri
stdev_mt1MT1 Standart Sapma [x, y, z, yuvarlanma, yunuslama, sapma] (metre, derece)
stdev_mt2MT2 Standart Sapma [x, y, z, yuvarlanma, yunuslama, sapma] (metre, derece)
pIDMevcut Pipeline indeksi
pTYPEMevcut Pipeline Türü örn. "pipe_color"
tsÖnyüklemeden itibaren milisaniye cinsinden zaman damgası
vGeçerlilik göstergesi. 1 = geçerli hedefler, 0 = geçerli hedef yok
botposeBotpose (MegaTag): x,y,z, yuvarlanma, yunuslama, sapma (metre, derece)
botpose_wpiredBotpose (MegaTag, WPI Kırmızı sürücü istasyonu): x,y,z, yuvarlanma, yunuslama, sapma (metre, derece)
botpose_wpiblueBotpose (MegaTag, WPI Mavi sürücü istasyonu): x,y,z, yuvarlanma, yunuslama, sapma (metre, derece)
botpose_orbBotpose (MegaTag2): x,y,z, yuvarlanma, yunuslama, sapma (metre, derece)
botpose_orb_wpiredBotpose (MegaTag2, WPI Kırmızı sürücü istasyonu): x,y,z, yuvarlanma, yunuslama, sapma (metre, derece)
botpose_orb_wpiblueBotpose (MegaTag2, WPI Mavi sürücü istasyonu): x,y,z, yuvarlanma, yunuslama, sapma (metre, derece)
botpose_avgareaBotpose hesaplamak için kullanılan etiketlerin ortalama alanı
botpose_avgdistBotpose hesaplamak için kullanılan etiketler arasındaki maksimum mesafe (metre)
botpose_spanBotpose hesaplamak için kullanılan etiketler arasındaki maksimum mesafe (metre)
botpose_tagcountBotpose hesaplamak için kullanılan etiket sayısı
RetroRenk/Retroreflektif pipeline sonuçları dizisi
FiducialAprilTag pipeline sonuçları dizisi
DetectorSinir Ağı Dedektör pipeline sonuçları dizisi
ClassifierSınıflandırıcı pipeline sonuçları dizisi
BarcodeBarkod pipeline sonuçları dizisi

Renk/Retroreflektif Sonuçları

"Retro" dizisi aşağıdaki yapıya sahip girişler içerir:

Anahtar AdıDeğer Açıklaması
t6c_tsSolvepnp ile hesaplanan hedef uzayındaki kamera pozu (x,y,z,rx,ry,rz)
t6r_fsSolvepnp ile hesaplanan saha uzayındaki robot pozu (x,y,z,rx,ry,rz)
t6r_tsSolvepnp ile hesaplanan hedef uzayındaki robot pozu (x,y,z,rx,ry,rz)
t6t_csSolvepnp ile hesaplanan kamera uzayındaki hedef pozu (x,y,z,rx,ry,rz)
t6t_rsSolvepnp ile hesaplanan robot uzayındaki hedef pozu (x,y,z,rx,ry,rz)
taHedefin görüntüdeki boyutu (yüzde olarak, 0-1 arası)
txHedefin merkezinin artı işaretine göre X koordinatı (derece cinsinden). Sağa doğru pozitif, merkez sıfır
tx_nocrossHedefin merkezinin ana piksele göre X koordinatı (derece cinsinden). Sağa doğru pozitif, merkez sıfır
txpHedefin merkezinin artı işaretine göre X koordinatı (piksel cinsinden). Sağa doğru pozitif, merkez sıfır
tyHedefin merkezinin artı işaretine göre Y koordinatı (derece cinsinden). Aşağı doğru pozitif, merkez sıfır
ty_nocrossHedefin merkezinin ana piksele göre Y koordinatı (derece cinsinden). Sağa doğru pozitif, merkez sıfır
typHedefin merkezinin artı işaretine göre Y koordinatı (piksel cinsinden). Aşağı doğru pozitif, merkez sıfır
ptsKöşeler dizisi (piksel cinsinden) [x0,y0,x1,y1.....]. Çıktı sekmesinde etkinleştirilmesi gerekir
Renk / Retroreflektif İşlem Hatları 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ı
fidFiducial etiket kimliği
famFiducial Ailesi (16H5C, 25H9C, 36H11C, vb.)
ptsBireysel köşe noktalarını döndürür. Etkinleştirilmesi gerekir.
skewŞu anda kullanılmıyor
t6c_tsBu fiducial tarafından hesaplanan hedef uzayındaki Kamera Pozu (x,y,z,pitch,yaw,roll) (metre, derece)
t6r_fsBu fiducial tarafından hesaplanan saha uzayındaki Robot Pozu (x,y,z,pitch,yaw,roll) (metre, derece)
t6r_fs_orbBu fiducial tarafından hesaplanan saha uzayındaki Robot Pozu (Megatag2) (x,y,z,pitch,yaw,roll) (metre, derece)
t6r_tsBu fiducial tarafından hesaplanan hedef uzayındaki Robot Pozu (x,y,z,pitch,yaw,roll) (metre, derece)
t6t_csBu fiducial tarafından hesaplanan kamera uzayındaki Hedef Pozu (x,y,z,pitch,yaw,roll) (metre, derece)
t6t_rsBu fiducial tarafından hesaplanan robot uzayındaki Hedef Pozu (x,y,z,pitch,yaw,roll) (metre, derece)
taGörüntünün yüzdesi olarak hedefin boyutu (0-1)
txHedefin merkezinin artı işaretine göre X koordinatı (derece cinsinden). Sağa pozitif, merkez sıfır
tx_nocrossHedefin merkezinin ana piksele göre X koordinatı (derece cinsinden). Sağa pozitif, merkez sıfır
txpHedefin merkezinin artı işaretine göre X koordinatı (piksel cinsinden). Sağa pozitif, merkez sıfır
tyHedefin merkezinin artı işaretine göre Y koordinatı (derece cinsinden). Aşağı pozitif, merkez sıfır
ty_nocrossHedefin merkezinin ana piksele göre Y koordinatı (derece cinsinden). Sağa pozitif, merkez sıfır
typHedefin merkezinin artı işaretine göre Y koordinatı (piksel cinsinden). Aşağı pozitif, merkez sıfır
ptsKöşeler dizisi (piksel) [x0,y0,x1,y1.....]. Çıktı sekmesinde etkinleştirilmesi gerekir
AprilTag İşlem Hatları 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
}

Nöral 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
classIDSınıf ID tamsayısı
confTahmin güveni
ptsPiksel cinsinden [x,y] şeklinde bir dizi olarak ayrı köşe noktaları. Merkez sıfır, sağa ve aşağıya doğru pozitif. Etkinleştirilmesi gerekir.
taHedefin görüntünün yüzdesi olarak boyutu (0-1)
txHedefin merkezinin artı işaretine göre derece cinsinden X koordinatı. Sağa doğru pozitif, merkez sıfır
tx_nocrossHedefin merkezinin ana piksele göre derece cinsinden X koordinatı. Sağa doğru pozitif, merkez sıfır
txpHedefin merkezinin artı işaretine göre piksel cinsinden X koordinatı. Sağa doğru pozitif, merkez sıfır
tyHedefin merkezinin artı işaretine göre derece cinsinden Y koordinatı. Aşağıya doğru pozitif, merkez sıfır
ty_nocrossHedefin merkezinin ana piksele göre derece cinsinden Y koordinatı. Sağa doğru pozitif, merkez sıfır
typHedefin merkezinin artı işaretine göre piksel cinsinden Y koordinatı. Aşağıya doğru pozitif, merkez sıfır
ptsKöşeler dizisi (piksel) [x0,y0,x1,y1.....]. Çıktı sekmesinde etkinleştirilmesi gerekir
Dedektör Hatları 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
classIDSınıf ID tamsayısı
confTahmin güveni
Sınıflandırıcı Hatları 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ı
famBarkod Ailesi örn. "qr"
dataÇözümlenmiş barkod verisi (string olarak)
taHedefin görüntüye göre boyutu (yüzde olarak, 0-1 arası)
txHedefin merkezinin artı işaretine göre X koordinatı (derece cinsinden). Sağa doğru pozitif, merkez sıfır
tx_nocrossHedefin merkezinin ana piksele göre X koordinatı (derece cinsinden). Sağa doğru pozitif, merkez sıfır
txpHedefin merkezinin artı işaretine göre X koordinatı (piksel cinsinden). Sağa doğru pozitif, merkez sıfır
tyHedefin merkezinin artı işaretine göre Y koordinatı (derece cinsinden). Aşağı doğru pozitif, merkez sıfır
ty_nocrossHedefin merkezinin ana piksele göre Y koordinatı (derece cinsinden). Sağa doğru pozitif, merkez sıfır
typHedefin merkezinin artı işaretine göre Y koordinatı (piksel cinsinden). Aşağı doğru pozitif, merkez sıfır
ptsKöşeler dizisi (piksel cinsinden) [x0,y0,x1,y1.....]. Çıktı sekmesinde etkinleştirilmesi gerekir
Barkod İşlem Hatları 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
}