Robotika · pelajaran 20
PID bertingkat: posisi, sikap, laju
Empat lapis, dari lambat ke cepat
Firmware Crazyflie tidak punya satu PID besar. Ia punya tumpukan PID, setiap lapis memberi setpoint untuk lapis di bawahnya:
| lapis | masuk | keluar | frekuensi | parameter |
|---|---|---|---|---|
| posisi | posisi tujuan | kecepatan tujuan | 100 Hz | posCtlPid.* |
| kecepatan | kecepatan tujuan | sudut roll/pitch + thrust | 100 Hz | velCtlPid.* |
| sikap | sudut tujuan | laju putar tujuan (°/s) | 500 Hz | pid_attitude.* |
| laju | laju putar tujuan | torsi R, P, Y → mixer | 500 Hz | pid_rate.* |
Lapis terdalam harus paling cepat. Laju putar berubah dalam hitungan milidetik, sedangkan posisi berubah dalam hitungan detik. Lihat Jalur perintah di bawah 3D: setiap kotak adalah satu lapis, lengkap dengan angkanya saat ini.
Tab Sikap
- Horizon buatan: sudut menurut drone sendiri (perkiraan dari sensor).
- Grafik: setpoint (oranye putus-putus) vs sudut terukur (biru), 4 detik terakhir.
- Uji langkah roll 10°: saat melayang, lapis posisi dilepas sebentar, lalu drone diperintah berguling dari 0° ke 10° selama satu detik. Hasilnya diukur dari tiga angka:
- waktu naik (10% → 90%): seberapa cepat;
- overshoot: seberapa jauh kebablasan melewati 10°;
- sisa galat setelah tenang.
Setel
Nilai bawaan pid_attitude.roll_kp = 6 sengaja lembut: terbang jadi halus, cocok untuk kamera dan pemula. Jalankan uji langkah: waktu naiknya ±380 ms, terlalu lambat untuk balap.
Ubah pid_attitude.roll_kp (di tab Sikap, tab Parameter, atau cf param set pid_attitude.roll_kp 15), lalu uji lagi:
- Terlalu kecil: lamban, drone terasa malas mengikuti perintah.
- Pas: cepat, tanpa ayunan.
- Terlalu besar (coba 60): lapis sikap meminta laju putar lebih cepat daripada yang sanggup dikejar lapis laju dan motor. Drone kebablasan lalu berayun.
Lapis dalam juga bisa dicoba: pid_rate.roll_kp mengatur seberapa keras motor bereaksi terhadap laju putar yang meleset. Dengan nilai sangat kecil (misalnya 10), sudutnya mulai kebablasan.
Misi
Setel pid_attitude.roll_kp sampai Uji langkah roll lulus: naik < 200 ms, overshoot < 15%, sisa galat < 1°.
Selanjutnya: Sensor dan estimasi: drone yang tahu posisinya · Semua pelajaran