Fuzzy Logic Untuk Navigasi Robot (Bagian I)

Seperti apa yang pernah diucapkan almarhum buyut :D :

The only source of knowledge is experience

Albert Einstein

Saya ingat bagaimana saya membuat robot pertama kali dengan pengetahuan nol dalam bidang robotika dan juga elektronik. Meskipun banyak buku, artikel dan tutorial yang membahas bagaimana membuat robot dari awal, rasanya hanya akan membuat bingung dengan segudang referensi tanpa mengotori tangan dengan solder dan coding. Akhirnya saya lupakan referensi dan mengingat sebagaian referensi yang masih menyangkut di otak. Ini saatnya memakai otak untuk sedikit berpikir dan berimajinasi. Jadi teringat pesan buyut :D :

Any man who reads too much and uses his own brain too little falls into lazy habits of thinking.

Albert Einsten.

Berhubung robot yang dibuat hanya sebatas tugas lab, maka saya tidak memprioritaskan untuk membuatnya istimewa. Cukup bekerja sesuai deskripsi yang diminta. Apabila saya mengingat robot itu, saya tertawa membayangkan baris program yang sangat sederhana sekali, tapi beberapa orang melihatnya cukup serius :D . Mungkin ini juga sering terjadi apabila Anda belajar bahasa pemrograman dan sebulan kemudian melihat program Hello World. Tadinya saya berniat menaruh skematik beserta program di tulisan ini, tapi filenya entah di mana.. :D . Robot yang saya buat ini adalah light seeking, hanya menggunakan 3 LDR. Kalau tidak salah ada koran yang memuatnya (he2.. narsis).

Robot kedua yang saya buat dibuat untuk mengikuti kontes robot line follower di kampus, kontes perdana.
Masih dengan pengetahuan yang sangat minim dan agak sotoy (karena menganggap enteng) dan masih acuh terhadap sistem kontrol, maka yang terbesit saat itu hanya teknik kontrol ON-OFF. Teknik kontrol seperti ini masih bisa di terapkan di arena tak bersimpang, namun arena yang digunakan banyak terdapat simpangan, sehingga dibutuhkan teknik kontrol
yang dapat mentolelir gain motor. Hal yang pertama di lakukan adalah melakukan pendataan kondisi sensor pada garis dan menentukan aksi terhadap kondisi tersebut. Pada robot tersebut digunakan 5 sensor dengan susunan sebagai berikut :

(4)___(3)_(2)_(1)___(0)

Angka tersebut menunjukkan urutan pin pada port mikrokontroller. Untuk nilai binary dengan 4 variabel (sensor) memliki kemunkinan nilai unik (kondisi sensor) sebanyak 2^4 = 16. Tidak semua kondisi digunakan. Adapun kondisi yang perlu diprioritaskan untuk mendapatkan aksi adalah :

—————————————————-
4 | 3 | 2 | 1 | 0 | Aksi
—————————————————-
x | 0 | 1 | 0 | x | Maju
x | 1 | 1 | 0 | x | Serong kiri
x | 1 | 0 | 0 | x | banting kiri
x | 0 | 1 | 1 | x | serong kanan
x | 0 | 0 | 1 | x | banting kanan
x |1 | 1 | 1 | x | Maju
——————————————————
1 menunjukkan sensor berada pada garis.
Pengaturan jarak antar sensor disini memungkinkan 2 atau 3 sensor mengenai garis. Dengan mengabaikan sensor paling kiri (4) dan kanan (0) dan menggunakan aksi sesuai tabel, robot saya dapat berjalan cukup smooth mengikuti garis lurus. Bila terdapat jalur berupa huruf L, sensor (0) dan (4) bisa membantu. Kontrol yang digunakan hanya proportional
saja, yaitu pemberian PWM motor. Apabila diinginkan pergerakan yang lebih smooth bisa menambah kontrol derivative. Mendapatkan nilai konstanta proportional yang tepat adalah melalui test berulang kali. Ini seperti melakukan mapping input sensor terhadap output PWM motor. Nilai input disini sangat sederhana jadi tidak perlu menggunakan fuzzy logic. Beberapa orang menyebutnya dengan table lookup. Oia ini video robotnya, cupu abis :

