Bagaimana kita bisa menggunakan accelerometer untuk estimasi ketinggian?

9

Saat ini saya menerapkan quadcopter otonom yang baru-baru ini saya terbang dan yang stabil, tetapi tidak dapat memperbaiki dirinya sendiri di hadapan gangguan eksternal yang signifikan. Saya berasumsi ini adalah karena keuntungan PID yang tidak disetel secara memadai yang harus disesuaikan lebih lanjut dalam penerbangan.

Kemajuan saat ini:

  • Saya mengesampingkan barometer karena ruang lingkup penelitian saya hanya penerbangan dalam ruangan dan barometer memiliki penyimpangan + -5 meter menurut rekan saya.
  • Saat ini saya menggunakan sensor ultrasonik (HC-SR04) untuk estimasi ketinggian yang memiliki resolusi 0,3cm. Namun saya menemukan bahwa refresh rate sensor ultrasonik 20Hz terlalu lambat untuk mendapatkan respon yang cukup cepat untuk koreksi ketinggian.
  • Saya mencoba menggunakan akselerasi pada sumbu Z dari accelerometer untuk mendapatkan data ketinggian dengan mengintegrasikan akselerasi untuk mendapatkan kecepatan yang akan digunakan untuk laju PID dalam skema pengontrol pid bertingkat. Implementasi saat ini untuk pengontrol PID ketinggian adalah pengontrol pid loop tunggal menggunakan pengontrol P dengan input posisi dari sensor ultrasonik.
  • Saya telah memperhitungkan pengukuran akselerasi negatif karena gravitasi tetapi tidak peduli berapa banyak saya menghitung offset, masih ada keberadaan akselerasi negatif (mis. -0,0034). Saya menghitung offset gravitasi dengan mengatur quadcopter agar tetap pada permukaan datar kemudian mengumpulkan 20.000 sampel dari akselerometer z untuk dirata-rata untuk mendapatkan "offset" yang disimpan sebagai variabel konstan. Variabel ini kemudian dikurangkan dari akselerasi z-axis output untuk menghapus offset dan membuatnya menjadi "nol" jika tidak dipercepat. Seperti yang dikatakan dalam pertanyaan, masih ada akselerasi negatif (mis. -0,0034). Quad saya kemudian mulai naik secara konstan di ketinggian. Dengan hanya pengontrol P sensor ultrasonik, quad saya berosilasi sebesar 50 cm.

Bagaimana pembacaan percepatan negatif yang konsisten ini dapat ditangani secara efektif?

Kemungkinan Solusi : Saya berencana untuk melakukan contoller PID bertingkat untuk menahan ketinggian dengan innerloop (PID controller) menggunakan accelerometer dan loop luar (P controller) menggunakan sensor sonar. Penasihat saya mengatakan bahwa bahkan satu loop controller P cukup untuk membuat quadcopter menahan ketinggiannya bahkan dengan sensor lambat. Apa ini cukup? Saya perhatikan bahwa dengan hanya mendapatkan P, quadcopter akan melampaui ketinggiannya.

masukkan deskripsi gambar di sini

  • Integrator Leaky: Saya menemukan artikel ini menjelaskan bagaimana dia berurusan dengan akselerasi negatif menggunakan integrator bocor namun saya memiliki sedikit kesulitan memahami mengapa ini bekerja karena saya pikir kesalahan negatif hanya akan berubah menjadi kesalahan positif tidak menyelesaikan masalah. Saya tidak begitu yakin. http://diydrones.com/forum/topics/multi-rotors-the-altitude-yoyo-effect-and-how-to-deal-with-it

  • Pengontrol PD loop tunggal hanya dengan sensor ultrasonik: Apakah ini layak menggunakan umpan balik dari sensor lambat?

Sumber:

