Accelerometer dalam robot penyeimbang sendiri, tidak bisakah kita melakukan yang lebih baik?

9

Saat ini saya membaca tentang robot penyeimbang diri yang menggunakan IMU (giroskop + akselerometer) untuk memperkirakan sudut kemiringan mereka saat ini.

Sebagian besar dokumen yang saya temukan mengatakan hal yang sama:

  • Anda tidak bisa begitu saja mengambil garis singgung dari data accelerometer untuk menemukan arah gravitasi karena mereka dipengaruhi oleh "suara inersia".
  • Anda tidak bisa hanya mengintegrasikan output giroskop dari waktu ke waktu karena melayang.
  • Ada dua solusi yang diterima secara umum untuk menggabungkan data tersebut:
    1. Sebuah Filter Kalman memperkirakan kemiringan saat ini bersama dengan giroskop bias saat .
    2. Sebuah filter yang gratis menerapkan low-pass filter pada data accelerometer (mereka dapat dipercaya dalam jangka panjang), dan high-pass filter pada data giroskop (dapat dipercaya dalam jangka pendek).

Semua sumber yang saya temukan tampaknya menggunakan data mentah dari accelerometer di filter tersebut, mengabaikan fakta bahwa, dalam robot penyeimbang diri, kita dapat memiliki perkiraan yang sangat baik dari "suara inersia" yang disebutkan di atas.

Inilah saya

Mari kita memodelkan robot kita dengan pendulum terbalik dengan tumpuan yang bergerak dan menggunakan gambar yang buruk ini sebagai referensi.

masukkan deskripsi gambar di sini

Gaya inersia yang dirasakan oleh akselerometer di C dapat diturunkan dari (jika saya tidak melakukan kesalahan)

(cr¨cΘ¨)=(x¨sin(Θ)RΘ˙2x¨cos(Θ)+RΘ¨)

Berasumsi bahwa

  • Robot kami berputar tanpa tergelincir
  • Kita dapat mengukur x (baik dengan menggunakan motor stepper atau motor DC dengan encoders)

Maka kita dapat memiliki estimasi yang baik dari semua variabel tersebut:

  • x¨^k : Perbedaan yang terbatas atas ukuran saat ini dan sebelumnyax
  • Θ˙^k : Pembacaan giroskop saat ini
  • Θ^k : Perkiraan sebelumnya dari plus integrasi dan lebih dari satuΘΘ˙^kΘ˙^k1Δt
  • Θ¨^k : Perbedaan terbatas hingga danΘ˙^kΘ˙^k1

Setelah kita memilikinya, kita dapat meniadakan efek gaya inersia dalam accelerometer, hanya menyisakan ukuran gravitasi yang jauh lebih baik.

Mungkin masih merupakan ide yang baik untuk menggunakan ini sebagai input dari filter Kalman seperti pada 1. di atas.

Mungkin kita bahkan bisa membangun filter Kalman yang bisa memperkirakan semua variabel itu sekaligus? Saya akan mencobanya.

Bagaimana menurut anda? Apakah saya melewatkan sesuatu di sini?

Saya pikir robot penyeimbang bisa menjadi tag yang bagus, tapi saya tidak bisa membuatnya

Julien
sumber
Pencari jarak laser akan sangat berguna.
holmeski

Jawaban:

1

Jika Anda benar membangun filter Kalman dengan input 'x', maka ya, itu akan lebih baik. Khususnya, sensor inersia tidak dapat memberi Anda nilai absolut untuk x dalam hal apa pun, karena Anda (pada dasarnya) mencoba mengintegrasikan sinyal accelerometer ke dalam suatu posisi, dan itu sangat sensitif terhadap noise dalam output accelerometer.

Beberapa hal yang mungkin ingin Anda pertimbangkan dalam perjalanan Anda:

  1. Filter Kalman full-blown sangat kuat secara komputasi, tetapi Kalman yang mapan pada dasarnya adalah filter gratis dengan frekuensi rolloff yang dipilih oleh konstruksi daripada b'guess dan b'gosh.
  2. Berbicara tentang b'guess dan b'gosh, jika Anda ingin seorang Kalman bekerja dengan baik (dan, kadang-kadang, sama sekali), Anda harus memperhitungkan dengan akurat semua yang masuk ke dalam varian Anda. Kalman terkenal karena tidak merespons dengan baik ketidakcocokan antara model dan kenyataan Anda. Jika Anda bersedia melakukan perhitungan, lihat H-infinity dan teknik estimasi kondisi canggih lainnya.
  3. Jika Anda menyusuri jalan H-infinity, Anda juga dapat menemukan filter H-infinity steady-state dan mendapatkan keuntungan komputasi yang sama (dan, pada kenyataannya, struktur filter aktual dalam kode yang disematkan akan sama; itu ' Saya hanya akan memiliki nilai yang berbeda dalam koefisien).
TimWescott
sumber
Saya pikir Anda melebih-lebihkan biaya komputasi filter kalman penuh. Julien kemungkinan memiliki kurang dari 6 negara bagian yang tidak akan menjadi masalah di sebagian besar dewan.
holmeski
1

Meskipun ini bukan jawaban yang lengkap untuk pertanyaan Anda, saya ingin meninggalkan beberapa pemikiran saya. Saya pikir Anda melewatkan:

  1. Gravity itu sendiri, yang menunjuk ke bawah dan biasanya sekitar 9,81 m / s² tetapi mungkin berbeda tergantung pada lokasi Anda (Anda hanya mengukur 0 gravitasi ketika robot jatuh bebas)
  2. Sensor biasanya tidak sejajar 100% dengan sumbu x / y / z Anda (chip tidak sepenuhnya horizontal pada PCB ... PCB tidak dipasang sepenuhnya horizontal / vertikal ke robot Anda dan sebagainya); Anda perlu mengkompensasi hal ini
  3. Sensor-akselerometer memiliki nilai offset dan gain, yang harus Anda kompensasi. Mereka dipengaruhi oleh misalnya toleransi suhu dan manufaktur. Ada algoritma kalibrasi online untuk ini; tetapi Anda bisa memasukkan variabel yang tidak dikenal ini ke filter Kalman juga.
  4. Giroskop memiliki drift, yang juga tergantung pada suhu. Ini tidak konstan tetapi mungkin berubah seiring waktu. Penyimpangan ini dapat sedikit dikompensasi dengan bantuan magnetometer.
  5. Magnetometer alias sensor Kompas dalam 3D dapat digunakan untuk mengimbangi penyimpangan Giroskop. Namun, mereka kadang-kadang dipengaruhi oleh medan elektromagnetik (motor, magnet, baja di dinding dll). Jadi mereka tidak bisa dipercaya sepenuhnya.

Model Kalman-filter adalah pendekatan yang baik. Semakin banyak pengetahuan tentang model gerak yang Anda masukkan ke dalam model, semakin baik kerjanya. Anda juga perlu mengetahui (co-) varian dari semua variabel ... Bagaimana Anda yakin pengukuran setiap sensor.

SDwarfs
sumber
Poin bagus tentang masalah dunia nyata seperti kalibrasi, pergeseran, suhu, dll.
Ben