Ana içeriğe geç

NetworkTables API

Limelight OS, FRC Robotlarında çalışan NetworkTables 4 Sunucusuna, Ayarlar Arayüzünde yapılandırılan Takım Numarası / Kimliğine göre otomatik olarak bağlanan bir NetworkTables 4 İstemcisi içerir.

Tüm veriler, cihaz adıyla eşleşen bir tabloya yayınlanır (örneğin "limelight"). Kameranıza bir ana bilgisayar adı / takma ad atanmışsa, tablo adı tam limelight adıyla eşleşecektir (örneğin "limelight-top").

LimelightLib WPIJava ve LimelightLib WPICPP, NetworkTables aracılığıyla Limelight cihazlarıyla etkileşim kurar.

Temel Hedefleme Verileri

Aşağıdaki kodu kullanın:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDouble(0);

bu verileri almak için:

anahtartüraçıklama
tvintGeçerli hedef varsa 1. Geçerli hedef yoksa 0
txdoubleArtı İşaretinden Hedefe Yatay Ofset (LL1: -27 derece ile 27 derece / LL2: -29.8 ile 29.8 derece)
tydoubleArtı İşaretinden Hedefe Dikey Ofset (LL1: -20.5 derece ile 20.5 derece / LL2: -24.85 ile 24.85 derece)
txncdoubleAna Pikselden Hedefe Yatay Ofset (derece)
tyncdoubleAna Pikselden Hedefe Dikey Ofset (derece)
tadoubleHedef Alanı (görüntünün %0'ından %100'üne)
tldoublePipeline'ın gecikme katkısı (ms). Toplam gecikmeyi elde etmek için "cl"ye ekleyin.
cldoubleYakalama pipeline gecikmesi (ms). Sensörün orta sırasının pozlamasının sonundan izleme pipeline'ının başlangıcına kadar geçen süre.
t2ddoubleEşleştirilmiş zaman damgalı istatistikler için birkaç değer içeren dizi: [hedefGeçerli, hedefSayısı, hedefGecikmesi, yakalamGecikmesi, tx, ty, txnc, tync, ta, tid, hedefSınıfİndeksiDetektör, hedefSınıfİndeksiSınıflandırıcı, hedefUzunKenarPikseller, hedefKısaKenarPikseller, hedefYatayGenişlikPikseller, hedefDikeyGenişlikPikseller, hedefEğiklikDerecesi]
getpipeintKameranın gerçek aktif pipeline indeksi (0 .. 9)
getpipetypestringPipeline Türü örn. "pipe_color"
jsonstringHedefleme sonuçlarının tam JSON dökümü. 'çıktı' sekmesinde pipeline başına etkinleştirilmesi gerekir
tclassstringBirincil sinir dedektörü sonucunun veya sinir sınıflandırıcı sonucunun sınıf adı
tcdoubleArrayArtı işareti bölgesinin altındaki ortalama HSV rengini (3x3 piksellik bölge) bir NumberArray olarak alın
hbdoublekalp atışı değeri. Her karede bir artar, 2 milyarda sıfırlanır
hwdoubleArrayHW metrikleri [fps, cpu sıcaklığı, ram kullanımı, sıcaklık]
crosshairsdoubleArray2B Artı İşaretleri [cx0, cy0, cx1, cy1]
tcclassstringSınıflandırıcı pipeline'ının hesaplanan sınıf adı
tdclassstringDedektör pipeline'ının birincil algılama adı

AprilTag ve 3D Veri

Aşağıdaki kodu kullanın:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDoubleArray(new double[6]);

bu verileri almak için:

