Apakah ada masalah dengan ini?
Masalah utama dengan ini adalah bahwa sementara solusi yang Anda usulkan akan segera memperbaiki ketidaksesuaian antara kinerja motor, itu tidak akan memperbaiki kesalahan akumulasi, apalagi kesalahan yang lebih kompleks pada posisi seperti kesalahan Abbe (lihat nanti).
Apa pendekatan yang lebih baik?
Ada beberapa hal yang dapat Anda lakukan, tergantung pada apa toleransi Anda terhadap kesalahan dan berapa banyak upaya yang ingin Anda lakukan untuk memperbaikinya.
Langkah pertama adalah membuat sepasang loop PID, satu untuk setiap roda, memberikan keduanya posisi permintaan yang sama. Seperti yang saya sarankan dalam jawaban saya untuk pertanyaan yang sama , jika Anda menjaga kedua roda dalam batas kesalahan yang sangat ketat di mana Anda meminta mereka, maka akan memakan waktu cukup lama untuk mengakumulasi kesalahan yang cukup untuk menyebabkan belokan yang terlihat.
Juga akan lebih mudah untuk menyetel dua loop PID tingkat Motor yang independen secara nominal daripada menyetel satu sistem gabungan kompleks yang saling tergantung. Agar dapat bertahan dari perubahan kontrol level yang lebih tinggi, Anda benar-benar membutuhkan setiap motor untuk berperilaku sedekat mungkin dengan motor lain sebanyak mungkin, dan itu benar-benar memerlukan loop servo terpisah.
Namun ada beberapa komplikasi lebih lanjut, dan itu tergantung pada keakuratan yang Anda butuhkan dan berapa banyak usaha yang Anda siapkan untuk mengoreksi mereka untuk solusi yang Anda pilih. Mungkin Dead Reckoning sudah cukup, atau Anda mungkin perlu menambahkan penentuan posisi Relatif atau Absolute ke robot Anda.
Satu masalah adalah bahwa bahkan jika roda kiri dan kanan Anda sama-sama memindahkan 1000 jumlah enkoder, Anda mungkin masih berakhir di posisi yang berbeda pada dua putaran yang berbeda.
Sebagai contoh, katakan Anda memiliki kesalahan berikut maksimum 10 hitungan encoder, dan motor Anda berjalan pada kecepatan katakanlah 10 jumlah encoder per iterasi PID loop. Motor kiri Anda mungkin bergerak 5,10,10,10 ... 10,5 sedangkan motor kanan Anda mungkin memiliki profil 4,11,10,10 ... 10,5 dan bahkan ada sedikit perbedaan dalam percepatan pada awalnya. dari langkah tersebut dapat menyebabkan robot melesat ke arah yang salah. Tidak hanya itu tetapi semakin jauh Anda bergerak ke arah itu, semakin besar kesalahan akan menjadi absolut. Inilah yang kita bicarakan ketika kita berbicara tentang kesalahan Abbe , dan tanpa model kinematik yang kompleks atau semacam referensi eksternal, Anda tidak akan pernah dapat memperbaikinya.
Untuk informasi lebih lanjut, lihat jawaban saya untuk pertanyaan serupa tetapi tidak cukup duplikat: Bagaimana saya bisa menggunakan perpustakaan PID Arduino untuk menggerakkan robot dalam garis lurus?
dan jawaban saya untuk optimasi Line Follower juga terkait