Algoritma apa yang harus saya gunakan untuk menyeimbangkan robot roda dua menggunakan giroskop?

25

Apakah ada algoritma yang bagus, populer, dan dapat diandalkan yang dapat saya gunakan dengan mengambil input dari giroskop dan menggunakannya untuk mengontrol dua roda independen agar robot yang seimbang tetap tegak lurus? Saya mencari algoritma yang memungkinkan saya menggunakannya untuk menggerakkan robot dan menjaganya tetap tegak saat diam. Kemampuan untuk menangani tanjakan dan orang-orang yang mendorongnya juga akan menjadi bonus, tetapi tidak penting.

berry120
sumber
Saya akan mengerjakan ini juga. Anda harus menggunakan filter kalman untuk memfilter data mentah Anda. Dan gunakan algoritma PID untuk menyetelnya.
Huzo

Jawaban:

16

Pengontrol yang paling sederhana adalah pengontrol umpan balik keadaan linier. Pada dasarnya ada 4 kondisi berbeda yang perlu Anda peroleh. Ini adalah sudut kemiringan, laju kemiringan, kecepatan dan posisi.


LQR (regulator kuadratik linier) adalah metode untuk merancang keuntungan ini (setelah mendapatkan representasi ruang-negara linier dari sistem Anda). Jika Anda tidak memiliki representasi ruang keadaan (Anda mungkin tidak), Anda bisa mendapatkan persamaan gerak dan mengukur parameter. Jika Anda tidak memiliki representasi ruang negara, Anda harus menyetel keuntungan secara manual (tanpa LQR atau metode lain seperti penempatan tiang ).


Tuning gain secara manual:

Dengan asumsi sudut kemiringan, posisi / kecepatan, dan torsi roda semua diarahkan ke depan (jika positif), Anda menginginkan kenaikan positif pada sudut kemiringan dan tingkat kemiringan Anda, serta perolehan positif pada posisi dan kecepatan.

Mulai dengan penguatan pada sudut kemiringan, dan tingkat kemiringan. Ini akan membuatnya seimbang pada awalnya. Setelah tetap seimbang, Anda dapat mengontrol posisi dan kecepatan dengan menambahkan keuntungan bagi mereka. Jika tidak stabil, naikkan gain pada tingkat kemiringan (yang membantu meredam sistem).

Kontrol posisi / kecepatan akan mengontrol kedua status ke nol. Untuk mengontrol beberapa nilai lain, Anda hanya perlu pengontrol pelacakan referensi, dengan mengganti status dengan kesalahan mereka sebelum memasukkannya ke dalam pengontrol Anda (mis. Referensi kecepatan - kecepatan saat ini).

Kontrol yaw dapat dilakukan secara independen (dengan perbedaan torsi roda ditambahkan ke pengontrol keseimbangan / kecepatan / posisi utama).

ronalchn
sumber
9

Saya percaya solusi paling populer untuk masalah ini adalah pengontrol LQR . Masalah yang Anda coba selesaikan adalah masalah bandul terbalik . Dengan menggunakan kata kunci tersebut, Anda harus dapat Google kode sumber terbuka seseorang. Masalah selanjutnya adalah memetakan sebagian besar jumlah fisika yang relevan untuk aplikasi Anda (berat, torsi motor, dll ...)

Chris Mansley
sumber
5

Karena saya tidak tahu keahlian Anda dalam teknik / teori kontrol, saya sarankan Anda untuk mulai dengan kontroler PID . Ini adalah pengontrol sederhana dan Anda akan menemukan banyak implementasi kode itu. Kelemahan dari PID adalah bahwa Anda mungkin akan menghabiskan waktu untuk menyetel parameter dengan tangan.

Beberapa tahun yang lalu saya menggunakannya untuk mengendalikan robot Lego Mindstorm beroda dua berdasarkan pada odometrinya dan itu bekerja dengan cukup baik. Untuk membuatnya bergerak, Anda harus bermain dengan poin yang ditetapkan.

Tentu saja, nanti Anda dapat meningkatkan kualitas controller Anda (stabilitas, ketahanan dll) dengan menggunakan undang-undang kontrol yang lebih maju seperti LQR yang disebutkan sebelumnya.

Semoga berhasil!

bit-bajak laut
sumber