Kolu Pozisyonunu Tahmin Etme
Bu öğretici için OpMode'umuzun adı HelloRobot_ArmEncoder olacak!
1. Kolu Hareket Ettirme
Başlangıç olarak, robot kolumuzu hareket ettirecek basit bir program yazalım. Bu program, Part 2: Robot Control'da oluşturduğumuz koda çok benzeyecektir.
if(gamepad1.dpad_up){
arm.setPower(0.2);
}
else if (gamepad1.dpad_down){
arm.setPower(-0.2);
}
else {
arm.setPower(0);
} 2. Telemetri Ekleme
Telemetri ekleyerek kolun pozisyonunu izlemeye başlayacağız. Bu, kolun mevcut pozisyonunu Driver Hub'da görmemizi sağlar. Kolun encoder değerlerini izleyebilmek için telemetry.addData komutunu kullanacağız.
while(opModeIsActive()){
if(gamepad1.dpad_up){
arm.setPower(0.2);
}
else if (gamepad1.dpad_down){
arm.setPower(-0.2);
}
else {
arm.setPower(0);
}
telemetry.addData("Arm Test", arm.getCurrentPosition());
telemetry.update();
}3. Telemetriyi Test Etme
OpMode'unuzu derleyin ve çalıştırın. Ardından gamepad üzerindeki Dpad Up ve Dpad Down tuşlarını kullanarak kolu hareket ettirin. Kolu 90 dereceye yerleştirdikten sonra, Driver Hub'daki telemetriyi okuyarak kolun encoder değerini kontrol edin.

Unutmayın, encoder pozisyonu her zaman Control Hub açıldığında sıfırlanır! Bu nedenle, kolunuz başlangıç pozisyonunda değilse, bu pozisyon sıfır olarak kabul edilir.
4. RUN_TO_POSITION Modunu Programa Ekleme
Kolun hareketini kontrol etmek için RUN_TO_POSITION modunu ekleyeceğiz. Bu mod, kolun hedef pozisyonuna gitmesini sağlar. Dpad Up tuşuna basıldığında kolu 90 dereceye, Dpad Down tuşuna basıldığında ise başlangıç pozisyonuna döndüreceğiz.
Aşağıdaki gibi RUN_TO_POSITION kodunu ekleyin:
if(gamepad1.dpad_up){
arm.setTargetPosition(83); // 90 derece için gerekli olan encoder tık sayısı
arm.setMode(DcMotor.RunMode.RUN_TO_POSITION);
arm.setPower(0.5);
}
else if (gamepad1.dpad_down){
arm.setTargetPosition(0); // Başlangıç pozisyonu
arm.setMode(DcMotor.RunMode.RUN_TO_POSITION);
arm.setPower(0.5);
}Bu kodda, Dpad Up tuşuna basıldığında kol 83 tıklık bir hedefe gitmek için hareket eder (bu değer, kolun 90 dereceye ulaşması için gereken tıklardır). Dpad Down tuşuna basıldığında ise kol başlangıç pozisyonuna döner.
5. Test Etme ve Hız Kontrolü
Eğer bu kodu çalıştırırsanız, kolun 90 derece pozisyonunda dalgalanabileceğini fark edebilirsiniz. Telemetriyi izlerken encoder sayımlarının dalgalandığını görebilirsiniz.
RUN_TO_POSITION, kapalı döngü kontrolü (closed loop control) ile çalışır. Bu, kol hedef pozisyona mükemmel bir şekilde ulaşmadığında motorun durmadan çalışmaya devam edeceği anlamına gelir. Kolun pozisyona ulaşmaması durumunda, motorlar dalgalanabilir.
Bu davranışı önlemek için:
Motoru tartışmalı toleranslarla ayarlamak gerekebilir.
Motorun hassasiyetini iyileştirecek ek optimizasyonlar yapılabilir.
Bu noktada, programı sadece çalıştırmak ve kolun hareketini izlemek öncelikli amacımızdır. Ancak, motoru ve pozisyonları daha hassas hale getirmek için çeşitli ayarlamalar yapılabilir.
6. Kolun Pozisyonunu Ayarlama
Kolun pozisyonunu doğru bir şekilde ayarlamak için hedef pozisyonları ve motor hızını dikkatlice kontrol etmek gerekir. Eğer kol her zaman doğru pozisyonda hareket etmiyorsa, bunun birkaç nedeni olabilir:
Encoder tık sayısı hatalı hesaplanmış olabilir.
Motorun hızını daha iyi ayarlamak gerekebilir.
Closed loop control ayarlarında daha hassas toleranslar kullanılabilir.
Bu noktada kolun doğru pozisyonda hareket etmesini sağlamak için gerekli testleri ve ayarlamaları yapmaya devam edebilirsiniz.
Özet:
RUN_TO_POSITION modunu kullanarak kolu hedef pozisyonlara taşımak için gerekli kodu yazdık.
Telemetri ekleyerek kolun pozisyonunu izleyebildik.
Kodda bazı iyileştirmeler ve ayarlamalar yaparak kolun doğru şekilde hareket etmesini sağladık.
Bu temeli kullanarak, kolun daha hassas bir şekilde hareket etmesini sağlamak için daha fazla test ve optimizasyon yapabilirsiniz.
Last updated