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:
- Java
- LabView
- C++
- Python
NetworkTableInstance.getDefault().getTable("limelight").getEntry("<değişkenadı>").getDouble(0);
nt::NetworkTableInstance::GetDefault().GetTable("limelight")->GetNumber("<değişkenadı>",0.0);
NetworkTables.getTable("limelight").getNumber('<değişkenadı>');
bu verileri almak için:
anahtar | tür | açıklama |
---|---|---|
tv | int | Geçerli hedef varsa 1. Geçerli hedef yoksa 0 |
tx | double | Hedefin Artı İşaretinden Yatay Sapması (LL1: -27 derece ile 27 derece arası / LL2: -29.8 ile 29.8 derece arası) |
ty | double | Hedefin Artı İşaretinden Dikey Sapması (LL1: -20.5 derece ile 20.5 derece arası / LL2: -24.85 ile 24.85 derece arası) |
txnc | double | Hedefin Ana Pikselden Yatay Sapması (derece) |
tync | double | Hedefin Ana Pikselden Dikey Sapması (derece) |
ta | double | Hedef Alanı (görüntünün %0'ından %100'üne) |
tl | double | Pipeline'ın gecikme katkısı (ms). Toplam gecikmeyi elde etmek için "cl" ile toplayın. |
cl | double | Yakalama 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. |
t2d | double | Eş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] |
getpipe | int | Kameranın gerçek aktif pipeline indeksi (0 .. 9) |
getpipetype | string | Pipeline Türü örn. "pipe_color" |
json | string | Hedefleme sonuçlarının tam JSON dökümü. 'çıktı' sekmesinde her pipeline için etkinleştirilmesi gerekir |
tclass | string | Birincil sinir ağı detektör sonucunun veya sinir ağı s ınıflandırıcı sonucunun sınıf adı |
tc | doubleArray | Artı işareti bölgesinin altındaki ortalama HSV rengini bir NumberArray olarak alın (3x3 piksellik bölge) |
hb | double | Kalp atışı değeri. Her karede bir artar, 2 milyarda sıfırlanır |
hw | doubleArray | Donanım metrikleri [fps, cpu sıcaklığı, ram kullanımı, sıcaklık] |
crosshairs | doubleArray | 2B Artı İşaretleri [cx0, cy0, cx1, cy1] |
tcclass | string | Sınıflandırıcı pipeline'ının hesapladığı sınıfın adı |
tdclass | string | Detektör pipeline'ının birincil tespitinin adı |
AprilTag ve 3D Veri
Aşağıdaki kodu kullanın:
- Java
- C++
NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDoubleArray(new double[6]);
nt::NetworkTableInstance::GetDefault().GetTable("limelight")->GetNumberArray("<variablename>",std::vector<double>(6));
bu verileri almak için:
anahtar | tür | açıklama |
---|---|---|
botpose | doubleArray | Saha 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_wpiblue | doubleArray | Saha 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_wpired | doubleArray | Saha 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_orb | doubleArray | Saha 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_wpiblue | doubleArray | Saha 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_wpired | doubleArray | Saha 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_targetspace | doubleArray | Gö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_cameraspace | doubleArray | Kameranı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_robotspace | doubleArray | Robotun koordinat sisteminde görünürdeki birincil AprilTag'in 3D dönüşümü (dizi (6)) [tx, ty, tz, yunuslama, sapma, yuvarlanma] (metre, derece) |
botpose_targetspace | doubleArray | Görünürdeki birincil AprilTag'in koordinat sisteminde robotun 3D dönüşümü (dizi (6)) [tx, ty, tz, yunuslama, sapma, yuvarlanma] (metre, derece) |
camerapose_robotspace | doubleArray | Robotun koordinat sisteminde kameranın 3D dönüşümü (dizi (6)) |
tid | int | Görünürdeki birincil AprilTag'in ID'si |
camerapose_robotspace_set | doubleArray | Robotun koordinat sisteminde kameranın konumunu AYARLA. |
priorityid | int | tx/ty hedefleme için gerekli ID'yi AYARLA. Diğer hedefleri görmezden gel. Lokalizasyonu etkilemez |
robot_orientation_set | doubleArray | Robot 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_set | doubleArray | Lokalizasyon için geçerli fiducial id'leri geçersiz kıl (dizi) |
fiducial_offset_set | doubleArray | 3D İlgi Noktası Ofsetini AYARLA [x,y,z] |
Kamera Kontrolleri
Aşağıdaki kodu kullanın:
- Java
- LabView
- C++
- Python
NetworkTableInstance.getDefault().getTable("limelight").getEntry("<değişkenadı>").setNumber(<değer>);
nt::NetworkTableInstance::GetDefault().GetTable("limelight")->PutNumber("<değişkenadı>",<değer>);
NetworkTables.getTable("limelight").putNumber('<değişkenadı>',<değer>)
bu verileri ayarlamak için:
ledMode | Limelight'ı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 |
pipeline | Limelight'ın mevcut pipeline'ını ayarlar |
---|---|
0 .. 9 | Pipeline 0..9 seç |
stream | Limelight'ın yayın modunu ayarlar |
---|---|
0 | Standart - Limelight'a bir web kamerası bağlıysa yan yana akışlar |
1 | PiP Ana - İkincil kamera akışı birincil kamera akışının sağ alt köşesine yerleştirilir |
2 | PiP İ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ı) |
- Java
- C++
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);
wip
Python
Python betikleri, keyfi gelen ve giden verilere izin verir.
llpython | Python betikleri tarafından gönderilen NumberArray. Bu, robot kodunun içinde erişilebilir. |
llrobot | Robot 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:
tcornxy | Köş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
rawbarcodes | barkod verilerinin dize dizisi |