0.9 Yazılım
Yazım aşamasında
Bu sayfa şu anda yazılıyor ve 30 Eylül 2026'da yeniden güncellenecek. Okurken eksik ya da yanlış bulduğunuz yeri sayfanın altındaki yorum bölümüne yazabilirsiniz. Bir cümleyi seçip yorum bırakırsanız hangi satıra baktığınız da bize ulaşıyor. Gelen geri bildirimler bu turda metnin neresinin değişeceğini belirliyor.
Bu derste ne öğreniyoruz
Robotun davranışını programla belirlemeyi, FTC'deki programlama araçlarının farklarını ve sensör verilerinden yararlanan yazılımların işini.
Bilgisayardan okurken sağdaki bölüm listesinden istediğiniz başlığa tıklayıp doğrudan o bölüme geçebilirsiniz.
Robotun davranışını programlamak
Gamepad'in çubuğunu ileri ittiğinizde robotun tekerleri döner. Bu iki olay arasındaki bağı robotun üzerinde çalışan program kurar. Çubuğun ne kadar itildiği bir sayıya dönüşür, program bu sayıyı okur ve motora ne kadar güçle döneceğini söyler.
Aynı robot, aynı motorlar ve aynı gamepad ile bambaşka davranabilir. Program değiştiğinde çubuğu ileri itmek tekerleri değil kolu hareket ettirebilir, ya da tek bir düğmeye basmak robotun birkaç işi arka arkaya yapmasını sağlayabilir. Robotun ne yaptığına donanım kadar yazılım da karar veriyor.
Geçen derste tanıdığımız limit switch'i düşünün. Switch, hareketli parçanın sınıra ulaştığını bildirir. Bu bildirimin hareketi durdurması kendiliğinden olmaz. Programın switch'ten gelen bilgiyi okuması ve o yöndeki komutu kesmesi gerekir. Sensör ölçer, program karar verir. Bu ayrım dersin geri kalanında karşınıza tekrar çıkacak.
Maçın sürücü kontrollü bölümüyle otonom bölümü arasındaki fark da programda görünür. Sürücü kontrollü program gamepad'den gelen girdileri okur ve onlara göre hareket eder. Otonom program sürücü yönlendirmesi olmadan, önceden belirlenmiş işleri yürütür. Sensör okumak bunlardan yalnız birine ait bir şey değil, iki durumda da robotun ölçüme ihtiyacı olabilir.
Yazdığınız program robotun üzerindeki Control Hub'da çalışır. Programı hazırlamak içinse ayrı bir yere, kod yazmakta kullanılan bir ortama ihtiyacınız var.
Programlama ortamları
FTC yazılımı aynı davranışı üç farklı ortamda yazmanıza izin veriyor. Hangisini seçerseniz seçin robotta çalışan program aynı işi yapabilir. Aralarındaki fark komutları ifade etme biçiminiz ve ortamın size verdiği çalışma alanı.
Robota bağlanmak
Blocks ve OnBot Java editörleri robotun üzerinde duruyor. Bu ikisiyle çalışmak için önce bilgisayarınızı robota bağlamanız gerekiyor. Control Hub kendi kablosuz ağını yayınlıyor, bilgisayarınızın ağ listesinden bu ağı seçip bağlanıyorsunuz.
Bağlandıktan sonra tarayıcınızı açıp adres satırına 192.168.43.1:8080 yazıyorsunuz. Karşınıza robotun programlama ve yönetim arayüzü çıkıyor, iki editöre de buradan giriyorsunuz. Bu adres internetteki bir siteye değil, robotun üzerinde çalışan sunucuya gidiyor, yani hesap açtığınız bir site kullanmıyorsunuz.
Ağın adı ve parolası robotun ilk kurulumunda belirleniyor, bunlar elinizde olmadan editöre ulaşamazsınız.
Blocks

