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.
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:
LSM303DLHC Datasheet: http://www.st.com/web/en/resource/technical/document/datasheet/DM00027543.pdf
Integrator bocor: http://diydrones.com/forum/topics/multi-rotors-the-altitude-yoyo-effect-and-how-to-deal-with-it
ArduPilot PID Loop: http://copter.ardupilot.com/wp-content/uploads/sites/2/2012/12/Alt-Hold-PID-version-3.0.1.jpg
sumber
Jawaban:
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
mana yang positifz sudah habis. Mari kita tambahkan komponen hover ke throttle kami yang berhubungan dengan gravitasi. Begitu
Dinamika baru kami terlihat seperti
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).
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.
sumber