Mecanum Programlama - Geliştirilmiş
Mecanum Drivetrain'in nasıl programlanacağı, sürücünün kumanda yapılandırması tercihine bağlı olarak büyük ölçüde değişir.
Sunulan örneğimizde, sol joystick ileri/geri ve strafing (yan kayma) kontrolünü sağlarken, sağ joystick dönüşü kontrol eder. Bu kod, FIRST tarafından Blocks için sağlanan örneğe dayanmaktadır (BasicOmniOpMode) ve Robot Controller Console'da mevcuttur.
Mecanum Yapılandırması
Motor
0
REV Robotics Ultraplanetary HD Hex Motor
frontLeft
Motor
1
REV Robotics Ultraplanetary HD Hex Motor
backLeft
Motor
2
REV Robotics Ultraplanetary HD Hex Motor
frontRight
Motor
3
REV Robotics Ultraplanetary HD Hex Motor
backRight
Mecanum Örnek Kodu
Mecanum Kodu Açıklaması
Mecanum'a girmeden önce, motorlarınızın ve tekerleklerinizin dönme yönlerini iki kez kontrol ettiğinizden emin olun. Eğer titreme veya ters kontrol yaşıyorsanız, motorların yönlerini tersine çevirmeniz gerekebilir!
Başlangıçta, motor yönlerini ayarlamak için
ekleyerek her şeyin doğru şekilde ayarlandığından emin olmalısınız.
Bu örnekte, kodu düzenlemek için fonksiyonlar kullanılmıştır!

Motor Ayarlarını Yapılandırmak
Programımızın başında, MOTOR_SETTINGS fonksiyonu çağrılır. Burada, drivetrain motorları RUN_WITHOUT_ENCODER moduna ayarlanır ve doğru yönlere göre hareket etmeleri sağlanır.

Değişkenler Oluşturma
Sonraki adımda, mekanum için yeni değişkenler oluşturacağız.

forwardBack
İleri ve geri hareket
strafe
Yan kayma (sol/sağ)
turn
Dönme (sağa/sola)
leftFrontPower
Ön sol motor gücü
rightFrontPower
Ön sağ motor gücü
leftBackPower
Arka sol motor gücü
rightBackPower
Arka sağ motor gücü
Gamepad ile Motor Hareketini Hesaplama
MECANUM_DRIVE fonksiyonunun başında, her hareket yönü için değişkenler, karşılık gelen joystick ekseninin hareketiyle belirlenir.

Robotumuz, sol joystick hareketini ilk olarak hesaplar.

Motor Gücü Hesaplama
Ardından, sağ joystick'in değeri ile hesaplama yapılır.

Tüm hesaplamalarımız bir araya geldiğinde, sol joystick bir açıyla hareket ettiğinde, örneğin çapraz kayma gibi, hareket sağlanabilir!
Hızlı Kontrol!
- Motor Gücünü Anlama Motor gücümüzün nasıl belirlendiğine daha yakından bakalım. Örneğin, leftFrontPower değişkenimiz şu şekilde eşit olur:
leftFrontPower = (forwardBack + strafe) + turnPeki ya sol joystick'i X ekseninde tamamen sola hareket ettirirsek? Robotumuza göre, denklemimiz şu şekilde görünür:
leftFrontPower = (0 + -1) + 0Bir an düşünün: Diğer motorlarımızın güçleri ne olur?
Daha karmaşık bir örnek verelim: Sol joystick'i bir açıyla, tamamen sola ve yukarıya doğru hareket ettirirsek? Ya da sol joystick'i ileri doğru hareket ettirip sağ joystick'i tamamen sağa itersek?
Motor Gücünü Ayarlamak
Son adımda, robotumuz her motor çiftinin gücünü, tüm hesaplamalarımıza dayanarak ayarlayacaktır!

Giriş Değerlerini Kısıtlama Bu kod bölümü, bu öğreticinin sağladığı mekanum kodunda yer almıyor. Ancak aşağıdaki adımları izleyerek bunu ekleyebilirsiniz!
Sürüş sırasında, motor gücünün (-1 ile 1 arasında) aralığının dışına çıkma olasılığı vardır. Bu nedenle, hesapladığımız değerlerin belirtilen aralık içinde kalmasını sağlamak için giriş değerlerini kısıtlayabiliriz.

Maksimum Değeri Hesaplamak
İlk olarak, "max" adında yeni bir değişken oluşturmamız gerekiyor.

Bir Liste Oluşturmak
Blocks'ta, "liste" veya "dizi" olarak bilinen bir yapıyı kullanarak bir dizi sayı saklarız. Bu durumda, motor güçlerimizin tümünü saklayacağız.

Listeyi Oluşturmak Bunun için, "Math" menüsünden bir
blok eklememiz gerekiyor. Bu bloğu "max" olarak değiştireceğiz, bu da motor güçleri listemizden en büyük değeri döndürecektir.

Motor gücümüz bazen negatif olabilir (örneğin, geri dönme sırasında). Bu nedenle, motor gücümüzün mutlak değerini kullanmamız gerektiğinden emin olmalıyız.

If/Else Yapısı Kurmak
Sonraki adımda, "max" değerinin 1'den büyük olup olmadığını kontrol etmek için bir If/Else yapısı kurmamız gerekiyor.
Bu yapıyı kullanarak, her motorun gücünü orantılı bir şekilde yeniden ayarlayacağız ve böylece motor gücü belirtilen aralık içinde kalacak.

Tam Mecanum Drivetrain Programı
Sonuçta, kısıtlamalar uygulandıktan sonra tam mekanum drivetrain fonksiyonumuz şu şekilde görünecektir:
Böylece, motor güçlerini güvenli bir aralıkta tutarak her türlü hareketi sorunsuz şekilde kontrol edebiliriz!

Last updated