Robot line follower yang goyang-goyang di lintasan lurus paling sering bukan karena sensor atau motor rusak, melainkan karena nilai Kp, Kd, dan Ki belum pas. Cara tuning yang aman: set Ki dan Kd ke nol, naikkan Kp sampai robot mulai goyang, tambah Kd sampai goyangnya teredam, dan pakai Ki terakhir hanya kalau robot masih menarik ke satu sisi. Artikel ini menjelaskan peran masing-masing angka dengan bahasa sederhana, lengkap dengan contoh kode Arduino.
Kenapa robot goyang di lintasan lurus?
Banyak orang langsung curiga ke hardware: “sensornya rusak” atau “motornya nggak seimbang”. Akhirnya beli sensor baru, dipasang, dijalankan, dan robot tetap goyang. Capek dan buang uang.
Padahal robot line follower bekerja dengan loop sederhana: baca posisi garis, hitung seberapa jauh robot melenceng (error), lalu koreksi kecepatan motor kiri dan kanan. Kualitas koreksi itu ditentukan tiga angka di kodemu: Kp, Kd, dan Ki. Kalau angkanya meleset, robot terus mengoreksi berlebihan dan hasilnya goyang.
Kenalan dengan Kp, Kd, dan Ki
Kp: seberapa keras robot banting setir
Kp (proporsional) menentukan seberapa kuat koreksi saat robot melenceng dari garis. Makin jauh melenceng, makin keras bantingan setirnya.
- Kp terlalu kecil: robot lambat balik ke garis dan sering lepas di tikungan.
- Kp terlalu besar: robot kebablasan ke sisi seberang, dikoreksi lagi, kebablasan lagi, dan goyang terus.
Kd: rem untuk bantingan setir
Kd (derivatif) membaca seberapa cepat error berubah. Kalau robot menjauh dari garis dengan cepat, Kd meredam belokan sebelum robot kebablasan. Anggap saja Kd itu rem atau peredam kejut. Inilah angka yang paling sering terlupa, padahal paling ampuh untuk mengatasi goyang.
Ki: koreksi untuk kesalahan yang menumpuk
Ki (integral) mengakumulasi error dari waktu ke waktu. Gunanya untuk kasus robot yang selalu narik ke satu sisi, misalnya motor kiri sedikit lebih kencang dari kanan sehingga robot terus miring ke kanan. Kalau Ki terlalu besar, robot malah goyang pelan dan makin lebar. Karena itu untuk line follower biasa, Ki sering dibiarkan sangat kecil atau nol.
| Konstanta | Fungsi | Terlalu kecil | Terlalu besar |
|---|---|---|---|
| Kp | Kekuatan koreksi | Lambat kembali ke garis | Goyang dan kebablasan |
| Kd | Peredam | Goyang tidak teredam | Robot terlihat tersendat dan sensitif terhadap noise |
| Ki | Koreksi akumulasi | Robot tetap miring ke satu sisi | Goyang pelan yang makin lebar |
Contoh kode PID sederhana
Berikut kerangka sketch Arduino Uno dengan 5 sensor analog (A0 sampai A4) dan driver motor dua kanal (pin PWM 5 dan 6, pin arah 7 sampai 10). Anggap nilai sensor tinggi saat membaca garis; sesuaikan ambang dan pin dengan robotmu.
const int pinSensor[5] = {A0, A1, A2, A3, A4};
const long bobot[5] = {-2000, -1000, 0, 1000, 2000};
const int AMBANG = 500;
const int ENA = 5, IN1 = 7, IN2 = 8;
const int ENB = 6, IN3 = 9, IN4 = 10;
float Kp = 0.05;
float Ki = 0.0;
float Kd = 0.0;
const int KECEPATAN_DASAR = 150;
long errorSebelum = 0;
long integral = 0;
long posisiTerakhir = 0;
long bacaPosisi() {
long jumlah = 0;
long total = 0;
for (int i = 0; i < 5; i++) {
if (analogRead(pinSensor[i]) > AMBANG) {
jumlah += bobot[i];
total++;
}
}
if (total > 0) {
posisiTerakhir = jumlah / total;
}
return posisiTerakhir;
}
void setMotor(int kiri, int kanan) {
kiri = constrain(kiri, -255, 255);
kanan = constrain(kanan, -255, 255);
digitalWrite(IN1, kiri >= 0);
digitalWrite(IN2, kiri < 0);
digitalWrite(IN3, kanan >= 0);
digitalWrite(IN4, kanan < 0);
analogWrite(ENA, abs(kiri));
analogWrite(ENB, abs(kanan));
}
void setup() {
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void loop() {
long error = bacaPosisi();
integral = constrain(integral + error, -5000, 5000);
long turunan = error - errorSebelum;
errorSebelum = error;
float koreksi = Kp * error + Ki * integral + Kd * turunan;
setMotor(KECEPATAN_DASAR + koreksi, KECEPATAN_DASAR - koreksi);
}
Perhatikan bahwa batas nilai integral dibuat terbatas (constrain) supaya Ki tidak menumpuk tanpa kendali.
Urutan tuning yang aman untuk pemula
- Set Ki dan Kd ke 0. Kita mulai dari kondisi paling sederhana supaya perilaku robot mudah dibaca.
- Naikkan Kp sedikit demi sedikit sampai robot bisa mengikuti garis dan mulai goyang. Itu tanda Kp sudah mendekati batas atas. Turunkan sedikit dari titik itu.
- Tambah Kd pelan-pelan sampai goyangnya teredam dan robot meluncur halus di lintasan lurus.
- Pakai Ki terakhir, hanya kalau perlu. Kalau robot masih selalu miring ke satu sisi walau Kp dan Kd sudah pas, beri Ki yang sangat kecil.
- Uji di tikungan dan naikkan kecepatan dasar setelah lintasan lurus stabil, lalu sesuaikan lagi Kp dan Kd.
Aturan emasnya: satu percobaan, satu angka yang diubah, lalu catat hasilnya di buku atau spreadsheet. Dengan begitu kamu tahu persis perubahan mana yang membuat robot membaik atau malah kacau.
Kesalahan yang sering terjadi
- Mengubah tiga angka sekaligus. Hasilnya kamu nggak tahu mana yang bikin robot berubah perilaku.
- Langsung ganti sensor atau motor padahal PID belum pernah dituning dengan urutan yang benar.
- Melupakan Kd. Kp besar tanpa peredam hampir pasti membuat robot goyang.
- Ki terlalu besar sejak awal. Akumulasi error membuat robot goyang pelan yang makin lebar.
- Tuning saat baterai hampir habis. Tegangan turun membuat kecepatan motor berubah, jadi angka PID yang cocok pun ikut bergeser. Pakai baterai yang kondisinya sama setiap percobaan.
- Nilai ambang sensor belum dikalibrasi. Pembacaan posisi yang salah akan membuat PID sebagus apa pun tetap tidak akurat. Kalibrasi sensor dulu di lintasan yang sama dengan lokasi lomba.
Komponen yang dibutuhkan
Untuk latihan tuning, kamu butuh robot line follower yang sudah lengkap dengan sensor garis, driver motor, dan board kontrol. Kalau belum punya, Ichiduino Pro Robot Line Follower Tracer Program pc Laptop FastIchiduino Pro Line Follower Tracer Program PC Laptop bisa jadi pilihan karena programnya bisa diatur dari PC atau laptop, jadi mengganti nilai Kp, Kd, dan Ki lebih cepat saat sesi tuning. Siapkan juga lintasan latihan dengan garis lurus dan tikungan, baterai cadangan yang terisi penuh, serta buku catatan untuk mencatat tiap percobaan.
Kesimpulan
Robot yang goyang jarang butuh sensor baru. Biasanya yang dibutuhkan hanya Kd yang pas dan tim yang sabar mengubah satu angka per percobaan. Mulai dari Ki dan Kd nol, naikkan Kp sampai goyang, tambah Kd untuk meredam, dan Ki paling akhir. Coba urutan ini di lintasan latihanmu sebelum lomba, catat hasilnya, dan kamu akan terkejut betapa jauh robotmu bisa membaik tanpa beli apa pun 🏁
Pertanyaan yang Sering Diajukan
Apa fungsi Kp, Ki, dan Kd pada robot line follower?
Kp menentukan seberapa keras robot mengoreksi saat melenceng dari garis, Kd meredam koreksi supaya tidak kebablasan, dan Ki mengoreksi kecenderungan robot miring ke satu sisi dari waktu ke waktu.
Kenapa line follower saya goyang padahal sensor dan motor normal?
Penyebab paling umum adalah Kp terlalu besar tanpa Kd sebagai peredam, atau beberapa konstanta PID diubah sekaligus sehingga sulit dicari mana yang bermasalah.
Mulai tuning PID dari angka yang mana dulu?
Set Ki dan Kd ke nol, lalu naikkan Kp sedikit demi sedikit sampai robot mulai goyang. Setelah itu tambah Kd sampai goyang teredam, dan Ki terakhir hanya kalau perlu.
Apakah line follower selalu butuh Ki?
Tidak. Banyak line follower sudah berjalan baik hanya dengan Kp dan Kd. Ki berguna kalau robot terus menarik ke satu sisi, misalnya karena kecepatan motor kiri dan kanan tidak seimbang.
Komponen di Ichibot Store
Cek harga dan stok terbaru langsung di halaman produknya. Butuh bantuan milih komponen? Tanya kami lewat chat di toko.
