Kodla İleri Git Dedik Ama Robot İnatla Sola Çekiyor!
Robotik atölyelerinin en klasik manzaralarından birisidir: Öğrenci harika bir kod yazar, ileriGit() fonksiyonunu çağırır ve robotun ok gibi dümdüz gitmesini bekler. Ama robot çalıştığı an, sanki bir ayağı kısa kalmış gibi inatla sağa veya sola doğru yalpalayarak gider.
Öğrenci kodları kontrol eder, hata yok. Tekerlekleri kontrol eder, sıkışma yok. Peki sorun ne?
Sorun, dijital dünyanın mükemmelliği ile fiziksel dünyanın kusurları arasındaki savaştır. Biz kod yazarken (örneğin Arduino'da PWM ile 255 hızında çalış dediğimizde), iki motora da "tam güç" git emri veririz. Ancak fizik kuralları devreye girer: Fabrikadan arka arkaya çıkan iki DC motor bile asla birbirinin aynısı değildir.
- Birinin içindeki bakır sargı milim farkla daha sıkıdır.
- Diğerinin dişli kutusundaki yağ biraz daha fazladır.
- Bir tekerleğin sürtünmesi diğerinden azıcık farklıdır.
Sonuç? Siz ikisine de "100 birim güçle koş" dersiniz ama biri 100'le koşarken diğeri 95'le koşar. Robot da doğal olarak yavaş olan tarafa doğru döner.
İyi bir robotik uzmanı, donanımın kusurlarını kabul eder ve onu yazılımla düzeltir. Buna “Kalibrasyon” diyoruz. İleri seviye robot yapıyorsak buna “PID düzeltme” diyoruz ama burada PID'den bahsetmeyeceğim. Temelde karşılaşılan düz gitmeme sorunundan bahsedeceğim. PID ile düzeltmeyi ilerleyen zamanda anlatırım inşaALLAH.
Motorlara doğrudan en yüksek hız değerini (örn: 255) vermeyin ki motorları kontrol edebilmek için kontrol payınız olsun. (örn: 200).
Kodlarınızda motor hızlarını sabit sayılarla değil, değişkenlerle (int solHiz = 200;, int sagHiz = 200;) tanımlayın.
Robotunuzu yere koyun. Sola mı çekiyor? Demek ki sağ motor daha hızlı dönüyor. Kodunuza dönün ve sağ motorun hız değişkenini biraz düşürün (sagHiz = 190; yapın). Robot dümdüz gidene kadar bu ince ayarı yapın.
Robot yapmak sadece parçaları birleştirmek değildir; o parçaların birbiriyle uyum içinde çalışmasını sağlamaktır. Motorlarınızın kusurunu yazılımınızla örtün!