Algoritma AHRS di bawah percepatan linear kontinu

9

Saya telah mencoba beberapa algoritma untuk mendapatkan pitch, roll dan yaw di bawah percepatan dan getaran linear kontinu (lebih kecil dari 0.4g, frekuensi lebih rendah dari 10HZ). Tak satu pun dari mereka memberikan hasil yang baik karena bacaan baik melayang atau dipengaruhi terlalu banyak oleh percepatan linier. Yang ingin saya capai adalah ketika akselerasi eksternal lebih kecil dari + -0.4g, kesalahan pada pitch and roll harus lebih kecil dari + -1deg.

Saya telah mencoba algoritma ini:

  1. Algoritma Madgwick . Ketika kenaikan Beta diatur sangat tinggi, konvergensi cepat tetapi sudut lebih rentan terhadap akselerasi linier. Saya menyetelnya ke bawah dan mengurangi kesalahan di bawah percepatan linear ke + -0.5deg. Namun, jika getarannya terus-menerus, bacaan akan melayang dan butuh selamanya untuk menyatu dengan nilai yang sebenarnya. Masuk akal karena di bawah akselerasi linier, gyro lebih dipercaya dan sudut pandangnya melayang ketika gyro terintegrasi.

  2. Algoritme Mahony . Sebaliknya dengan Madgwick, itu tidak melayang sama sekali terlepas dari nilai apa yang saya gunakan untuk Ki dan Kp. Namun, selalu dipengaruhi oleh akselerasi linier. (Kesalahan lebih besar dari + -6deg)

  3. Filter Kalman tradisional . Banyak waktu telah dihabiskan untuk menyetel vektor R dan Q yang besar itu. Sejauh ini ia memiliki kinerja yang sama dengan Mahony.

Saya menggunakan pisau cukur IMU . Saya tahu dengan sensor murah tidak mungkin mencapai hasil yang sama seperti ini .

Ada beberapa pilihan lain seperti UKF tetapi sulit untuk dipahami atau diterapkan.

Setiap saran disambut.

Timtianyang
sumber
Bagaimana Anda mengintegrasikan untuk Kalman?
C. Towne Springer
Menggunakan integrasi Euler tetapi rotasi hanya satu sumbu untuk menghindari DCM. @ C.TowneSpringer
Timtianyang
Apakah itu seharusnya berfungsi dengan baik? Terakhir kali saya melakukan ini (ALCM) Euler tidak cocok. Euler adalah metode urutan pertama dengan kesalahan lokal sebanding dengan kuadrat ukuran langkah dan kesalahan kotor sebanding dengan ukuran langkah. Kami menggunakan Runge-Kutta pesanan ke-4 dengan filter Kalman. Saya pikir Newton-Feynman atau Euler untuk mendapatkan tebakan awal untuk memulai Runge-Kutta. Apakah Anda memiliki pemrosesan untuk mengatasinya pada tingkat pembaruan yang baik?
C. Towne Springer
Terima kasih atas sarannya. Kesalahan lokal dari metode integrasi euler diabaikan. Kami berencana melakukan pemfilteran dalam pos, jadi kami tidak memiliki kendala besar pada kompleksitas komputasi. @ C.TowneSpringer
Timtianyang

Jawaban:

3

Pertama, pastikan Anda memahami dua poin utama di sini:

  1. Penentuan sikap dari data IMU saja secara inheren ambigu dengan adanya percepatan linier . Tanpa pengetahuan tambahan tentang sifat akselerasi, akan selalu ada batas atas keakuratan yang bisa Anda raih.

  2. Akurasi dibatasi oleh penyimpangan dalam pengukuran giroskop terintegrasi . Dengan data gyro yang sempurna dan integrasi, data accelerometer tidak akan diperlukan sama sekali. Semakin dekat Anda dengan sempurna, semakin Anda bisa mengabaikan akselerasi.

Pemilihan algoritma orientasi sebagian besar tidak relevan di sini. Semuanya bekerja dengan prinsip yang sama: menggunakan arah percepatan gravitasi untuk melayang mengoreksi data gyro terintegrasi, dengan sejumlah bobot variabel di antara keduanya. Jika Anda telah mencoba menyetel parameter dan tidak mencapai hasil yang Anda inginkan, Anda tidak mungkin melakukan yang lebih baik dengan algoritma yang berbeda.

Jadi, pada dasarnya ada dua hal yang dapat Anda lakukan.

  1. Tingkatkan keakuratan integrasi gyro Anda.
  2. Model sifat percepatan linear entah bagaimana.

Pilihan kedua sulit untuk dibahas karena tergantung pada detail gerakan yang Anda pelajari. Ada beberapa trik sederhana seperti membuang atau mengurangi akselerasi bobot di luar rentang tertentu. Pada dasarnya ini datang ke pemodelan percepatan linear sebagai kejadian singkat saja. Jika sistem Anda berada di bawah gerakan terus menerus mereka tidak banyak membantu.

Ada beberapa hal yang dapat Anda lakukan untuk meningkatkan integrasi gyro Anda:

  1. Dapatkan taksiran bias giro yang terbaik . Ambil pembacaan lang statis selama beberapa detik segera sebelum digunakan, dan rata-rata untuk mendapatkan nilai offset Anda. Jangan mengandalkan kalibrasi sebelumnya satu kali.
  2. Cobalah untuk meminimalkan penyimpangan karena suhu. Biarkan IMU memanas hingga mencapai suhu operasi yang stabil sebelum kalibrasi / penggunaan. Usahakan agar suhu tetap stabil selama operasi.
  3. Tingkatkan model kalibrasi Anda. Pertimbangkan untuk memasukkan efek sumbu silang dan non-linearitas serta skala dan offset yang adil.
  4. Gunakan metode integrasi yang lebih baik. Sudah ada beberapa ide di komentar pada pertanyaan Anda.
  5. Lihat apakah Anda dapat melacak penyimpangan gyro. Jika algoritma orientasi harus secara konsisten mengoreksi penyimpangan dalam arah tertentu, ini dapat dideteksi dan digunakan untuk menyesuaikan nilai bias dengan lembut.

Anda benar bahwa sensor yang Anda gunakan tidak dari kelas tertinggi yang tersedia. Namun, dimungkinkan untuk mendapatkan hasil yang sangat baik dari sensor konsumen jika dikarakterisasi dan dikalibrasi dengan cukup baik.

Martin L
sumber
Adakah sensor konsumen yang direkomendasikan?
Timtianyang