Robotika · pelajaran 16
PID untuk mengikuti garis
1. Kalibrasi
Pelajaran 14 menunjukkan bahwa setiap sensor membaca putih dan hitam dengan angka yang sedikit berbeda. Sebelum mulai, preset PID memutar robot di tempat ±45° (sudutnya diukur dengan encoder roda), sambil mencatat nilai terkecil dan terbesar tiap sensor. Setelah itu setiap bacaan bisa dinormalkan:
2. Posisi garis
Dengan 8 sensor berjarak 12 mm, rata-rata berbobot memberi posisi garis dalam milimeter, bahkan di antara dua sensor:
adalah posisi sensor ke-, dan tanda + berarti garis ada di kiri. Tab Sensor menghitung angka yang sama.
3. PID
Kini robot tahu seberapa jauh ia melenceng, jadi beloknya bisa sebanding:
belok = KP * p + KD * turunan
motor(DASAR - belok, DASAR + belok)
- P (
KP): makin jauh garis dari tengah, makin tajam beloknya. - D (
KD): melihat seberapa cepatpberubah, lalu meredam ayunan sebelum robot kebablasan. Bacaan sensor berderau, jadi turunannya dihaluskan dulu. - I tidak dipakai di sini. Garis tidak punya “gaya” tetap yang perlu dilawan, jadi bagian integral jarang dibutuhkan pada pengikut garis.
Jalankan PID dan bandingkan dengan bang-bang: geraknya mulus, dan kecepatan dasarnya bisa jauh lebih tinggi.
Coba
KD = 0: tanpa peredam, robot berayun makin lebar sampai keluar jalur.KP = 80: terlalu besar, robot bergetar kiri-kanan dan sesekali lepas dari garis.DASAR = 0.95: hampir kecepatan penuh, dan di oval ini robot masih sanggup. Ban baru selip kalau gaya ke samping melebihi cengkeramannya; tikungan oval (r = 35 cm) cukup landai, tetapi tikungan 15 cm di lintasan lomba tidak.DT_MS = 30: dengan loop yang lambat, nilai PID yang tadinya bagus membuat robot berayun, selip dan keluar jalur.
Misi
Satu putaran oval di bawah 7 detik dengan main.py.
Selanjutnya: Mesin keadaan: sudut, celah dan finis · Semua pelajaran