Sialnya nih robot dah di gondol oleh orang yang tidak tahu berterima kasih tidak bertanggung jawab, tidak menghargai karya orang lain, menipu dosen (dengan mengklaim robot saya sebagai robot buatannya). Dan parahnya dia adalah seorang wanita yang seharusnya menjadi pamong bagi mahasiswa/i di filkom (ketua BEF). Astagfirullah,
mudah-mudahan Allah ta’ala memaafkannya. Saya sendiri sudah mengikhlaskannya (mudah2an). Apabila ada yang tertarik ini source codenya. Saya bukan programmer sekelas Kel, jadi masih banyak menggunakan delay. Rutin utama yang perlu diperhatikan adalah rutin scan :scan:
mov a,p1
anl a,#0eh
jz cekKiKamov p2, #66h
mundur: ;serkan / serkir / maju, 0,6,c,e
mov B, A
movc A,@A+dptr
mov pwmKi, A
mov A, B
inc A
movc A,@A+dptr
mov pwmKa, A
ret

mundur_:mov p2, #3Ch
sjmp mundur

cekKiKa:jnb sKiLuar,_kanan
_kiri: mov pwmKi,#40h
mov pwmKa,#50h
mov p2, #36h
ret

_kanan: jnb sKaLuar,mundur_
mov pwmKi,#50h
mov pwmKa,#40h
mov p2, #6Ch
ret

Pemanggilan rutin scan secara otomatis akan memandu robot untuk mengikuti track putih tanpa mempedulikan simpangan. Pertama-tama kontroler akan membaca kondisi sensor saat itu nilai sensor akan menentukan alamat pengambilan data PWM motor. Penggunaan instruksi ‘anl a,#0eh’ akan membaca 3 sensor tengah (sesuai dengan susunan sensor yang saya jelaskan di atas). Instruksi ‘jz cekKiKa’ akan mengecek nilai accumulator, apabila ’0′ maka sensor paling ujung (0 & 4) akan dicek. Jika ada salah satu dari sensor (0) atau (4) mengenai track putih (memberikan logik ’1′) maka robot akan spin ke arah sensor bernilai ’1′ tersebut. Ini berguna untuk track yang memiliki belokan berbentuk huruf L. Jika 3 sensor tengah memberikan nilai ’0′ dan tidak ada sensor (0) dan (4) yang memberikan logik ’1′ maka robot akan mundur. Ini kurang efektif, jika saya berpikir sekarang, untuk digunakan sebenarnya. Sayangnya, rutin ini hanya bisa diimplemetasikan pada jalur lurus. Ada paper menarik, Penggunaan Kombinasi Sensor Array Depan dan Belakang pada Robot Pengikut Garis (Kasus Robot Otomatis ASKAF-i), yang menggunakan tambahan sensor belakang dalam kombinasi sensor Array. Jika Anda menginginkan navigasi line tracking yang lebih robust, paper ini dapat dijadikan acuan. Jika jalur yang digunakan tidak lurus, terdapat jalur melengkung, ada baiknya melihat robot ini.
Robot yang saya kerjakan saat ini (sudah selesai seminggu yang lalu) menggunakan fuzzy logic untuk navigasinya, baik untuk wall following (mengikuti dinding) dan obstacle avoidance (menghindari dinding). Karena menggunakan sensor ultrasonic, data untuk satu sensor tidak lagi berupa biner. Biner dalam bahasa pemrograman tingkat tinggi dapat di padankan sama halnya dengan tipe data boolean (true atau false). Engineer melihatnya sebagai level tegangan, apabila bekerja dengan komponen logika, yang mempresentasikan 0 atau 5 V. Tapi tidak absolut 0 atau 5 (tergantung spesifikasi komponen tersebut). Misal jika sebuah sensor memberi masukan 5 V, program melihatnya sebagai ’1′ atau true, yang mengindikasikan sensor menangkap adanya objek yang berdekatan. Bila tidak objek yang menghalangi sensor dalam batas toleransinya, maka akan dihasilkan tegangan 0 V, dimana program merepresentasikan nya sebagai ’0′ atau false. Secara sederhana program dapat di tulis seperti ini :

