Ana içeriğe geç

NetworkTables API

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

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şime girer.

Temel Hedefleme Verileri

Aşağıdaki kodu kullanın:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<değişkenadı>").getDouble(0);

bu verileri almak için:

anahtartüraçıklama
tvintGeçerli hedef varsa 1. Geçerli hedef yoksa 0
txdoubleHedefin Artı İşaretinden Yatay Sapması (LL1: -27 derece ile 27 derece arası / LL2: -29.8 ile 29.8 derece arası)
tydoubleHedefin Artı İşaretinden Dikey Sapması (LL1: -20.5 derece ile 20.5 derece arası / LL2: -24.85 ile 24.85 derece arası)
txncdoubleHedefin Ana Pikselden Yatay Sapması (derece)
tyncdoubleHedefin Ana Pikselden Dikey Sapması (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" ile toplayın.
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ı, hedefUzunKenarPikselleri, hedefKısaKenarPikselleri, hedefYatayGenişlikPikselleri, hedefDikeyGenişlikPikselleri, 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 her pipeline için etkinleştirilmesi gerekir
tclassstringBirincil sinir ağı detektör sonucunun veya sinir ağı sınıflandırıcı sonucunun sınıf adı
tcdoubleArrayArtı işareti bölgesinin altındaki ortalama HSV rengini bir NumberArray olarak alın (3x3 piksellik bölge)
hbdoubleKalp atışı değeri. Her karede bir artar, 2 milyarda sıfırlanır
hwdoubleArrayDonanım 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 hesapladığı sınıfın adı
tdclassstringDetektör pipeline'ının birincil tespitinin 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üş (Yuvarlanma, 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üş (Yuvarlanma, 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üş (Yuvarlanma, 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üş (Yuvarlanma, 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üş (Yuvarlanma, 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üş (Yuvarlanma, 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ünürdeki birincil AprilTag'in koordinat sisteminde kameranın 3D dönüşümü (dizi (6)) [tx, ty, tz, yunuslama, sapma, yuvarlanma] (metre, derece)
targetpose_cameraspacedoubleArrayKameranın koordinat sisteminde görünürdeki birincil AprilTag'in 3D dönüşümü (dizi (6)) [tx, ty, tz, yunuslama, sapma, yuvarlanma] (metre, derece)
targetpose_robotspacedoubleArrayRobotun koordinat sisteminde görünürdeki birincil AprilTag'in 3D dönüşümü (dizi (6)) [tx, ty, tz, yunuslama, sapma, yuvarlanma] (metre, derece)
botpose_targetspacedoubleArrayGörünürdeki birincil AprilTag'in koordinat sisteminde robotun 3D dönüşümü (dizi (6)) [tx, ty, tz, yunuslama, sapma, yuvarlanma] (metre, derece)
camerapose_robotspacedoubleArrayRobotun koordinat sisteminde kameranın 3D dönüşümü (dizi (6))
tidintGörünürdeki birincil AprilTag'in ID'si
camerapose_robotspace_setdoubleArrayRobotun koordinat sisteminde kameranın konumunu AYARLA.
priorityidinttx/ty hedefleme için gerekli ID'yi AYARLA. Diğer hedefleri görmezden gel. Lokalizasyonu etkilemez
robot_orientation_setdoubleArrayRobot Yönelimini ve açısal hızları derece ve derece/saniye cinsinden AYARLA [sapma, sapma hızı, yunuslama, yunuslama hızı, yuvarlanma, yuvarlanma hızı]
fiducial_id_filters_setdoubleArrayLokalizasyon için geçerli fiducial id'leri 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("<değişkenadı>").setNumber(<değer>);

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 betikleri, keyfi gelen ve giden verilere izin verir.

llpythonPython betikleri tarafından gönderilen NumberArray. Bu, robot kodunun içinde erişilebilir.
llrobotRobot tarafından gönderilen NumberArray. Bu, python SnapScripts içinde erişilebilir.

Ham Veri

Köşeler:

"Çıktı" sekmesinde "konturları gönder" seçeneğini etkinleştirerek köşe koordinatlarını akışa alı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, bunlar pipeline parametrelerinizle filtrelenir, ancak asla gruplanmaz. X ve Y, derece yerine normalleştirilmiş 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

rawfiducials[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 dize dizisi