FTC Java & Blockly Programlama Rehberi
(Blockly ekran görüntüleri yakında!)
FTC Programlama Hızlı Başlangıç sayfasını okuduğunuzdan emin olun.
FTC Limelight Javadoc: Javadoc
Temel FTC Örneği: FTC Örneği
Tam Örnekler Deposu: Limelight FTC Örnekleri Deposu
Başarı İçin İpuçları
- Önce basit olanı yapın. FRC'de, en iyi yazılım takımlarının genellikle en basit yaklaşımları kullandığını öğrendik. Örneğin, 2024'te FRC Takım 2056, oyun parçalarını takip etmek için sinir ağı yerine standart 90FPS renk pipeline'ı kullandı.
İşte programlamaya başlarken sormanız gereken soru türüne bir örnek: Teleop'ta, robotunuzun sahadaki konumunu bilmeniz mi gerekiyor, yoksa sadece nişangahınız belirli bir etiketin üzerinde ortalanana kadar yana kaymanız mı gerekiyor (strafeSpeed = result.getTx()*.03)?
Temel Kavramlar
1. Başlatma
Robot kodumuzda Limelight3A'mızı kurmamız gerekiyor.
import com.qualcomm.hardware.limelightvision.LLResult;
import com.qualcomm.hardware.limelightvision.LLResultTypes;
import com.qualcomm.hardware.limelightvision.LLStatus;
import com.qualcomm.hardware.limelightvision.Limelight3A;
Limelight3A limelight;
@Override
public void init() {
limelight = hardwareMap.get(Limelight3A.class, "limelight");
limelight.setPollRateHz(100); // Bu, Limelight'tan ne sıklıkla veri istediğimizi ayarlar (saniyede 100 kez)
limelight.start(); // Bu, Limelight'a bakmaya başlamasını söyler!
}
2. Pipeline Yönetimi
Pipeline'lar, Limelight'ın dünyaya nasıl baktığını değiştiren küçük, anında değiştirilebilir programlar gibidir. Limelight web arayüzünde her biri farklı bir görev için 10 farklı pipeline kurabilirsiniz. İşte aralarında nasıl geçiş yapacağınız:
limelight.pipelineSwitch(0); // 0 numaralı pipeline'a geç
Bu, ateşle ve unut şeklindedir. Limelight pipeline'ını milisaniyeler içinde değiştirecektir, ancak kodunuz devam etmeden önce bunu beklemeyecektir. Mevcut pipeline indeksini kontrol etmek istiyorsanız, şunu çağırın:
result.getPipelineIndex()
LLResult nesnesini almayı öğrenmek için sonraki bölüme bakın.
3. Sonuçları Alma ve Kullanma
LLResult, Limelight'ın gördükleri hakkında bilgi dolu bir kap gibidir. İşte bu bilgiyi nasıl alıp kullanacağımız:
LLResult result = limelight.getLatestResult();
if (result != null && result.isValid()) {
double tx = result.getTx(); // Hedefin ne kadar sola veya sağa olduğu (derece)
double ty = result.getTy(); // Hedefin ne kadar yukarı veya aşağı olduğu (derece)
double ta = result.getTa(); // Hedefin ne kadar büyük göründüğü (görüntünün %0-%100'ü)
telemetry.addData("Hedef X", tx);
telemetry.addData("Hedef Y", ty);
telemetry.addData("Hedef Alan", ta);
} else {
telemetry.addData("Limelight", "Hedef Yok");
}
4. Python SnapScript'lerle İletişim
Web arayüzünde kendi Python SnapScript pipeline'larınızı yazabilirsiniz. Kodunuzu yazmanıza yardımcı olması için LLM tabanlı SnapScript oluşturucumuzu kullanın.
İşte Robot Kodundan Python'a sayı gönderme ve geri alma yöntemi:
// Python'a sayı gönderme
double[] inputs = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0};
limelight.updatePythonInputs(inputs);
// Python'dan sayı alma
double[] pythonOutputs = result.getPythonOutput();
if (pythonOutputs != null && pythonOutputs.length > 0) {
double firstOutput = pythonOutputs[0];
telemetry.addData("Python çıktısı:", firstOutput);
}