pengguna123456098
sumber
Bagaimana Anda menghitung offset gravitasi? Apa itu accelerometer? Bisakah Anda menautkan lembar data?
Chuck
1
osilasi berarti Anda perlu redaman !!!
holmeski
1
Ingat bahwa pada pertukaran tumpukan, lebih baik mengedit pertanyaan Anda untuk menambahkan informasi yang diminta dalam komentar, daripada menambahkan lebih banyak komentar. Komentar adalah untuk membantu meningkatkan pertanyaan dan jawaban, dan mengganggu, jadi kami mencoba untuk menjaga seminimal mungkin. Jika semua informasi yang diperlukan untuk menjawab pertanyaan terkandung di dalamnya, komentar dapat dirapikan (dihapus).
Mark Booth
@Chuck Saya telah mengedit posting dengan informasi yang relevan :)
user123456098
Saya sedang mengerjakan proyek yang sama, saat ini, saya mengimplementasikan Cascade PID Controller untuk menstabilkan sikap quadcopter menggunakan Arduino, saya ingin bekerja di ketinggian sekarang. Apakah Anda menerapkannya tanpa perkiraan kecepatan ?, dan saya punya pertanyaan, apakah saya perlu memperkirakan transformasi kerangka bumi ke tubuh atau dapatkah saya menerapkannya tanpa transformasi
SALAM ALBARADIE

Jawaban:

10

Barometer yang dibawa pada pixhawk memiliki resolusi ketinggian 10 cm. Jika itu tidak cukup, Anda bisa menulis filter kalman yang menggunakan data accelerometer pada langkah prediksi dan sensor ultrasonik dan / atau barometer pada langkah koreksi.

Tapi saya tidak melihat ini menyelesaikan masalah Anda. Pengukuran ketinggian yang akurat pada 20 hz harus banyak jika semua yang Anda coba lakukan adalah menahan ketinggian.

Berapa konstanta waktu / frekuensi alami dan redaman pada pengontrol Anda?

Saya kira saya belum selesai membaca pertanyaan Anda pagi ini (sebelum kopi saya). Akselerasi dari imu adalah pengukuran percepatan plus gravitasi. Untuk mendapatkan akselerasi inersia imu, kurangi vektor gravitasi dari pengukuran. Anda tidak akan pernah bisa mengontrol pengukuran akselerasi terintegrasi. Pengukuran rusak oleh kebisingan dan Anda tidak memiliki cara untuk memperbaikinya.

--- jawab untuk mengontrol sebagian dari pertanyaan

Mari kita asumsikan bahwa semua yang Anda coba lakukan adalah memegang ketinggian dan tidak khawatir tentang memegang posisi untuk saat ini (meskipun pendekatan ini akan bekerja untuk itu juga). Dan dengan asumsi bahwa Anda dapat memerintahkan dorongan apa pun yang Anda inginkan (dengan alasan), maka ini menjadi masalah yang mudah.

Sepertinya pass pertama pada dinamika sistem

z¨=umg

mana yang positif zsudah habis. Mari kita tambahkan komponen hover ke throttle kami yang berhubungan dengan gravitasi. Begitu

u=ufb+uhover

Dinamika baru kami terlihat seperti

z¨=ufb+uhovermg=ufbm

Keren! Sekarang kami merancang undang-undang kontrol sehingga kami dapat memakukan ketinggian yang diinginkan.

Sistem kontrol kami akan menjadi pegas dan peredam virtual antara quad kami dan ketinggian yang diinginkan (ini adalah pd controller).

z¨=kp(zdesz)+kd(z˙desz˙)

Sistem sekarang seharusnya berperilaku seperti sistem urutan kedua. kp dan kd dapat dipilih untuk mencapai rasio redaman dan frekuensi alami yang Anda cari.

Pada titik ini saya ingin menegaskan kembali bahwa mengintegrasikan data accelerometer bukanlah cara yang baik untuk menghasilkan perkiraan keadaan. Jika Anda benar-benar ingin meretas sesuatu bersama-sama dengan cepat, beri makan pengukuran sonar melalui filter lowpass dengan frekuensi penurunan yang sesuai. Kendaraan Anda tidak akan berosilasi pada 20 hz jadi mematikan saja data sonar akan baik-baik saja.

holmeski
sumber
1
Terima kasih, saya baru saja selesai mengimplementasikan ini 4 hari yang lalu dan itu bekerja dengan osilasi sangat menit + -2cm
user123456098
senang mendengarnya! Anda harus dapat membunuh osilasi dengan meningkatkan kd dengan asumsi Anda memiliki perkiraan kecepatan yang baik :)
holmeski