Robot yazılımı: FRC araç kutusu

Robotu hareket ettiren şey, sonuçta birinin yazdığı birkaç yüz satır koddur. Ama o kodu yazmak, robota göndermek, sahada çalışırken ne yaptığını görmek ve bir şey ters gittiğinde sebebini bulmak için farklı araçlar gerekir. Bu yazı, FRC'de kullandığımız yazılım araç kutusunu tanıtıyor.
Geliştirme ortamı
Kodu Visual Studio Code içinde, WPILib eklentisiyle yazıyoruz. WPILib kurulumu tek bir paket hâlinde gelir: editör, derleyici, kütüphaneler ve yardımcı araçlar birlikte kurulur.
Windows, Linux ve macOS'ta (hem Intel hem Apple Silicon) çalışır. Yıllarca bazı araçlar yalnızca Windows'ta çalıştığı için takımlar Windows'a mahkûmdu; bu kısıt artık büyük ölçüde kalktı.
Hangi dili seçmeli?

Üç dil de resmî olarak destekleniyor. 2027 sürümüyle Java tarafı Java 25'e, C++ tarafı C++23'e geçiyor. Python desteği RobotPy projesi üzerinden sağlanıyor.
Tavsiyemiz: takım olarak bir dil seçip ona sadık kalın. Sezon ortasında dil değiştirmek, kazandığı hızdan çok daha fazlasını götürür. Yeni üyeye öğretmesi en kolay olan Python, hazır örnek bulması en kolay olan ise Java'dır.
Koddan robota giden yol

Yazdığınız kod önce derlenir, sonra robota yüklenir ve kontrolcünün üzerinde çalışmaya başlar. Ama kod yüklenmiş olması robotun hareket edeceği anlamına gelmez — robotu etkinleştiren ayrı bir program vardır.
Sürücü İstasyonu
Yarışma sırasında robotun durumunu kontrol etmeye izin verilen tek yazılımdır. Kumandalardan gelen veriyi robota iletir, robotu etkinleştirir ve devre dışı bırakır. Ayrıca sorun giderirken bakacağınız ilk yer burasıdır: pil voltajı, iletişim durumu ve robot kodunun hata mesajları burada görünür.
2027 sürümünde sıfırdan yeniden yazıldı ve artık Windows'un yanı sıra macOS ve Linux'ta da çalışıyor.
Gösterge panelleri — robot ne yapıyor?
Robot çalışırken içeride ne olup bittiğini görmek için gösterge panelleri kullanılır. Üçü de aynı veriyi (NetworkTables) okur; fark, ne işe odaklandıklarıdır:
Elastic. Sade ve modern bir yarışma panosu. Sürücünün maç sırasında bakacağı birkaç kritik bilgiyi büyük ve okunaklı göstermek için tasarlandı.
AdvantageScope. Veri inceleme aracı. NetworkTables'ı, WPILib veri kayıtlarını ve Sürücü İstasyonu günlüklerini açar. Maç bittikten sonra "o an ne oldu" sorusunun cevabı burada aranır.
Glass. Programcının hata ayıklama aracı. Saha görünümü, robotun konumunu görselleştirme ve sinyal grafikleri çizme konusunda güçlü.
Robot olmadan test: simülasyon
Robot henüz yapılmadıysa ya da atölyede sıra beklemek istemiyorsanız, gerçek robot kodunu bilgisayarda çalıştırabilirsiniz. Simülasyon doğrudan Visual Studio Code'dan başlar ve robotun hareketini iki boyutlu bir saha üzerinde gösterir. Java, C++ ve Python için çalışır.
Sezon başında kodun yarısını simülasyonda yazmak, atölyede robot hazır olduğunda kazandığınız zamanla geri döner.
Yardımcı araçlar
System Identification (SysId). Robotunuzun fiziksel özelliklerini ölçüp, simülasyon ve PID kontrolünde kullanılacak sabitleri otomatik hesaplar. Deneme yanılmayla katsayı aramaktan kurtarır.
OutlineViewer. NetworkTables'ın bütün içeriğini görmenizi, değiştirmenizi ve yeni değer eklemenizi sağlar. Hata ayıklarken "robot gerçekten bu değeri yayınlıyor mu" sorusunun en hızlı cevabı.
WPIcal. Sahadaki AprilTag etiketlerinin konumunu kalibre eder. Görüntü işlemeye dayalı otonom yazan takımlar için önemli.
Eski eğitimlere dikkat

İnternette bulacağınız Türkçe ve İngilizce eğitimlerin çoğu birkaç yıl öncesine ait ve artık var olmayan araçları anlatıyor. Bir eğitimde Shuffleboard, SmartDashboard, PathWeaver veya RobotBuilder görüyorsanız, o kaynak eskimiş demektir.
Aynı şekilde roboRIO Imaging Tool ve FRC Radyo Yapılandırma Yardımcı Programı da artık kullanılmıyor — çünkü anlattıkları donanım değişti. Kontrolcü ve radyo değişimini Systemcore yazımızda anlattık.
Takım olarak nereden başlamalı?
Bir dil seçin ve sezon boyunca değiştirmeyin.
WPILib'i resmî sürümünden kurun; parça parça kurulum baş ağrıtır.
İlk haftayı simülasyonda geçirin, robot gelene kadar temel yapı hazır olsun.
Kodu ilk günden sürüm kontrolüne (Git) alın. Kaybolan kod, bozuk koddan beterdir.
Sürücü İstasyonu günlüklerini her antrenmandan sonra saklayın; sorunu maçtan sonra anlamanın tek yolu budur.
Panolardan birini seçip sürücünüzün alışmasını sağlayın. Maç sırasında tanımadığı ekrana bakmak kimseye yardım etmez.
Kaynaklar: WPILib — Kontrol sistemi yazılımı · Systemcore yazımız