if (sensor==1) {
aksi(1); //aksi yang dilakukan sistem bila ada objek
} else {
aksi(0); //aksi yang dilakukan sistem bila tidak ada objek
}

Dalam teknik kontrol, ini termasuk kontrol ON-OFF. Bagaimana bila sistem yang kita inginkan dapat melakukan aksi yang berbeda untuk jarak yang sangat jauh, jarak jauh, sedang, cukup dekat dan dekat. Mungkin ini saatnya menggunakan Fuzzy logic. Teori fuzzy logic dipropose oleh seorang ahli matematika bernama Lotfi Zadeh pada tahun 1973. Sebelumnya Zadeh memperkenalkan teori fuzzy set pada tahun 1965.

Bersambung … (Ntar lagi ya lanjutinnya, banyak image nya soalnya bagian ke-II)

29 thoughts on “Fuzzy Logic Untuk Navigasi Robot (Bagian I)

  1. eh sori tadi nyasar ke yg lcd
    Mas aku mo nanya kok aku waktu hbs nge klik paper menarik yang di link diatas aku cuma bisa ngliat abstraknya aja
    jadi gimana donk kalo mo ngliat fulltextnya
    apa mas punya
    kirimin donk
    makasih ya….

  2. @juno
    Register dulu mas, bisa di donlod klo dah login. Ntar klo masih gak bisa ta kirimi papernya japri

  3. Oh ya mas aku mohon bantuannya donk. aku dah semester akhir mau ngambil TA mobile robot yang pengendalinya pake fuzzy control. Tapi aku dah cari referensi tentang applikasi fuzzy dalam mikrokontroler gak nemu2 juga.
    Bisa gak mas gue dikasih tutorial mengenai aplikasi fuzzy pada mikrokontroler sekalian source codenya biar aku bisa paham.
    Terimakasih mas atas kesempatannya.
    Aku tunggu loh.

  4. Ass…
    mas aku bgg dengan kontrol derivativnya, kalo propnya kan pwm, tapi klo derivativnya apa?
    oh ya aku minta sourcecode lengkapnya robot linefollowermu donk, abis link sourcecodenya ga bisa. matur nuwun. Wass…

  5. Assalamualaikum…

    Bang…. Saya sangat tertarik dengan tulisan anda tentang fuzzy logic untuk implementasi navigasi robot…
    Nah lha kok kebetulan, saya lagi pusing soalnya harus buat robot
    pemadam api, dimana si robot harus menyisir dinding untuk mendeteksi ruangan2… nah untuk menghindari dinding saya menggunakan sensor ultrasonic (pastinya Abang paham donk)…
    karena sulitnya medan yang akan dijalani robot, sekarang saya
    dituntut buat program jitu dengan bahasa C++ AVR menggunakan teori fuzzy logic…

    sungguh saya berharap sekali kiranya abang mau membantu, ju2r saja pengetahuan saya tentang fuzzy nol putul (gak iso blas), tanya2 ma dosen tambah pusing… mudah2an abang mau membantu jelasin lebih detail cara ambil data learnig (sample data), trus bikin aturan sensor dan pwm motor (aq pake vexta).. syukur2 kalo Abang memberi contoh program yang mungkin prnh Abang buat…

    matur nuwun

  6. @Aji Seto
    Saya waktu itu malah mengambil referensi dari robotnya anak PENS yg diikutkan KRCI (saya dapat dari dosen saya yang ikut workshop robotika di PENS). Saya menggunakan 6 PING untuk sensor jaraknya. Saya menggunakan 2 mikon AVR, satu (slave) mikon terhubung ke 6 PING tersebut dan mengirimkan secara UART data jarak ke mikon satunya (master). Rule FL nya ada di mikon master. Akan saya jelaskan di post mendatang mungkin :)

  7. bang tolong tunjukin contoh syntak memprogam ATMEGA8535 dengan baskom AVR bwt line follower!!!!!!!!!!!!

    soalnya saya coba kondisi if then g bsa!!!

  8. Ass.bang boleh mnta tolong jelasin tentang FL, terutama u/ aplikasi pada mikro.kalau bisa sekalian pakai contoh program.

  9. Ass…
    artikelnya menarik bgt….bang kita baru pemula ada ga bahan buat referensi belajar fuzzy logic yang mudah di mengerti(bhs.indonesia)………..thk

  10. mau dong kang, paper+file workshop dari pens-nya..

    kirim ke herry_winandi (at) yahoo.com ya

    thx..

  11. bos… kontrol pede nya tolong dijembrengin lagi bos… coz aku pake fuzzy logic nggak bisa nemuin setingan pas untuk meluncur klo pake kecepatan tinggi,klo baterai mo habis,baru fuzzy logicku mau dapetin tu garis ntuk meluncur & ndak goyang &dak gedhek2. ntuk saat ini ku baru mo coba ngasih inputan variabel untuk seting lewat push botton pada linetracerku & aku pake lcd juga ntuk persiapan
    klo fuzzy logic dah clear,rencana mo coba pe de nya from bos gedhex. so tolong dibantuin ya bos ge dhex.trims sebelumnya..

  12. artikel nya ok juga bos !
    adalagi buat artikel fuzzy nya ???
    buat tugas dosen mat.diskrit nih .
    thanx berat ya

  13. kak bleh minta tlong gak…..

    aq lg bingung ni…….

    kakak tau gak cara menyelesaikan bascom robot pemotong rumput,,,,,,

    kak,,,,
    tlong aq yaaaaaaaaaaaaa,,,,,

    please kaakk,,,

  14. atau memprogram ATMega8535 dengan bascom,
    untuk pemograman robot pemotong rumput…….

    kkaaaaaakkkk baik dehhhhhhh……..

    please,,,,,,,,,,

  15. Koq pake bahasa assembly sih… pake bahasa C aja gmn? biar mudah dipahami…
    hehehe….
    newbie ni…

  16. lengkapin donk ama image image and penjelasan program serta fungsi yang detail

  17. sebelumnya salam kenal.
    nama saya reino
    saya baru belajar pemrograman..
    saya mau tanya,bagaimana mengelola data sensor ultrasonik devantech srf04 dari bilangan mentahan menjadi data jarak dengan program baskom..
    saya menggunakan mikro atmega16.
    sebelumnya saya ucapkan trimakasih dan mohon bantuannya

  18. mas gmna caranya untuk mencoding defantech srf 04 untuk bascom
    aq memakai AT Mega 8535

    tolong kirim source code ya ke emailku
    please…………..

    thanx

  19. Salam kenal bwt semuanya…
    Wah topiknya pas bgd sama tugas akhir saya nih..robot pake fuzzy…saya tunggu tulisan lengkapnya y mas..semoga bisa ngebantu newbie bwt bikin robot fuzzy…oia mas klo ad bahan tentang robot fuzzy(artikel, schematic, n source code)..tlg kirim ke email y mas..(baihaqi.r@gmail.com or bucks_q@yahoo.co.id)..

    best regards

  20. mas ajarin buat wall folower dum..progamnya gt hee..kalo buat coba2 pake 1 ap 2 sensor cukup gak..byar bisa ngikutin tembok

  21. Aku punya modul SRF02 ultrasonic range finder, kalau ada yang perlu, aku jual dng harga miring, no hp. 0888.0276.7057, email penyimpan73@yahoo.com, juga ada modu TRF 2,4G, SHT 11, IC ISD 25120.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>