Bagaimana cara menggunakan angka empat untuk memberi makan loop stabilisasi PID quadcopter?

9

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.

Teman Kim
sumber
Apakah Anda memecahkan masalah Anda? Jika tidak, tolong beri tahu kami bagaimana hasilnya, jika tidak, Anda mungkin ingin menerima salah satu jawabannya.
marcv81
1
@ marcv81 Ya, ini bekerja cukup baik sekarang :) Terima kasih telah mengingatkan saya menerima jawaban :)
Teman Kim
Saya senang itu berhasil. Itu membuat saya berpikir tentang kode saya sendiri dan memperbaiki bug juga :)
marcv81

Jawaban:

6

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.

marcv81
sumber
Terima kasih atas jawaban Anda! Seseorang yang bekerja di InvenSense mengatakan bahwa, di sebagian besar aplikasi, angka empat lebih mudah dan lebih baik daripada sudut Euler. Melihat data yang tertambat, tampaknya mungkin untuk memperbaiki satu sumbu untuk menghentikan kunci gimbal saat ini akan terjadi.
Teman Kim
1
Sudut Euler adalah pilihan yang buruk untuk representasi internal orientasi. Mereka mudah divisualisasikan, tetapi sangat sulit untuk dimanipulasi dengan benar untuk menghindari kunci gimbal. Kuota lebih baik karena Anda tidak akan mengalami kunci gimbal, tetapi sulit divisualisasikan. Matriks entah bagaimana lebih mudah divisualisasikan daripada angka empat, tetapi tidak seefisien jika platform Anda lambat. Quadcopter saya menggunakan angka empat secara internal, tetapi mengonversi ke sudut Euler agar PID dapat digunakan.
marcv81
3

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).

ryan0270
sumber
Terima kasih atas wawasan Anda. Saya benar-benar baru dalam pemrograman bare metal. Saya hanya melakukan pemrograman tingkat tinggi. Saya juga sangat tertarik pada fisika dan matematika, meskipun saya baru saja lulus SMA, jadi saya masih belum tahu terlalu banyak ...
Teman Kim
Saya membuat ini dengan seorang teman, dan kami "menemukan" loop PID sendiri. Terbiasa dengan jawaban yang "benar", sangat sulit bagi kita untuk menggunakannya tanpa mengetahui ini adalah cara yang umum untuk menyelesaikan masalah kita. Dan ketika kami menemukan loop PID di Wikipedia, loop PID yang kami buat sendiri "disetujui".
Teman Kim
Jadi saya sangat menghargai wawasan Anda tentang bagaimana ini biasa dilakukan dalam proyek kerja. Perilaku aneh yang saya bicarakan mengungkapkan dirinya ketika melihat grafik di 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.
Teman Kim
Gulungan adalah garis biru. Merah adalah menguap, hijau adalah nada, biru adalah gulungan. Seperti yang Anda lihat, masalahnya mulai dari sekitar pi / 4 dan keluar. Apakah ini masalah dengan I2CDevLib, atau apakah "seharusnya" seperti ini? screencast.com/t/svPV3C8B Saya memutar giroskop 360 derajat di sekitar sumbu gulungan.
Teman Kim
Saya telah melihat AeroQuad mampu menstabilkan dirinya sendiri bahkan setelah dilempar ke udara. Apakah ini karena mengurus gulungan terlebih dahulu, lalu pitch, lalu yaw?
Teman Kim
3

Makalah ini, Kendali Sikap Berbasis Quaternion Penuh untuk Quadrotor oleh Emil Fresk dan George Nikolakopoulos, menunjukkan apa yang ingin Anda capai.

Abstrak - Tujuan dari artikel ini adalah untuk menyajikan skema kontrol berdasarkan angka empat baru untuk masalah kontrol sikap quadrotor. Angka empat adalah jumlah hiper kompleks peringkat 4 yang dapat digunakan untuk menghindari singularitas geometris yang melekat ketika mewakili dinamika tubuh kaku dengan sudut Euler atau kompleksitas memiliki persamaan diferensial ditambah dengan Direction Cosine Matrix (DCM). Dalam pendekatan yang disajikan baik model sikap quadrotor dan Proporsional non-linear kuadrat yang diusulkan ( P 2) algoritma kontrol telah diterapkan di ruang angka empat, tanpa transformasi dan perhitungan di ruang sudut Euler atau DCM. Sepanjang artikel, manfaat dari pendekatan novel yang diusulkan sedang dianalisis dan dibahas, sementara kemanjuran dari pengontrol berbasis angka empat yang disarankan sedang dievaluasi oleh hasil simulasi yang diperpanjang.

jgkim2020
sumber
2
Terima kasih atas makalah yang relevan @ jgkim2020. Tetapi bisakah Anda menguraikannya? Mungkin meringkas temuan kertas? (Tautan bisa basi setelah semua). Anda mungkin juga ingin melihat Bagaimana menjawab
Ben
1
Saya setuju dengan Ben - Ringkasan makalah akan bagus, karena kematian tautan biasanya terjadi setelah beberapa saat.
Greenonline
2

Kursus gratis MOOC ini, Selamat Datang di TUMx's AUTONAVx! Navigasi otonom untuk Robot Terbang , dapat membantu. Ini mencakup:

  • Teori belajar
  • Latihan pemrograman Quadcoptor yang berjalan pada stimulator dan perangkat keras yang sebenarnya
EEd
sumber
Tautan tidak berfungsi.
Teman Kim
Tautan berfungsi jika Anda masuk.
Teman Kim
Video 1.4 memiliki demo banyak quadrotor, melakukan tindakan luar biasa. Semoga Anda tertarik dengan topik ini.
EEd
Dapat memeriksa perangkat lunak FreeIMU, yang menyediakan a) data yang difusi dari beberapa sensor (laju gyro, kompas, akselerometer), memberikan data yang lebih stabil, lebih rendah dan akurat daripada hanya membaca data mentah dari chip b) menyediakan berbagai format output, termasuk pitch, roll and yaw, yang mungkin lebih mudah untuk divisualisasikan, dipahami, dan digunakan.
EEd
Terima kasih untuk bantuannya. Saya menggunakan MPU-9150 yang memiliki onboard DMP (sensor fusion) dari giroskop dan accelerometer. Sekering ini dengan magnetometer harus dilakukan secara manual.
Teman Kim