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