Motor Gücü vs. Robot Hareketi

Şu anda motorlarımız, programımızın başında tam ileriye doğru güç verilerek ayarlanmış durumda. Referans olarak, aşağıdaki görsel, ileri ve geri arasındaki hareketin tam ölçeğini göstermektedir:

Bu bilgiyi alalım ve motorumuzu gamepad ile hareket ettirirken ilk başta ne yaptığımızı hatırlayalım. Bu bölümde, motorumuzun joystick'in ne kadar ve hangi yönde hareket ettiğine bağlı olarak farklı güç seviyelerinde dönebildiğini görmüştük. Ancak, bu kurulumda karşılaştığımız problemi hatırlıyor musunuz?

Önceki kodumuzu kullanırken motorumuz yalnızca joystick y ekseninde hareket ettiğinde dönüyordu. Sola veya sağa hareket etmek, motoru açmamıştı ancak diyagonal hareketlerde motor biraz sarsılmaya başlıyordu.

İşte burada, koda biraz matematik eklemek devreye giriyor. Hatırlayın, arcade sürüşünde her iki motor da tek bir joystick ile kontrol ediliyordu. Robotumuzun, her iki motor için de ne kadar güç verilmesi gerektiğini ve hangi yönde hareket etmesi gerektiğini hesaplayabilmesi gerekiyor. Neyse ki, her şey kurulduğunda robotumuz, program çalışırken bu hesaplamaları kendisi yapabilecek!

Sonunda, motorsal yanıtları ile farklı hareket biçimleri oluşturacak durumlar yaratabilmeliyiz, aşağıdaki grafiklerde olduğu gibi:

Hızlı Kontrol! Robotumuzun nasıl hareket ettiği, her motorun aldığı güce bağlıdır. Devam etmeden önce, mevcut programımızla robotun motorlara atanan değerleri değiştirerek nasıl tepki verdiğini inceleyebiliriz.

  • rightmotor gücünü 0.3, leftmotor gücünü 1 olarak ayarlarsak ne olur?

  • leftmotor gücünü 0.5, rightmotor gücünü 1 olarak ayarlarsak ne olur?

  • leftmotor gücünü -0.4, rightmotor gücünü 0.4 olarak ayarlarsak ne olur?

Farklı kombinasyonları test ettikten sonra, motorlar arasındaki güç farkının harekete nasıl etki ettiğini hızlıca inceleyelim:

Güç Karşılaştırması Robot Hareketi rightMotor gücü = leftMotor gücü Düz İleri veya Geri

rightMotor gücü > leftMotor gücü Sol Dönüş

rightMotor gücü < leftMotor gücü Sağ Dönüş

Joystick ile Gücü Belirlemek Motorlarımıza sabit bir sayısal değer atamak yerine, oluşturduğumuz değişkenler robotumuza joystick hareketlerini bir güç seviyesine çevirmesinde yardımcı olacaktır.

Arcade sürüşü için hedefimiz, joystick girişlerinin aşağıdaki motor çıkışlarına karşılık gelmesidir:

Joystick Yönü (x, y)
rightmotor
leftmotor
Hareket

(0, 1)

1

1

İleri

(0, -1)

-1

-1

Geri

(-1, 0)

1

-1

Sol Dönüş

(1, 0)

-1

1

Sağ Dönüş

Yukarıdaki tabloda belirtilen çıktıları almak için, gamepad değerleri her motora anlamlı bir şekilde atanmalıdır. Bunu yapmak için, zaten tanımladığımız değişkenlerle kodumuzda iki denklem kuracağız:

rightmotor = y - x leftmotor = y + x

Last updated