anahtartüraçıklama
botposedoubleArraySaha uzayında robot dönüşümü. Çeviri (X,Y,Z) metre cinsinden, Dönüş (Yalpalama,Yunuslama,Sapma) derece cinsinden, toplam gecikme (cl+tl), etiket sayısı, etiket aralığı, kameradan ortalama etiket mesafesi, ortalama etiket alanı (görüntünün yüzdesi)
botpose_wpibluedoubleArraySaha uzayında robot dönüşümü (mavi sürücü istasyonu WPILIB orijini). Çeviri (X,Y,Z) metre cinsinden, Dönüş (Yalpalama,Yunuslama,Sapma) derece cinsinden, toplam gecikme (cl+tl), etiket sayısı, etiket aralığı, kameradan ortalama etiket mesafesi, ortalama etiket alanı (görüntünün yüzdesi)
botpose_wpireddoubleArraySaha uzayında robot dönüşümü (kırmızı sürücü istasyonu WPILIB orijini). Çeviri (X,Y,Z) metre cinsinden, Dönüş (Yalpalama,Yunuslama,Sapma) derece cinsinden, toplam gecikme (cl+tl), etiket sayısı, etiket aralığı, kameradan ortalama etiket mesafesi, ortalama etiket alanı (görüntünün yüzdesi)
botpose_orbdoubleArraySaha uzayında robot dönüşümü (Megatag2). Çeviri (X,Y,Z) metre cinsinden, Dönüş (Yalpalama,Yunuslama,Sapma) derece cinsinden, toplam gecikme (cl+tl), etiket sayısı, etiket aralığı, kameradan ortalama etiket mesafesi, ortalama etiket alanı (görüntünün yüzdesi)
botpose_orb_wpibluedoubleArraySaha uzayında robot dönüşümü (Megatag2) (mavi sürücü istasyonu WPILIB orijini). Çeviri (X,Y,Z) metre cinsinden, Dönüş (Yalpalama,Yunuslama,Sapma) derece cinsinden, toplam gecikme (cl+tl), etiket sayısı, etiket aralığı, kameradan ortalama etiket mesafesi, ortalama etiket alanı (görüntünün yüzdesi)
botpose_orb_wpireddoubleArraySaha uzayında robot dönüşümü (Megatag2) (kırmızı sürücü istasyonu WPILIB orijini). Çeviri (X,Y,Z) metre cinsinden, Dönüş (Yalpalama,Yunuslama,Sapma) derece cinsinden, toplam gecikme (cl+tl), etiket sayısı, etiket aralığı, kameradan ortalama etiket mesafesi, ortalama etiket alanı (görüntünün yüzdesi)
camerapose_targetspacedoubleArrayGörüş alanındaki birincil AprilTag'in koordinat sisteminde kameranın 3D dönüşümü (dizi (6)) [tx, ty, tz, yunuslama, sapma, yalpalama] (metre, derece)
targetpose_cameraspacedoubleArrayKameranın koordinat sisteminde görüş alanındaki birincil AprilTag'in 3D dönüşümü (dizi (6)) [tx, ty, tz, yunuslama, sapma, yalpalama] (metre, derece)
targetpose_robotspacedoubleArrayRobotun koordinat sisteminde görüş alanındaki birincil AprilTag'in 3D dönüşümü (dizi (6)) [tx, ty, tz, yunuslama, sapma, yalpalama] (metre, derece)
botpose_targetspacedoubleArrayGörüş alanındaki birincil AprilTag'in koordinat sisteminde robotun 3D dönüşümü (dizi (6)) [tx, ty, tz, yunuslama, sapma, yalpalama] (metre, derece)
camerapose_robotspacedoubleArrayRobotun koordinat sisteminde kameranın 3D dönüşümü (dizi (6))
tidintGörüş alanındaki birincil AprilTag'in ID'si
stddevsdoubleArrayMegaTag Standart Sapmaları [MT1x, MT1y, MT1z, MT1yalpalama, MT1yunuslama, MT1sapma, MT2x, MT2y, MT2z, MT2yalpalama, MT2yunuslama, MT2sapma]
camerapose_robotspace_setdoubleArrayRobotun koordinat sisteminde kameranın konumunu AYARLA.
priorityidinttx/ty hedefleme için gerekli ID'yi AYARLA. Diğer hedefleri yoksay. Lokalizasyonu etkilemez
robot_orientation_setdoubleArrayRobot Yönelimini ve açısal hızları derece ve derece/saniye cinsinden AYARLA [sapma,sapmahızı,yunuslama,yunuslamahızı,yalpalama,yalpalamahızı]
fiducial_id_filters_setdoubleArrayLokalizasyon için geçerli fiducial id'lerini geçersiz kıl (dizi)
fiducial_offset_setdoubleArray3D İlgi Noktası Ofsetini AYARLA [x,y,z]

