21
LAPORAN ROBOTIK RobotinoDisusun Oleh : Benua Eka Saputra (1221022) Dosen Pembimbing : Wahyu Setyo Pambudi, ST., MT PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS INTERNASIONAL BATAM 2014

Simple ROBOTINO

Embed Size (px)

DESCRIPTION

About basic robotino

Citation preview

  • LAPORAN

    ROBOTIK

    Robotino

    Disusun Oleh :

    Benua Eka Saputra (1221022)

    Dosen Pembimbing :

    Wahyu Setyo Pambudi, ST., MT

    PROGRAM STUDI TEKNIK ELEKTRO

    FAKULTAS TEKNOLOGI INDUSTRI

    UNIVERSITAS INTERNASIONAL BATAM

    2014

  • BAB I

    LANDASAN TEORI

    Robotino

    Robotino merupakan salah satu robot yang menggunakan metode jalan dengan

    omnidirectional. Berbeda dengan robot lain seperti line follower, robotino ini memiliki

    spesifikasi tinggi sebagai robot. Sebagai contoh dia dilengkapi dengan ban omni yang

    memungkinkan dia untuk bergerak ke berbagai macam arah, 9 sensor jarak infrared yang

    memungkinkan robot untuk bergerak dengan lebih sensitive, dan sensor optik yang dapat

    mendeteksi alumunium strip maupun garis berwarna. Robotino juga dilengkapi dengan

    webcam yang memungkinkan kita melihat dari sudut pandang robot menggunakan PC

    Omnidirectional Wheel

    Merupakan sistem yang berarti bebas bergerak bebas kearah manapun. Pada robotino

    menggunakan omni wheel dengan 3 ban.

    (1)

    Gambar 1. Omni Wheel

  • Gerakan Linear

    Dengan menjumlahkan 3 vektor yaitu

    (2)

    Gambar 2. Gambar kontribusi motor gerakan linear

    Pertama perlu kita definisikan. Pada gambar 2.a) merupakan diagram dari robot

    dengan 3 roda. Kita anggap tengah robot sebagai 0 derajat dan ban kita pasang pada derajat

    +60, -60, +180. Pada gambar 2.b) merupakan pergerakan tiap ban dengan tanda panah

    sebagai arah positif. Pergerakan platform merupakan jumlah dari 3 vektor dan ditunjukkan

    sebagai vektor pada tengah platform seperti pada gambar 2.c). Pada gambar 2.d)

    memperlihatkan proyeksi yang menunjukkan 3 komponen vector yang didistribusikan.

    (3)

    Sebagai contoh kita berikan data sebagai berikut

  • Dimana :

    - F = Kontribusi motor

    - A, B, C = Motor

    - Velocity = Kecepatan linear robot

    - DesiredDirection = Sudut dari gerakan yang diinginkan

    Akan memberikan kontribusi seperti berikut

    Gambar 3. Kontribusi Motor

    Gerakan Angular

    Kecepatan angular dapat dihitung dengan memberikan setiap roda dengan arah dan kecepatan

    yang sama. Dengan menghitung kecepatan keliling linear dari roda kemudian dibagi dengan

    radius dari robot. Pada gambar 4 merupakan gerakan angular dengan nilai positif membuat

    bergerak ke kiri dan negatif ke kanan.

  • Gambar 4. Gerakan Angular

    Gerakan Linear dan Angular

    Terkadang robot membutuhkan gerakan dengan memutar badannya namun tetap bergerak

    lurus, oleh sebab itu dibutukan gerakan linear dan angular secara bersamaan.

    Gambar 5. Gerakan Linear dan Angular

    Fuzzy Logic Control

    Fuzzy Logic merupakan alternatif sistem kendali modern yang mudah karena tidak

    perlu dicari model matematis dari suatu sistem, tetapi tetap efisien karena memiliki respon

    sistem yang stabil (Resmana, Ferdinando, Thiang, Widagdo., 1999). Logika Fuzzy Logic

    pertama kali diperkenalkan oleh Zadeh dari Universitas California di Barkeley (1965).

    Logika Fuzzy Logic memiliki derajat keanggotaan dalam rentang 0 (nol) hingga 1 (satu)

  • derajat, berbeda dengan logika digital yang hanya memiliki 2 nilai yaitu 0 (nol) dan 1 (satu)

    serta tiga operasi dasar yaitu NOT, AND, dan OR. Logika semacam ini bisa disebut juga

    dengan crisp logic. Dapat dicontohkan pada sistem kontrol motor dengan menggunakan

    sensor jarak (S1), ketika S1 dekat (1) maka motor (M) akan aktif dengan kecepatan putaran

    100, ketika S1 jauh (0) maka motor (M) akan non-aktif.

    Akan tetapi pada sistem logika fuzzy tidak hanya mengenal 2 (dua) nilai seperti logika

    Boolean, dalam logika fuzzy terdapat penambahan nilai diantara logika Boolean yang mana

    nilai yang ditambahkan tersebut akan membentuk suatu interval berkelanjutan (continous)

    dengan cara bertransisi sedikit demi sedikit dari 0 (nol) menuju 100 (seratus).

    Gambar 6. Perbedaan logika boolean dengan logika fuzzy

    Gambar 6. Beda Boolean dan fuzzy

    Logika fuzzy digunakan untuk menerjemahkan suatu besaran yang diekspresikan

    menggunakan bahasa (linguistic), misalkan besaran kecepatan laju kendaraan yang

    diekspresikan dengan pelan, agak cepat, cepat, dan sangat cepat. Secara umum, dalam sistem

    logika fuzzy terdapat 4 (empat) buah elemen dasar, yaitu : 1) basis kaidah (rule base) yang

    berisi aturan-aturan secara linguistic yang bersumber dari peneliti; 2) suatu mekanisme

    pengambilan keputusan (inference engine) yang memperagakan bagaimana para peneliti

    mengambil suatu keputusan dengan menerapkan pengetahuan (knowledge); 3) proses

    fuzzifikasi (fuzzification) yang merubah besaran tegas (crisp) ke besaran fuzzy; 4) proses

    defuzzifikasi (defuzzification) yang mengubah besaran fuzzy hasil inference engine menjadi

    besaran tegas (crisp).

    Gambar 7. Arsitektur FLC

  • Fungsi keanggotaan dari fuzzy dapat ditentukan dengan tiga fungsi, yaitu segitiga

    (triangle), trapesium (trapezoidal), dan fungsi gauss (gaussian). Berikut adalah bentuk-

    bentuk persamaan dari fungsi-fungsi tersebut:

    { } (4)

    1. Segitiga (triangle)

    Persamaan tersebut jika digambarkan dalam grafik ditunjukan seperti gambar 8 :

    Gambar 8. Triangle membership

    2. Trapesium (trapezoidal)

    Persamaan tersebut jika digambarkan dalam grafik ditunjukan seperti gambar 9 :

  • Gambar 9. Trapezoidal membership

    3. Gauss (gaussian)

    ( )

    Persamaan tersebut jika digambarkan dalam grafik ditunjukan seperti gambar 10 :

    Gambar 10. Gaussian membership

    Fuzzifikasi

    Fuzzifikasi adalah suatu proses pengubahan nilai tegas / real yang ada ke dalam

    fungsi keanggotaan. Sebagai contoh dapat dilihat pada gambar berikut,

    Gambar 11. Fuzzifikasi

    Pada gambar di atas, contoh perhitungan fuzzifikasi dapat ditunjukkan sebagai

    berikut:

  • Aturan Dasar Kontrol Logika Fuzzy

    Aturan dasar (rule based) pada control fuzzy merupakan suatu bentuk aturan relasi /

    implikasi jika maka atau if then sebagai contoh adalah jika S=1 maka M=0.

    Contoh dari aturan jika maka ini pada pengendalian kecepatan motor DC dengan

    berdasarkan kondisi sensor jarak adalah sebagai berikut :

    1. JIKA sensor kiri jauh DAN

    2. JIKA sensor kanan jauh

    3. MAKA kecepatan motor DC dinaikkan menjadi sanggat cepat.

    Mesin Penalaran Kontrol Logika Fuzzy

    Mesin penalaran (inference engine) adalah proses implikasi dalam menalar nilai

    masukan guna penentuan nilai keluaran sebagai bentuk pengambilan keputusan. Salah satu

    model penalaran yang banyak dipakai adalah penalaran Max-Min. Dalam penalaran Max-Min

    proses pertama yang dilakukan adalah melakukan operasi Min sinyal keeluaran lapisan

    fuzzifikasi, yang diteruskan dengan operasi Max untuk mencari nilai keluaran selanjutnya

    akan difuzzifikasikan sebagai bentuk keluaran pengontrol. Operasional Max-Min tersebut

    dapat dinyatakan sebagai berikut :

    1. Operasi Min / Irisan

    a b = min (a,b) = a if a b

    = b if a > b

    2. Operassi Max / Union

    a b = max (a,b) = a if a b

    = b if a < b

  • Gambar 12. Operasi max-min

    Metode Mamdani

    Metode Mamdani dan Sugeno adalah salah satu metode dalam mesin penalaran fuzzy

    logic yang mana kedua metode ini untuk memperbaiki kelemahan yang dimiliki oleh sistem

    fuzzy murni dengan menambah suatu perhitungan matematika sederhana.

    Metode Mamdani diperkenalkan oleh Ebrahim Mamdani (1975). Metode ini sering

    dikenal dengan metode Min-Max, metode ini bekerja berdasarkan kaidah-kaidah linguistik

    dan memiliki algoritma fuzzy yang menyediakan sebuah aprosimasi untuk dimasuki analisa

    matematik. Pada metode Mamdani, untuk mendapatkan output diperlukan 4 tahapan, yaitu :

    1. Pembentukan himpunan fuzzy

    Pada metode Mamdani baik variabel input maupun output dibagi menjadi satu atau

    lebih himpunan fuzzy.

    2. Aplikasi fungsi implikasi

    Pada metode Mamdani, implikasi yang digunakan adalah Min.

    3. Komposisi aturan

    Metode yang digunakan dalam melakukan fuzzy inference system (FIS), yaitu operasi

    Max.

    4. Penegasan (defuzzy)

  • Defuzzifikasi pada komposisi aturan Mamdani dengan metode titik tengah (center of

    area). Ada dua keuntungan menggunakan metode titik tengah, yaitu (Kusumadewi, 2002) :

    a. Nilai defuzzifikasi akan bergerak secara halus sehingga perubahan dari suatu

    himpunan fuzzy juga akan berjalan dengan halus.

    b. Lebih mudah dalam perhitungan.

    Metode Sugeno

    Pada metode Sugeno, cara kerjanya tidak jauh berbeda dengan metode Mamdani

    dalam banyak hal. Metode Sugeno diperkenalkan oleh Takagi-Sugeno Kang (1985). Fungsi

    dari metode Sugeno sama dengan metode Mamdani dimana menambahkan suatu perhitungan

    matematika sederhana dimana penambahan tersebut ditambahkan pada bagian THEN.

    Perbedaan utama antara metode Mamdani dan Sugeno adalah pada output

    membership function, dimana pada metode Sugeno berbentuk linear dan konstan (Rahmat,

    Taufik, Supriyono, Sukarman, 2008).

    Pada metode Sugeno, sistem fuzzy memiliki suatu nilai rata-rata tertimbang (weihted

    average values) di dalam bagian aturan fuzzy IF-THEN. Metode juga memiliki kelemahan

    pada bagian THEN, itu dikarenakan adanya penambahan perhitungan matematis sehingga

    tidak dapat menyediakan kerangka alami untuk mempresentasikan pengetahuan manusia

    dengan sebenarnya.permasalahan kedua adalah tidak adanya kebebasan untuk menggunakan

    prinsip yang berbeda dalam logika fuzzy, sehingga ketidakpastian dari sistem fuzzy tidak

    dapat dipresentasikan secara baik dalam kerangka ini (Kusumadewi, 2002). Defuzzifikasi

    pada metode Sugeno adalah metode rata-rata (centre of average).

    Keuntungan memakai metode Sugeno adalah sebagai berikut :

    1. Komputasinya lebih efisien.

    2. Bekerja paling baik untuk teknik linear (kontrol PID, dll)

    3. Bekerja paling baik untuk teknik optimasi dan adaptif

    4. Menjamin kontinuitas permukaan output

    5. Lebih cocok untuk analisis secara sistematis.

    Defuzzifikasi

    Defuzzifikasi merupakan pemetaan himpunan fuzzy ke himpunan tegas (crisps).

    Proses ini merupakan kebalikan dari proses fuzzifikasi.

  • BAB 2

    ANALISA DAN PEMBAHASAN

    Gambar 13. Tampilan Program Visual Studio

    Gambar 14. Tampilan Robotino View

  • namespace WindowsFormsApplication1 { /// /// The class Robot demonstrates the usage of the most common robot component classes. /// Furthermore it shows how to handle events and receive incoming camera images. /// public class Robot { public delegate void ConnectedEventHandler(Robot sender); public delegate void DisconnectedEventHandler(Robot sender); public delegate void ErrorEventHandler(Robot sender, rec.robotino.com.Com.Error error); public delegate void ImageReceivedEventHandler(Robot sender, Image img); protected readonly Com com; protected readonly OmniDrive omniDrive; protected readonly Motor motor; protected readonly Bumper bumper; protected readonly DistanceSensor Distance; protected readonly Camera camera; private volatile bool isConnected; public Robot() { com = new MyCom(this); omniDrive = new OmniDrive(); bumper = new Bumper(); camera = new MyCamera(this); motor = new Motor(); Distance = new DistanceSensor(); omniDrive.setComId(com.id()); motor.setComId(com.id()); bumper.setComId(com.id()); camera.setComId(com.id()); Distance.setComId(com.id()); } public event ConnectedEventHandler Connected; public event DisconnectedEventHandler Disconnected; public event ErrorEventHandler Error; public event ImageReceivedEventHandler ImageReceived; public bool IsConnected { get { return isConnected; } } public bool CameraStreaming { get { return camera.isStreaming(); } set { camera.setStreaming(value);

  • } } public virtual void Connect(String hostname, bool blockUntilConnected) { com.setAddress(hostname); com.connect(blockUntilConnected); Console.WriteLine("Connecting..."); } public virtual void Disconnect() { com.disconnect(); Console.WriteLine("Disconnecting..."); } public virtual void SetVelocity(float vx, float vy, float omega) { omniDrive.setVelocity(vx, vy, omega); } public virtual void wheel(uint nummotor, float speed) { motor.setMotorNumber(nummotor); motor.setSpeedSetPoint(speed); } public float distance(uint numsensor) { Distance.setSensorNumber(numsensor); return Distance.voltage(); } private class MyCom : Com { Robot robot; public MyCom(Robot robot) { this.robot = robot; } public override void connectedEvent() { Console.WriteLine("Connected"); robot.isConnected = true; if (robot.Connected != null) robot.Connected.BeginInvoke(robot, null, null); } public override void connectionClosedEvent() { Console.WriteLine("Disconnected"); robot.isConnected = false; if (robot.Disconnected != null) robot.Disconnected.BeginInvoke(robot, null, null); } public override void errorEvent(Error error, String errorStr) {

  • Console.WriteLine("Error occured: " + error); if (robot.Error != null) robot.Error.BeginInvoke(robot, error, null, null); } } private class MyCamera : Camera { Robot robot; public MyCamera(Robot robot) { this.robot = robot; } public override void imageReceivedEvent(Image data, uint dataSize, uint width, uint height, uint numChannels, uint bitsPerChannel, uint step) { if (robot.ImageReceived != null) robot.ImageReceived.BeginInvoke(robot, data, null, null); } } } }

    Pada koding diatas menunjukkan koding sebagai inisialisasi agar bisa terhubung dengan

    robotino view.

  • Dengan menggunakan rumus 1 kita bisa mendapatkan gerak omni pada robotino

    untuk mengatur roda 1-3. Kita ubah rumus tersebut kedalam visual studio.

    Button 1 berfungsi sebagai perintah untuk menghubungkan robotino view dengan

    visual studio atau sebagai start program.

    void fuzzifikasi(double[] x,float s) { double z = 0, a = 0.75, b = 1.5, c = 2.25, d = 3; //proses fuzzifikasi saat kondisi sensor depan jauh if ((s = b)) { x[0] = 0; } else if ((s > z) && (s < a)) { x[0] = 1; } else if ((s >= a) && (s < b)) { x[0] = ((b - s) / (b - a)); } else { x[0] = 0; } //proses fuzzifikasi saat kondisi sensor depan normal if (s = c) { x[1] = 0; } else if (s > a && s b && s < c) {

  • x[1] = (c - s) / (c - b); } else { x[1] = 0; } //proses fuzzifikasi saat kondisi sensor depan dekat if (s = d) { x[2] = 0; } else if (s > b && s c && s < d) { x[2] = 1; } else { x[2] = 0; }

    Merupakan koding untuk melakukan fuzzifikasi dengan menggunakan 3 kondisi,

    yaitu jauh, normal, dekat. Dengan munggunakan kondisi segitiga.

    void rule_evaluation() { double MAC,Z,MAL,MUC,MUL, KAC,KAL,KAS; MAC = 200; MAL=100; Z=0; MUC=-200; MUL=-100; KAC = 400; KAS = 200; KAL = 100; int i, j, k; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { for (k = 0; k < 3; k++) { x[i, j, k] = Math.Min(x1[i], Math.Min(x2[j], x3[k])); } } } ux[0,0,0]=MAC;uy[0,0,0]=Z; //rule1 ux[0,0,1]=MUC;uy[0,0,1]=Z;//rule2 ux[0,0,2]=MUC;uy[0,0,2]=Z;//rule3 ux[0,1,0]=MUL;uy[0,1,0]=Z;//rule4

  • ux[0,1,1]=MUL;uy[0,1,1]=Z;//rule5 ux[0,1,2]=MUL;uy[0,1,2]=Z;//rule6 ux[0,2,0]=Z;uy[0,2,0]=KAC;//rule7 ux[0,2,1]=Z;uy[0,2,1]=KAS;//rule8 ux[0,2,2]=Z;uy[0,2,2]=KAL;//rule9 ux[1,0,0]=Z;uy[1,0,0]=KAC; //rule10 ux[1,0,1]=Z;uy[1,0,1]=KAS;//rule11 ux[1,0,2]=Z;uy[1,0,2]=KAL;//rule12 ux[1,1,0]=Z;uy[1,1,0]=KAC;//rule13 ux[1,1,1]=Z;uy[1,1,1]=KAS;//rule14 ux[1,1,2]=Z;uy[1,1,2]=KAL;//rule15 ux[1,2,0]=Z;uy[1,2,0]=KAC;//rule16 ux[1,2,1]=Z;uy[1,2,1]=KAS;//rule17 ux[1,2,2]=Z;uy[1,2,2]=KAL;//rule18 ux[2,0,0]=MAC;uy[2,0,0]=Z;//rule19 ux[2,0,1]=MAC;uy[2,0,1]=Z;//rule20 ux[2,0,2]=Z;uy[2,0,2]=Z;//rule21 ux[2,1,0]=MAL;uy[2,1,0]=KAC;//rule22 ux[2,1,1]=MAL;uy[2,1,1]=KAS;//rule23 ux[2,1,2]=MAL;uy[2,1,2]=KAL;//rule24 ux[2,2,0]=Z;uy[2,2,0]=KAC;//rule25 ux[2,2,1]=Z;uy[2,2,1]=KAS;//rule26 ux[2,2,2]=Z;uy[2,2,2]=Z;//rule27

    Setelah kita tentukan nilai fuzzifikasi lalu kita tentukan base rule, didapatkan 27 rule

    karena menggunakan 3 roda dengan 3 sensor yang menjadi 3x3x3. Pada rule ini kita

    menentukan nilai linguistic.

    Gambar 15. Start Program

  • Gambar 16. Robotino melewati wall (ada objek)

    Gambar 17. Robotino Error

  • BAB 3

    KESIMPULAN

    - Robotino merupakan robot yang menggunakan konsep omni wheels dan berjalan

    seperti wall follower dengan menggunakan sensor infra merah.

    - Robotino menggunakan konsep FLC (Fuzzy Logic Control)

    - FLC dibagi 4 tahap dengan fuzzifikasi, rules, interferensi, defuzzifikasi

    - Proses simulasi robotino bisa menggunakan robotino view dan dengan bantuan visual

    studio sebagai controller robotnya

    - Robotino yang melewati dinding lurus maupun miring akan terjadi fluktuasi, yaitu

    peningkata kecepatan pada daerah Vx dan Vy

  • DAFTAR PUSAKA

    Riberio, Fernando., Mountinho, Ivo, Controlling Omni-Directional Wheels of a MSL RoboCup

    Autonnomous Mobile Robot, Universidade do Minho, Campus de Azurm, 4800

    Guimares, Portugal.

    www.eenets.com, Chapter 5. Fuzzy Logic Control System.

    Satria, Jefri,Tugas Robotika. Universitas International Batam, Batam.

    Syam, Rafiudin.,Irham, Erlangga, Widhi. (2012),Rancang Bangun Omni Wheels Robot Dengan

    Roda Penggerak Independent,Fakultas Teknik Universitas Hasanuddin, Makasar.