Blocks'ta komutlar hazır parçalar halinde duruyor. Bunları fareyle sürükleyip birbirine geçirerek programı kuruyorsunuz. Blok ya yerine oturur ya oturmaz, dolayısıyla yazım hatasıyla uğraşmıyorsunuz.
Bloklarla karmaşık programlar da kurulabiliyor. Sürüşü, sensör okumayı ve otonomda arka arkaya yapılacak işleri Blocks içinde yazabilirsiniz. Blok kullanmak programın basit kalması anlamına gelmiyor.
Örnek vermek gerekirse, gamepad çubuğundan okunan değeri veren blokla motora güç veren bloğu birleştirdiğinizde çubuğu ittikçe motor hızlanır. Rehberdeki ilk uygulamalar da Blocks ile ilerliyor.
OnBot Java
OnBot Java'da blok yerine metin yazıyorsunuz. Kullanılan programlama dilinin adı Java. Editöre yine tarayıcıdan ve yine robotun üzerinden erişiyorsunuz, değişen şey bilgisayarınız değil komutları yazma biçiminiz. Blocks ile kurduğunuz bir davranışın aynısını Java ile de kurabilirsiniz.
Blocks ile başlayan herkesin buraya geçmesi gerekmiyor. Java'ya geçmek bir zorunluluk değil, takımınıza ve yapmak istediğiniz işe göre karar verebilirsiniz.
Android Studio
Android Studio bilgisayara kurulan bir geliştirme ortamı. Öteki ikisinden farkı, robot yazılımının bütün projesini bilgisayarınızda açmanız. Dosyaları düzenler, proje büyüdükçe kodu bölümlere ayırır ve ortamın sunduğu geliştirme araçlarından yararlanırsınız. Hazırladığınız programı buradan robota yüklüyorsunuz.
İleri seviye çalışma çoğunlukla bu ortamda yürüyor. Projeyi bölümlere ayırmak, dışarıdan hazır kod eklemek ve geliştirme araçlarıyla kodun içini incelemek burada en geniş halini alıyor. Yine de bu ortama geçmek için önce diğer ikisini bitirmiş olmanız gerekmiyor. Projeyi açmak, ilk programı robota yüklemek ve sensörle bir davranış eklemek ise uygulama aşamasının işleri.
Konfigürasyon
Programınız bir motoru döndürecek. Robotun üzerinde ise birden fazla motor var. Program hangisini kastettiğinizi kendiliğinden bilmiyor.
Bu eşlemeyi konfigürasyon yapıyor. Konfigürasyon, hub'ın hangi portuna hangi tür cihazın takıldığını ve o cihazın programda hangi adla anılacağını tutan bir liste. Sol öndeki tekeri süren motoru bir porta taktıysanız ve konfigürasyonda o porta bir ad verdiyseniz, programda o adı yazdığınızda komut o motora gider. Adı yanlış eşlerseniz program hatasız çalışır ama yanlış motor döner.
Bu eşlemeyi robotun üzerinde 1.5 Motor konfigürasyonu dersinde gerçekten yapacağız.
OpMode ve programı çalıştırmak

Bir takımın robotunda tek bir program bulunmuyor. Sürüş için bir program, otonom için bir başkası, tek bir motoru denemek için üçüncüsü olabilir. Robotu çalıştırmadan önce bunlardan hangisini istediğinizi seçmeniz gerekiyor.
Seçimi sürücü cihazının ekranındaki listeden yapıyorsunuz. Listede görünen her bir robot programına OpMode deniyor. Programı başlatmak da aynı ekrandan oluyor.
Başlattığınız program robotun üzerindeki Control Hub'da çalışır. Bilgisayar kodu hazırlamak için gerekli, robotu sürerken bağlı durması gerekmiyor. İlk programı çalıştırmayı 1.6 İlk motor programı dersinde göreceğiz.
Karışması muhtemel iki iş var. Robotun ve sürücü cihazının üzerindeki uygulamaları güncellemek ile kendi programınızı değiştirmek ayrı şeyler. Uygulama güncellemesi robotun yazılım altyapısını yeniler, sizin yazdığınız programa dokunmaz.
Yazdığınız program robota kaydediliyor. Robotun üzerindeki kopya elinizdeki tek kopyaysa, cihaz bozulduğunda ya da program yanlışlıkla silindiğinde geri dönüşü yok. Kodun ayrı bir yerde yedeğini tutmak bu yüzden işinize yarıyor.
Yazılıma başlamak için robotun tamamen bitmesini beklemeniz gerekmiyor. Süren bir şasi ve tek bir motor ilk programlar için yeterli.
Telemetri

