İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Arduino robotunuzu PreciseMovement Arduino kitaplığını kullanarak belirli bir mesafe için düz veya belirli bir açıya döndürün.
Robot, dönerken sürtünmeyi en aza indirmek için dönen bilyeli bir tekere veya eşdeğerine ihtiyaç duyar.
www.pololu.com/product/954
Robota belirli bir mesafeye kadar ilerlemesini veya belirli bir açıya dönmesini söyleyebilirsiniz. Program, ölü hesaplaşmayı kullanarak konumunu belirler. Konum tahminleri yalnızca tekerlek hızına dayandığından, kayma önemli hatalara neden olacaktır. Robotun tasarımcısı, kayma riskini en aza indirmek için dikkatli olmalıdır.
Bu, SnappyXO robotu ile çalışmak üzere test edilmiştir.
1. Adım: Eğitim Konumu Değiştirildi
Eğitim aşağıdaki sayfaya taşınmıştır. Bu öğretici artık korunmuyor.
sites.google.com/stonybrook.edu/premo
2. Adım: SnappyXO Diferansiyel Tahrik Robotunu Oluşturun
Kullanacağımız PreciseMovement kütüphanesi sadece diferansiyel tahrikli robotlarla uyumludur. Diğer 2 tekerlekten çekişli robotları kullanmayı seçebilirsiniz.
Adım 3: Elektroniği Bağlayın
Standart SnappyXO Optik Kodlayıcı için:
D0 (enkoder çıkışı) -> Arduino Dijital Pin
VCC -> Arduino 5V
GND -> GND
Motor ve Arduino Gücü:
Motor güç kaynağı, kullandığınız motorlar için yeterli olmalıdır. SnappyXO kiti için motor gücü için 4AA pil ve Arduino gücü için 9V pil kullanılmaktadır. Hepsinin ortak bir GND'ye sahip olduğundan emin olun.
Adım 4: PreciseMovement Arduino Kütüphanesini Kurun
İndirmek:
github.com/jaean123/PreciseMovement-library/releases
Arduino Kütüphanesi nasıl kurulur:
wiki.seeedstudio.com/How_to_install_Arduino_Library/
Adım 5: Kod
Arduino Kodu:
create.arduino.cc/editor/whileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/önizleme
Bu parametreler ayar gerektirir. Kodda önerilen diğer parametreler daha iyi performans için ayarlanabilir.
- ARDUINO PINS altındaki motor pinlerini kontrol edin ve ayarlayın.
-
UZUNLUK ve YARIÇAP'ı ayarlayın.
- UZUNLUK, sol tekerlekten sağ tekerleğe olan mesafedir.
- RADIUS, tekerleğin yarıçapıdır.
-
Bir tekerlek dönüşü için enkoder çıkışlarının pals sayısı olan PULSES_PER_REV'i ayarlayın.
- Bunun, enkoderler doğrudan tekerlek milinden okumak üzere bağlanmadığı sürece, bir motor mili devri için enkoder çıkışlarının sayısından farklı olduğuna dikkat edin.
- PULSES_PER_REV = (motor milinin bir devri başına darbeler) x (dişli oranı)
-
İleri hareketten sonra robotun aşırı atış yaptığını görürseniz STOP_LENGTH ayarlayın.
Robot, tahmini konum hedeften STOP_LENGTH uzakta olduğunda duracaktır. Böylece STOP_LENGTH, robotun durması için gereken yaklaşık mesafedir
-
PID parametreleri
KP_FW: Bu, ileri hareketin orantılı bileşenidir. Robot düz gidene kadar bunu artırın. Bunu ayarlayarak düz gitmesini sağlayamazsanız, donanım büyük olasılıkla hatalıdır. (örn. tekerlek yanlış hizalaması, vb.)
KP_TW: Bu, büküm hareketi PID'sinin orantılı bileşenidir. Basitçe düşük bir değerden başlayın ve büküm hızı veya robotun büküm sırasındaki açısal hızı yeterince hızlı olana kadar bunu artırın, ancak aşmaya neden olmaz. Gözlem yapmak için, döngü fonksiyonuna aşağıdakileri ekleyerek robotun 0'dan 90'a ve geriye doğru değişmesini sağlayabilirsiniz
KP_FW'yi ayarlamak için bunu döngüye yerleştirin:
mover.forward(99999);
KP_TW'yi ayarlamak için 0'dan 90'a geçiş yapmak için bunu döngüye yerleştirin:
mover.twist(90); // 90 CW'yi çevir
gecikme(2000);
mover.twist(-90) // CCW 90'ı çevir
gecikme(2000);
TARGET_TWIST_OMEGA'da açısal hızı fiilen döndürmek için KI_TW'nin de ayarlanması gerektiğine dikkat edin, çünkü orantısal bir kontrolör asla tam hedefe yerleşmeyecektir. Ancak, tam olarak bu açısal hızda bükülmek gerekli değildir. Açısal hızın yeterince yavaş olması gerekir.
Adım 6: Nasıl Çalışır?
Nasıl çalıştığını merak ediyorsanız okumaya devam edin.
İleriye doğru hareket, düz bir çizgi yolunda saf takip algoritması kullanılarak düz tutulur. Pure Pursuit hakkında daha fazla bilgi:
Büküm PID denetleyicisi, büküm açısal hızını TARGET_TWIST_OMEGA'da tutmaya çalışır. Bu açısal hızın tekerleklerin değil tüm robotun açısal hızı olduğuna dikkat edin. Yalnızca bir PID denetleyicisi kullanılır ve çıkış hem sol hem de sağ motorların PWM yazma hızıdır. Açıyı hesaplamak için ölü hesap yapılır. Açı hata eşiğine ulaştığında robot durur.