Drivetrain'ı RUN_TO_POSITION Kullanarak Döndürmek
Çoğu zaman, örneğin Part 2: Robot Control programında olduğu gibi, setPower(); fonksiyonu ile drivetrain motorlarına belirli bir güç (veya joystick girişlerine dayalı güç) atanır. Her iki motora giden birleşik güç, robotun hareket edeceği yönü veya dönüşünü belirler.
Ancak, RUN_TO_POSITION modunda, motorların yönünü belirlemek için encoder sayımları kullanılır.
Motorun Yönünü Belirlemek:
Eğer hedef pozisyon değeri, encoder'ın mevcut pozisyonundan büyükse, motor ileri hareket eder.
Eğer hedef pozisyon değeri, encoder'ın mevcut pozisyonundan küçükse, motor geri hareket eder.
Dönüşler söz konusu olduğunda, hız ve yön önemli bir faktör olduğundan, robotun dönmesini sağlamak için hedef pozisyon ve hız (velocity) parametrelerini ayarlamanız gerekir. Aşağıdaki örnek kod, motorları döndürmek için bu ayarların nasıl yapılacağına dair bir fikir verir.
Örnek Kod:
int leftTarget = (int)(610 * COUNTS_PER_MM); // Sol motorun hedef pozisyonu
int rightTarget = (int)(-610 * COUNTS_PER_MM); // Sağ motorun hedef pozisyonu (negatif, sağa dönme için)
double TPS = (100 / 60) * COUNTS_PER_WHEEL_REV; // Tekerlek başına tık sayısına göre hız hesaplama
waitForStart(); // Programın başlatılmasını bekle
// Hedef pozisyonları belirle
leftmotor.setTargetPosition(leftTarget);
rightmotor.setTargetPosition(rightTarget);
// Motorları RUN_TO_POSITION moduna ayarla
leftmotor.setMode(DcMotor.RunMode.RUN_TO_POSITION);
rightmotor.setMode(DcMotor.RunMode.RUN_TO_POSITION);
// Motorların hızını (velocity) belirle
leftmotor.setVelocity(TPS);
rightmotor.setVelocity(TPS);Açıklamalar:
Target Position (Hedef Pozisyon):
leftTarget pozitif bir değere ayarlanırken, rightTarget negatif bir değere ayarlanıyor. Bu, motorların ters yönde hareket etmesini ve robotun dönmesini sağlar. Sağ motorun hedef pozisyonu negatif olduğu için robot sağa doğru döner.
Velocity (Hız):
setVelocity(TPS) komutları her iki motora da aynı hızı atar. Bu durumda, robot merkezi ekseni etrafında dönerek hareket eder.
Eğer daha geniş bir dönüş yapmak istiyorsanız, sağ motorun hızını (velocity) sol motordan daha düşük yapabilirsiniz. Örneğin:
rightmotor.setVelocity(TPS * 0.5); // Sağ motorun hızını %50'ye düşürerek daha geniş bir dönüş elde edebilirsiniz.
Robotun Dönüşünü Kontrol Etme:
Dönüşün genişliği, sağ ve sol motorlar arasındaki hız farkına göre değişir. Sağ motor daha düşük bir hızda çalışırsa, robot daha geniş bir dönüş yapar. Tersine, her iki motor eşit hızda çalışırsa, robot daha keskin bir dönüş yapar. Bu parametreleri ihtiyaca göre ayarlayarak robotun dönüş şeklini değiştirebilirsiniz.
Hedef Pozisyonları: Dönüşler için, sağ motorun hedef pozisyonunu negatif bir değer yaparak (sağa dönme için) robotun dönmesini sağlarsınız.
Hız Ayarı: Daha geniş veya daha keskin dönüşler için motorların hızını farklı oranlarda ayarlayabilirsiniz.
Hızlı Testler: İlk başta dönüş hızlarını çok aşırı derecede değiştirmeyin, küçük değişikliklerle testler yaparak robotun dönüşünü inceleyin.
Last updated