Program çalışırken içeride ne olup bittiğini robotun hareketine bakarak göremezsiniz. Gamepad çubuğundan gelen değer, limit switch'in basılı olup olmadığı ya da encoder'ın saydığı miktar robotun dışına yansımaz.
Programdan sürücü cihazının ekranına bilgi göndererek bunları görebilirsiniz. Programın çalışırken dışarı verdiği bu bilgiye telemetri deniyor.
Telemetriyi okurken bir ayrımı gözden kaçırmayın. Ekranda motora verdiğiniz gücü görmek motorun döndüğü anlamına gelmez. Gördüğünüz şey programın gönderdiği komut. Motorun gerçekten döndüğünü anlamak için encoder ölçümü gibi robottan geri gelen bir değere bakmanız gerekir. Telemetri sorunun nerede olduğunu daraltır, nedenini kendiliğinden söylemez.
Programın kullanabileceği bilgi sensör ölçümleriyle de sınırlı değil. Kameradan gelen görüntü de işlenerek bilgiye dönüşebiliyor.
Kamera ve görüntü işleme
Webcam, VisionPortal ve AprilTag
Kamera robota görüntü verir. Görüntünün kendisi program için henüz bir bilgi değil. Bir oyun parçasının görüntünün neresinde durduğunu ya da karşıda hangi işaretin bulunduğunu anlamak için görüntünün işlenmesi gerekiyor.
AprilTag, yazılımın tanıyabilmesi için tasarlanmış siyah beyaz bir işaret. Kamera bu işaretlerden birini gördüğünde program hangi işaret olduğunu ayırt edebilir, işaretin kameraya göre ne kadar uzakta ve hangi açıda durduğunu tahmin edebilir. Buradan robotun sahadaki yerini çıkarmak ayrı bir iş. İşareti görmek tek başına robotun nerede olduğunu söylemiyor.
VisionPortal, FTC yazılımının kamera görüntüsüyle bu tür işleri yapmak için sunduğu araç. Uyumlu bir webcam ile çalışıyor. Aracın kendisi FTC yazılımının içinde geliyor, kamerayı ise ayrıca edinmeniz gerekiyor.
HuskyLens ve Limelight
Görüntü işlemenin tamamını robot programına bırakmak zorunda değilsiniz. Görüntüyü kendi üzerinde işleyip robota yalnız sonucu gönderen cihazlar var. HuskyLens bunlardan biri, renk ve nesne tanıma gibi görevlerde kullanılıyor. Limelight 3A bir diğeri, hedef takibi ve AprilTag bilgisi için kullanılıyor. Gelen sonucun ne işe yarayacağına yine robot programı karar veriyor.
Road Runner ve Pedro Pathing
Geçen derste Pinpoint'in robotun konumu hakkında tahmin ürettiğini görmüştük. Konumu bilmek ile belirlenen bir yolu izlemek aynı şey değil. Robotun bulunduğu noktadan hedefe giden yolu planlamak, o yolu takip ederken motorlara ne kadar güç verileceğini hesaplamak ve yoldan sapmayı düzeltmek yazılımın işi.
Bu hesapları her takımın sıfırdan yazması gerekmiyor. Başkalarının yazıp paylaştığı, kendi programınızın içinde kullanabileceğiniz hazır kod topluluklarına kütüphane deniyor. Road Runner ve Pedro Pathing otonom yol planlama ve takibi için kullanılan iki kütüphane. İkisi de yazılım, robota takacağınız bir parça değil. Bu tür kütüphaneler çoğunlukla Android Studio ile açılan projelerde kullanılıyor.
Kütüphane kullanmak otonomu hazır getirmiyor. Robotun hangi yolu izleyeceğine ve hangi görevleri yapacağına takım karar veriyor, yazılımı kendi robotuna uyarlıyor ve deniyor. Kurulum ve ayar işleri uygulama aşamasına kalıyor.
Ekler
- FTC kontrol sistemi ve OpMode kontrol sisteminin parçalarını ve programın nerede çalıştığını İngilizce anlatır.
- Programlama aracı seçimi Blocks, OnBot Java ve Android Studio karşılaştırmasının resmî sayfası.
- Blocks ile program yazmak konfigürasyon ve telemetri dahil Blocks editörünün resmî anlatımı.
- Programı çalıştırmak OpMode seçme ve başlatma adımları.
- VisionPortal ve AprilTag kamera görüntüsünün FTC yazılımında işlenmesi.
- HuskyLens cihazın FTC ile kullanımını anlatan resmî sayfa.
- Limelight üreticinin FTC programlama belgeleri.
- Road Runner kütüphanenin kaynak deposu.
- Pedro Pathing kütüphanenin belgeleri.
- Robota bağlanmak, ağ adı ve parola 1.4 Robotla bağlantı dersinde.
- Robotun ve sürücü cihazının uygulamalarını güncellemek 1.3 İlk enerji ve cihaz güncellemeleri dersinde.
- Motorların yazılımda tanımlanması 1.5 Motor konfigürasyonu dersinde.
- İlk motor programı 1.6 İlk motor programı dersinde.
- Gamepad ile motor kontrolü 1.7 Gamepad ile motor kontrolü dersinde.
- Kodun yedeği 1.8 Kod yedeği ve yeniden çalıştırma dersinde.
- Yazılıma ne zaman başlanacağı ve yapımın sırası 0.11 Kickoff’tan yarışmaya dersinde.
- Kaynaklar ve basılacaklar