Robot Line Follower dengan Kendali PID-Fuzzy
Ane mau… sharing lagi nih ma temen2 tentang LF… mungkin ada yg bosen kok isi blog ini kebanyakan robot LF aja heheheeehe 😀 Ya begitulah kondisinya temen2 ane maniak banget dengan ni robot LF makanya ane suka ber-eksperiment tentang bagaimana menerapkan berbagai kendali yg tepat untuk diterapkan di robot LF ini supaya pergerakannya itu halus cepat dan responsif. Yups ane dah menerapkan kendali PID pada ni robot dan saat ini ane mencobanya dengan menggabungkannya dengan kendali Fuzzy. Ide itu berawal dari setelah ane dapat matakuliah sistem pengaturan cerdas di Teknik Elektro ITS. Matakuliah (walaupun cuma 2 sks) itu saat ane senangi temen2… dimana dosennya mantep banget (perfect) jelasinnya (terimakasih banyak ya pak) tidak hanya teori tapi praktek juga… so ane terrapin deh di robot LF ane :D. Nah oleh sebab itu ane coba share ilmu yg sedikit ini kepada temen2 semua… semoga bermanfaat dan bisa dijadikan referensiya… ^_^
Nah sebelum ane jelasin tentang logika Fuzzy-nya ane kenalkan dahulu ye ma robot LF ane yang tersisa, maksudnya yang kondisinya masih FIT alias sehat (masih bisa nyala). Ni dia foto-fotonya:
Temen2 semua dah liatkan robot LF ane yang satu ini… Jelekkan (kurang estetika)… hehehe 😀 itu lah robot ane.. desain mekanik ala kadarnya… menggunakan acrylic sisa dan PCB bolong sebagai kerangka robotnya… sensornya pun langsung ditanam di PCB bolong gak pake desain layout langsung solder aja praktis bukan… komposisi gearbox-nya pake kanibal maenan tank terus ane tempel ke bodi robotnya pake Lem Tembak… itulah senjata ane gan ^_^ walaupun mekanik robotnya jelek, setelah diberi kontroler yang tepat jalannya bisa halus lo hehehe 😀 ini dia salah satu aksi robotnya pada kasus Line Maze Robot.
Nah ni dia spesifikasi lengkap dari robot LF ane :
- Mikrokontroler AVR = ATMega32
- Sensor = LED Super Bright Putih – Photo Dioda (8 di depan, 3 di sayap kiri, 3 di sayap kanan dan 1 di tengah belakang sebagai kondisi NOS… total pake 15 sensor dengan Konfigurasi ADC-Multiplekser)
- Motor DC = DVD 6.0 V
- Gear = Kanibal dari maenan Tank
- Battery = LiPo 850mAH / 11,1V
- Driver Motor = L293d
- Dimensi = panjang; 18 cm × lebar; 15 cm
- Bahasa Pemrograman = Bahasa C dengan compiler CodeVision AVR
Selanjutnya untuk penjelasan logika Fuzzy ini temen2 bisa googling di mbah google ato baca sedikit penjelasnya disini ato sedot ni paper. Berikut ini aturan yang harus temen2 fahami tentang logika Fuzzy yang ane uraikan sebagai berikut (bila ada kesalahan mohon ane dikoreksi ya gan ^_^ ).
Tahap Pemodelan dalam logika Fuzzy:
Nah bila kita terapkan dalam pengendalian proses dapat diterapkan seperti blok di bawah ini:
Dari uraian blok diatas dapat kita fahami bahwa didalam logika Fuzzy terdapat tiga hal terpenting yang harus temen2 fahami diataranya:
- Fuzzifikasi adalah proses untuk mengubah variabel non fuzzy (variabel numerik) menjadi variabel fuzzy (variabel linguistik).
- Inferencing (Ruled Based) , pada umumnya aturan-aturan fuzzy dinyatakan dalam bentuk “IF……THEN” yang merupakan inti dari relasi fuzzy.
- Defuzifikasi adalah proses pengubahan data-data fuzzy tersebut menjadi data-data numerik yang dapat dikirimkan ke peralatan pengendalian.
Oke deh… segitu aja ya penjelasan dari ane tentang teori logika Fuzzy-nya… selanjutnya ane jelasin tentang cara pengaplikasiannya pada robot LF… tapi logika Fuzzy yang ane terrapin pada robot LF ini tidak murni hanya dengan logika Fuzzy saja tapi digabungkan (hybrid) dengan kendali PID… so judulnya yang lebih tepat adalah Robot Line Follower dengan Kendali Hybrid PID-Fuzzy.
Diagram Blok Hybrid Kendali PID – Fuzzy
Nah untuk penjelasan Kendali PID-nya bisa temen2 lihat postingan ane yg lampau disini. Dan untuk penjelasan logika Fuzzy-nya ialah sebagai berikut:
Perhatikan step berikut temen2 :
Aplikasi pemrograman logika fuzzy ini ane terapkan dalam bahasa C (codevisonAVR), ini dia potongan program untuk penentuan membership pada proses penentuan crisp input dalam proses fuzzikasi-nya. Ane menggunakan 7 membership dalam proses cris input pada Fuzzifikasi error dan derror-nya, dengan fungsi keanggotaan segitiga (triangle membership function). Berikut ini sample code fuzzifikasi-nya:
Proses fuzzifikasi, fungsi keanggotaanya ane aktifkan dengan fungsi keanggotaan segitiga yang selanjutnya masuk ke proses Rule Base Evaluationnya. Proses Rule Evaluation-nya mengacu pada tabel MacVicar Whelan dengan menggunakan Mamdani Inference Rule, berikut ini contoh tabee proses rule evaluationya menggunakan teknik dari MacVicar Whelan dengan menggunakan 5 membership error dan derror. Untuk case pada robot ini, ane gunakan 7 membership error dan derror.
Nah berikut ini sample codenya untuk Mamdani Inference Rule using MacVicar Whelan Method:
Dari hasil rule evaluasi ini kita dapatkan hasil kontrol logika fuzzy-nya yang selanjutnya kita defuzzifikasi yaitu dengan banyak cara (bisa lihat disini sebagai reference) diantaranya yang paling umum adalah dengan teknik Center of Gravity (COG). Nah untuk case robot ini, ane gunakan teknik dari Sugeno menggunakan Weighted Average (WA). Berikut ini sample code defuzzifikasi-nya:
Dari proses defuzzifikasi ini baru lah kita dapatkan sinyal kontrol logika Fuzzy yang akan kita terapkan pada robot LF nantinya. Nah selajutnya proses pemberian nilai PWM motor robot LF ane adalah gabungan (hybrid) antara kendali PID dengan logika Fuzzy. Berikut sample code untuk ditransfer ke aktuator (driver motor robot) dalam bentuk PWM:
Dan ini dia video robot LF ane dengan kendali Kendali PID – Fuzzy…
Semoga informasi ini bermanfaat
komentar tulisan