IMMPLEMENTASI PERSAMAAN FORWARD
KINEMATIC KIWI DRIVE UNTUK
MENGETAHUI POSISI MOBILE ROBOT
TUGAS AKHIR
Oleh :
RIAN SYAFI’I
NIM : 4211323022
PROGRAM STUDI TEKNIK MEKATRONIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI BATAM
2015
IMPLEMENTASI PERSAMAAAN FORWARD KINEMATIC
KIWI DRIVE UNTUK MENGETAHUI POSISI MOBILE
ROBOT
TUGAS AKHIR
Oleh :
RIAN SYAFI’I
NIM : 4211323022
Disusun untuk memenuhi salah satu syarat kelulusan Program Diploma IV Program Studi Tekink Mekatronika
Politeknik Negeri Batam
PROGRAM STUDI TEKNIK MEKATRONIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI BATAM
2015
IMPLEMENTASI PERSAMAAAN FORWARD KINEMATIC
KIWI DRIVE UNTUK MENGETAHUI POSISI MOBILE
ROBOT
TUGAS AKHIR
Oleh :
RIAN SYAFI’I
NIM : 4211323022
Disusun untuk memenuhi salah satu syarat kelulusan Program Diploma IV Program Studi Tekink Mekatronika
Politeknik Negeri Batam
PROGRAM STUDI TEKNIK MEKATRONIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI BATAM
2015
IMPLEMENTASI PERSAMAAAN FORWARD KINEMATIC
KIWI DRIVE UNTUK MENGETAHUI POSISI MOBILE
ROBOT
TUGAS AKHIR
Oleh :
RIAN SYAFI’I
NIM : 4211323022
Disusun untuk memenuhi salah satu syarat kelulusan Program Diploma IV Program Studi Tekink Mekatronika
Politeknik Negeri Batam
PROGRAM STUDI TEKNIK MEKATRONIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI BATAM
2015
PERNYATAAN KEASLIAN TUGAS AKHIR
Saya yang bertanda tangan dibawah ini menyatakan bahwa isi sebagian maupun keseluruhan Tugas Akhir saya yang berjudul: “IMPLEMENTASI PERSAMAAN FORWARD KINEMATIC KIWI DRIVE UNTUK MENGETAHUI POSISI MOBILE ROBOT” adalah hasil karya sendiri, diselesaikan tanpa menggunakan bahan-bahan yang tidak diijinkan dan bukan merupakan karya pihak lain yang saya akui sebagai karya sendiri.
Semua referensi yang dikutip atau dirujuk telah ditulis secara lengkap pada daftar pustaka. Apabila ternyata pernyataan saya ini tidak benar, saya bersedia menerima sanksi sesuai peraturan yang berlaku.
Batam, 19 Januari 2015
Rian Syafi’i
LEMBAR PENGESAHAN TUGAS AKHIR
Tugas Akhir disusun untuk memenuhi salah satu syarat memperoleh gelar Sarjana Sains Terapan (S.ST.)
di
Politeknik Negeri Batam Oleh
Rian Syafi’i 4211323022
Tanggal Sidang: 19 Januari 2015
Disetujui Oleh: Dosen Penguji :
1. Arif Febriansyah Juwito, ST., M.Eng. NIK. 114127 Dosen Pembimbing : 1. Hendawan Soebhakti, ST., MT. NIK. 104031 2. Dessy Oktani, ST. NIK. 110075 2. Ridwan, S.ST. NIK. 113113
IMPLEMENTASI PERSAMAAN FORWARD KINEMATIC KIWI
DRIVE UNTUK MENGETAHUI POSISI MOBILE ROBOT
Nama mahasiswa : RianSyafi’i
NIM : 4211323022
Pembimbing I : Hendawan Soebhakti, ST., MT. Pembimbing II : Ridwan, S.ST.
Email : [email protected]
ABSTRAK
Agar dapat megetahui posisi, mobile robot harus memiliki sistem pergerakan yang baik sehingga dapat dipantau setiap perubahan posisi robot. Robot ini dapat bergerak ke segala arah karena menggukanan omnidirectional wheel dengan kontrol invers kinematic. Dengan sistem kontrol navigasi tersebut, terdapat kekurangan dengan pergeseran yang tidak tepat keposisi yang diinginkan agar mendapatkan posisi dengan baik. Untuk mengatasi permasalahan tersebut, maka penelitian ini menggunakan algoritma untuk mengetahui posisi, diantaranya adalah dengan menggunakan persamaan forward kinematic untuk pengolahan data dari masing-masing encoder pada roda omniwheel. Roda omniwheel dipasang membentuk segitiga dan terpasang encoder pada setiap rodanya. Pengendalian data dari encoder ini sangat diperlukan untuk posisi pergerakan dari mobile robot. Hasil dari penelitian ini adalah dapat mengukur keakurasian dari pergerakan mobile robot dengan metode forward kinematic dan membandingkan posisi aktual dengan pengukuran serta dapat menggambarkan dalam bentuk visualisasi setiap perubahan posisi robot.
IMPLEMENTATION OF FORWARD KINEMATIC KIWI DRIVE
EQUATION TO GET MOBILE ROBOT POSITION
Student Name :Rian Syafi’i
NIM : 4211323022
Supervisor I : Hendawan Soebhakti, ST., MT. Supervisor II : Ridwan, S.ST.
Email : [email protected]
ABSTRACT
In order to know position, the mobile robot should have good movement system that can monitor any changes of the position of the robot. This robot can move in any direction because it uses omnidirectional wheel with inverse kinematic control. With the navigation control system, there are shortcomings with the improper shifting positions of the desired in order to get a good position. To overcome these problems, this research will use an algorithm to determine the position, such as by using the forward kinematic equations for processing data from each encoder on the Omni wheel. Omni wheel mounted to form a triangle and an encoder mounted on each wheel. Control data from this encoder is necessary to movement the position of the mobile robot. The result of research can measure the accuracy of the movement of a mobile robot with kinematic forward method and compare actual position with measurement as well as can describe in visualization of any changes position of the robot.
KATA PENGANTAR
Puji dan syukur penulis haturkan kepada Allah S.W.T, karena berkat rahmat-Nya penulis dapat menyelesaikan Laporan Tugas Akhir dengan judul Implementasi Persamaaan Forward Kinematic Kiwi Drive Untuk Mengetahui Posisi Mobile Robot. Tak lupa shalawat beriring salam, penulis sampaikan kepada junjungan alam Nabi Muhammad S.A.W, karena berkat beliaulah kita dapat merasakan zaman saat ini yang penuh dengan ilmu pengetahuan dan teknologi
Penulisan Laporan Tugas Akhir ini dimaksudkan untuk melengkapi persyaratan kelulusan tingkat Diploma IV Program Studi Teknik Mekatronika Politeknik Negeri Batam. Untuk memenuhi persyaratan tersebut maka penulis mencoba untuk mengaplikasikan sebuah persamaan forward kinematic yang diterapkan pada kiwi drive mobile robot untuk mengetahui posisi robot.
Penulisan Laporan Tugas Akhir ini, dapat tersusun dan selesai dengan baik tak terlepas dari bantuan dan dukungan dari semua pihak yang ikut dalam membimbing penulis untuk menyelesaikan Laporan Tugas Akhir ini. Pada kesempatan ini, penulis ingin mengucapkan terima kasih kepada:
1. Allah S.W.T, atas anugerah yang telah diberikan kepada penulis. 2. Kedua orang tua dan keluarga atas jasa, doa, bimbingan dan nasehat. 3. Bapak Dr. Priyono Eko Sanyoto, Selaku Direktur Politeknik Negeri Batam. 4. Bapak Sumantri Kurniawan Risandriya, ST,.MT. Selaku Ka. Jurusan Teknik
Elektro Politeknik Negeri Batam.
5. Ibu Dessy Oktani, ST. Selaku Ka. Prodi Teknik Mekatronika Politeknik Negeri Batam.
6. Bapak Hendawan Soebhakti, ST,.MT. Selaku dosen pembimbing Tugas Akhir serta dosen pengampu mata kuliah Tugas Akhir.
7. Bapak Ridwan, ST. Selaku dosen pembimbing Tugas Akhir 8. Seluruh Dosen-dosen Teknik Elektro Politeknik Negeri Batam.
9. Seluruh Tim Robot Politeknik Batam yang membantu dalam penelitian.
10. Seluruh Alumni Tim Robot Politeknik Batam yang ikut membimbing dalam proses pembuatan dan Tugas Akhir.
11. Seluruh teman-teman yang telah membantu atas terselesaikannya buku laporan ini.
Semoga amal dan ibadah mereka yang telah diberikan kepada penulis diterima di sisi Allah S.W.T. penulis menyadari sepenuhnya, bahwa dalam penulisan Laporan Tugas Akhir ini masih banyak kesalahan dan kekurangan karena keterbatasan ilmu yang dimiliki oleh penulis, untuk itu kritik dan saran dari pembaca sangat diperlukan untuk penulis.
Batam, 16 Januari 2015
DAFTAR ISI
PERNYATAAN KEASLIAN TUGAS AKHIR ... i
LEMBAR PENGESAHAN TUGAS AKHIR ... ii
ABSTRAK ...iii
KATA PENGANTAR... v
DAFTAR ISI ... vii
DAFTAR GAMBAR... ix
DAFTAR TABEL ... x
BAB I PENDAHULUAN... 1
1.1 Latar Belakang Masalah...1
1.2 Perumusan Masalah ...1
1.3 Batasan Masalah...1
1.4 Tujuan dan Manfaat ...1
BAB II DASAR TEORI... 3
2.1 Rotary Encoder[1]...3
2.2 Forward Kinematic Kiwi Drive Mobile Robot[2]...4
2.3 Modul Frekuensi Radio[3] ...5
2.4 Visual Komputer Dengan C# (C Sharp) ...6
BAB III PERANCANGAN SISTEM... 8
3.1 Rancangan Penelitian ...8
3.2 Rancangan Perangkat Keras...9
3.2.1 Perancangan Mekanik...9
3.2.2 Pembacaan Sudut Pergerakan Rotary Encoder ...9
3.3 Komunikasi Visualisasi Pergerakan Robot ...9
3.4 Forward Kinematik Kiwi Drive Pada Robot...10
3.7 Cara Analisa Data ...12
BAB IV HASIL DAN ANALISA ... 13
4.1 Hasil Pengujian ...13
4.1.1 Pengujian Data X ...13
4.1.2 Pengujian Data Y ...16
4.1.3 Pengujian Data Arah Hadap ...18
4.1.4 Pengujian Data XY ...20
4.1.5 Pengujian Data Pada Visual...22
4.2 Analisa... 23
BAB V PENUTUP ... 26
5.1 Kesimpulan ...26
5.2 Saran...26
DAFTAR GAMBAR
Gambar 2.1 Susunan Piringan untuk Incremental Encoder ... 3
Gambar 2.2 Konfigurasi Roda Kiwi Drive Pada Mobile Robot ... 4
Gambar 2.3 YS-1020UB RF Data Transceiver... 5
Gambar 2.4 Tampilan Dasar OOP Menggunakan Bahasa C# ... 6
Gambar 3.1 Tahapan Penelitian... 8
Gambar 3.2 Diagram Blok Robot... 9
Gambar 3.3 Desain Mekanik ... 9
Gambar 3.4 Perancangan Desain Visual Pada Komputer... 10
Gambar 3.6 Skenario Lintasan ... 11
Gambar 4.1 Tampilan Garis yang Dibentuk pada Visual... 22
DAFTAR TABEL
Tabel 2.1 Konfigurasi RF YS-1020UB ... 5
Tabel 4.1 Data pada Sumbu X... 13
Tabel 4.2 Data pada Sumbu Minus X ... 15
Tabel 4.3 Data pada Sumbu Y... 16
Tabel 4.4 Data pada Sumbu Minus Y ... 17
Tabel 4.5 Data pada Arah Hadap (Theta)... 18
Tabel 4.6 Data pada Arah Hadap Minus (Theta)... 19
Tabel 4.7 Data pada Sumbu XY... 20
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Dalam perkembanagan teknologi robot dapat membantu manusia salah satunya adalah mobile robot, robot ini mampu bergerak bebas dengan menggunakan roda. Untuk mengetahui arah atau perubahan posisi mobile dapat menggunakan metode forward kinematic.
Banyak penelitian yang telah dilakuakan untuk system control pengendalian posisi mobile robot. Salah satu metode yang dikembangkan adalah desain dan control dari mobile robot omnidirectioanal[2]. Hasil penelitian menyebutkan bahwa drift dan selip memberi batasan pada kemampuan robot untuk memperkirakan lokalisasi dalam pemetaannya
Untuk mengatasi permasalahan tersebut, maka dalam penelitian ini akan menggunakan algoritma untuk mengetahui posisi, diantaranya adalah dengan menggunakan persamaan forward kinematic untuk pengolahan data dari masing-masing encoder. Dengan roda omniwheel yang dipasang membentuk segitiga dan terpasang encoder pada setiap rodanya. Pengendalian data dari encoder ini sangat diperlukan untuk posisi pergerakan dari mobile robot.
1.2 Perumusan Masalah
Permasalahan dalam penelitian ini dapat dirumuskan sebagai berikut :
1. Bagaimana cara menampilkan visual mobile robot secara aktual dengan mengimplementasikan persamaan forward kinematic pada kiwi drive ?
2. Bagaimana cara mengukur akurasi posisi mobile robot berdasarkan persamaaan forward kinematic?
1.3 Batasan Masalah
Pada penelitian ini permasalahan yang dibahas dibatasi dalam hal sebagai berikut : 1. Lokasi pengujian system mobile robot dilakukan pada area lapangan bidang datar 2. Perubahan dan berat beban pada mobile robot tidak dibahas pada penelitian ini 1.4 Tujuan dan Manfaat
Tujuan dari penelitian ini adalah :
1. Menampilkan posisi visual mobile robot sesuai dengan posisi aktual berdasarkan output persamaan forward kinematic
2. Mengukur akurasi posisi mobile robot dengan membandingkan posisi aktual dan pengukuran.
Adapun manfaat dari penelitian ini adalah membantu mengembangkan sistem pergerakan mobile robot yang beroperasi pada lapangan KRAI (Kontes Robot Abu-Robocon Indonesia) dalam pembacaan posisi yang telah ditentukan
BAB II
DASAR TEORI
Permasalahan pembacaan posisi mobile robot pada suatu lapangan yang memanfaatkan pembacaan data dari sensor-sensor yang dituangkan dalam sebuah sistem atau program yang mampu menghasilkan suatu pembacaan pergerakan mobile robot untuk mencapai ke posisi tujuan dengan benar. Berikut ini akan dibahas tentang beberapa hal yang berkaitan dengan permasalahan.
2.1 Rotary Encoder[1]
Rotary Encoder adalah perangkat elektromekanik yang dapat memonitor gerakan dan posisi. Rotary encoder umumnya menggunakan sensor optik untuk menghasilkan serial pulsa yang dapat diartikan menjadi gerakan, posisi dan arah. Sehingga posisi sudut suatu poros benda berputar dapat diolah menjadi informasi berupa kode digital oleh rotary encoder untuk diteruskan oleh rangkaian kendali.
Incremental encoder terdiri dari double track atau single track dan dua sensor yang disebut channel A dan B (Gambar 2.1). Ketika poros berputar, deretan pulsa akan muncul di masing-masing channel pada frekuensi yang proporsional dengan kecepatan putar sedangkan hubungan fasa antara channel A dan B menghasilkan arah putaran.
Dengan menghitung jumlah pulsa yang terjadi terhadap resolusi piringan maka putaran dapat diukur. Untuk mengetahui arah putaran, dengan mengetahui channel mana yang leading terhadap channel satunya dapat kita tentukan arah putaran yang terjadi karena kedua channel tersebut akan selalu berbeda fasa seperempat putaran (quadrature signal). Seringkali terdapat output channel ketiga, disebut INDEX, yang menghasilkan satu pulsa per putaran berguna untuk menghitung jumlah putaran yang terjadi.
2.2 Forward Kinematic Kiwi Drive Mobile Robot[2]
Mobile robot dengan roda kiwi drive menggunakan 3 buah roda omni yang dirancang dengan konfigurasi seperti gambar 2.2 yang menunjukan posisi pemasangan tiga buah omniwheel yang simetris dan terdapat dua sumbu yaitu sumbu XY sebagai sumbu global dan XGYG sebagai sumbu lokal. Posisi omniwheel yang dipasang secara simetris
menjadikan pemusatan massa terletak pada titik tengah robot. Posisi a1( ) = 180o, a2 ( ) = 300o, a3 ( ) = 60opada sumbu lokal.
ø2. ø1. ø.3 θ θ. y. x. xL yL L xG yG
Gambar 2.2 Konfigurasi Roda Kiwi Drive Pada Mobile Robot
Untuk mendapatkan pergerakan yang diinginkan dapat dihitung menggukan persamaan matrix jacobian, dengan perhitungan pergerakan forward:
̇ ̇ ̇
=
⎣
⎢
⎢
⎡
[ ] √[ ] [ ] [ ] [ ] [ ] √ [ ] √ [ ] [ ] [ ] √⎦
⎥
⎥
⎤
̇ ̇ ̇ (2.1)̇
= Kecepatan pada sumbu x (cm per detik)̇
= Kecepatan pada sumbu y (cm per detik)̇
= Kecepatan sudut robot (derajat per detik) R = Radius roda robot (cm)L = Jarak centre robot ke centre roda (cm)
2.3 Modul Frekuensi Radio[3]
Komunikasi data antara PC dengan Mobile Robot menggunakan transceiver jenis YS 1020UB.
Gambar 2.3 YS-1020UB RF Data Transceiver Spesifikasi :
Daya RF :≤ 50mW/17dBm
Arus saat menerima : < 25mA Arus saat mengirim : < 55 mA
Jangkauan : ≤ 0.8 km (@9600bps, saat antenna 2m diatas permukan tanah pada area terbuka : dan ≤ 1.2 km (@1200bps, diatas permukan tanah pada area terbuka
Pada transceiver jenis ini komunikasinya half duplex. Half duplex merupakan sebuah mode komunikasi dimana data dapat ditransmisikan atau diterima secara dua arah tapi tidak dapat secara bersama-sama. Pengiriman data dalam half duplex bisa berlangsung dua arah, akan tetapi apabila penerima ingin mengirimkan data maka harus menunggu pengirim untuk menyelesaikan pengiriman data (tidak bersamaan). Sehingga dalam pemanfaatannya diperlukan pengaturan komunikasi yang baik agar data tidak mengalami collision (tabrakan). Antarmuka radio ini terdapat dua mode yaitu menggunakan mode serial data TTL dan serial data RS232. Sehingga apabila menggunakan mode serial 232 untuk komunikasi antara modem dengan mikrokontroler diperlukan converter TTL to 232. Berikut tabel konfigurasi transceiver YS-1020UB.
Tabel 2.1 Konfigurasi RF YS-1020UB
Pin Nama pin Deskripsi Level Koneksi Dengan Terminal
Remands
1 GND Grounding untuk catu daya Ground
2 VCC Catu daya DC 3, 3-5, 5V
3 RXD TTL Serial data receiving end TTL TxD 4 TXD TTL Serial data transmitting end TTL RxD 5 DGND Digital Grounding
6 A(TXD) A of RS-485 or TXD of RS-232 A(RxD) 7 B(RXD) B of RS-485 or RXD of RS-232 B(TxD)
2.4 Visual Komputer Dengan C# (C Sharp)[4]
Visual komputer tidak terlepas dari OOP (Object Oriented Programing). OOP merupakan paradigma pemrograman yang berorientasikan kepada objek. Semua data dan fungsi didalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data, dan mengirim pesan ke objek lainnya,
Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat. Pemograman C# adalah salah satu bahasa pemograman dari OOP.
Pemograman C# adalah salah satu bahasa pemrograman tingkat tinggi yang mendekati bahasa manusia. Kemunculan bahasa C# ini sebagai jawaban untuk menyederhanakan bahasa pemrograman pada platform .NET yang diluncurkan tahun 2002. Bahasa C# secara teknis mengadopsi sintak bahasa C/C++ namun kita tidak dipersulit dengan memory management. Konsistensi API (Application programing Interface) membuat bahasa C# menjadi pilihan dalam membuat kode program diatas platform windows. Bahasa C# mendukung object-oriented dan juga dynamics programming. Ini menambah daftar kemudahan untuk belajar bahasa C#.
Gambar 2.4 adalah objek visual dasar yang dihasilkan OOP dengan menggunakan software Microsoft Visual Studio 2012 yang terdiri dari sebuah form dengan template windows.
BAB III
PERANCANGAN SISTEM
3.1 Rancangan Penelitian
Penelitian ini akan dilakukan desain eksperimental untuk pengujian sistem pengolahan data berdasarkan pembacaan posisi dengan tahapan penelitian sebagai berikut : 1. Pembuatan mekanik robot.
2. Pembuatan perangkat lunak 3. Pengujian pembacaan encoder. 4. Pengujian pembacaan posisi robot 5. Pengamatan hasil pengujian. 6. Analisa data statistik.
7. Penulisan paper dan Tugas Akhir.
Tahapan penelitian ini ditunjukkan dalam gambar 3.1 :
3.2 Rancangan Perangkat Keras
Pada penelitian ini akan dibuat robot dengan diagram blok seperti pada gambar 3.2.
Gambar 3.2 Diagram Blok Robot 3.2.1 Perancangan Mekanik
Desain robot menggunakan tiga roda yang berbentuk segitiga sama sisi. Yang telihat pada gambar 3.3.
Gambar 3.3 Desain Mekanik 3.2.2 Pembacaan Sudut Pergerakan Rotary Encoder
Pergerakan robot bergantung pada pembacaan sudut rotary encoder yang dipasang pada roda dengan mekanik seperti gambar 3.3. Rotary encoder relatif (incremental encoder) tujuannya untuk mendapatkan nilai kecepatan radial pada roda. Dengan nilai tersebut dan pemasangannya pada robot ini akan diketahui arah pergerakan robot yang dibentuk dari kecepatan sudut tiap roda.
3.3 Komunikasi Visualisasi Pergerakan Robot
Pemantauan pergerakan robot digunakan untuk mengetahui arah gerak robot. Pergerakan robot ini akan menampilkan jalur dan arah pada visual antarmuka yang telah dilalui oleh robot. Komunikasi yang digunakan adalah komunikasi serial dengan radio frekuensi sebagai perantaranya. setiap data rotary encoder akan dikirim ke PC dan diterjemahkan menjadi garis yang menunjukan jalur yang telah dilewati oleh robot dengan desain form seperti gambar 3.4.
Gambar 3.4 Perancangan Desain Visual Pada Komputer. 3.4 Forward Kinematik Kiwi Drive Pada Robot
Gambar 3.5 Skema Pergerakan Forward Kinematic Kiwi Drive = + ʃ ̇
= + ʃ ̇ (3.1)
= + ʃ
̇
=Jarak posisi pada sumbu X (cm) =Jarak posisi pada sumbu Y (cm)
=Posisi sudut robot (derajat)
̇ =Kecepatan pada sumbu x (cm per detik) ̇ =Kecepatan pada sumbu y (cm per detik)
̇
=Kecepatan sudut robot (derajat per detik)Masukan dari forward kinematic berupa kecepatan diubah menjadi percepatan kemudian di integralkan dengan waktu untuk mendapatkan posisi dari pergerakan robot
A
.
B CD
3 M
3 M
dalam bentuk arah gerak. Setelah mendapatkan data posisi kemudian data tersebut dikirim ke PC untuk diproses dalam bentuk visualisasi gerak robot.
3.5 Instrumentasi Penelitian
Untuk menguji sistem forward kinematic kiwi drive dilakukan skenario pengujian sebagai berikut:
Gambar 3.6 Skenario Lintasan
Skenario yang dilakukan adalah meletakan robot pada posisi A kemudian robot berjalan pada lintasan sesuai dengan skenario. Saat robot bejalan pada lintasannya robot akan mengirimkan data ke komputer via serial. Kemudian, komputer akan menggambarkan jalur yang dilalaui oleh robot. Untuk menguji ketepatan antara gambar visual dan jalur yang dilewati oleh robot. Yaitu dengan membandingkan jalur yang dilewati oleh robot yang ditandai oleh spidol untuk menggambar lintasan robot dengan visual yang telah didesain.
3.6 Prosedur Pengambilan Data
Pengambilan data percobaan dilakukan dengan beberapa tahap: 1. Pengujian akurasi pembacaan encoder
Pengujian akurasi pembacaan encoder dilakukan terhadap pergerakan robot yang dinamis. Encoder harus menghasilkan data yang valid dalam pembacaan perubahan gerak robot.
2. Pengujian tingkat keberhasilan pergerakan
Pengujian terhadap pergerakan robot dilakukan dengan memberikan instruksi berupa pergerakan robot. Robot harus dapat berjalan sesuai dengan instruksi yang diberikan. Setiap pergerakan robot dikirim ke PC dan ditampilkan dalam bentuk visualisasi
A= (x,y,ψ) =(0,0,0)
B = (x,y,ψ) = (50,50,0)
C= (x,y,ψ) =(150,50,0)
3.7 Cara Analisa Data
1. Akurasi data encoder dengan persamaan forward kinematic
Akurasi pembacaan data encoder dengan persamaan forward kinematic diamati menggunakan persamaan 3.1 untuk melihat berapa kali keberhasilan encoder membaca data.
2. Akurasi keberhasilan pergerakan
Akurasi atau arah pergerakan robot menuju tempat yang ditentukan dapat dilihat tinggkat keberhasilannya dengan persamaan 3.2
BAB IV
HASIL DAN ANALISA
Dari hasil pengukuran dan pengujian pada mobile robot didapat data posisi terhadap sumbu X, sumbu Y, sumbu XY dan posisi arah hadap mobile robot. Berikut hasil pengujian yang telah dilakukan.
4.1 Hasil Pengujian 4.1.1 Pengujian Data X
Tabel 4.1 Data pada Sumbu X
X
Jarak (cm) 1 2 3 4 5 Nilai Rata-rata Error (%)
10 10.08 10.04 10.02 10.08 10.05 10.05 0.54 20 20.09 20.07 20.09 20.09 20.08 20.08 0.42 30 30.21 30.18 30.25 30.14 30.21 30.20 0.66 40 40.05 38.93 40.05 38,93 40.04 39.77 0.58 50 49.81 49.9 49.96 49.88 49.98 49.91 0.19 60 60.05 60.04 60.11 60.07 59,98 60.07 0.11 70 70.25 70.31 70.27 70.34 70.2 70.27 0.39 80 79.55 79.97 79.55 79.76 79.97 79.76 0.30 90 89.74 90 89.66 89.76 89.97 89.83 0.19 100 100.02 100.07 100 100.02 100.11 100.04 0.04 110 109.62 109.52 109.64 109.7 109.58 109.61 0.35 120 119.82 119.91 119.8 119.86 119.81 119.84 0.13 130 129.73 129.75 129.81 129.75 129.77 129.76 0.18 140 139.5 139.44 139.62 139.55 139 139.42 0.41 150 149.78 150 149.81 150.02 149.8 149.88 0.08 160 159.67 159.62 159.71 159.98 159.91 159.78 0.14 170 169.81 169.51 169.8 169.72 169.77 169.72 0.16 180 179.62 179.57 179.59 179.65 179.7 179.63 0.21 190 189.78 189.79 189.8 189.87 189.79 189.81 0.10 200 199.66 199.65 199.64 199.5 199.73 199.64 0.18
Tabel 4.1 merupakan tabel pengujian gerak mobile robot yang dilakukan lima kali secara berulang sampai jarak 200 sentimeter terhadap sumbu X. Dari hasil data pengujian
Tabel 4.2 Data pada Sumbu Minus X
(-)X
Jarak (cm) 1 2 3 4 5 Nilai Rata-rata Error (%)
-10 -10.05 -10.04 -10.05 -10.06 -10.06 -10.05 0.52 -20 -20.18 -20.18 -20.18 -20.15 -20.22 -20.18 0.90 -30 -30.25 -30.32 -30.22 -30.28 -30.2 -30.25 0.84 -40 -40.08 -40.19 -40.15 -40.1 -40.19 -40.14 0.35 -50 -50.22 -50.27 -50.16 -50 -50.09 -50.15 0.30 -60 -60.14 -60.14 -60.29 -60.3 -60.1 -60.19 0.32 -70 -70.43 -70.41 -70.2 -70.24 -70.45 -70.35 0.49 -80 -80.16 -80.44 -80.23 -80.16 -80.19 -80.24 0.29 -90 -90.39 -90.17 -90.23 -90.32 -90.21 -90.26 0.29 -100 -100.14 -100.13 -100.25 -100.16 -100.22 -100.18 0.18 -110 -110.43 -110.33 -110.41 -110.27 -110.35 -110.36 0.32 -120 -119.96 -120.42 -120.21 -119.98 -120.12 -120.14 0.11 -130 -130.34 -130.27 -130.15 -130.18 -130.25 -130.24 0.18 -140 -139.97 -140.13 -140.27 -140.33 -139.98 -140.14 0.10 -150 -150.12 -150.3 -150.22 -150.29 -150.17 -150.22 0.15 -160 -159.67 -160.33 -160.14 -159.99 -160.24 -160.07 0.05 -170 -170.39 -170.32 -170.12 -170.22 -170.19 -170.25 0.15 -180 -180.12 -179.93 -179.94 -180.21 -180.03 -180.05 0.03 -190 -190.21 -190.43 -190.12 -189.98 -190.24 -190.20 0.10 -200 -200.33 -200.41 -200.18 -200.06 -200.16 -200.23 0.11
Tabel 4.2 merupakan tabel pengujian gerak mobile robot yang dilakukan lima kali secara berulang sampai jarak 200 sentimeter terhadap sumbu X minus. Dari hasil data pengujian sumbu X minus dapat diketahui bahwa error antara nilai yang terukur dan nilai aktual dibawah 1%.
4.1.2 Pengujian Data Y
Tabel 4.3 Data pada Sumbu Y
Y
Jarak (cm) 1 2 3 4 5 Nilai Rata-rata Error (%)
10 9.89 9.94 9.92 9.99 9.9 9.93 0.73 20 20.02 19.93 20.04 20.01 19.97 19.99 0.03 30 29.96 29.97 30.01 29.99 30.05 30.00 0.01 40 39.91 39.96 39.97 40.05 40.01 39.98 0.05 50 50.07 50.07 50 49.98 50.02 50.03 0.06 60 60 59.84 60.02 59.92 59.98 59.95 0.08 70 69.79 69.55 69.82 69.6 69.55 69.66 0.49 80 79.78 79.59 79.6 79.6 79.81 79.68 0.41 90 89.65 89.87 89.91 89.73 89.69 89.77 0.26 100 99.76 99.68 99.79 99.6 99.75 99.72 0.28 110 109.96 109.71 109.98 109.8 109.87 109.86 0.12 120 119.64 119.67 119.71 119.53 119.75 119.66 0.28 130 129.6 129.48 129.55 129.21 129.71 129.51 0.38 140 139.14 139.62 139.54 139.03 139.68 139.40 0.43 150 149.35 149.34 149.39 149.4 149.35 149.37 0.42 160 159.37 159.47 159.46 159.69 159.38 159.47 0.33 170 169.3 169.08 169.21 169.1 169.17 169.17 0.49 180 179.01 179.17 179.15 179.06 179.21 179.12 0.49 190 189.02 188.95 189.01 188.99 189.05 189.00 0.53 200 199.15 198.95 198.96 199.1 199.15 199.06 0.47
Tabel 4.3 merupakan tabel pengujian gerak mobile robot yang dilakukan lima kali secara berulang sampai jarak 200 sentimeter terhadap sumbu Y. Dari hasil data pengujian sumbu Y dapat diketahui bahwa error antara nilai yang terukur dan nilai aktual dibawah 1%.
Tabel 4.4 Data pada Sumbu Minus Y
(-)Y
Jarak (cm) 1 2 3 4 5 Nilai Rata-rata Error (%)
-10 -10.03 -9.99 -10 -10.05 -10.03 -10.02 0.20 -20 -20.03 -20 -20 -20.01 -20.3 -20.07 0.34 -30 -30.03 -30.03 -30.05 -30.01 -30.07 -30.04 0.13 -40 -39.99 -39.94 -40.02 -40.11 -40.06 -40.02 0.06 -50 -50.21 -49.92 -50.13 -50.04 -50.17 -50.09 0.19 -60 -59.8 -59.92 -59.98 -60.02 -59.85 -59.91 0.14 -70 -69.76 -70 -70.02 -69.88 -69.92 -69.92 0.12 -80 -79.83 -79.8 -79.87 -79.85 -79.8 -79.83 0.21 -90 -89.77 -89.83 -89.84 -89.8 -89.91 -89.83 0.19 -100 -99.75 -99.78 -99.85 -99.8 -99.83 -99.80 0.20 -110 -109.57 -109.77 -109.62 -109.7 -109.52 -109.64 0.33 -120 -120.11 -119.74 -120.02 -119.83 -119.9 -119.92 0.07 -130 -129.66 -129.79 -129.68 -129.87 -129.65 -129.73 0.21 -140 -139.7 -139.74 -139.88 -139.77 -139.68 -139.75 0.18 -150 -149.33 -149.26 -149.4 -149.31 -149.28 -149.32 0.46 -160 -159.44 -159.08 -159.37 -159.7 -159.22 -159.36 0.40 -170 -169.68 -168.98 -169.23 -169 -169.52 -169.28 0.42 -180 -179.6 -179.23 -179.42 -179.39 -179.22 -179.37 0.35 -190 -189.09 -189.56 -189.59 -189.5 -189.11 -189.37 0.33 -200 -198.75 -198.92 -199 -198.8 -199.02 -198.90 0.55
Tabel 4.4 merupakan tabel pengujian gerak mobile robot terhadap yang dilakukan lima kali secara berulang sampai jarak 200 sentimeter sumbu Y minus. Dari hasil data pengujian sumbu Y minus dapat diketahui bahwa error antara nilai yang terukur dan nilai aktual dibawah 1%.
4.1.3 Pengujian Data Arah Hadap
Tabel 4.5 Data pada Arah Hadap (Theta)
Theta
Sudut 1 2 3 4 5 Nilai Rata-rata Error (%)
20 20.06 19.33 19.39 19.25 19.37 19.48 2.67 40 37.75 37.82 37.33 37.82 37.4 37.62 6.32 60 56.81 56.75 56.8 56.78 56.69 56.77 5.70 80 75.31 75.56 75.52 75.39 75.55 75.47 6.01 100 95.06 95 95.08 95.03 95 95.03 5.23 120 114 114.02 114.11 114.07 114.12 114.06 5.20 140 133.33 133.08 133.14 133.21 133.3 133.21 5.10 160 152.08 152.22 152.11 152.05 152.12 152.12 5.18 180 171.22 170.81 171.24 171 170.98 171.05 5.23 200 188.92 189.36 189.36 189.21 189.36 189.24 5.68 220 208.06 208.14 207.53 208.11 207.88 207.94 5.80 240 227.03 227.5 227.03 227.36 227.08 227.20 5.63 260 246.61 246.72 246.42 246.47 246.7 246.58 5.44 280 265.83 264.81 265.8 264.91 265.78 265.43 5.49 300 284.17 283.94 283.94 284.09 284.11 284.05 5.62 320 302.94 302.06 302.67 302.61 302.32 302.52 5.78 340 319.92 321.44 320.67 321.23 320.87 320.83 5.98 360 340.92 340.41 340.03 340.08 340.51 340.39 5.76
Tabel 4.5 merupakan tabel pengujian gerak mobil robot yang dilakukan lima kali secara berulang sampai sudut 360o terhadap arah hadap robot (Theta). Dari hasil data pengujian arah hadap robot (Theta) dapat diketahui bahwa error antara nilai yang terukur dan nilai aktual dibawah 7%.
Tabel 4.6 Data pada Arah Hadap Minus (Theta)
(-)Theta
Sudut 1 2 3 4 5 Nilai Rata-rata Error (%)
-20 -18.56 -18.39 -18.44 -18.36 -18.33 -18.42 8.60 -40 -37.92 -37.89 -38 -38.11 -37.94 -37.97 5.34 -60 -56.44 -56.19 -56.75 -56.69 -56.58 -56.53 6.14 -80 -76.17 -76.14 -76.19 -76.25 -76.53 -76.26 4.91 -100 -95.22 -94.42 -94.53 -95.58 -95.31 -95.01 5.25 -120 -114.64 -114.11 -114.07 -114 -114.53 -114.27 5.01 -140 -132.67 -132.67 -132.03 -133.17 -133.25 -132.76 5.46 -160 -152.22 -151.89 -152.39 -151.78 -152.22 -152.10 5.19 -180 -170.11 -170.06 -170.19 -169.72 -169.69 -169.95 5.91 -200 -188.89 -188.61 -188.67 -189.08 -188.28 -188.71 5.98 -220 -208.56 -207.72 -208.97 -208.36 -208.11 -208.34 5.59 -240 -227.69 -228.08 -227.64 -227.14 -227.61 -227.63 5.43 -260 -245.92 -245.81 -246.22 -246.19 -246.14 -246.06 5.67 -280 -265.56 -265.5 -265 -265.08 -264.72 -265.17 5.59 -300 -283.67 -283.03 -283.22 -283.17 -283.83 -283.38 5.86 -320 -302.58 -302.06 -301.47 -301.44 -302.02 -301.91 5.99 -340 -320.75 -320.56 -320.83 -321.42 -320.36 -320.78 5.99 -360 -338.5 -339.78 -339.64 -340.39 -339.19 -339.50 6.04
Tabel 4.6 merupakan tabel pengujian gerak mobile robot yang dilakukan lima kali secara berulang sampai sudut 360oarah hadap robot (Theta). Dari hasil data pengujian arah hadap robot (Theta) dapat diketahui bahwa error antara nilai yang terukur dan nilai aktual dibawah 9%.
4.1.4 Pengujian Data XY
Tabel 4.7 Data pada Sumbu XY
Tabel 4.7 merupakan tabel pengujian gerak mobile robot yang dilakukan lima kali secara berulang sampai jarak 150 sentimeter terhadap sumbu XY. Dari hasil data pengujian XY dapat diketahui bahwa error antara nilai yang terukur dan nilai aktual dibawah X = 2 dan Y = 7%.
XY
Jarak (cm) 1 2 3 4 5 Nilai Rata-rata Error (%)
X Y X Y X Y X Y X Y X Y X Y 10 10 9.9 10.2 9.77 10.22 9.74 9.79 9.24 10.21 9.65 10.08 9.66 0.83 3.52 20 20.36 19.63 20.37 19.64 20.25 19.64 20.18 19.54 20.34 19.64 20.30 19.62 1.48 1.95 30 30.56 29.44 30.53 29.48 30.35 29.45 30.39 29.41 30.6 29.4 30.49 29.44 1.59 1.92 40 40.82 39.08 40.66 38.99 40.59 39.09 40.13 30.66 39.9 39.14 40.42 37.39 1.04 6.97 50 50.2 49.22 49.8 49.4 49.38 49.96 50.35 48.95 49.77 49.95 49.90 49.50 0.20 1.02 60 60.13 60.11 59.25 60.07 59.7 59.53 59.6 59.64 60.04 59.25 59.74 59.72 0.43 0.47 70 69.93 69.14 70.18 69.11 70.2 69.06 69.7 69.48 69.83 69.62 69.97 69.28 0.05 1.04 80 79.77 78.75 80.44 78.43 79.82 79.02 79.5 79.08 79.94 78.73 79.89 78.80 0.13 1.52 90 90.66 80.05 90.36 88.1 90.75 88.08 90.25 88.21 91.18 81.77 90.64 85.24 0.71 5.58 100 100.35 99.79 100.44 100.95 98.51 98.05 100.5 98.99 100.76 97.69 100.11 99.09 0.11 0.91 110 110.1 107.73 111.32 107.76 109.75 99.75 110.95 107.67 110.54 107.53 110.53 106.09 0.48 3.69 120 121.54 117.96 120.2 112.43 120.96 117.94 120.84 117.57 120.95 115.6 120.90 116.30 0.74 3.18 130 130.57 126.35 130.54 127.56 130.9 127.07 131.51 126.35 130.93 127.05 130.89 126.88 0.68 2.46 140 141.06 137.2 141.56 136.05 141.83 135.88 141.12 136.87 139.38 137.69 140.99 136.74 0.70 2.39 150 149.4 148.39 148.26 149.95 148.84 148.94 148.81 149.87 149.56 148.52 148.97 149.13 0.69 0.58
Tabel 4.8 Data pada Sumbu Minus XY
(-)XY
Jarak (cm) 1 2 3 4 5 Nilai Rata-rata Error (%)
X Y X Y X Y X Y X Y X Y X Y -10 -9.92 -10.04 -9.9 -10.04 -9.88 -10.07 -9.84 -10.11 -9.88 -10.09 -9.88 -10.07 1.17 0.70 -20 -19.55 -20.37 -19.55 -20.38 -19.56 -20.39 -19.53 -20.47 -19.51 -20.4 -19.54 -20.40 2.35 1.97 -30 -29.45 -30.42 -29.28 -30.61 -29.31 -30.49 -29.34 -30.61 -29.29 -29.46 -29.33 -30.32 2.27 1.05 -40 -39.03 -41 -39 -40.76 -38.9 -40.84 -38.8 -41 -38.84 -40.82 -38.91 -40.88 2.79 2.16 -50 -49 -50.63 -49.27 -50.4 -49.09 -50.71 -49.01 -50.26 -48.84 -50.53 -49.04 -50.51 1.95 1.00 -60 -58.92 -60.65 -58.87 -60.66 -58.83 -60.59 -59.16 -60.57 -58.88 -60.6 -58.93 -60.61 1.81 1.01 -70 -68.7 -70.6 -68.64 -70.67 -68.71 -70.58 -68.59 -70.77 -68.42 -70.68 -68.61 -70.66 2.02 0.93 -80 -78.55 -81.03 -78.64 -80.84 -78.05 -81.07 -78.31 -81.19 -78.15 -80.8 -78.34 -80.99 2.12 1.22 -90 -88.27 -90.61 -87.98 -89.95 -88.45 -90.36 -88.62 -90.09 -88.49 -90.3 -88.36 -90.26 1.85 0.29 -100 -97.95 -100.7 -97.96 -100.45 -98.37 -100.45 -98.19 -100.98 -98.13 -100.66 -98.12 -100.65 1.92 0.64 -110 -108.64 -109.95 -108.49 -109.82 -108.85 -110.81 -108.97 -109.62 -108.25 -110.34 -108.64 -110.11 1.25 0.10 -120 -117.91 -121.06 -118.08 -120.49 -118.45 -120.32 -118.61 -119.94 -118.61 -120.21 -118.33 -120.40 1.41 0.34 -130 -128.13 -129.67 -127.91 -130.15 -127.91 -130.01 -128.01 -130.9 -128.64 -130.13 -128.12 -130.17 1.47 0.13 -140 -137.91 -139.19 -137.88 -140.73 -136.81 -141.22 -137.05 -140.96 -137.58 -140.17 -137.45 -140.45 1.86 0.32 -150 -145.4 -151.79 -146.19 -151.2 -146.05 -151.48 -142.88 -154.6 -142.45 -154.84 -144.59 -152.78 3.74 1.82
Tabel 4.8 merupakan tabel pengujian gerak mobile robot yang dilakukan lima kali secara berulang sampai jarak 150 sentimeter terhadap sumbu XY minus. Dari hasil data pengujian XY dapat diketahui bahwa error antara nilai yang terukur dan nilai aktual dibawah X = 4% dan Y = 3%.
4.1.5 Pengujian Data Pada Visual
Gambar 4.1 Tampilan Garis yang Dibentuk pada Visual
Pengujian dilakukan dari posisi A (0, 0), keposisi B (50, 50), keposisi C (150, 50) dan menuju posisi D (240, 150) dengan arah hadap robot yang sama.
Data yang tampil pada visual adalah posisi A (0, 0), B (50.52, 48.95), C (151.38, 45.63) dan D (259.9, 122.15).
Pada tampilan visual yang terdapat pada komputer menunjukkan bahwa pengujian kiwi drive mobile robot di lapangan terdapat perbedaan yang cukup besar pada posisi C dan posisi D dengan posisi yang ditentukan.
Gambar 4.2 Tampilan Aktual Garis yang Dibentuk Mobile Robot
Pada tampilan aktual yang terdapat pada saat pengujian menunjukkan bahwa hasil dari garis yang ditandai dengan spidol mendekati posisi yang diinginkan.
4.2 Analisa
Contoh perhitungan ini dilakukan untuk mengetahui posisi pada sumbu X dengan arah hadap 0o dengan waktu (T) yang telah di tentukan yaitu 1 detik untuk posisi 0 sentimeter menuju 20 sentimeter dengan nilai pembacaaan encoder roda 1 ± 0, roda 2 = -794,314, roda 3 = -794,314, dan satu putaran encoder pulsa dari 4X resolusi dikali 360 pulse per rotation (PPR) = 1440. Jadi,
,
x 360 x = - 3,466 radian per second (roda 2)
,
x 360 x = 3,466 radian per second (roda 3)
Dengan diketahui sebagai berikut: ̇ = 0 (karena roda 1 tidak berputar) ̇ = -3,466 radian per second ̇ = 3,466 radian per second R = 50 milimeter
Dengan perkalian matrix jacobian maka diuraikan sebagai berikut: Pada T = 0 detik, kecepatan putaran roda belum mulai
̇ =
−2 Sin[ ]
3 − Cos[ ]
√
3 + Sin[ ]
3 Cos[ ]
√
3 + Sin[ ]
3̇
1̇
2̇
3̇
=
( ) x 2 xπx r = [ ]x rad1 = 0 = [ ] √ + [ ] x rad2 = − √ x 0 = 0 = [ ] √ + [ ] x rad3 = √ x 0 = 0̇
=
( ) x 2 xπx r=
( ) x 3,14 = 0 x 3,14 = 0 ⁄ = + ̇ ∫ = 0+0 ∫ = 0 x 0 = 0 mmPada T = 1 detik, kecepatan purtaran roda 2 = -3,466 dan roda 3 = 3,466
̇ =
−2 Sin[ ]
3 − Cos[ ]
√
3 + Sin[ ]
3 Cos[ ]
√
3 + Sin[ ]
3̇
1̇
2̇
3̇
=
( ) x 2 xπx r = [ ]x rad1 = 0 = [ ] √ + [ ] x rad2 = − √ x -3,466 = 2,001 = [ ] √ + [ ] x rad3 = √ x 3,466 = 2,001̇
=
( , , ) x 2 xπx r=
( , ) x 3,14 = 0,636 x 3,14 = 200,101 ⁄ = + ̇ ∫ = 0+200,101 ∫ = 200,101 x 1 = 200,101 mm = 20 cmPada persamaan forward kinematic untuk mengetahui posisi mobile robot pada kiwi drive dapat tercapai dan mengahasilkan data untuk X dan Y dengan error kecil. Dan error pada arah hadap robot (Theta) cukup tinggi dikarenakan nilai L (Jarak centre robot ke
BAB V
PENUTUP
5.1 Kesimpulan
Berdasarkan hasil dan analisa dan pembahasan maka dapat disimpulkan sebagai berikut:
1. Persamaan forward kinematic dapat diterapkan pada mobile robot dan menampilkannya secara visual.
2. Nilai keakurasian pengukuran posisi pada mobile robot mendekati nilai aktual data dengan rata-rata nilai error pada X = 0,27 %, X minus = 0,29%, Y = 0,32%, Y minus = 0,29%. Dan nilai error pada Theta = 5,43% dan Theta minus = 5,78%.
5.2 Saran
Untuk penelitian sistem lebih lanjut kedepannya perlu ditambahkan beberapa saran sebagai berikut:
1. Dapat mengecilkan nilai error arah hadap robot (Theta).
2. Menambahkan persamaan orientasi rotasi pada mobile robot untuk menetapkan arah sumbu XY global pada sumbu XY lokal.
DAFTAR PUSTAKA
[1] Ridwan, “Pengendalian Kecepatan Motor DC Dengan PD-Logika Fuzzy Terhadap
Gangguan Pengereman Berbasis Mikrokontroller”, Buku Tugas Akhir Diploma IV,
Jurusan Mekatronika, Politeknik Negeri Batam, 2013.
[2] Cao Xu Wen, “Design and Control of an Omnidirectional Mobile Robot”, Intech Open, ____.
[3] Dewi Puspa, “Monitoring Robot Pemadam Api Barelang 3.3”, Buku Tugas Akhir
Diploma III, Jurusan Elektronika, Politeknik Negeri Batam, 2014.
[4] Wikipedia. “Pemograman Berorientasi Objek”, Internet:
http://id.wikipedia.org/wiki/Pemrograman_berorientasi_objek, Desember. 19, 2014
BIOGRAFI PENULIS
Nama : Rian Syafi’i Harahap
Tempat/tanggal lahir : Batam, 28 Mei 1992
Agama : Islam
Alamat Rumah : Kamp. Rawasari RT 02 RW 04 NO. 107 Kel. Tg. Pinggir, Kec. Sekupang, Kawasan Industri Sekupang, Batam
Email : [email protected]
Riwayat Pendidikan :
1. SMK Negeri 1 Batam
2. SMP Negeri 11 Batam
LAMPIRAN B PROGRAM C# using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using System.IO.Ports; namespace WindowsFormsApplication2 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent(); }
int set = 20, errorY, errorX;
int pjgData = 300; //panjang garis kuning
Graphics graph;
Bitmap bmp, sbitmap, init; Pen pena; Point[] titikArray; int countTitikArray = -1; Image pictObject; string dataSerial; // serial setting float dtA, dtB, dtC; int enc1, enc2, enc3;
private void Form1_Load(object sender, EventArgs e) {
//float b = (float)1.53;
//int a = Convert.ToInt32(b);
comboBox1.Items.Clear();//mengkosongkan pilihan port serial
foreach (string item in SerialPort.GetPortNames())//menambah setiap serial yang ada di computer ke combo box
{ comboBox1.Items.Add(item);//menambahkan } //comboBox1.SelectedIndex = null; buttonConnect.Enabled = true; buttonDisconnect.Enabled = false;
chart1.Series[0].Points.Clear();//mengkosongkan data chart
chart2.Series[0].Points.Clear(); chart3.Series[0].Points.Clear();
titikArray = new Point[pjgData + 1];//mendeklarasikan variabel Point array sebanyak pjgData+1
pena = new Pen(Color.Blue, 1);//mendeklarasikan variabel Pen untuk menggambar kotak-kotak
initial();//memanggil fungsi inisial
pictObject = Image.FromFile(Application.StartupPath +
"/icon.png");//mengambil gambar dari komputer
}
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)//event serial
void olahData(object sender, EventArgs e) {
if (serialPort.BytesToRead > 0) {
char data = (char)serialPort.ReadChar(); dataSerial += data; if (data == '\n') { parsingData(); drawRobot(); DrawLineRobot(); showEnc(); //lb_a.Text = errorX.ToString()+";"+errorY.ToString(); //timer1.Enabled = true;
Invoke(new Action(() => dText.AppendText(dataSerial + "\r\n"))); Invoke(new Action(() => dText.SelectionStart=
dText.Text.Length));
Invoke(new Action(() => dText.ScrollToCaret())); dataSerial = "";
} } }
public void parsingData() {
char[] limiter = { 'A', 'B', 'C', 'D', 'E', 'F', '\r', '\n' };//karakter parsing
string[] hasilParsing = dataSerial.Split(limiter); //array string untuk
hasil parsing try { dtA = float.Parse(hasilParsing[1]); dtB = float.Parse(hasilParsing[2]); dtC = float.Parse(hasilParsing[3]); enc1 = int.Parse(hasilParsing[4]); enc2 = int.Parse(hasilParsing[5]); enc3 = int.Parse(hasilParsing[6]);
textBoxA.Text = dtA.ToString();//tampilkan ke textbox
textBoxB.Text = dtB.ToString(); tb_angle.Text = dtC.ToString(); tb_enc1.Text = enc1.ToString(); tb_enc2.Text = enc2.ToString(); tb_enc3.Text = enc3.ToString(); //string dtC = hasilParsing[3]; }
catch (Exception error) {
} }
void showEnc() {
chart1.Series[0].Points.AddY(enc1);//menampilkan data di chart
chart2.Series[0].Points.AddY(enc2);
chart3.Series[0].Points.AddY(enc3); }
void initial() {
bmp = new Bitmap(pn_draw.Width, pn_draw.Height);//mendeklarasikan variabel bitmap sesuai panjang dan lebar pn_draw
graph = Graphics.FromImage(bmp);//mendeklarasikan variable Graphics dari variable bmp
kotak();//memanggil fungsi
savedrw(); }
void kotak() {
for (int a = 25; a <= pn_draw.Height; a += 25) {
graph.DrawLine(pena, a, 0, a, pn_draw.Height);//menggambar vertikal
}
for (int a = 25; a <= pn_draw.Height; a += 25) {
graph.DrawLine(pena, 0, a, pn_draw.Height, a);//menggambar kotak horizontal
} }
void DrawLineRobot() {
if (errorY < set && errorY > -1 * set || errorX < set && errorX > -1 * set)
{
for (int a = 0; a < countTitikArray; a++) {
graph.DrawLine(new Pen(new SolidBrush(Color.Yellow), 5), titikArray[a], titikArray[a + 1]);//gambar garis
}
kotak(); savedrw(); }
}
Image rotateImage(Image pict, double angle) {
Bitmap rotatedImage = new Bitmap(pict.Width, pict.Height);//mendeklarasikan variable Bitmap
rotatedImage.SetResolution(pict.HorizontalResolution, pict.VerticalResolution);// mengatur resolusi gambar
Graphics g = Graphics.FromImage(rotatedImage);//mendeklarasikan variable graphic
g.TranslateTransform(pict.Width / 2, pict.Height / 2);//menentukan titik
center rotate
g.RotateTransform((float)angle);//rotate gambar
g.TranslateTransform(-(pict.Width / 2), -(pict.Height / 2));//menentukan
titik center rotate
g.DrawImage(pict, new PointF(0, 0));//menyimpan gambar yang telah di rotate ke variable rotateImage
return rotatedImage; }
void savedrw() {
sbitmap = bmp.Clone(new Rectangle(0, 0, pn_draw.Width, pn_draw.Height),
bmp.PixelFormat);//mengkopi gambar sesuai panjang, lebar dan resolusi gambar satunya
lagi
pn_draw.BackgroundImage = sbitmap;//mengeset background dari pn_draw dengan "sbitmap"
}
void drawRobot() {
errorY = titikArray[countTitikArray].Y - titikArray[countTitikArray - 1].Y;//menghitung selisih data yang baru diterima dengan data sebelumnya
errorX = titikArray[countTitikArray].X - titikArray[countTitikArray - 1].X;
if (errorY < set && errorY > -1 * set || errorX < set && errorX > -1 * set) //jika selisihnya tidak lebih besar dari "set" maka digambar
{
for (int a = 0; a < countTitikArray; a++) {
titikArray[a] = titikArray[a + 1];//menghapus garis
sebelumnya
}
titikArray[countTitikArray].Y = Convert.ToInt32(dtB) * (-1) + (pn_draw.Height - (pn_draw.Height / 4));//menyimpan titik y posisi robot
titikArray[countTitikArray].X = Convert.ToInt32(dtA) + (pn_draw.Width / 4);//titik x
Image newImage = rotateImage(pictObject, Convert.ToInt32(dtC) -
90);//merotate gambar
graph.DrawImage(newImage, titikArray[pjgData - 1].X - (pictObject.Width / 2), titikArray[pjgData - 1].Y - (pictObject.Height /
2));//menggambar robot pada posisi x dan y robot
} } else {
countTitikArray++;
titikArray[countTitikArray].Y = Convert.ToInt32(dtB) * (-1) + (pn_draw.Height - (pn_draw.Height / 4));
titikArray[countTitikArray].X = Convert.ToInt32(dtA) + (pn_draw.Width / 4);
Image newImage = rotateImage(pictObject, Convert.ToInt32(dtC) - 90);//
graph.DrawImage(newImage, titikArray[countTitikArray].X -
(pictObject.Width / 2), titikArray[countTitikArray].Y - (pictObject.Height / 2)); }
}
private void timer1_Tick(object sender, EventArgs e) {
drawRobot(); DrawLineRobot(); }
private void bt_save_Click(object sender, EventArgs e) {
saveFileDialog1.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";//filter extension gambar
saveFileDialog1.Title = "Simpan Karya Anda";//judul
if (saveFileDialog1.ShowDialog() == DialogResult.OK) {
string file = saveFileDialog1.FileName;//mengambil filename dari gambar
bmp.Save(file);//menyimpan gambar robot dan lintasan yang dilalui ke
komputer
} else {
MessageBox.Show("Save was Cancelled"); }
}
private void pn_draw_MouseMove(object sender, MouseEventArgs e) {
bt_save.Visible = true;//memunculkan tombol save ketika mouse melewati pn_draw
bt_reset.Visible = true; }
private void Form1_MouseMove(object sender, MouseEventArgs e) {
bt_save.Visible = false;//menghilangkan tombol save ketika mouse keluar
dari pn_draw
bt_reset.Visible = false; }
private void bt_reset_Click(object sender, EventArgs e) {
initial(); kotak(); savedrw(); }
private void buttonConnect_Click(object sender, EventArgs e) {
try {
serialPort.PortName = comboBox1.Text;//mengeset Port yang digunakan
serialPort.Open();//membuka komunikasi serial
chart1.Series[0].Points.Clear();//mengkosongkan data chart
chart2.Series[0].Points.Clear(); chart3.Series[0].Points.Clear(); //timer1.Enabled = true;
}
catch (Exception error) {
MessageBox.Show(error.ToString());//menampilkan error ketika koneksi gagal } if (serialPort.IsOpen) { buttonDisconnect.Enabled = true; buttonConnect.Enabled = false; } }
private void buttonDisconnect_Click(object sender, EventArgs e) {
try {
// serialPort.PortName = comboBox1.Text;
serialPort.Close();//menutup komunikasi serial
}
catch (Exception error) {
MessageBox.Show(error.ToString());//menampilkan error ketika koneksi gagal } if (!serialPort.IsOpen) { buttonDisconnect.Enabled = false; buttonConnect.Enabled = true; } } } }
LAMPIRAN C GAMBAR GUI PADA C#