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ı / ID'ye 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 (örn. "limelight"). Kameranıza bir hostname / takma ad atanmışsa, tablo adı tam limelight adıyla eşleşecektir (örn. "limelight-top").

LimelightLib WPIJava ve LimelightLib WPICPP, Limelight cihazlarıyla NetworkTables üzerinden iletişim kurar.

Temel Hedefleme Verileri

Aşağıdaki kodu kullanın:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<degiskenadi>").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 arası / LL2: -29.8 ile 29.8 derece arası)
tydoubleArtı İşaretinden Hedefe Dikey Ofset (LL1: -20.5 derece ile 20.5 derece arası / LL2: -24.85 ile 24.85 derece arası)
txncdoubleAna Pikselden Hedefe Yatay Ofset (derece)
tyncdoubleAna Pikselden Hedefe Dikey Ofset (derece)
tadoubleHedef Alanı (görüntünün %0'ı ile %100'ü arası)
tldoublePipeline'ın gecikme katkısı (ms). Toplam gecikme için "cl" ile toplayın.
cldoubleYakalama pipeline gecikmesi (ms). Sensörün orta satırının pozlamasının bitiminden izleme pipeline'ının başlangıcına kadar geçen süre.
t2ddoubleEşleştirilmiş zaman damgası istatistikleri için çeşitli değerler içeren dizi: [targetValid, targetCount, targetLatency, captureLatency, tx, ty, txnc, tync, ta, tid, targetClassIndexDetector , targetClassIndexClassifier, targetLongSidePixels, targetShortSidePixels, targetHorizontalExtentPixels, targetVerticalExtentPixels, targetSkewDegrees]
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ü. 'output' sekmesinde pipeline başına etkinleştirilmelidir
tclassstringBirincil sinir ağı dedektö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 (3x3 piksel bölgesi) NumberArray olarak alın
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]
crosshairsdoubleArray2D 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 tespitinin adı

AprilTag ve 3D Verileri

Aşağıdaki kodu kullanın:

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

bu verileri almak için:

anahtartüraçıklama
botposedoubleArraySaha koordinat sisteminde robot dönüşümü. Öteleme (X,Y,Z) metre cinsinden, Dönme(Roll,Pitch,Yaw) derece cinsinden, toplam gecikme (cl+tl), etiket sayısı, etiket aralığı, kameradan ortalama etiket mesafesi, ortalama etiket alanı (görüntü yüzdesi)
botpose_wpibluedoubleArraySaha koordinat sisteminde robot dönüşümü (mavi sürücü istasyonu WPILIB orijini). Öteleme (X,Y,Z) metre cinsinden, Dönme(Roll,Pitch,Yaw) derece cinsinden, toplam gecikme (cl+tl), etiket sayısı, etiket aralığı, kameradan ortalama etiket mesafesi, ortalama etiket alanı (görüntü yüzdesi)
botpose_wpireddoubleArraySaha koordinat sisteminde robot dönüşümü (kırmızı sürücü istasyonu WPILIB orijini). Öteleme (X,Y,Z) metre cinsinden, Dönme(Roll,Pitch,Yaw) derece cinsinden, toplam gecikme (cl+tl), etiket sayısı, etiket aralığı, kameradan ortalama etiket mesafesi, ortalama etiket alanı (görüntü yüzdesi)
botpose_orbdoubleArraySaha koordinat sisteminde robot dönüşümü (Megatag2). Öteleme (X,Y,Z) metre cinsinden, Dönme(Roll,Pitch,Yaw) derece cinsinden, toplam gecikme (cl+tl), etiket sayısı, etiket aralığı, kameradan ortalama etiket mesafesi, ortalama etiket alanı (görüntü yüzdesi)
botpose_orb_wpibluedoubleArraySaha koordinat sisteminde robot dönüşümü (Megatag2) (mavi sürücü istasyonu WPILIB orijini). Öteleme (X,Y,Z) metre cinsinden, Dönme(Roll,Pitch,Yaw) derece cinsinden, toplam gecikme (cl+tl), etiket sayısı, etiket aralığı, kameradan ortalama etiket mesafesi, ortalama etiket alanı (görüntü yüzdesi)
botpose_orb_wpireddoubleArraySaha koordinat sisteminde robot dönüşümü (Megatag2) (kırmızı sürücü istasyonu WPILIB orijini). Öteleme (X,Y,Z) metre cinsinden, Dönme(Roll,Pitch,Yaw) derece cinsinden, toplam gecikme (cl+tl), etiket sayısı, etiket aralığı, kameradan ortalama etiket mesafesi, ortalama etiket alanı (görüntü yüzdesi)
camerapose_targetspacedoubleArrayGörünümdeki birincil AprilTag'in koordinat sisteminde kameranın 3D dönüşümü (dizi (6)) [tx, ty, tz, pitch, yaw, roll] (metre, derece)
targetpose_cameraspacedoubleArrayKamera koordinat sisteminde görünümdeki birincil AprilTag'in 3D dönüşümü (dizi (6)) [tx, ty, tz, pitch, yaw, roll] (metre, derece)
targetpose_robotspacedoubleArrayRobot koordinat sisteminde görünümdeki birincil AprilTag'in 3D dönüşümü (dizi (6)) [tx, ty, tz, pitch, yaw, roll] (metre, derece)
botpose_targetspacedoubleArrayGörünümdeki birincil AprilTag'in koordinat sisteminde robotun 3D dönüşümü (dizi (6)) [tx, ty, tz, pitch, yaw, roll] (metre, derece)
camerapose_robotspacedoubleArrayRobot koordinat sisteminde kameranın 3D dönüşümü (dizi (6))
tidintGörünümdeki birincil AprilTag'in ID'si
stddevsdoubleArrayMegaTag Standart Sapmaları [MT1x, MT1y, MT1z, MT1roll, MT1pitch, MT1Yaw, MT2x, MT2y, MT2z, MT2roll, MT2pitch, MT2yaw]
camerapose_robotspace_setdoubleArrayRobot koordinat sisteminde kameranın pozisyonunu 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 saniyede derece cinsinden AYARLA [yaw,yawrate,pitch,pitchrate,roll,rollrate]
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("<degiskenadi>").setNumber(<deger>);

