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