Test Modunu Kullanma

Test modu, programcıların robot üzerindeki tüm sistemlerin çalıştığını doğrulamak için kod koyabilecekleri bir yere sahip olmasını sağlamak için tasarlanmıştır. Robot programı şablonlarının her birinde, robota test kodu eklemek için bir yer vardır. TimedRobot şablonunu kullanırsanız veya komut tabanlı programlamayı kullanırsanız, tüm motorların ve sensörlerin çalışmasını LiveWindow aracılığıyla kolayca görebilirsiniz.

Test Modunu Etkinleştirme

Robot üzerindeki test modu, otonom veya teleop gibi Driver Station’dan etkinleştirilebilir. Test modundayken, testInit yöntemi bir kez çalıştırılır ve teleop ve otonom kontrol modlarında olduğu gibi ``robotPeriodic``e ek olarak testPeriodic yöntemi, her tık için bir kez çalıştırılır. Driver Station’da test modunu etkinleştirmek için “Test” düğmesini seçin ve robotu etkinleştirin. Test modu kodu daha sonra çalışacaktır.

Robot kodunuza Test modu kodu ekleme

Test modu eklemek, önceden yazılmış Teleop yöntemlerinizi Test’ten aramak kadar zahmetsiz olabilir. Bu, PID sabitlerini ve ayar noktalarını değiştirmek için PIDBase ve PIDController gibi sınıfların yanı sıra PIDSubsystems ve PIDCommands gibi LiveWindow ayarlama özelliklerini kullanmanıza olanak tanır. Alt sistemlerinizi SmartDashboard’a putData(subsystem) veya PutData(subsystem) yöntemiyle eklediğinizden emin olun.

public class Robot extends TimedRobot {

    @Override
    public void robotInit() {
        SmartDashboard.putData(m_aSubsystem);
    }

    @Override
    public void testInit() {
        teleopInit();
    }

    @Override
    public void testPeriodic() {
        teleopPeriodic();
    }
}

SmartDashboard’da Test Modu

Yukarıdaki örnek kod, Driver Station Test moduna geçirilip etkinleştirildiğinde aşağıdaki çıktıyı üretir. Kaydırıcıları hareket ettirerek motorları çalıştırabilir ve bilek potansiyometresi gibi sensörlerin değerlerini okuyabilirsiniz.

Değerlerin, kolay test için ilgili aktüatörleri ve sensörleri gruplamak için alt sistem adlarına göre gruplandığına dikkat edin. Alt sistem adları, putData() yöntemine bir ad sağlanarak veya SendableRegistry.setName() çağrılarak belirtilir. Bu gruplama, gerekli olmamakla birlikte, tek seferde bir alt sistemi test etmeyi çok daha kolaylaştırır ve tüm değerlerin ekranda yan yana olmasını sağlar.

TimedRobot Şablonu ile Test Modunu Kullanma

TimedRobot şablonu, robot programınızda periyodik olarak testPeriodic() yöntemini (veya C++ ‘da TestPeriodic()’i) çağıracağından, test etmeye oldukça uygundur. TestPeriodic() yöntemi her 20 ms’de bir çağrılır ve komutları test etmek veya LiveWindow güncellemesini almak için iyi bir yerdir. LiveWindow güncellemesi, TimedRobot şablonuna yerleştirilmiştir, bu nedenle LiveWindow’u kullanmak için çok az iş gerekir.

Not

Bu, TimedRobot şablonunu kullanıyor ve Komut-tabanlı programlama yapmıyor olsanız bile çalışır.

Bu örnekte, sensörler LiveWindow ile kaydedilir ve testPeriodic yöntemi sırasında, LiveWindow run() yöntemini çağırarak tüm değerleri güncelleyin. Programınız çok fazla ağ trafiğine neden oluyorsa, çalıştırma yöntemini daha seyrek olarak çağırabilirsiniz, örneğin 100 ms’lik bir güncelleme hızı için her 5 güncellemede bir çağırabilirsiniz.

Test Modunda PID Ayarı

PID döngülerini ayarlamak, doğru değerleri elde etmek için programın sık sık yeniden derlenmesiyle genellikle zorlu bir olasılıktır. Komut-tabanlı programlama modelini kullanırken, PID komutlarınızda PIDSubsystem veya PIDCommand’in alt sınıflara ayrılması, sonuçların anında geri bildirimi ile PID sabitlerinin ayarlanmasına izin verir.