bu verileri ayarlamak için:

ledModeLimelight'ın LED durumunu ayarlar
[0]mevcut pipeline'da ayarlanan LED Modunu kullan
[1]zorla kapat
[2]zorla yanıp sön
[3]zorla aç
pipelineLimelight'ın mevcut pipeline'ını ayarlar
0 .. 9Pipeline 0..9'u seç
streamLimelight'ın yayın modunu ayarlar
0Standart - Limelight'a bir webcam bağlıysa yan yana yayınlar
1PiP Ana - İkincil kamera yayını birincil kamera yayınının sağ alt köşesine yerleştirilir
2PiP İkincil - Birincil kamera yayını ikincil kamera yayınının sağ alt köşesine yerleştirilir
crop(Dizi) Kırpma dikdörtgenini ayarlar. Pipeline, web arayüzünde varsayılan kırpma dikdörtgenini kullanmalıdır. Dizi tam olarak 4 giriş içermelidir.
[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ı)
throttle_set(int) Devre dışıyken bunu 100-200 olarak ayarlamanızı öneririz. Sıcaklık artışını azaltmak için işlenen kareler arasında atlanacak kare sayısını ayarlar. Atlanan kareler sırasında çıktılar sıfırlanmaz.
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);

IMU Kontrolleri

anahtartüraçıklama
imumode_setintimumode'u ayarla. 0 - harici imu kullan, 1 - harici imu kullan, dahili imu'yu başlat, 2 - dahili kullan, 3 - MT1 destekli yakınsama ile dahili kullan, 4 - harici IMU destekli yakınsama ile dahili IMU kullan
imuassistalpha_setdoubleTamamlayıcı filtre alpha / gücü. Daha yüksek değerler dahili imu'nun yardım kaynağına daha hızlı yakınsamasına neden olur. Varsayılan değer düşük bir değer olan 0.001 olarak ayarlanmıştır çünkü artık dahili IMU'ya daha fazla güveniyoruz. Yardım modları, dahili imu'yu seçilen yardım kaynağına çok nazikçe "çekmek" için tasarlanmıştır.

Python

Python scriptleri rastgele gelen ve giden verilere izin verir.

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

Ham Veriler

Köşeler:

Köşe koordinatlarını yayınlamak için "Output" sekmesinde "send contours"u etkinleştirin:

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

Ham Hedefler:

Limelight, gruplama modunuzdan etkilenmeyen üç ham kontur NetworkTables'a gönderir. Yani, pipeline parametrelerinizle filtrelenirler, ancak asla gruplanmazlar. 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

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

Ham Tespitler:

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

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

rawbarcodes barkod verilerinin string dizisi