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ı

Port Türü
Port Numarası
Aygıt Türü
Adı

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

13KB


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.

Değişken Adı
Amacı

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) + turn

Peki ya sol joystick'i X ekseninde tamamen sola hareket ettirirsek? Robotumuza göre, denklemimiz şu şekilde görünür:

leftFrontPower = (0 + -1) + 0

Bir 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