Saya membuat robot crawler kecil beberapa waktu lalu yang memiliki dua kaki dengan dua derajat kebebasan masing-masing, jadi 4 RC servos total. Sementara saya memprogram gerakan kaki saya perhatikan bahwa mereka bergerak agak kaku. Masuk akal bahwa pengontrol internal servo RC akan memiliki respons yang sangat cepat terhadap perintah posisi, tetapi saya ingin perayap saya bergerak dengan cara yang tampak sedikit lebih mulus dan seperti kehidupan.
Solusi saya adalah menciptakan fungsi kubik waktu yang menggambarkan jalur servos, dan kemudian mengatur posisinya dalam peningkatan waktu yang kecil, menghasilkan gerakan yang lebih halus. Pada dasarnya apa yang saya lakukan adalah memecahkan untuk koefisien dalam persamaan kubik dengan menggunakan interval waktu, mulai dan posisi servo berakhir, dan mulai dan berakhir tarif servo harus bergerak (yang hanya turunan dari posisi):
Memecahkan , , , dan :a 2 a 3
r a t e ( t ) = p o s i t i o n ' ( t ) = a 1 + 2 a 2 t + 3 a 3 t
Diberikan: , , ,p o s i t i o n ( t f ) r a t e ( 0 ) r a t e ( t f )
Saya mengatur laju servo antara sepasang gerakan menjadi nol jika gerakan berada di arah yang berlawanan, dan positif atau negatif jika masing-masing pergerakan berada dalam arah positif atau negatif.
Ini bekerja cukup baik, tetapi solusi ini terbatas dalam beberapa cara. Untuk satu, sulit untuk memutuskan apa sebenarnya tingkat antara gerakan yang bergerak ke arah yang sama seharusnya. Saya menggunakan rata-rata lereng di depan dan di belakang posisi tertentu di antara gerakan, tetapi tidak jelas bagi saya yang optimal. Kedua, kurva kubik dapat membawa servo ke posisi di luar kisaran posisi di awal dan akhir gerakan, yang mungkin tidak diinginkan. Misalnya, pada titik tertentu selama interval waktu, kurva dapat menyebabkan servo melampaui posisi kedua, atau di bawah posisi pertama. Ketiga, pembuatan kurva di sini tidak mempertimbangkan tingkat maksimum yang dapat diubah servo, sehingga kurva dapat membuat servo bergerak pada kecepatan yang tidak realistis. Dengan itu,
Mengabaikan kekhawatiran terakhir, masalah ini dapat diselesaikan dengan meningkatkan derajat polinomial dan menambahkan kendala untuk dipecahkan untuk koefisien, tapi saya sekarang mulai bertanya-tanya ...
Apakah ada cara yang lebih baik dari ini untuk membuat gerakan servo halus dan tampak lebih seperti hidup?