Kamera Kontrolleri

Aşağıdaki kodu kullanın:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").setNumber(<value>);

bu verileri ayarlamak için:

ledModeLimelight'ın LED durumunu ayarlar
[0]mevcut pipeline'da ayarlanan LED Modunu kullan
[1]zorla kapalı
[2]zorla yanıp sönme
[3]zorla açık
pipelineLimelight'ın mevcut pipeline'ını ayarlar
0 .. 9Pipeline 0..9 seç
streamLimelight'ın yayın modunu ayarlar
0Standart - Limelight'a bir web kamerası bağlıysa yan yana akışlar
1PiP Ana - İkincil kamera akışı birincil kamera akışının sağ alt köşesine yerleştirilir
2PiP İkincil - Birincil kamera akışı ikincil kamera akışının sağ alt köşesine yerleştirilir
crop(Dizi) Kırpma dikdörtgenini ayarlar. Pipeline web arayüzündeki varsayılan kırpma dikdörtgenini kullanmalıdır. Dizinin tam olarak 4 girişi olmalıdır.
[0]X0 - Kırpma dikdörtgeninin Min veya Max X değeri (-1 ile 1 arası)
[1]X1 - Kırpma dikdörtgeninin Min veya Max X değeri (-1 ile 1 arası)
[2]Y0 - Kırpma dikdörtgeninin Min veya Max Y değeri (-1 ile 1 arası)
[3]Y1 - Kırpma dikdörtgeninin Min veya Max Y değeri (-1 ile 1 arası)
double[] cropValues = new double[4];
cropValues[0] = -1.0;
cropValues[1] = 1.0;
cropValues[2] = -1.0;
cropValues[3] = 1.0;
NetworkTableInstance.getDefault().getTable("limelight").getEntry("crop").setDoubleArray(cropValues);

Python

Python scriptleri keyfi gelen ve giden verilere izin verir.

llpythonPython scriptleri tarafından gönderilen NumberArray. Bu robot kodu içinde erişilebilir.
llrobotRobot tarafından gönderilen NumberArray. Bu python SnapScriptleri içinde erişilebilir.

Ham Veriler

Köşeler:

"Output" sekmesinde "send contours" seçeneğini etkinleştirerek köşe koordinatlarını yayınlayın:

tcornxyKöşe koordinatlarının sayı dizisi [x0,y0,x1,y1......]

Ham Hedefler:

Limelight, gruplama modunuzdan etkilenmeyen üç ham konturu NetworkTables'a gönderir. Yani, pipeline parametrelerinizle filtrelenir ancak asla gruplanmaz. X ve Y, derece yerine normalize edilmiş ekran alanında (-1 ile 1 arası) döndürülür.

rawtargets[txnc,tync,ta,txnc2,tync2,ta2....]

Ham Fiducial'lar:

Tüm geçerli (filtrelenmemiş) fiducial'ları alın

rawfiducials[id, txnc, tync, ta, distToCamera, distToRobot, ambiguity, id2.....]

Ham Tespitler:

Tüm geçerli (filtrelenmemiş) sinir ağı tespit sonuçlarını alın

rawdetections[id, txnc, tync, ta, corner0x, corner0y, corner1x, corner1y, corner2x, corner2y, corner3x, corner3y, id2.....]

Ham Barkodlar:

Tüm geçerli (filtrelenmemiş) barkod sonuçlarını alın

rawbarcodesbarkod verilerinin string dizisi