Saya sedang membuat quadcopter. Saya telah mengatur loop PID untuk menstabilkannya ke sudut Euler yang diberikan (pitch and roll). Masalah muncul ketika gulungan mendekati 90 derajat (45 derajat ke atas). Nilai-nilai tidak masuk akal lagi, karena mendekati kunci gimbal. Saya bermaksud membuatnya melakukan manuver kompleks seperti perulangan dll, yang melebihi batas gulungan 45 derajat.
Bagaimana saya bisa menggunakan angka empat untuk mengatasi masalah ini? (Saya mendapatkan angka empat dari MPU-9150.) Saya telah membaca banyak artikel tentang angka empat, tetapi mereka semua berbicara tentang rotasi dalam perangkat lunak 3D, dan tweening antara dua titik rotasi. Ini tidak masuk akal karena saya tidak tahu angka dan matriks imajiner.
quadcopter
pid
stability
Teman Kim
sumber
sumber
Jawaban:
Quadcopter berisi (antara lain) dua algoritma yang terpisah dan independen: algoritma estimasi sikap, dan algoritma kontrol.
Algoritma estimasi sikap menghitung informasi tentang orientasi quadcopter: sudut roll, pitch dan yaw.
Algoritma kontrol bertanggung jawab untuk menggerakkan motor sehingga orientasi quadcopter sesuai dengan apa yang diharapkan oleh pilot (atau perangkat lunak autopilot). Algoritma ini adalah apa yang akan membaca perkiraan sudut quadcopter (dari algoritma estimasi sikap) dan mengubah kecepatan motor untuk mencoba untuk mencocokkan sudut yang diinginkan. PID adalah algoritma kontrol yang cocok dan umum untuk quadcopters.
Gimbal lock adalah fenomena yang dapat terjadi dalam algoritma estimasi sikap. Ini tidak ada hubungannya dengan algoritma kontrol. Karena itu, Anda tidak memerlukan ESC, motor, atau baling-baling untuk menguji kunci gimbal: Anda dapat memodifikasi kode Anda untuk menampilkan sudut roll, pitch, dan yaw, dan menguji bahwa nilai yang benar dihitung saat Anda memindahkan quadcopter secara manual. Anda mungkin dapat melakukan ini dengan quadcopter yang ditambatkan ke komputer Anda, melalui Bluetooth, atau menggunakan metode lain tergantung pada platform Anda.
Jika sudut dihitung dengan benar, Anda tidak perlu khawatir tentang angka empat. Jika mereka tidak dihitung dengan benar, angka empat mungkintolong kamu. Algoritma estimasi sikap harus menampilkan 3 sudut untuk algoritma kontrol untuk digunakan, namun mungkin menggunakan representasi internal yang berbeda seperti angka empat atau matriks 3x3. Dalam hal itu masih akan mengubah informasi sikap ke sudut sehingga memberikan data yang dapat digunakan ke algoritma kontrol. Angka empat secara umum tidak intuitif tetapi efisien secara komputasi. Ini membuatnya cocok untuk platform lambat seperti Arduino. Matriks atau sudut mungkin merupakan pilihan yang lebih mudah untuk perangkat keras yang lebih cepat. Jika Anda membutuhkan saya untuk menguraikan satu solusi atau yang lain, tolong beri tahu saya, tetapi akan terlalu dini bagi saya untuk memberikan rincian pada tahap ini karena saya tidak yakin Anda perlu menerapkan angka empat.
Akhirnya jika sudut dihitung dengan benar cara untuk membuat loop quadcopter Anda adalah untuk mengontrol laju sudut daripada sudut. Jika tongkat Anda mewakili sudut quadcopter, tidak ada cara untuk membuatnya melakukan loop penuh: cobalah untuk memvisualisasikan posisi tongkat sebagai loop quadcopter dan Anda harus memahami alasannya. Namun, jika tongkat mengontrol laju sudut maka Anda dapat mengontrol kecepatan putarannya.
Semoga berhasil dengan proyek Anda!
Catatan: Demi kesederhanaan, saya belum menyebutkan opsi teoritis untuk memanipulasi data sebagai matriks atau angka empat baik dalam algoritma estimasi sikap dan algoritma kontrol. Saya belum pernah melihat quadcopter mengimplementasikan algoritma seperti itu.
sumber
Pertama, saya pikir Anda harus kembali dan melihat kode Anda. Kunci Gimbal hanya masalah ketika Anda menjadi sangat dekat (dalam beberapa derajat) dari 90. Jika Anda melihat perilaku aneh pada 45 derajat sesuatu yang lain adalah penyebabnya.
Sedangkan untuk pertanyaan Anda, angka empat biasanya tidak digunakan secara langsung dalam kontrol PID dasar karena mereka memiliki perilaku rumit yang menghasilkan hasil yang tidak intuitif. Biasanya mereka dikonversi ke sudut Euler dan kemudian digunakan dalam kontroler PID normal, atau pengendali nonlinear khusus dirancang untuk menggunakannya.
Perhatikan bahwa untuk manuver looping Anda, PID umumnya bukan pengontrol yang sangat baik: keuntungan yang bekerja dengan baik di dekat melayang tidak lagi bekerja dengan baik di sudut yang besar. Biasanya, ketika seseorang ingin melakukan loop mereka pergi "loop terbuka", yaitu mereka memulai manuver di bawah kendali dan kemudian setelah mereka melewati sudut tertentu hanya cukup menerapkan serangkaian perintah tetap sampai mereka menyelesaikan loop. Mencari tahu apa serangkaian perintah tetap untuk digunakan adalah bagian yang sulit dan sering menggunakan pembelajaran penguatan (seperti cara formal melakukan trial and error).
sumber
Serial Chart
( code.google.com/p/serialchart ) Inputnya adalah output Euler langsung dari I2CDevLib (MPU-9150). Saya akan menguji sedikit lagi. "Kesalahan" mungkin disebabkan oleh gerakan yang tidak tepat oleh saya sendiri.Makalah ini, Kendali Sikap Berbasis Quaternion Penuh untuk Quadrotor oleh Emil Fresk dan George Nikolakopoulos, menunjukkan apa yang ingin Anda capai.
sumber
Kursus gratis MOOC ini, Selamat Datang di TUMx's AUTONAVx! Navigasi otonom untuk Robot Terbang , dapat membantu. Ini mencakup:
sumber