Bagaimana saya bisa secara otomatis menyesuaikan parameter PID dengan cepat?


15

Saya memiliki sistem servo sederhana yang menggunakan kontroler PID diimplementasikan dalam MCU untuk melakukan umpan balik. Namun, sifat-sifat sistem berubah secara dinamis, sehingga parameter PID tidak pernah dapat disetel untuk semua keadaan.

Robot saya adalah lengan yang ringan dengan motor listrik back-drivable, mirip dengan yang ini:

Lengan robot ringan

Lengan melakukan beberapa tugas, termasuk mengambil beban berat, mendorong dan menarik benda di atas meja. Setiap tugas ini memerlukan parameter penyetelan PID yang berbeda yang tidak dapat saya prediksi dengan mudah.

Apa yang saya benar-benar sukai adalah untuk beberapa fungsi level yang lebih tinggi yang dapat dengan hati-hati menyesuaikan parameter sebagai respons terhadap perilaku lengan. Sebagai contoh, jika ia mengetahui bahwa lengan berosilasi, ia mungkin mengurangi P dan meningkatkan D. Atau jika ia menyadari bahwa lengan itu tidak mencapai targetnya, itu mungkin akan meningkatkan I.

Apakah ada algoritma seperti itu? Saya akan senang bahkan jika algoritma tidak menyempurnakan parameter dengan segera. EG arm dapat berosilasi beberapa kali sebelum parameter disesuaikan dengan nilai baru mereka.

Jawaban:


10

Seorang rekan kerja dan saya pernah menerapkan algoritma simpleks untuk penyetelan parameter PID on-the-fly dari loop kontrol saat ini untuk motor. Pada dasarnya algoritma akan memodifikasi satu parameter pada satu waktu dan kemudian mengumpulkan data pada beberapa parameter umpan balik yang merupakan ukuran kebaikan kami. Persentase kami adalah penyimpangan dari setpoint target saat ini. Berdasarkan apakah parameter umpan balik menjadi lebih baik atau lebih buruk, parameter berikutnya dimodifikasi sesuai.

Atau, di Wikipedia berbicara:

Biarkan program linier diberikan oleh tablo kanonik. Algoritma simpleks dihasilkan dengan melakukan operasi pivot berturut-turut yang masing-masing memberikan solusi layak dasar yang ditingkatkan; pilihan elemen pivot pada setiap langkah sangat ditentukan oleh persyaratan bahwa pivot ini memang meningkatkan solusi.

Secara teknis kami menggunakan metode Nelder-Mead yang merupakan jenis simpleks. Itu juga dapat digambarkan sebagai algoritma mendaki bukit juga jika Anda melihat bagaimana ia memodifikasi parameter input saat mencari parameter output yang optimal.

Animasi Nelder-Mead

Nedler-Mead bekerja paling baik dalam kasus kami karena dapat mengejar setpoint. Ini penting karena setpoint target kami saat ini berubah ketika permintaan torsi meningkat.

teknik Nelder – Mead adalah metode pencarian heuristik yang dapat menyatu ke titik-titik non-stasioner


dapatkah Anda menautkan pendekatan dan hasil Anda jika tersedia?
SPRajagopal

@ Srpagagopal Maaf tapi tidak. Saya tidak lagi bekerja untuk perusahaan itu dan tidak memiliki akses ke data mana pun.
embedded.kyle

4

Pendekatan yang baik untuk masalah seperti itu disebut kontrol adaptif. Singkatnya itu adalah metodologi kontrol yang menganggap model diketahui tetapi parameter model (massa, inersia, dll.) Tidak. Tugasnya adalah memperkirakan parameter yang tidak diketahui. Pengantar singkat dapat ditemukan di wikipedia . Teks Robotika: Pemodelan, Perencanaan dan Kontrol oleh Siciliano et al. tutupi topik dengan lebih teliti.

Edit sebagai respons terhadap permintaan @Rocketmagnets:

Singkatnya, Anda harus memiliki model matematika dari sistem Anda, yaitu persamaan yang menggambarkan bagaimana sistem Anda berkembang seiring waktu ketika dipaksakan atau sebaliknya, tetapi Anda tidak perlu mengetahui parameter dinamis seperti massa berbagai komponen, kelembamannya, dll. .. Ini adalah tugas kontroler adaptif untuk memperkirakan parameter ini. Anda harus memberikannya perkiraan awal untuk masing-masing parameter yang tidak diketahui. Kemudian ketika sistem berjalan menggunakan sinyal kontrol, sinyal output, dan metode seperti regresi linier atau gradient descent untuk memperbarui nilai parameter yang tidak diketahui. Seiring waktu parameter akan konvergen ke nilai yang akan menghasilkan kondisi mapan meskipun mungkin tidak cocok dengan parameter nyata, yaitu mungkin mendapatkan massa salah, tetapi nilai masih akan berfungsi.

Dari sini saya akan menyarankan merujuk pada teks yang membahas metode ini. Saya hanya memperhatikan misalnya bahwa Dr. Marc Bodson menawarkan salinan teksnya Adaptive Control: Stability, Robustness, and Convergence dalam bentuk PDF di situs webnya .


Bisakah Anda memberikan penjelasan tentang metode ini?
Rocketmagnet

1
Saya ragu saya bisa melakukannya karena saya baru tahu metode ini. Terlebih lagi itu bukan metode tunggal tetapi kumpulan teknik yang telah dikembangkan selama 50 tahun terakhir. Namun saya akan mengedit tanggapan saya untuk menguraikan lebih banyak.
DaemonMaker

2

Proses yang Anda gambarkan dikenal sebagai PID adaptif.

Sepertinya agak berlebihan. Saya telah menemukan PID cukup kuat ketika berhadapan dengan gangguan eksternal dan tugas-tugas yang Anda uraikan tampaknya tidak di luar kemampuan satu set keuntungan.


Ini lebih dari sekadar gangguan eksternal. Ini adalah perubahan karakteristik sendi. Menggandakan massa robot misalnya mengarah ke overshoot.
Rocketmagnet
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.