Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Buat robot Arduino Anda lurus untuk jarak tertentu atau putar ke sudut tertentu menggunakan perpustakaan PreciseMovement Arduino.
Robot membutuhkan rolling ball caster atau setara untuk meminimalkan gesekan saat memutar.
www.pololu.com/product/954
Anda dapat memberi tahu robot untuk maju ke jarak tertentu atau memutar ke sudut tertentu. Program menentukan posisinya menggunakan perhitungan mati. Karena perkiraan posisi hanya mengandalkan kecepatan roda, selip akan menyebabkan kesalahan yang cukup besar. Perancang robot harus berhati-hati untuk meminimalkan risiko selip.
Ini telah diuji untuk bekerja dengan robot SnappyXO.
Langkah 1: Lokasi Tutorial Berubah
Tutorial telah dipindahkan ke halaman di bawah ini. Tutorial ini tidak lagi dipertahankan.
sites.google.com/stonybrook.edu/premo
Langkah 2: Bangun Robot Penggerak Diferensial SnappyXO
Pustaka PreciseMovement yang akan kita gunakan hanya kompatibel dengan robot penggerak diferensial. Anda dapat memilih untuk menggunakan robot penggerak 2 roda lainnya.
Langkah 3: Hubungkan Elektronik
Untuk Encoder Optik SnappyXO standar:
D0 (output encoder) -> Pin Digital Arduino
VCC -> Arduino 5V
GND -> GND
Daya Motor dan Arduino:
Sumber daya motor harus memadai untuk motor yang Anda gunakan. Untuk kit SnappyXO, baterai 4AA digunakan untuk daya motor dan baterai 9V untuk daya Arduino. Pastikan bahwa mereka semua memiliki GND yang sama.
Langkah 4: Instal Perpustakaan Arduino PreciseMovement
Unduh:
github.com/jaean123/PreciseMovement-library/releases
Cara menginstal Perpustakaan Arduino:
wiki.seeedstudio.com/How_to_install_Arduino_Library/
Langkah 5: Kode
Kode Arduino:
create.arduino.cc/editor/whileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/preview
Parameter ini memerlukan penyesuaian. Parameter lain yang diberi label direkomendasikan pada kode dapat disesuaikan untuk kinerja yang lebih baik.
- Periksa dan setel pin motor di bawah PIN ARDUINO.
-
Atur PANJANG dan RADIUS.
- PANJANG adalah jarak dari roda kiri ke roda kanan.
- RADIUS adalah jari-jari roda.
-
Atur PULSES_PER_REV, yang merupakan jumlah pulsa yang dikeluarkan encoder untuk satu putaran roda.
- Perhatikan ini berbeda dari jumlah pulsa yang dihasilkan encoder untuk satu putaran poros motor kecuali jika encoder terhubung untuk membaca langsung dari poros roda.
- PULSES_PER_REV = (pulsa per satu putaran poros motor) x (rasio roda gigi)
-
Setel STOP_LENGTH jika Anda melihat robot melakukan overshoot setelah gerakan maju.
Robot akan berhenti setelah perkiraan posisi berjarak STOP_LENGTH dari target. Jadi, STOP_LENGTH, adalah perkiraan jarak yang dibutuhkan robot untuk berhenti
-
Parameter PID
KP_FW: Ini adalah komponen proporsional dari gerak maju. Tingkatkan ini sampai robot berjalan lurus. Jika Anda tidak dapat menjalankannya secara langsung dengan menyetel ini, kemungkinan perangkat kerasnya yang salah. (mis. ketidaksejajaran roda, dll)
KP_TW: Ini adalah komponen proporsional dari PID gerakan memutar. Cukup mulai dari nilai yang rendah dan tingkatkan ini hingga kecepatan putaran, atau kecepatan sudut robot saat memutar, cukup cepat, tetapi tidak menyebabkan overshoot. Untuk melakukan pengamatan, Anda dapat meminta robot bergantian dari 0 hingga 90 dan kembali dengan memasukkan yang berikut ini ke dalam fungsi loop
Tempatkan ini dalam lingkaran untuk menyetel KP_FW:
mover.forward(99999);
Tempatkan ini dalam lingkaran untuk bergantian dari 0 hingga 90 untuk menyetel KP_TW:
mover.twist(90); // Putar 90 CW
penundaan(2000);
mover.twist(-90) // Putar 90 CCW
penundaan(2000);
Perhatikan bahwa untuk benar-benar memutar kecepatan sudut pada TARGET_TWIST_OMEGA, KI_TW juga perlu disetel karena pengontrol proporsional tidak akan pernah mencapai target yang tepat. Namun, tidak perlu memutar pada kecepatan sudut yang tepat itu. Kecepatan sudut hanya perlu cukup lambat.
Langkah 6: Cara Kerjanya
Jika Anda penasaran dengan cara kerjanya, baca terus.
Gerakan maju dijaga tetap lurus menggunakan algoritme pengejaran murni pada jalur garis lurus. Selengkapnya tentang Pursuit Murni:
Kontroler PID putaran mencoba untuk menjaga kecepatan sudut putaran pada TARGET_TWIST_OMEGA. Perhatikan bahwa kecepatan sudut ini adalah kecepatan sudut seluruh robot bukan roda. Hanya satu pengontrol PID yang digunakan dan outputnya adalah kecepatan tulis PWM dari motor kiri dan kanan. Perhitungan mati dilakukan untuk menghitung sudut. Setelah sudut mencapai ambang kesalahan, robot berhenti.