TUGAS AKHIR
RANCANG BANGUN ROBOT SHAPE FOLLOWER DENGAN METODE IMAGE PROCESSING LAPORAN TUGAS AKHIR Diajukan untuk memenuhi sebagian persyaratan memperoleh gelar Ahli Madya Disusun oleh : RIZKY DWI SEPTANTO NIM : 9123100013 Dosen Pembimbing : Aditya Kurniawan, S.ST. NIK : 101 01 005 Redi Bintarto, ST., M. Eng. Pract. NIK : 081 01 002
PROGRAM STUDI TEKNIK MEKATRONIKA POLITEKNIK KOTA MALANG MALANG 2013
Rancang Bangun Robot Shape Follower Dengan Metode Image Processing
LAPORAN TUGAS AKHIR Diajukan kepada Politeknik Kota Malang untuk memenuhi salah satu persyaratan dalam menyelesaikan program Ahli Madya Teknik Mekatronika
OLEH RIZKY DWI SEPTANTO NIM : 9123100013
PROGRAM STUDI TEKNIK MEKATRONIKA POLITEKNIK KOTA MALANG Februari 2013 i
LEMBAR PERSETUJUAN PEMBIMBING TUGAS AKHIR
Laporan Tugas Akhir oleh Rizky Dwi Septanto ini telah diperiksa dan disetujui untuk diuji
Malang, 13 Februari 2013 Pembimbing I
Aditya Kurniawan, S.ST. NIK. 101 01 005
Malang, 13 Februari 2013 Pembimbing II
Redi Bintarto, ST., M. Eng. Pract. NIK. 081 01 002
1
LEMBAR PERSETUJUAN DAN PENGESAHAN TUGAS AKHIR
Laporan Tugas Akhir oleh Rizky Dwi Septanto ini telah disidangkan di depan dewan penguji pada tanggal 18 Februari 2013
Dewan Penguji : Penguji 1
Rizki Priya Pratama, ST., MT., MSc. NIK. 081 02 002
Penguji 2
M. Fahmi Hakim, ST., MT. NIK. 101 01 006 Mengetahui, Pembantu Direktur 1
Ketua Program Studi
M. Fahmi Hakim, ST., MT. NIK. 101 01 006
Aditya Kurniawan, S.ST. NIK. 101 01 005
ABSTRAK Teknologi di bidaang robotika saat ini telah berkembang dengan pesat dan luas, terbukti dengan sudah diaplikasikannya robot pada berbagai bidang. Robot juga dapat menggantikan pekerjaan yang tidak dapat dikerjakan oleh manusia. Adanya perkembangan teknologi tersebut menuntut munculnya suatu inovasi dari robot agar dapat lebih bermanfaat, salah satunya sebagai sistem kemanan. Pada proyek akhir ini, telah dibuat robot Shape Follower. Robot tersebut adalah salah satu kajian dalam bidang robotika yang mampu mengenali objek yang akan dideteksi dengan menggunakan Visual Basic 6.0 dan OpenCV untuk membandingkan hasil image processing. Dalam penggunaannya robot dapat mendeteksi objek menggunakan melalui webcam yang terpasang sebagai sensor, kemudian melakukan tracking untuk menangkap dan mengikuti gerak obyek yang terdeteksi. Pada Proses tersebut didapatkan data mengenai koordinat obyek dan luasan obyek yang terdeteksi. Aktuator yang digunakan adalah motor servo. Sedangkan otak dari sistem tersebut menggunakan PC. Robot ini mampu diharapkan untuk aplikasi security system. Kata kunci : Mikrokontroler, Visual Basic, OpenCV, Robot Vision, Motor Servo.
1
ABSTRACT Technology in robotics field today has grown rapidly and spacious, it has been proved by robots are used in the many sector. Robots also can replace the jobs that can not be done by humans. The development of technology demand the appearance of an innovation of robotsto be more beneficial, one of them as a security system. In this final project, has make Shape Follower Robot. The robot is one of robotics fields that can recognize the object which will be detected by applying visual basic 6.0 and opencv for comparing result of image processing. In that applicating robot can detection the object using webcam that pair as a sensor, then tracking for catch and following the object detection. In that case get data about object coordinate and object area that detected. actuator used servo motor, and that brain of the system using PC. The expectation from this robot it can for security system application. Keyword : Microcontroller, Visual Basic, OpenCV, Robot Vision, Servo Motor.
KATA PENGANTAR
Puji syukur kehadirat ALLAH SWT atas karunia, rahmat, dan hidayahnya, sehingga
penulis
dapat
menyelesaikan
tugas
akhir
dengan
judul
Rancang Bangun Robot Shape Follower Dengan Metode Tugas
:
akhir
ini merupakan merupakan salah satu syarat yang harus dipenuhi oleh setiap mahasiswa D3 Politeknik Kota Malang untuk mendapatkan gelar Ahli Madya (A.md.). Dalam menyelesaikan tugas akhir ini, penulis berpegang pada teori yang pernah
didapatkan pada saat menempuh perkuliahan di Politeknik Kota
Malang dan bimbingan dari dosen-dosen pembimbing tugas akhir. Juga dari pihak-pihak lain yang sangat membantu hingga
tugas akhir ini dapat
diselesaikan. Penulis telah berusaha semaksimal mungkin dalam menyelesaikan tugas akhir ini, walaupun demikian penulis menyadari tugas akhir ini masih jauh dari sempurna oleh karena itu, saran dan kritik yang membangun sangat tugas
penulis nantikan
guna
perbaikan
selanjutnya,
dan
akhir
semoga ini
dapat bermanfaat bagi penulis khususnya dan bagi pembaca pada umumya.
Malang, 13 Februari 2013
Penulis
3
UCAPAN TERIMA KASIH Penulis menyadari bahwa terlaksananya tugas akhir dan terwujudnya karya ilmiah ini tidak terlepas dari bantuan, dukungan dan bimbingan dari berbagai pihak. Oleh karena itu, secara khusus penulis menyampaikan rasa terima kasih secara tulus kepada : 1. ALLAH SWT yang telah memberikan taufik, rahmat, hidayah, dan kasih sayangnya. 2.
Kedua
orang
memberikan
tuaku
Bapak
dan
Ibu
yang
banyak
doa, motivasi, kasih sayangnya hingga sampai saat
ini, terima kasih banyak atas semua yang bapak ibu berikan selama ini. 3. Kedua saudaraku Septian dan Wahyu dan juga Luki Megah Putri yang telah menjadi semangatku dalam belajar. 4. Bapak Bagus Gunawan S.pd., M.Si. selaku Direktur Politeknik Kota Malang. 5.
Bapak
Aditya
pertama
Kurniawan,
yang dengan
sabar,
S.ST tulus
selaku dan
pembimbing ikhlas
telah
memberikan bimbingan, ilmu, tenaga, waktu, dan motivasi sehingga penulis dapat menyelesaikan tugas akhir dengan baik. 6.
Bapak Redi Bintarto, ST., M.Eng.Pract selaku pembimbing kedua yang dengan
sabar,
tulus
dan
ikhlas
telah
memberikan
bimbingan, ilmu, tenaga, waktu, dan motivasi sehingga penulis dapat menyelesaikan tugas akhir dengan baik. 7.
Temen-temen TM 2010 dan anak-anak PROBE yang telah memberikan motivasi,
saran,
dan masukan
yang positif
dalam
penyelesaian tugas akhir. 8.
Berbagai pihak yang tidak dapat penulis sebutkan satu-persatu, penulis ucapkan terimakasih atas bantuan dan dukungannya sehingga penulis dapat menyelesaikan tugas akhir ini dengan baik.
vii
DAFTAR ISI
Halaman LEMBAR PERSETUJUAN PEMBIMBING TUGAS AKHIR........................ ii LEMBAR PERSETUJUAN DAN PENGESAHAN TUGAS AKHIR ............ iii ABSTRAK ............................................................................................................ iv ABSTRACT ........................................................................................................... v KATA PENGANTAR .......................................................................................... vi UCAPAN TERIMA KASIH .............................................................................. vii DAFTAR ISI....................................................................................................... viii DAFTAR TABEL ................................................................................................ xi DAFTAR GAMBAR ........................................................................................... xii DAFTAR LAMPIRAN ....................................................................................... xv BAB I PENDAHULUAN ...................................................................................... 1 1.1 1.2 1.3 1.4 1.5
Latar Belakang ......................................................................................... 1 Rumusan Masalah .................................................................................... 1 Tujuan Tugas Akhir.................................................................................. 2 Batasan Masalah ....................................................................................... 2 Sistematika Penulisan ............................................................................... 2
BAB II TINJAUAN PUSTAKA........................................................................... 4 2.1 Konsep Sistem Object Tracking ............................................................... 4 2.2 Image Processing ..................................................................................... 4 2.2.1 Pengolahan Citra ............................................................................... 4 2.2.2 Color Extraction ................................................................................ 5 2.2.3 Binarisasi Warna ............................................................................... 6 2.2.4 Color Filtering ................................................................................... 7 2.2.5 Sistem Warna RGB ........................................................................... 8 2.3 Metode Gaussian Matrix .......................................................................... 9 2.4 Mikrokontroler ATMEGA8 ................................................................... 10 2.5 Webcam .................................................................................................. 13 2.6 Motor Servo Standart ............................................................................. 14 2.7 Komunikasi Serial PC to Mikrokontroller ............................................. 15 2.8 Visual Basic 6.0...................................................................................... 16 2.8.1 Menu Toolbar.................................................................................. 18 viii
2.8.2 Menu Toolbox ................................................................................. 19 2.9 Open CV ................................................................................................. 19 BAB III PERENCANAAN SISTEM ................................................................. 21 3.1 Deskripsi Umum Mengenai Perancangan Sistem .................................. 21 3.1.1 Gambaran Umum Alat .................................................................... 21 3.2 Perancangan Sistem Mekanik................................................................. 21 3.3 Perancangan Sistem Elektrik .................................................................. 23 3.3.1 Analisis Kebutuhan Sistem ............................................................. 23 3.3.2 Perancangan Alat ............................................................................ 24 3.2.2.1 Minimum Sistem ATMEGA8 ................................................. 24 3.3.3.1 Akses Motor Servo .................................................................. 29 3.4 Perancangan Software Image Understanding pada Visual Basic .......... 30 3.4.2 Gaussian Matriks............................................................................. 34 3.4.3 Brightness Enhancement ................................................................. 43 3.4.4 Contrast Enhancement .................................................................... 45 3.4.5 Colour Filtering ............................................................................... 47 3.4.6 Center Detection.............................................................................. 49 BAB IV PENGUJIAN DAN ANALISA ............................................................ 51 4.1 Pengujian Mikrokontroler ...................................................................... 51 4.1.2 Peralatan .......................................................................................... 51 4.1.3 Langkah Pengujian .......................................................................... 51 4.1.4 Hasil dan Analisa ............................................................................ 52 4.1.5 Kesimpulan ..................................................................................... 52 4.2 Pengujian Motor Servo ........................................................................... 53 4.2.1 Tujuan ............................................................................................. 53 4.2.2 Peralatan .......................................................................................... 53 4.2.3 Langkah pengujian .......................................................................... 53 4.2.4 Hasil dan Analisa ............................................................................ 54 4.2.5 Kesimpulan ..................................................................................... 57 4.3 Pengujian komunikasi serial antara PC dengan mikrokontroler ............ 57 4.3.1 Tujuan ............................................................................................. 57 4.3.2 Peralatan .......................................................................................... 58 4.3.3 Langkah Pengujian .......................................................................... 58 4.3.4 Analisa data ..................................................................................... 61 4.3.5 Kesimpulan ..................................................................................... 63 4.4 Pengujian Aplikasi pada Visual Basic................................................... 63 4.4.1 Tujuan ............................................................................................. 63 4.4.2 Peralatan .......................................................................................... 63 4.4.3 Langkah Pengujian .......................................................................... 63 4.4.4 Analisa Data .................................................................................... 63 4.4.5 Kesimpulan ..................................................................................... 64 4.5 Pengujian Aplikasi Image Processing pada OpenCV ............................ 64 4.5.1 Tujuan ............................................................................................. 64 4.5.2 Peralatan .......................................................................................... 65
1
4.5.3 Langkah Pengujian .......................................................................... 65 4.5.4 Analisa Data .................................................................................... 65 4.5.5 Kesimpulan ..................................................................................... 66 4.6 Pengujian sistem secara keseluruhan...................................................... 67 BAB V PENUTUP............................................................................................... 68 5.1 5.2
Kesimpulan............................................................................................. 68 Saran ....................................................................................................... 68
DAFTAR PUSTAKA .......................................................................................... 70 LAMPIRAN......................................................................................................... 71 PERNYATAAN KEASLIAN TULISAN .......................................................... 95 RIWAYAT HIDUP PENULIS........................................................................... 96
2
DAFTAR TABEL
Halaman Tabel 2.1. Kombinasi Warna Dalam Hexadesimal ................................................. 9 Tabel 3.1 Daftar komponen minimum sistem....................................................... 26 Tabel 3.2 Port Designation.................................................................................... 27 Tabel 4.1 Logika port pada led ............................................................................. 52 Tabel 4.2 data penguuran kondisi motor berdasarkan nilai sinyal PWM ............. 57 Tabel 4.3 Kondisi Image Processing terhadap hardware...................................... 67
1
DAFTAR GAMBAR
Halaman Gambar 2.1. Contoh binarisasi api pada gambar. ................................................... 6 Gambar 2.2 Contoh Derajat Keabuan ..................................................................... 7 Gambar 2.3. Nilai Warna RGB dalam Hexadesimal .............................................. 8 Gambar 2.4. Komposisi Warna RGB...................................................................... 9 Gambar 2.5. Konfigurasi Pin AT-MEGA8 ........................................................... 11 Gambar 2.6. Kamera Video/Webcam ................................................................... 14 Gambar 2.7. Kendali Motor Servo 180째 ............................................................... 15 Gambar 2.8 Dekstop Visual basic 6.0 ................................................................... 17 Gambar 2.9 Menu Bar........................................................................................... 18 Gambar 2.10 Menu Toolbar.................................................................................. 18 Gambar 2.11 Menu Toolbox Standart EXE........................................................... 19 Gambar 3.1 Blok diagram kerja sistem ................................................................. 21 Gambar 3.2 Desain mekanik 3 Dimensi ............................................................... 22 Gambar 3.3 Desain mekanik 2 Dimensi ............................................................... 23 Gambar 3.4 Rangkaian Minimum sistem Robot Shape Follower ........................ 25 Gambar 3.5 Skematik keseluruhan Minimum System robot shape follower ......... 26 Gambar 3.6 Konstruksi motor sumbu X ............................................................... 28 Gambar 3.7 Konstruksi motor sumbu Y ............................................................... 29 Gambar 3.8 Flowchart kerja sistem image understanding pada visual basic........ 31 Gambar 3.9 Proses Colour Extraction................................................................... 32 Gambar 3.10 Contoh gambar yang akan di blur ................................................... 35 Gambar 3.11 Proses colour extraction sebelum melalui gaussian ........................ 37
1
Gambar 3.12 Hasil bluring pada pixel 3x3 ........................................................... 40 Gambar 3.13 Grafik perubahan colour extraction menjadi Gaussian ................... 41 Gambar 3.14 Hasil enhancement ......................................................................... 44 Gambar 3.15 Perbedaan grafik antara Gaussian dan ........................................... 45 Gambar 3.16 Hasil Contrast enhancemet ............................................................. 47 Gambar 3.17 Grafik perubahan antara dan Kontras............................................. 47 Gambar 3.18 Grafik Rk sebelum difilter .............................................................. 48 Gambar 3.19 Grafik Rk setelah di filter................................................................ 48 Gambar 3.20 Proses menentukan titik tengah objek ............................................. 50 Gambar 4.1 Pengaturan Timer 1 pada wizard CodeVision AVR ......................... 53 Gambar 4.2 Sinyal pwm dengan periode 20 ms ................................................... 55 Gambar 4.3 Sinyal pwm sudut terbesar ................................................................ 55 Gambar 4.4 Sudut terbesar pada motor servo X ................................................... 56 Gambar 4.5 Sinyal pwm sudut terkecil ................................................................. 56 Gambar 4.6 sudut terkecil pada motor servo X..................................................... 57 Gambar 4.7 Konfigurasi USART pada CodeWizard AVR .................................. 59 Gambar 4.8 Konfigurasi terminal pada Codevision AVR .................................... 60 Gambar 4.9 Contoh tampilan aplikasi komunikasi PC-Mikrokontroler ............... 60 Gambar 4.8 Contoh program komunikasi serial pada visual basic ....................... 60 Gambar 4.10 Pengiriman angka 1 pada VB.......................................................... 61 Gambar 4.11 Hasil data yang diterima pada percobaan pertama .......................... 61 Gambar 4.12 Pengiriman angka 2 pada VB.......................................................... 62 Gambar 4.13 Hasil data yang diterima pada percobaan kedua ............................. 62 Gambar 4.14 Pengiriman angka 3 pada VB.......................................................... 62
2
Gambar 4.15 Hasil data yang diterima pada percobaan ketiga ............................. 62 Gambar 4.16 Pengujian Image Processing pada Visual Basic 1 .......................... 64 Gambar 4.17 Pengujian Image Processing pada Visual Basic 2 .......................... 64 Gambar 4.18 Pengujian Image Processing pada OpenCV 1 ................................ 65 Gambar 4.19 Pengujian Image Processing pada OpenCV 2 ................................ 66 Gambar 4.20 Aplikasi konsol................................................................................ 66
3
DAFTAR LAMPIRAN
Halaman Lampiran 1 Foto hasil rancang bangun robot shape follower............................... 72 Lampiran 2 Desain PCB Minimum system robot Shape Follower. ...................... 73 Lampiran 3 Desain aplikasi Image Processing dengan visual basic.................... 74 Keterangan Lampiran 3 ........................................................................................ 75 Lampiran 4 List program aplikasi image processing dengan visual basic............ 76 Lampiran 5 List program aplikasi image processing dengan OpenCV. ............... 82 Lampiran 6 List program kontroler untuk OpenCV. ............................................ 87 Lampiran 7 List program kontroler untuk Visual Basic. ...................................... 91
4
BAB I PENDAHULUAN
1.1
Latar Belakang Robot Shape Follower bisa dipahami sebagai sebuah contoh kasus
yang cukup dipelajari
istimewa
dalam bidang
kemampuan kebutuhan banyak
dari
dari akan
sekian
banyak
permasalahan
computer
vision.
Tingginya
perkembangan
ini
meningkatnya
suatu komputer analisis
menghasilkan
video
sesuatu
saat
umum
dan
yang dilakukan secara otomatis
yang
hebat
yang
telah
dan menarik dalam algoritma
tracking objek. Penggunaan Robot Shape Follower merupakan sebuah hal yang penting bagi sejumlah aplikasi yang menguntungkan dalam penerapannya, seperti security system, sistem navigasi robot, aplikasi penting lainnya terutama dalam bidang robotika yaitu mobile robot maupun robotic soccer serta masih banyak lagi yang bisa diaplikasikan. Sudah diketahui bahwa vision mampu digunakan sebagai sebuah sensor robot yang handal dikarenakan kemampuannya untuk nonkontak dengan
media dan
penghitungan
langsung
dari
lingkungan
dan
juga
ketentuan dari beberapa informasi Pada proyek akhir ini penulis akan membuat sistem yang betujuan dalam penggunaan sebuah alat untuk melakukan tracking / pelacakan sebuah sebuah bentuk benda lalu mengikutinya pada jarak yang bisa berubah-ubah. Setiap
prosedur
tracking
dibagi
dalam
dua
blok
utama
yang
berperan dalam mencari objek dan mengikutinya. Yang pertama adalah permasalahan deteksi
objek
yang bisa diselesaikan melalui
pemrosesan
data sensor (kamera). Sedangkan untuk tugas yang kedua adalah mengenai pengendalian.
1.2
Rumusan Masalah Berdasarkan latar belakang di atas, maka dapat di ambil rumusan masalah
sebagai berikut : a. bagaimana cara mengontrol pergerakan Robot Shape Follower sehingga target tetap berada dipandangan kamera ?
1
2
b.
bagaimana target
cara
menemukan
obyek
yang
dimaksud
sebagai
jika terdapat benda lain di sekitarnya ?
c.
bagaimana cara menentukan obyek mana yang harus dideteksi?
d.
bagaimana cara mengaplikasikan pembacaan gambar yang ditangkap kamera?
1.3
Tujuan Tugas Akhir Setelah merumuskan masalah
yang didapat. Maka dapat
disimpulkan bahwa tujuan dari Tugas Akhir ini adalah : a.
dapat mengontrol pergerakan Robot Shape Follower sehingga target tetap berada dipandangan kamera .
b.
dapat menemukan obyek yang dimaksud sebagai target jika terdapat benda lain di sekitarnya.
c.
dapat menentukan obyek mana yang harus dideteksi.
d.
dapat mengaplikasikan pembacaan gambar yang ditangkap kamera.
1.4
Batasan Masalah Karena kompleksnya permasalahan yang terdapat dalam sistem ini, maka
perlu adanya batasan-batasan untuk menyederhanakan permasalahan ini, yaitu: 1. sensor
yang
digunakan untuk
menentukan
dimana
tempat
benda
menggunakan kamera 2. sebagai penghasil penggerak kamera digunakan motor servo. 3. kamera telah diseting pada sudut maksimum 0-180째. 4. background menggunakan warna monochrome atau satu warna. 5. iluminasi yang mengenai obyek harus dalam sebaran yang rata. 6. objek benda berwarna dan kontras terhadap background.
1.5
Sistematika Penulisan Yang digunakan dalam laporan Tugas Akhir ini adalah sebagai berikut:
BAB I PENDAHULUAN Bab ini berisi latar belakang permasalahan, perumusan masalah, tujuan, batasan masalah, definisi istilah, dan sistematika penulisan laporan Tugas Akhir.
3
BAB II TINJAUAN PUSTAKA Pada bab ini akan dijelaskan tentang teori – teori serta penjelasan yang dibutuhkan dalam pembuatan Robot Shape Follower sebagai modul praktikum sistem kendali.
BAB III METODE PENELITIAN Bab ini berisi tentang analisa dan perancangan Robot Shape Follower sebagai modul praktikum sistem kendali.
BAB IV PENGUJIAN ALAT Bab ini berisi tentang jadwal pelaksanaan tugas akhir.
DAFTAR PUSTAKA Bab ini berisi tentang literatur sebagai teori pendukung pembahasan pada laporan Tugas Akhir ini.
BAB II TINJAUAN PUSTAKA
Tinjauan pustaka dalam bab II ini membahas tentang teori-teori yang mendukung dalam perencanaan dan pembuatan alat, yang meliputi : Web Kamera, Mikrokontroller, motor servo, komunikasi serial.
2.1 Konsep Sistem Object Tracking Tugas
dari
suatu
penangkapan
/
deteksi
obyek
didefinisikan
sebagai mengenali suatu obyek tertentu, sedangkan tracking / pelacakan didefinisikan sebagai mendekati sebuah obyek (juga disebut target) sampai cocok lokasinya. Kedua tugas tersebut memiliki kegunaan dalam lingkup yang luas dari suatu aplikasi seperti contohnya sebagai robot sepakbola. Untuk kasus tracking, terdapat dua kasus yang bisa timbul. Pada kasus pertama,
ketika
gerakan target
permasalahannya yaitu
diketahui,
untuk merencanakan
robot
bergerak
menuju ke titik tempat yang sesuai. Pada kasus kedua, ketika background bukan monochrome ataupun objek memiliki lebih dari 1 warna, bergantung
pada
beberapa
jenis
estimasi
dari
posisi
maka perlu dan kecepatan
yang datang dari data sensor.
2.2 Image Processing 2.2.1 Pengolahan Citra Pengolahan untuk mengolah sesuai bisa
Citra gambar
dengan yang dilakukan lain
adalah
suatu
sehingga
keinginkan
metode
menghasilkan
yang
kita.
gambar
Pengambilan
dengan menggunakan kamera yang bisa digunakan
digunakan
untuk
atau
yang gambar alat
mentransfer
gambar misalnya scanner atau kamera digital. Bahasan kali ini berfokus pada pengambilan gambar menggunakan web kamera. Sehingga gambar yang dihasilkan sudah berbentuk sinyal digital dan mudah dikenali atau dibaca komputer.
4
5
2.2.2 Color Extraction Dalam
sebuah
image
terdiri
dari
banyak
pixel.
Pixel
secara konseptual, satu warna, mewakili daerah kecil kecil gambar. Sebuah pixel warna digital gambar hanya angka mewakili data nilai RGB (Red, Green, Blue). Sampel warna setiap pixel memiliki tiga komponen numerik RGB (Red, Green, Blue) untuk mewakili warna wilayah pixel kecil. Ketiga komponen RGB tiga adalah tiga nomor 8-bit untuk setiap pixel. Tiga byte 8-bit (satu byte untuk masing-masing RGB) disebut 24 bit warna. Setiap komponen RGB 8 bit dapat memiliki 256 nilai yang mungkin, mulai dari 0 hingga 255. Sebagai contoh, tiga nilai seperti (250, 165, 0), berarti (Red = 250, Green = 165, Blue = 0) untuk menunjukkan satu pixel Orange. Program
foto
Editor
memiliki
EyeDropper
tool
untuk
menunjukkan 3 komponen warna RGB untuk setiap pixel gambar. Dalam sistem biner basis 2, sebuah byte 8 bit dapat berisi salah satu dari 256 nilai berkisar dari 0 hingga 255, karena 2 pangkat 8 adalah 256, seperti
yang
terlihat
dalam
urutan
2,4,8,16,32,64,128,256.
Kedelapan tersebut adalah 256. Ini adalah konsep yang sama dalam basis 10, bahwa 3 angka desimal dapat menyimpan satu nilai dari 1000, 0 sampai 999. 10 pangkat 3 adalah 1000, ide yang sama seperti 2 pangkat 8 adalah 256. Tetapi
titik
hanya
di
sini
adalah
bahwa
255
adalah
jumlah maksimum yang mungkin yang dapat disimpan dalam sebuah byte 8 bit. Angka yang lebih besar memerlukan beberapa byte, misalnya dua byte (16 bit) dapat menyimpan hingga 256x256 =65536 nilai yang unik. 24 bit RGB gambar berwarna menggunakan 3 byte, dan dapat memiliki 256 warna
merah,
dan
256
warna
hijau,
dan 256 warna biru. Ini adalah 256x256x256 = 16,7 juta kemungkinan kombinasi atau warna untuk 24 bit RGB
gambar
berwarna.
Pixel
RGB
nilai
data
menunjukkan
"berapa banyak" Merah, dan Hijau, dan Biru, dan tiga warna dan tingkat intensitas akan dikombinasikan pada saat itu pixel gambar, di lokasi pixel.
6
Komposit untuk satuarea
dari pixel.
tiga
nilai
Dalam
RGB menciptakan
sistem
RGB,
kita
warna
tahu
akhir
Red
dan
Green membuat Kuning. Jadi, (255, 255, 0) berarti Merah dan Hijau,
masing-masing sepenuhnya jenuh (255 adalah seterang 8 bit
dapat), dengan tidak ada Biru (nol), dengan warna yang dihasilkan menjadi kuning. Hitam adalah nilai RGB (0, 0, 0) dan putih adalah (255, 255, 255). Gray menarik juga, karena memiliki sifat yang memiliki nilai RGB yang sama. Jadi (220, 220, 220) adalah abu-abu terang (mendekati putih), dan (40,40,40) adalah
abu-abu gelap
(mendekati hitam).
Gray tidak
memiliki cetakan warna yang tidak seimbang. Karena abu-abu memiliki nilai sama di RGB, Black & White gambar grayscale hanya menggunakan satu byte dari 8 bit data per pixel bukannya
tiga..
Byte
masih
memegang
nilai-nilai
0
hingga 255, untuk mewakili 256 warna abu-abu. Baris piksel seni diwakili oleh satu bit biner dengan nilai 0 atau 1, yang digunakan untuk menunjukkan Hitam atau Putih (2 warna, bukan abu-abu). Baris data seni disimpan dikemas 8 bit menjadi satu 8-bit byte. 2.2.3 Binarisasi Warna Binarisasi merupakan proses untuk memisahkan obyek yang kita ambil
dengan
latar
Filtering pada warna-warna kita
tentukan
belakang yang
menggunakan
mendekati
warna
pada
Gambar 2.1.
Gambar 2.1. Contoh binarisasi api pada gambar.
teknik obyek
Color yang
7
2.2.4 Color Filtering Color
Filtering
menemukan sebuah
adalah
warna
metode
yang
berguna
pada
sebuah
yang terdapat
untuk gambar.
Dengan ditemukannya warna yang kita cari pada sebuah gambar, kita dapat menentukan proses apa yang selanjutnya harus dilakukan. Pada dasarnya pencarian ini menggunakan kombinasi dari komponen Red, Green, dan Blue yang terdapat pada gambar. Nilai dari masing-masing komponen ini didapat dari hasil beberapa kali eksperimen. Hasil dari eksperimen ini adalah sebuah kombinasi dari komponen warna Red, Green, dan Blue. Kombinasi warna ini yang kemudian dijadikan filter yang merupakan penentu sebuah warna diloloskan atau tidak. Keluaran
dari
metode
ini
langsung
akan
menghasilkan
sebuah gambar biner. Gambar biner sendiri adalah sebuah gambar yang hanya memiliki 2 derajat keabuan yaitu hitam dan putih seperti pada Gambar 2.2. Warna putih pada gambar adalah merupakan representasi dari sebuah
pixel
yang
diloloskan. gambar
warnanya
Sedangkan
merupakan
warna
representasi
hitam dari
pixel
pada yang
warnanya tidak diloloskan. Sehingga
dari
proses
di
atas,
kita
dapat
menyimpulkan
bahwa warna putih pada gambar adalah objek yang sedang kita cari. Karena warna putih pada gambar merupakan warna pada pixel yang sesuai dengan filter yang kita dapat dari hasil eksperimen pada Gambar 2.2.
Gambar 2.2 Contoh Derajat Keabuan
8
2.2.5 Sistem Warna RGB Dalam
pengolahan
citra
warna
dipresentasikan
dengan
nilai hexadesimal dari 0x00000000 sampai 0x00ffffff. Warna hitam adalah 0x00000000 dan warna putih adalah 0x00ffffff. Definisi nilai warna di atas seperti angka
Gambar
2.3
di
bawah,
variabel
0x00
menyatakan
di belakangnya adalah hexadesimal. Terlihat pada Gambar bahwa setiap warna memiliki range nilai 00
(angka desimalnya adalah 0) dan ff (angka desimalnya adalah 256), atau mempunyai nilai derajat keabuan 256 = 28. Dengan demikian range warna yang digunakan adalah (28)(28)(28) = 224, 2 (atau yang dikenal dengan istilah
True
Colour
pada Windows).
Nilai
warna
yang
digunakan di atas merupakan gabungan warna cahaya merah, warna hijau dan warna biru seperti yang terlihat pada gambar di bawah. Sehingga untuk menentukan nilai dari suatu warna yang bukan warna dasar digunakan gabungan skala kecerahan dari setiap warnanya. Dari
definisi
warna tertentu
dapat
mencampurkan ketiga
Gambar dengan warna
2.3
di
mudah dasar
bawah
untuk
dilakukan, RGB.
menyajikan
yaitu
Berikut
dengan
merupakan
contoh-contoh kombinasi warna yang bisa digunakan dapat dilihat pada
Gambar
dapat menentukan kombinasi warna dengan melihat Tabel 2.1.
Gambar 2.3. Nilai Warna RGB dalam Hexadesimal
2.4
dan
9
Gambar 2.4 Komposisi Warna RGB
Tabel 2.1. Kombinasi Warna Dalam Hexadesimal
2.3
Metode Gaussian Matrix Sebuah
blur
Gaussian
(juga
dikenal
sebagai
Gaussian
smoothing) adalah hasil dari mengaburkan gambar dengan fungsi Gaussian. Ini adalah efek lunak
grafis,
mengurangi
biasanya
detail.
Efek
banyak
digunakan
untuk mengurangi visual
dalam
noise
perangkat
gambar
dan
teknik blurring adalah blur halus
menyerupai gambar yang dilihat melalui layar transparan, jelas berbeda dari bokeh efek yang dihasilkan oleh lensa outof-focus atau bayangan obyek di bawah pencahayaan yang biasa. Gaussian smoothing
juga
digunakan
sebagai
tahap
pra-pengolahan
di
computer vision algoritma dalam rangka meningkatkan struktur citra pada
skala yang berbeda-lihat representasi ruang skala dan skala
implementasi ruang . Secara matematis, menerapkan Gaussian blur untuk gambar adalah sama dengan convolving gambar dengan fungsi Gaussian , ini juga dikenal
10
sebagai
two-dimensional
Weierstrass
transform.
Sebaliknya,
convolving oleh lingkaran (yaitu, circular box blur ) akan lebih akurat mereproduksi bokeh
efek.
Gaussian
lain, menerapkan blur Gaussian memiliki efek
Gaussian
Sejak
Transformasi
mengurangi komponen gambar dengan dengan
demikian
Fourier
frekuensi
sebuah
blur
dari
tinggi,
Gaussian
merupakan low pass filter. 1 2 1
2 1
4 2 2 1
0 1
0
0 1
0
atau 1 4 1
Matriks 3×3
Gaussian blur memilki nilai matriks seperti yang di atas. Dalam penerapannya matriks yang digunakan hanya salah satu dari kedua matriks tersebut. kebutuhan
Pemilihan
matriks
digunakan
sesuai
dengan
yang diinginkan. Sedangkan rumus umum dari Gaussian
adalah sebagai berikut :
Matriks Umum Gaussian
Ket :
= nilai matriks dengan bobot paling ringan = nilai matriks dengan bobot sedang
= nilai matriks dengan bobot paling berat
2.4
Mikrokontroler ATMEGA8 AVR
merupakan
salah
satu
jenis
mikrokontroler
yang
di
dalamnya
terdapat berbagai macam fungsi. Perbedaannya pada mikrokontroler MCS51 dengan AVR adalah, jika
AVR
tidak
perlu
menggunakan
oscillator
eksternal
karena
di dalamnya sudah terdapat internal oscillator. Selain itu kelebihan dari AVR adalah memiliki Power-On Reset, yaitu tidak perlu ada tombol reset dari luar karena cukup hanya dengan mematikan supply,
maka
secara
otomatis
AVR
akan
melakukan reset. Untuk beberapa jenis AVR
11
12
terdapat beberapa fungsi khusus seperti ADC, EEPROM sekitar 128 byte sampai dengan 512 byte. AVR AT-MEGA8 adalah mikrokontroler CMOS 8-bit berarsitektur AVR RISC yang memiliki 8K byte in-System Programmable Flash. Mikrokontroler dengan konsumsi daya rendah ini mampu mengeksekusi instruksi dengan kecepatan maksimum 16 MIPS pada frekuensi 16 MHz. Jika dibandingkan dengan AT-MEGA8L perbedaannya hanya terletak pada besarnya tegangan yang diperlukan untuk bekerja. Untuk ATMEGA8 tipe L, mikrokontroler ini dapat bekerja dengan tegangan antara 2,7 - 5,5 V sedangkan untuk AT-MEGA8 hanya dapat bekerja pada tegangan antara 4,5 – 5,5 V. Konfigurasi Pin AT-MEGA8 dapat dilihat pada Gambar 2.5.
Gambar 2.5. Konfigurasi Pin AT-MEGA8
AT-MEGA8 memiliki 28 Pin, yang masing-masing pin nya memiliki fungsi yang berbeda-beda baik sebagai port maupun fungsi yang lainnya. Berikut akan dijelaskan fungsi dari masing-masing kaki AT-MEGA8. 1.
VCC Merupakan supply tegangan digital.
13
2. GND
Merupakan ground membutuhkan
untuk
semua
komponen
yang
grounding. 3.
Port B (PB7...PB0) Di dalam Port B terdapat XTAL1, XTAL2, TOSC1, TOSC2. Jumlah Port B adalah 8 buah pin, mulai dari Pin B.0 sampai dengan Pin B.7. Tiap pin dapat digunakan sebagai input maupun output. Port B merupakan sebuah 8-bit bi-directional I/O dengan internal pull-up resistor. Sebagai input, pinpin yang terdapat pada port B yang secara eksternal diturunkan, maka akan mengeluarkan
arus
jika
pull-up
resistor
diaktifkan.
Khusus
PB6
dapat digunakan sebagai input Kristal (inverting oscillator amplifier) dan input ke rangkaian Fuse
bit
Sedangkan
clock
internal,
yang digunakan untuk
PB7
untuk
bergantung
pada
memilih
dapat digunakan
pengaturan
sumber
sebagai
output
clock. Kristal
(output oscillator amplifier) bergantung pada pengaturan Fuse bit yang digunakan untuk memilih sumber clock. Jika sumber clock yang dipilih dari oscillator internal, PB7 dan PB6 dapat digunakan sebagai I/O atau jika menggunakan Asyncronous Timer/Counter2 maka PB6 dan PB7 (TOSC2 dan TOSC1) digunakan untuk saluran input timer. 4.
Port C (PC5…PC0) Port C merupakan sebuah 7-bit bi-directional I/O port yang di dalam masing-masing pin terdapat pull-up resistor. Jumlah pin nya hanya 7 buah mulai
dari
pin
C.0
sampai
dengan
pin
C.6.
Sebagai
keluaran/output port C memiliki karakteristik yang sama dalam hal menyerap arus (sink) ataupun mengeluarkan arus (source). 5.
RESET / PC6 Jika RSTDISBL Fuse diprogram, maka PC6 akan berfungsi sebagai pin I/O. Pin ini memiliki karakteristik yang berbeda dengan pin-pin yang terdapat pada port C lainnya. Namun jika RSTDISBL Fuse tidak diprogram, maka pin ini akan berfungsi sebagai input reset. Jika level tegangan yang masuk yang
ada
lebih
pendek
ke dari
pin
ini
rendah
dan
pulsa minimum, maka akan
menghasilkan suatu kondisi reset meskipun clock-nya tidak bekerja. 6.
Port D (PD7…PD0)
pulsa
14
Port D merupakan 8-bit bi-directional I/O dengan internal pull-up resistor. Fungsi dari port ini sama dengan port-port yang lain.
Hanya
saja pada
port
ini
tidak
terdapat
kegunaan-kegunaan
yang lain. Pada port ini hanya berfungsi sebagai masukan dan keluaran saja atau biasa disebut dengan I/O. 7.
AVCC Pin ini berfungsi sebagai supply tegangan untuk ADC. Untuk pin ini harus
dihubungkan
secara
terpisah
dengan
VCC
karena
pin
ini
digunakan untuk analog saja. Bahkan jika ADC pada AVR tidak digunakan terpisah
tetap
saja disarankan
dengan
VCC.
untuk
menghubungkannya
secara
Jika ADC digunakan, maka AVCC harus
dihubungkan ke VCC melalui low pass filter. 8.
AREF Merupakan pin referensi jika menggunakan ADC.
2.5
Webcam Webcam (singkatan dari web camera) adalah sebutan bagi kamera
real- time ataun online (bermakna keadaan pada saat ini juga) yang gambarnya bisa diakses atau dilihat melalui internet, PC, atau aplikasi video call. Istilah webcam merujuk pada teknologi kata
web
kadang-kadang diganti dengan kata lain yang mendeskripsikan
pemandangan
yang
ditampilkan
memperlihatkan
pemandangan
memperlihatkan
pemandangan
yang
secara umumnya, sehingga
digunakan
untuk
di
kamera,
jalan.
Ada
panorama
misalnya juga
kota
memonitor keadaan
dan jalan
StreetCam
yang
Metrocam
yang
pedesaan, TraffiCam raya,
cuaca
dengan
Weather Cam, bahkan keadaan gunung berapi dengan VolcanoCam. Webcam atau web
camera
dihubungkan
adalah
sebuah
ke komputer
melalui
kamera
video
(biasanya)
COM. Pada gambar merupakan contoh bentuk fisik dari webcam.
port
digital
kecil
yang
USB
ataupun
port 2.6.
15
Gambar 2.6. Kamera Video/Webcam
2.6
Motor Servo Standart Motor servo standart 180° merupakan motor
servo
standart yang hanya mampu berputar 180°. Motor ini sering digunakan dalam pengendalian lengan atau kaki robot. Motor jenis ini hanya mampu bergerak dua arah (CW dan CCW) dengan defleksi masing-masing sudut mencapai 90° sehingga total defleksi sudut dari kanan – tengah – kiri adalah 180°. Operasional motor servo dikendalikan oleh lebar pulsa sebesar ± 20 ms, dimana 2
lebar pulsa antara 1 ms
dan
ms menyatakan akhir dari range sudut maksimum. Apabila motor
servo diberikan pulsa dengan besar 1.5 ms mencapai gerakan 90°, maka bila kita berikan pulsa kurang dari 1.5 ms maka posisi medekati 0° dan bila kita berikan pulsa lebih dari 1.5 ms maka posisi mendekati 180°. Untuk lebih jelasnya dapat dilihat dari Gambar 2.7 pulsa kendali motor servo standart 180°.
16
Gambar 2.7. Kendali Motor Servo 180째
Motor
servo
akan
bekerja
secara
baik
jika
pada
bagian
pin
kontrolnya diberikan sinyal PWM dengan frekuensi 50 Hz . Dimana pada saat sinyal dengan frekuensi 50 Hz tersebut dicapai kurang dari pada kondisi Duty Cycle 1.5 ms, maka rotor akan berputar ke kiri dengan membentuk sudut yang besarnya linier terhadap bertahan
di
posisi
tersebut.
besarnya
duty
cycle,
dan
akan
Dan sebaliknya, jika duty cycle dari sinyal
yang diberikan lebih dari 1.5 ms, maka rotor akan berputar ke arah kanan dengan membentuk sudut yang linier pula terhadap besarnya duty cycle, dan bertahan di posisi tersebut.
2.7
Komunikasi Serial PC to Mikrokontroller Komunikasi serial merupakan komunikasi data dengan pengiriman secara
satu persatu dengan menggunakan satu jalur kabel data. Sehingga komunikasi
17
serial hanya menggunakan 2 kabel data yaitu kabel data untuk pengiriman yang disebut transmit (Tx) dan kabel data untuk penerimaan disebut receive. Kelebihan dari komunikasi serial adalah jarak pengiriman
dan penerimaan
dapat dilakukan dalam jarak yang cukup jauh dibandingkan
komunikasi
parallel kekurangannya
adalah
parallel, untuk
saat
dinamakan
kecepatannya ini
sedang
lebih
tetapi
lambat
dikembangkan
daripada
komunikasi
teknologi
baru
yang
USB (Universal Serial Bus) yang memiliki kecepatan pengiriman
dan penerimaan data lebih cepat disbanding serial biasa.
2.8
Visual Basic 6.0 Visual basic adalah
Bahasa pemrograman
adalah
computer untuk melakukan Visual
basic,
salah satu bahasa perintah-perintah tugas-tugas
pemrograman yang
tertentu.
computer.
dimengerti
Bahasa
oleh
pemrograman
yang dikembangkan oleh Microsoft sejak tahun 1991,
merupakan pengembangan dari pendahulunya yaitu pemrograman BASIC
bahasa
(Beginner’s
All-purpose
Symbolic Instruction Code) yang dikembangkan ada era 1950-an. Visual basic merupakan salah satu Development Tool yaitu alat bantu untuk membuat berbagai macam sistem
program
computer,
khususnya
yang
menggunakan
operasi Windows. Visual basic merupakan salah satu bahasa
pemrograman computer yang mendukung object (Object Oriented Programming = OOP) Microsoft visual basic 6.0 yang lebih sering disebut VB Merupakan sebuah bahasa
pemrograman
yang
bersifat
event
driven
dan
menawarkan
Integrated Development Environment (IDE) visual untuk membuat program aplikasi berbasis sistem operasi
microsoft
windows
dengan
menggunakan
model pemrograman Common Object Model (COM). Visual basic merupakan turunan bahasa basic dan menawarkan berbasis
pengembangan
aplikasi
computer
grafik
dengan
cepat, akses ke basis data menggunakan Data
Access
Object
(DAO),
Remote
Object
(ADO), serta menawarkan
Data Object (RDO), atau ActiveX Data pembuatan control ActiveX dan objek
ActiveX. Dalam pemrograman berbasis object (OOP), kita perlu memahami istilah object, property, method dan event sebagai berikut :

18 Object
: komponen di dalam sebuah program
19
Property
: karakteristik yang dimiliki object
Method
: aksi yang dapat dilakukan oleh object
Event
: kejadian yang dapat dialami oleh object
Secara keseluruhan penampilan desktop Visual basic adalah seperti yang pada Gambar 2.5 yang terdiri atas bagian bagian sebagai berikut :
Toolbar, shortcut yang dipergunakan untuk membuat perintah
Menu Bar, menu untuk perintah Visual basic
Tool Box, komponen yang dipergunakan untuk membuat form
Form, bidang yang akan ditampilkan sebagai visual
Editor Code, bidang tempat menulis program
Property, daftar setting untuk setiap komponen
Form Layout, penampakan pada layer
Project Explorer
Gambar 2.8 Dekstop Visual basic 6.0
Menu bar terdiri dari menu File, Edit, View, Project, Format, Debug, Run,Query, Diagram, Tools,Add-Ins, Window dan Help.
20 10
Gambar 2.9 Menu Bar
2.8.1 Menu Toolbar Menu Toolbar merupakan menu berbentuk icon yang berisi perintah.
Setiap
menu
toolbar
terdapat
utama Visual basic.
Gambar 2.10 Menu Toolbar
juga
pada
menu
21
2.8.2 Menu Toolbox Setiap pembuatan project baru dan pilihan project adalah Standard
EXE
maka
akan
muncul
menu
toolbox
standard seperti pada Gambar 2.12 berikut
Gambar 2.11 Menu Toolbox Standart EXE
Pada pembuatan program aplikasi instrumentasi dan control kita tidak mempergunakan menu toolbox
standard karena
kita masih memerlukan komponen lain untuk keperluan mengakses port juga mengolah serta menyimpan. Meskipun
kita
juga
masih
dapat
menambahkan
komponen baru sesuai kebutuhan proses control dengan cara menambahkan komponen Component
Library
sebenarnya
kita
yang
tersedia
dan komponen
tidak
perlu
dalam
control
OCX,
Visual tetapi
repot dengan hal tersebut
melainkan dengan cara membuat project baru menggunakan wizard yang tersedia.
2.9
Open CV Open CV adalah singakatan dari Open Computer Vision,
library- library Image
opensource
yang
dikhususkan
untuk
yaitu
melakukan
Processing. Tujuannya adalah agar komputer mempunyai kemampuan
yang mirip dengan cara pengolahan visual pada manusia. Library ini dibuat untuk bahasa C/C++ sebagai optimasi Programming
Interface)
untuk
realtime
aplikasi,
API(Aplication
High level maupun low level, terdapat
fungsi-fungsi yang siap pakai untuk loading , saving, akuisisi gambar dan video. Pada library OpenCV ini mempunyai fitur sebagai berikut : 
Manipulasi data gambar (alokasi memori, melepaskan memori, kopi gambar, seting, serta konversi gambar).
22
Image/Video I/O (bisa menggunakan kamera yang sidah didukung oleh library ini).
Manipulasi matrix dan vektor serta terdapat juga routines linear algebra (products, solvers, eigenvalues, SVD)
Image
Processing
sampling
dan interpolasi,
histogram,
dasar
(filtering,
konversi
warna
edge
detection,
operasi
morfologi,
image pyramid)
Analisis struktural
Kalibrasi kamera
Pendeteksian gerak
Pengenalan objek
Basic GUI (display gambar/video, mouse/keyboard kontrol, scroll bar)
Image labelling (line, conic, polygon, text drawing)
BAB III PERENCANAAN SISTEM
3.1
Deskripsi Umum Mengenai Perancangan Sistem Dalam perancangan ini, robot shape follower ini nantinya akan
dijadikan sebagai media pembelajaran perkuliahan Image Processing dan sistem kendali.
3.1.1 Gambaran Umum Alat
Gambar 3.1 Blok diagram kerja sistem
Cara kerja dari masing-masing blok diagram di atas adalah sebagai berikut : 1.
Webcam
: alat berupa kamera untuk PC yang biasa
digunakan untuk mengambil gambar digital. 2.
PC
: alat yang berfungsi untuk memprogram sekaligus
menerima dan mengirim data. 3.
Mikrokontroler
: sebuah device yang berfungsi sebagai
pemroses data input atau output. 4.
3.2
Motor servo
: sebagai aktuator penggerak kamera
Perancangan Sistem Mekanik Rangka utama pada robot ini menggunakan akrilik 3mm. Pada robot
ini dapat bergerak sejajar sumbu X dan Y dengan menggunakan motor servo. Berikut ini dijelaskan tentang penggunaan bahan, bentuk dan ukuran yang digunakan dalam tugas akhir ini : 1.
Papan dasar menggunakan bahan triplek dengan ukuran 225 x 225 mm sebagai penopang rangkaian elektronik serta mekanik.
21
22
2. Papan landasan menggunakan bahan akrilik dengan ukuran 200mm x 200mm dengan tebal 3mm sebagai penopang motor sumbu X. 3.
Rangka mekanik dinamis sumbu X menggunakan bahan akrilik dengan ukuran 165 x 150 x 65 mm dengan model huruf U dengan penopang miring sebagai penyangga..
4.
Kemudian rangka dinamis sumbu Y menggunakan bahan akrilik dengan ukuran 135 x 130 x 65 mm dengan model huruf U sebagai penopang kamera.
5.
Kamera diletakkan tepat Ditengah rangka mekanik sumbu Y agar dapat bergerak sesuai gerakan motor.
6.
Untuk mengubah gerakan rangka digunakan motor servo standar.
1.
Desain rancangan robot shape follower (3Dimensi)
Kamera Motor servo Y Rangka Motor Y Rangka sumbu X
Landasan mekanik
Motor servo X Papan triplek
Gambar 3.2 Desain mekanik 3 Dimensi
23
2.
Desain Rancangan Mekanik (2 dimensi)
Gambar 3.3 Desain mekanik 2 Dimensi
3.3
Perancangan Sistem Elektrik Desain
perancangan robot beberapa
ini
terdiri
sistem,
yaitu
dari menggerakkan
kamera sejajar sumbu X dan sumbu Y menggunakan motor servo, robot ini juga menggunakan kamera sebagai sensor agar dapat melihat objek atau yang sering disebut dengan robot vision. Kemudian untuk menggerakkan kedua motor servo
tersebut
dibutuhkan
mikrokontroler
ATmega8.
Mikrokontroler
ATmega8 tersebut bertugas sebagai otak dari robot ini
3.3.1 Analisis Kebutuhan Sistem Pembuatan
keseluruhan
sistem robot
shape
follower
ini
perlu diperinci semua kebutuhan sistem mekanik maupun elektrik yang dibuat, antara lain :
24
1.
mikrokontroler sebagai pemroses dan pengendali motor.
2.
pengendali putaran motor servo menggunakan timer mikrokontroler.
3.
sensor menggunakan kamera webcam.
4.
rangka robot menggunakan bahan akrilik dengan tebal 3mm.
5. komunikasi menggunakan
serial
antar
PC
dan
Mikrokontroler
Max232. 6.
sumber tegangan DC +5V digunakan untuk men-suplay minimum system dan motor servo.
3.3.2 Perancangan Alat 3.2.2.1 Minimum Sistem ATMEGA8 Proses kerja dari sistem otomasi mutlak memerlukan sistem kontrol sistem
baik
menggunakan
sebuah
sistem
mekanik,
elektrik ataupun menggunakan PC (Personal Computer).
Apabila suatu sistem otomasi dikatakan layaknya semua organ tubuh manusia seutuhnya maka sistem kontrol merupakan bagian otak / pikiran, yang mengatur dari keseluruhan gerak tubuh. Sebagai sistem digunakan
kontrol pada robot shape
Mikrokontroler
ATMega8.
Desain
follower
dari
minimum
system rangkaian Mikrokontroler ATMega8 dapat dilihat pada Gambar 3.1. Untuk perancangan pendukung
memanfaatkan
harus menambahkan yaitu
dua
clock
exsternal
beberapa
dalam
komponen
buah kapasitor (C1, C2) dan crystal
maksimal 16 MHZ (X-TAL), dan Push Button (PB1) untuk tombol reset microcontroller ATMega8. Dengan rangkaian yang sudah dibuat dapat dimasukkan ATMega8,
yang
nantinya
pergerakan dari robot tersebut.
akan
ini program
ke dalam Microcontroller menjadi
sistem kontrol
25
Rangkaian komunikasi serial
ATmega8
Gambar 3.4 Rangkaian Minimum sistem Robot Shape Follower
Pada gambar di atas, ditunjukkan kesesuaian antara rancangan minimum sistem
yang telah berbentuk
blok diagram
pada gambar 3.1 dengan rangkaian yang telah direalisasikan. Pada gambar 3.4 di atas, terdapat beberapa bagian dengan tugas-tugas tersendiri diantaranya :
A. Komunikasi Serial Max232 Rangkaian ini berfungsi sebagai pengubah sinyal level tegangan TTL yaitu 0V untuk logika low dan logika high menjadi
sinyal
untuk
komunikasi
digital
5V untuk
serial
RS232
yaitu –12V untuk logika high dan 12V untuk logika low ataupun sebaliknya.
Rangkaian
ini
dibutuhkan
karena
output
dari
microcontroller adalah sinyal level tegangan TTL yang mana untuk komunikasi serial dibutuhkan sinyal dengan level RS232 sehingga dibutuhkan rangkaian pengubah dari level TTL menjadi RS232 ataupun sebaliknya data dari komunikasi serial RS232 berupa sinyal level RS232 harus dirubah dahulu ke sinyal TTL agar bisa dibaca oleh microcontroller.
26
B.
Kontroler ATMEGA8 Kontroler
ATMEGA8
koordinator dari rangkaian masing-masing
Disini
berfungsi
sebagai
yang terpasang
portnya. Mikrokontroler
pada ini
memiliki
wewenang untuk mengendalikan motor dan menerima perintah dari PC melalui komunikasi serial.
Gambar 3.5 Skematik keseluruhan Minimum System robot shape follower
Untuk dapat bekerja secara maksimum, mikrokontroler ini membutuhkan rangkaian clock yang terdiri dari sebuah crystal serta sebuah
rangkaian
power
supply.
Rangkaian
clock
Disini
berfungsi sebagai jantung untuk menghasilkan detak atau clock. Dalam merancang sebuah minimum system ATMega8 yang menggunakan
komunikasi
mikrokontroler memerlukan seperti
device
lain-lain.
serial beberapa
IC Max232,
Minimum
antara
PC
komponen
konektor
DB9
dengan pendukung
female
system tersebut menggunakan komponen
seperti yang terlihat pada tabel 3.1. Tabel 3.1 Daftar komponen minimum sistem
No
dan
Inisialisasi
Tipe Komponen
1
R1
10KΩ ¼ W
2
R2,R3
330Ω ¼ W
27
No
Inisialisasi
Tipe Komponen
3
D1,D2
Led 3mm
4
D3
1N4001
5
C1
10uF/16V
6
C2
1000uF/16V
7
C3,C4
22pF
8
C5, C6, C7, C8
0.1uF/16V
9
J1
Header 6 Pin
10
J2
Connector DB9 Female
11
U1
ATMega8
12
U2
7805
13
U3
MAX232
Mikrokontroler ATMega8 memiliki 28-pin dengan 3 PORT input dan
output.
Setiap
pin
mikrokontroler
ATmega8
yang
digunakan pada robot shape follower memiliki fungsi dan kegunaan
yang berbeda, fungsi dari setiap pin tersebut dapat
dilihat pada Tabel 3.2.
Tabel 3.2 Port Designation
PORT
Fungsi
PORT
Fungsi
PORTB.0
NC (not connected)
PORTD.0
Tx
PORTB.1
Sinyal kabel Servo X
PORTD.1
Rx
PORTB.2
Sinyal kabel Servo Y
PORTD.2
NC (not connected)
PORTB.3
ISP/Mosi
PORTD.3
NC (not connected)
PORTB.4
ISP/Miso
PORTD.4
XTAL1
PORTB.5
ISP/SCK
PORTD.5
XTAL2
PORTD.6
NC (not connected)
PORTD.7
NC (not connected)
PORTC.0 NC (not connected) PORTC.1 NC (not connected) PORTC.2 NC (not connected) PORTC.3 NC (not connected)
28
PORT
Fungsi
PORT
Fungsi
PORTC.4 NC (not connected) PORTC.5 NC (not connected) PORTC.6 Reset Button
3.3.3 Motor Servo Standar
Alat
yang
digunakan
sebagai
penggerak
kamera
menggunakan motor servo standar 180 derajat, menggunakan motor tersebut karena robot didesain
menyerupai
kepala
hanya dapat melihat kekanan dan kekiri maupun ke atas dan ke bawah.
Gambar 3.6 Konstruksi motor sumbu X
manusia
yang
29
Gambar 3.7 Konstruksi motor sumbu Y
3.3.3.1 Akses Motor Servo Untuk mengakses motor servo tidak seperti mengakses motor DC
pada
umumnya.
Motor
servo
diakses
atau
digerakkan
dengan memasukkan sinyal PWM melalui kabel kontrol yang ada pada motor servo. mengakses
motor
memanfaatkan tersebut
Berikut
dijelaskan
servo menggunakan
crystal
digunakan
akan
external sebesar
untuk
sinyal
tentang
cara
PWM
dengan
11.0592MHz,
crystal
menghitung periode
sekitar
20ms
untuk menggerakkan motor servo dan untuk mengetahui sudut terbesar dan terkecil.
30
Karena nilai periode 20ms adalah 27662 maka digunakkan timer1 16 bit karena timer tersebut mampu menampung data hingga 65535.
Untuk
menghasilkan
sinyal
PWM
pada
mikrokontroler dibutuhkan OCR dan menggunakan TOP ICR sebagai batas atas nilai PWM. hanya
Dan
untuk
menggerakkan
motor
servo
dibutuhkan
periode antara 1 – 2ms dari 20 ms atau sekitar 5 – 10%.
3.4
Perancangan Software Image Understanding pada Visual Basic Pada tahap ini akan dijelaskan secara terperinci tentang bagian utama dari
tugas akhir ini.
31
Start
Colour Extraction
Gaussian Matrix
Brightness Enhancement
Contrast Enhancement
Colour Filtering
Center Detection
Finish
Gambar 3.8 Flowchart kerja sistem image understanding pada visual basic
3.4.1 Colour Extraction Colour extraction merupakan sebuah langkah atau tahap untuk memisahkan warna dasar Red, Green, dan, Blue dari data mentah yang ada di setiap pixel. Dengan R untuk varian nilai warna merah, G untuk varian nilai warna hijau, dan B untuk varian nilai warna biru. Pixel sendiri merupakan
bagian
terkecil
dari
sebuah
gambar
(picture
element) yang membentuk/membangun citra secara keseluruhan. Proses colour extraction yaitu proses dimana sebuah nilai varian dari sebuah warna, dipisahkan berdasarkan 3 komposisi warna yaitu (R, G, B). dengan menggunakan rumus sebagai berikut:
R ďƒ Merah
=
G ďƒ Hijau
=
32
B ďƒ Biru
=
Dari keterangan colour
di
atas
maka
didapat
rumus
umum
untuk
extraction.
Ket
: V = Varian Value. R(x,y) = Varian nilai warna merah pada kolom x, baris y G(x,y) = Varian nilai warna hijau pada kolom x, baris y B(x,y) = Varian nilai warnabiru pada kolom x, baris y P(x,y) = Varian nilai warnaper pixel pada kolom x, baris y Int = Pembulatan suatu bilangan
R(1,1) G(1,1) B(1,1)
b a
R(1,2) G(1,2) B(1,2)
c
d
R(2,1) G(2,1) B(2,1) R(2,2) G(2,2) B(2,2)
Gambar 3.9 Proses Colour Extraction
Dari
rumus
di
atas
jika
kita
terapkan
pada
sebuah
gambar berukuran 2x2 pixel dengan warna yang berbeda maka hasilnya adalah :
P(a) = 2366445 R ďƒ Merah = (2366445 Mod (216)) Mod(28) = 237 G ďƒ Hijau = Int((2366445 Mod (216))/(28)) = 27
33
B Biru = Int(2366445)/ (216)) = 36 Nilai P(a) adalah nilai yang terdapat pada pixel a : 1.
Untuk R adalah nilai warna merah, nilai P(a) dimodulus dengan 2 16 setelah itu dimodulus kembali dengan 28 maka nilai R=237.
2.
Untuk dengan
nilai 2
16
G
adalah
nilai
warna
setelah itu dibagi dengan 2
Hijau, 8
P(a)
dimodulus
kemudian agar nilainya
berbentuk desimal maka di Int kan maka diperoleh nilai 27. 3.
Kemudian untuk nilai B adalah nilai warna biru, nilai P(a) dibagi dengan 216, agar nilainya tidak ber-koma maka hasilnya di Int kan maka diperoleh nilai 36.
P(b) = 5091619 R Merah = (5091619 Mod (216)) Mod(28) = 35 G Hijau = Int((5091619 Mod (216))/(28)) = 177 B Biru = Int(5091619)/ (216)) = 77 Nilai P(b) adalah nilai yang terdapat pada pixel b. 1. Untuk R adalah nilai warna merah, nilai P(b) dimodulus dengan 2 16 setelah itu dimodulus kembali dengan 28 maka nilai R=35. 2. Untuk nilai G adalah nilai warna Hijau, P(b) dimodulus dengan
216 setelah itu dibagi dengan 28 kemudian agar nilainya
berbentuk desimal maka di Int kan maka diperoleh nilai 177. 3. Kemudian untuk nilai B adalah nilai warna biru, nilai P(b) dibagi dengan 216, agar nilainya tidak ber-koma maka hasilnya di Int kan maka diperoleh nilai 77.
P(c) = 15246080 R Merah = (15246080 Mod (216)) Mod(28) = 0 G Hijau = Int((15246080 Mod (216))/(28)) = 163 B Biru = Int(15246080)/ (216)) = 232 Nilai P(c) adalah nilai yang terdapat pada pixel c. 1. untuk R adalah nilai warna merah, nilai P(c) dimodulus dengan 216 setelah itu dimodulus kembali dengan 28 maka nilai R=0.
34
2.
untuk nilai G adalah nilai warna Hijau, P(c) dimodulus dengan
2 16 setelah itu dibagi dengan 28 kemudian agar nilainya
berbentuk desimal maka di Int kan maka diperoleh nilai 163. 3.
kemudian
untuk
nilai
B
adalah
nilai
warna
biru,
nilai
P(c) dibagi dengan 216, agar nilainya tidak ber-koma maka hasilnya di Int kan maka diperoleh nilai 232.
P(d) = 16777216 R ďƒ Merah = (16777215 Mod (216)) Mod(28) = 256 G ďƒ Hijau = Int((16777215 Mod (216))/(28)) = 256 B ďƒ Biru = Int(16777215)/ (216)) = 256 Nilai P(d) adalah nilai yang terdapat pada pixel d. 1. untuk R adalah nilai warna merah, nilai P(d) dimodulus dengan 216 setelah itu dimodulus kembali dengan 28 maka nilai R=255. 2.
untuk nilai G adalah nilai warna Hijau, P(d) dimodulus dengan
216 setelah itu dibagi dengan 28 kemudian agar nilainya
berbentuk desimal maka di Int kan maka diperoleh nilai 255. 3.
kemudian
untuk
nilai
B
adalah
nilai
warna
biru,
nilai
P(d) dibagi dengan 216, agar nilainya tidak ber-koma maka hasilnya di Int kan maka diperoleh nilai 255.
3.4.2 Gaussian Matriks
Setelah
Color
Extraction
Gaussian Matriks. Proses
ini
memperbaiki citra yang
ada
pada
citra
proses
selanjutnya
digunakan
dengan menghilangkan
sehingga
citra
adalah
untuk efek
noise
yang dihasilkan akan lebih
mudah dibaca oleh PC. Walaupun secara kasat mata gambar terlihat blur, tetapi oleh PC citra tersebut dapat dibaca secara jelas karena tidak ada titik-titik kecil(noise) pada citra. Proses Gaussian Matriks adalah proses menghilangkan warna RGB pada suatu pixel menggunakan warna RGB pada pixel-pixel yang ada pada tetangganya(neighborhood). Dalam proses
ini
sama saja
dengan
35
menghilangkan ada
jatidirinya
dan
mengisi
dirinya
dengan
yang
di sekitarnya. Pada proses ini menggunakan matriks 3X.
Matriks Umum Gaussian
Ket :
= nilai matriks dengan bobot paling ringan = nilai matriks dengan bobot paling berat
= nilai matriks dengan bobot sedang Nilai yang paling mempengaruhi pixel yang akan di gaussian adalah pixel yang terdapat pada matriks yang bertanda , nilai yang mempengaruhi tidak
pixel
yang
akan
di
Gaussian
tetapi
terlalu
mempengaruhi adalah pixel yang terdapat pada matriks yang bertanda
, sedangkan nilai yang tidak mempengaruhi samasekali pixel yang akan di Gaussian adalah pixel yang terdapat pada matriks yang bertanda seperti yang ada pada matriks di atas. 1 2 1 Mgauss 2 4 2 1 2 1
Matriks yang akan digunakan dalam pengoperasian ini adalah matriks 3×3 yang ada di atas menggunakan format 1, 2, 1 dst.
Gambar 3.10 Contoh gambar yang akan di blur
Untuk mendapatkan hasil bluring pengoperasian dimulai dari pixel a (pixel pada baris ke-1, kolom ke-1) sampai pixel yang terakhir,
36
dalam contoh kali ini sampai P(i) (pixel pada baris ke-3, kolom ke-3). Dengan
mengalikan
R,
G,
B
pada
masing-masing
pixel
dengan matriks Gaussian 3×3 : 1.
Rgauss merupakan hasil perkalian R pada pixel baris x, kolom Gaussian
di
y
dengan
matriks
3×3
seperti
pada pengoperasian
di bawah ini, sehingga didapatkan suatu nilai R baru untuk pixel (x, y). n n
Rgauss ( x , y )
Rgauss ( x , y )
Rgauss ( x , y )
R x 1 y 1
( x, y )
Mgauss
1 2 1 2 4 2 1 2 1 1 1 n n 2 x1y 1 R( x, y ) 2 4 2 1 1 2 16 R (x 1, y) 2 R (x , y) R (x 2, y) 1 1 n n x1y 1R (x , y1) 2 R (x 1, y 1) 4 R (x 2, y 1) 2 R(x , y 2) 1 R (x 1, y 2) 2 R (x 2, y 2) 1 16
2. Ggauss merupakan hasil perkalian G pada pixel di baris x, kolom y dengan
matriks Gaussian
3×3, seperti pada
pengoperasian di bawah ini, sehingga didapatkan suatu nilai G baru untuk pixel (x, y). n n
G
( x, y )
Ggauss ( x, y )
Ggauss( x, y )
Ggauss( x, y )
Mgauss
x 1 y 1
1 2 1 2 4 2 1 2 1 1 1 n n 2 x1y 1 G( x, y ) 2 4 2 1 1 2 16 G (x , y) G (x 1, y) 2 G (x 2, y) 1 1 n n x1y 1G (x, y1) 2 G (x 1, y 1) 4 G (x 2, y 1) 2 G(x, y 2) 1 G (x 1, y 2) 2 G (x 2, y 2) 1 16
3. Bgauss merupakan hasil perkalian B pada pixel di baris x, kolom y dengan
matriks Gaussian 3×3,
seperti pada
37 pengoperasian di bawah ini, sehingga didapatkan suatu nilai B baru untuk pixel (x, y).
38
n n
Bgauss ( x , y )
Bgauss ( x , y )
Bgauss ( x , y )
B x 1
y 1
( x, y )
Mgauss
1 2 1 2 4 2 1 2 1 1 2 1 n n B 2 4 2 ( x, y ) x 1 y 1 1 2 1 16 B (x , y) B (x 2, y) 1 B (x 1, y) 2 1 n n x 1y 1B (x, y1 ) 2 B (x 1, y1) 4 B (x 2, y1 ) 2 B B (x 1, y 2) 2 B (x 2, y 2) 1 (x , y 2) 1 16
Contoh proses Gaussian matriks pada suatu citra dengan menggunakan matriks 3×3:
P (2,1) = (R(2,1), G(2,1), B(2,1)) P (1,1) = (R(1,1), G(1,1), B(1,1))
P (1,3) = (R(1,3), G(1,3), B (1,3))
P (3,1) = (R(3,1), G(3,1), B (3,1))
P (3,3) = (R(3,3), G(3,3), B(3,3))
Gambar 3.11 Proses colour extraction sebelum melalui gaussian
39
Berikut adalah contoh Gaussian matriks pada P(a) : n 3 n 3
R
Rgauss ( x, y )
Rgauss (1,1)
Rgauss (1,1)
x 1
y 1
36 76
x 1
(1,1)
Rgauss (1,1) Rgauss (1,1) Rgauss (1,1)
1
y
178
368 0 0
( x, y)
Ggauss (1,1)
G x 1
Ggauss (1,1) Ggauss (1,1) Ggauss(1,1)
Mgauss
y 1
16 96 1 211 24 2 n 3 n 3 149 2 102 4 175 2 x 1 y 1 178 0 2 811 1 16
48 96 21 298 416 350 x 1 y 1 178 0 81 16 21 + 48 + 96 + 298 + 416 + 350 + 178 + 0 + 81 16 1392 16 87 n 3 n 3
Ggauss (1,1)
( x, y)
1 2 1 2 4 2 1 2 1 G (1 ,1) 1 G ( 2, 1) 2 G (3, 1) 1 n 3 n 3 x 1y 1G (1 , 2) 2 G ( 2, 2) 4 G (3, 2) 2 G (1 , 3) 1 G (2 , 3) 2 G (3 , 3) 1
Ggauss (1,1)
213 62 15
16 36 368 213 76 0 62 178 0 15 16 886 16 53,375Integer 53 n 3 n 3
Ggauss
1 2 1 2 4 2 1 2 1 R (1 ,1) 1 R ( 2, 1) 2 R ( 3, 1) 1 n 3 n 3 x 1y 1R (1 , 2 ) 2 R ( 2, 2) 4 R (3, 2) 2 R (1 , 3) 1 R (2 , 3) 2 R (3 , 3) 1 16 184 2 213 1 36 1 n 3 n 3 04 38 2 31 2 x 1 y 1 178 02 15 1 1 16 n 3 n 3
Rgauss
Mgauss
( x, y )
40
n 3 n 3
Bgauss ( x, y)
Bgauss
(1,1)
Bgauss (1,1)
Bgauss (1,1) Bgauss (1,1) Bgauss (1,1) Bgauss (1,1)
B x 1
( x, y)
Mgauss
y 1
1 2 1 2 4 2 1 2 1 B (1 ,1) 1 B ( 2, 1) 2 B (3, 1) 1 n 3 n 3 x 1y 1B (1 , 2) 2 B ( 2, 2) 4 B (3, 2) 2 B(1 , 3) 1 B (2 , 3) 2 B (3 , 3) 1 16 150 2 250 1 147 1 n 3 n 3 19 2 255 4 179 2 x 1 y 1 44 1 102 2 189 1 16 147 300 250 n 3 n 3 38 1020 358 x 1 y 1 44 204 189
16 147 + 300 + 250 + 38 + 1020 + 358 + 44 + 204 + 189 16 2550 16 159,375Integer 159
Untuk gaussian pada pixel b (P(b))sampai dengan pixel i, proses Gaussian nya sama dengan contoh di atas. Hasilnya adalah : P(b) = P(1,2) = (R(1,2), G(1,2), B(1,2)) = (22, 54, 99) P(c) = P(1,3) = (R(1,3), G(1,3), B(1,3)) = (12, 97, 27) P(d) = P(2,1) = (R(2,1), G(2,1), B(2,1)) = (47, 80, 147) P(e) = P(2,2) = (R(2,2), G(2,2), B(2,2)) = (8, 98, 48) P(f) = P(2,3) = (R(2,3), G(2,3), B(2,3)) = (2, 10, 30) P(g) = P(3,1) = (R(3,1), G(3,1), B(3,1)) = (18, 33, 50) P(h) = P(3,2) = (R(3,2), G(3,2), B(3,2)) = (3, 21, 35) P(i) = P(3,3) = (R(3,3), G(3,3), B(3,3)) = (0, 5, 12)
41
Dari contoh di atas dapat dilihat bahwa semakin pojok pixel, semakin rendah nilai RGBnya. Jika Gaussian matriks ini dilakukan berulang pada pixel yang sudah dieksekusi, maka semakin lama citra yang dihasilkan akan semakin berwarna gelap pada pojokpojok citra. Dan berikut ini adalah contoh gambar yang telah di gaussian :
P (2,1) = (Rgauss (2,1), Ggauss (2,1), Bgauss (2,1) P (1,1) = (Rgauss (1,1), Ggauss (1,1), Bgauss (1,1)
P (1,3) = (Rgauss (1,3), Ggauss (1,3), Bgauss(1,3)
P (3,1) = (Rgauss (3,1), Ggauss (3,1), Bgauss (3,1)
P (3,3) = (Rgauss (3,3), Ggauss (3,3), Bgauss (3,3)
Gambar 3.12 Hasil bluring pada pixel 3x3
42
R
Rg
G
Gg
B
Bg
Gambar 3.13 Grafik perubahan colour extraction menjadi Gaussian
Dari contoh di atas maka didapat rumus umum sebagai berikut : 16 8 n n P( x , y ) M OD(2 ) M OD(2 ) 1 P ) M OD(2 ) 2 M OD(2 x 1 y 1 16 8 (x , y
1)
Rgauss ( x , y )
P(x , y 2) M OD(2 1
P
) M OD(2 )
) M OD(2 )
M OD(2 4
16 (x 1)
P
) M OD(2 ) 2
M OD(2
8
16
8
1, y
8
16
P(x 2, y ) M OD(216 ) M OD(2 8 ) 1
P(x 1, y) M OD(216 ) M OD(2 8 ) 2
(x 1)
16
P(x 1, y 2 ) M OD(2 2
2, y
8
) M OD(2 ) P(x 2, y 2) M OD(2
16
8
16
Ket : Rgauss(x, y) = Nilai warna merah gaussian pada kolom x, baris y
MOD = Modulus
) M OD(2 ) 1
P = Value Image pada pixel (Raw data)
43
P( x , y ) M OD(21 6 ) 8
(2 )
Int M OD(216 ) P n n (x, y 1 ) Int x
Ggauss( x , y )
1
1 y
Int
(2 )
8
P(x, y 2 ) M OD(2 ) 8 (2 )
1
Int
P(x 1 , y) M OD(21 6 ) 8
(2 ) P
2 Int
2
M OD(21 6 )
(x 1, y 1)
(2 )
16
8
(2 ) M OD(21 6 )
(x 2, y 1) 8
(2 )
16
1 Int
P(x 1, y 2 ) M OD(2 ) 8 (2 )
16
2 Int
1
P(x 2, y) M OD(216 )
P 4 Int
8
Int
P(x 2 , y 2) M OD(2 8
2 ) 1
(2 )
16
Ket : Ggauss(x, y) = Nilai warna hijau gaussian pada kolom x, baris y P = Value Image pada pixel (Raw data) MOD = Modulus
Bgauss( x, y )
P(x 2, y) P( x, y ) P(x 1, y) Int Int 1 2 1 16 16 (2 ) (216 ) Int (2 ) n n P P P (x 2, y 1) (x , y 1) (x 1, y 1) Int Int 2 Int 2 16 4 16 (2 ) (2 ) (216 ) x 1 y 1 P(x 2, y 2) P(x , y 2) P(x 1, y 2) 1 2 Int 1 Int Int 16 16 16 (2 ) (2 ) (2 ) 16
Ket : Bgauss(x, y) = Nilai warna biru gaussian pada kolom x, baris y P = Value Image pada pixel (Raw data) MOD = Modulus
44
3.4.3
Brightness Enhancement Brightness
enhancement
merupakan
proses
untuk
memperbaiki gambar dengan cara mencerahkan atau mempergelap gambar jika suatu gambar terdapat noise. Proses ini dapat dilakukan dengan cara menambah atau mengurangi nilai varian warna yang telah dibaca sehingga tiap warna akan menghasilkan kecerahan sesuai dengan nilai Kb. Pada proses ini jika terdapat gambar seperti gambar 3.3 maka dengan melakukan proses
akan
menghasilkan gambar seperti gambar 3.4 dengan rumus sebagai berikut : ďƒ
Merah
Rb
=
Rg+Kb Hijau
ďƒ Gb
= Gg+Kb Biru
ďƒ Bb
= Bg+Kb
Dari
keterangan
di
atas,
maka
didapatkan
rumus
untuk
brightness enhancement sebagai berikut :
Ket
: Rb = nilai warna merah Gb = nilai hijau warna
Bb biru
warna =
nilai Kb
=
konstanta Rgaus = nilai warna merah yang telah di gaussian Ggaus = nilai warna hijau yang telah di gaussian Bgaus = nilai warna merah yang telah di gaussian (x,y) = pixel pada kolom x dan baris y Range adalah -255 hingga 255 Jika Kb <0 maka iluminasi warna cenderung gelap, begitu juga senaliknya.
Sebagai contoh jika nilai koefisien nilai varian warna dari tiap pixel akan bertambah 60.
adalah 60 maka
45
P(1 ,1) Rb (1 ,1) , Gb (1 ,1 ) , Bb (1 ,1)
P(1 ,1) Rgauss (1 ,1 ) Kb, Ggauss (1 ,1) Kb, Bgauss (1 ,1) Kb P(1 ,1) 53 60, 87 60, 159 60
P(1 ,1) 113, 147, 219
Cara tersebut dapat diterapkan pada pixel selanjutnya dengan menggunakan koefisien yang sama. P (1,1)=(Rb(1,1),Gb(1,1),Bb(1,1))
P (3,1)=(Rb(3,1),Gb(3,1),Bb(3,1))
P (1,3)=(Rb(1,3),Gb (1,3),Bb(1,3))
P (3,3)=(Rb(3,3),Gb (3,3),Bb(3,3))
Gambar 3.14 Hasil brightness enhancement
46
Gambar 3.15 Perbedaan grafik antara Gaussian dan brightness
Pada gambar di atas terlihat jelas bahwa pada proses ini sebuah gambar menjadi cerah jika mendapat perlakuan brightness enhacement.
3.4.4 Contrast Enhancement
Contrast enhancement adalah proses memperbaiki gambar dengan caramempertajam nilalai-nilai varian warna yang telah di warna yang perbedaan
telah
diproses
warnanya. Proses
akan ini
dapat
semakin dilakukan
sehingga
terlihat dengan
jelas cara
mengalikan warna dengan range nilai 0.9 â&#x20AC;&#x201C; 1.9 dengan menggunakan cara sebagai berikut : ď&#x192; Rk = Rb x
Merah
Kk Hijau
ď&#x192; Gk = Gb
x Kk Biru
ď&#x192; Bb =
Bb x Kk
Dari keterangan di atas maka didapatkan rumus umum untuk
47 contrast enhancement sebagai berikut :
48
Rk ( x, y ) , Gk( x, y ) , Bk ( x, y ) (Rb( x, y ) Kk, Gb( x , y ) Kk, Bb( x, y ) Kk )
Ket : Rk = nilai contrast warna merah Gk = nilai contrast warna hijau Bk = nilai contrast warna biru Kk = konstanta contrast (x,y) = pixel pada kolom x dan baris y Lebar batas nilai contrast yang dapat digunakan adalah 0 hingga 1,9
Contoh jika nilai Kk diisi dengan 0.5 maka nilai varian warna dari tiap pixel akan dikalikan dengan nilai konstanta kontras tersebut. Berikut di bawah
ini
adalah
contoh
proses
image
enhancement
contrast
setelah di bringhtness pada pixel 3×3 : Image enhancement contrast pada P(a) dengan Koefisien Kontras (Kk) = 0,5 P(1 ,1) Rk (1 ,1) , Gk (1 ,1) , Bk (1 ,1)
P(1 ,1) Rb (1 ,1) .Kk , Gb (1 ,1) .Kk , Bb (1 ,1) .Kk P(1 ,1) Int 113.0,5, 147.0,5, 219.0,5
P(1 ,1) 57, 74, 110
Pixel pada kolom 1 baris 1 samadengan Rb (R) dikalikan dengan koefisien kontras, Gb (G) dikalikan dengan koefisien kontrast , Bb (B) dikalikan dengan koefisien kontras. Jika hasil perkalian tersebut bukan bilangan bulat maka bilangan tersebut harus dibulatkan, karena nilai R, G, B bukan merupakan bilangan decimal. Cara tersebut dapat diterapkan pada pixel selanjutnya dengan menggunakan koefisien kontras (Kk) yang sama.
49 P (1,1)=(Rk(1,1),Gk(1,1),Bk(1,1))
P (3,1)=(Rk(3,1),Gk(3,1),Bk(3,1))
P (1,3)=(Rk(1,3),Gk(1,3),Bk(1,3))
P (3,3)=(Rk(3,3),Gk(3,3),Bk(3,3))
Gambar 3.16 Hasil Contrast enhancemet
Gambar 3.17 Grafik perubahan antara dan Kontras
3.4.5
Colour Filtering Color filtering merupakan proses mengambil suatu komposisi
warna, dan membuang komposisi warna yang tidak diinginkan. Dengan cara memberikan ambang batas(Threshold) atas dan bawah pada setiap varian nilai warna : Batas bawah R â&#x2020;&#x2019; merah â&#x2030;Ľ (RTh - bandwith)
50
Batas atas R → merah < (RTh + bandwidth) Batas bawah G → hijau ≥ (GTh - bandwidth) Batas atas G → hijau < (GTh + bandwidth) Batas bawah B → biru ≥ (BTh - bandwidth) Batas atas B → biru < (BTh + bandwidth) kemudian menampilkan warna yang diinginkan : RGB ( merah, hijau, biru) Berikut ini adalah sebuah contoh grafik colour filtering untuk Rk :
Gambar 3.18 Grafik Rk sebelum difilter
Gambar
di
atas
merupakan
grafik
Rk
sebelum
sebelum
melalui filter. Selanjutnya nilai Rk diberi threshold antara batas atas dan batas bawah seperti yang terlihat di bawah ini :
Gambar 3.19 Grafik Rk setelah di filter
51
Dengan adanya bandwidth maka titik filter dapat melebar sesuai besar bandwidth. Seperti yang terlihat pada gambar di atas warna yang diloloskan adalah yang terdapat dalam range batas atas dan batas bawah.
Rf
Rc (x , y) N : Rth Bandwidth Rc (x , y) Rth Bandwidth
(x , y)
, Gf (x , y) , Bf (x , y) Gc (x , y) N : Gth Bandwidth Gc (x , y) Gth Bandwidth Bc (x , y) N : Bth Bandwidth Bc (x , y) Bth Bandwidth
Ket : Rf(x, y) = Warna merah yang telah di filter Gf(x, y) = Warna hijau yang telah di filter Bf(x, y) = Warna biru yang telah di filter Rth
= Ambang batas (threshold) nilai warna
merah Gth = Ambang batas (threshold) nilai warna hijau Bth = Ambang batas (threshold) nilai warna biru Bandwidth = Area varian nilai warna yang diinginkan
3.4.6 Center Detection Center detection adalah proses untuk menentukan
titik
tengah objek yang telah dipilih. Untuk mengetahui titik tengah sebuah objek yang harus dilakukan adalah men-scan tiap pixel x dan y mulai dari titik 0 hingga akhir pixel.
52
x (0,0)
(160,0) ULx ULy
URx
y BLy (0,160)
(160,160)
Gambar 3.20 Proses menentukan titik tengah objek
Pada Gambar di atas cara untuk menentukan titik tengah x dengan contoh gambar seperti tersebut adalah apabila pada pixel x terdapat warna hitam setelah membaca putih maka buatlah garis pada titik tersebut dan beri nama ULx kemudian apabila menemukan putih setelah hitam maka buatlah garis lagi dan beri nama URx, dengan teori tersebut maka didapatkan cara sebagai berikut:
Cara tersebut dapat digunakan untuk menetukan titik tengah pada pixel y dengan cara :
BAB IV PENGUJIAN DAN ANALISA
Pada bab ini akan dijelaskan tentang pengujian dan analisa sistem berdasarkan
bab
yag
menjelaskan
tentang
perencanaan
dan
pembuatan sistem. Pengujian dan analinsa yang akan dilaksanakan meliputi :
4.1
1.
Pengujian Mikrontroler
2.
Pengujian motor servo
3.
Pengujian rangkaian komunikasi serial
4.
Pengujian Aplikasi image processing pada Visual Basic
5.
Pengujian Aplikasi image processing pada OpenCV
6.
Pengujian keseluruhan sistem
Pengujian Mikrokontroler 4.1.1 Tujuan Pengujian ini bertujuan agar untuk mengetahui kegunaan unit input dan
output
dengan
menggunakan
lampu
led
sebagai
output.
Pengujian ini dilakukan dengan menggunakan 2 port yaitu PORTD.0 dan PORTD.1.
4.1.2 Peralatan Untuk memenuhi kebutuhan yang digunakan dalam pengujian ini, maka dibutuhkan peralatan sebagai berikut : 1.
Adaptor/Power Supply 12 Volt
2.
Lampu led
3.
Multimeter
4.
Downloader
4.1.3 Langkah Pengujian Pada pengujian berikut ini perlu diadakan langkah-langkah sebagai berikut ; 1.
Gunakan IC 7805 agar tegangan masukan yang dihasilkan menjadi 5 Volt.
51
52
2.
Ukur tegangan masukan pada mikrokontroler.
3.
Hubungkan salah satu pin output dengan led.
4.
Masukkan program dengan memberi logika nyala dan mati pada pin output.
4.1.4 Hasil dan Analisa Pengujian dengan pemberian program pada mikrokontroler untuk menentukan salah satu pin output sangat diperlukan untuk mengetahui apakah pada pin tersebut dapat bekerja dengan baik atau tidak.
Data Pengukuran
Tabel 4.1 Logika port pada led
PORT
Logika
Kondisi Led
PORTD.0
1
Nyala
PORTD.0
0
Mati
PORTD.1
1
Nyala
PORTD.1
0
Mati
Pada tabel 4.1 terdapat perbedaan hasil nyala dan mati. Hal ini disebabkan karena pada port diberi logika 1 dan 0.
4.1.5 Kesimpulan Dari pengujian
yang telah dilakukan untuk dapat menyalakan
dan mematikan led adalah dengan memberikan logika 1 dan 0 pada
port. Sehingga dapat disimpulkan bahwa mikrokontroler yang
digunakan dapat bekerja dengan baik.
53
4.2
Pengujian Motor Servo 4.2.1 Tujuan
tebesar
Pengujian
ini
dan terkecil,
serta
dibutuhkan
bertujuan
untuk
menentukan
batas
mengetahui nilai
sudut
OCR yang
untuk membangkitkan sinyal PWM.
4.2.2 Peralatan Untuk memenuhi kebutuhan yang digunakan dalam pengujian ini, maka dibutuhkan peralatan sebagai berikut :
1.
Osciloscope
2.
Motor Servo Standar
3.
Rangkaian minimum sistem
4.
Power Supply
4.2.3 Langkah pengujian Pada pengujian berikut ini perlu diadakan langkah-langkah sebagai berikut ; 1. Tancapkan kabel motor servo pada pin output pwm yang tersedia pada rangkaian. 2.
Buatlah
program
untuk
menghasilkan
sinyal
PWM
dengan menggunakan wizard yang ada pada CodeVision AVR seperti di bawah ini :
Gambar 4.1 Pengaturan Timer 1 pada wizard CodeVision AVR
54
3.
Setelah
melakukan
pengaturan
program tersebut dengan
pada
wizard,
generate
menambahkan beberapa program
seperti di bawah ini : #include <mega8.h> #include <delay.h> #define sx OCR1A #define sy OCR1B void main(void) { PORTB=0x00; DDRB=0x06; TCCR1A=0xA2; TCCR1B=0x1A; TCNT1H=0x00; TCNT1L=0x00; ICR1=27648; TIMSK=0x00; while (1) { sx=3317; sy=2142; } } 4. Lihat sinyal yang dihasilkan dengan menggunakan osciloscope. 5. Lakukan langkah no 3 dengan memberikan sinyal pwm yang berbeda-beda.
4.2.4 Hasil dan Analisa Berdasarkan pengujian yang dilakukan maka didapatkan data hasil pengukuran sebagai berikut : 1. Diketahui bahwa periode sinyal PWM yang dihaslikan adalah 2,5ms x 8 = 20 ms dengan frekuensi sebesar 50 Hz.
55
Gambar 4.2 Sinyal pwm dengan periode 20 ms
2.
Sudut terbesar yang dihasilkan adalah dengan sinyal OCR1A = 967,
sehingga
sinyal
PWM
yang
dihasilkan
adalah
sinyal dengan periode terkecil yaitu : 700us x 1000 = 0,7ms sesuai yang terlihat pada gambar berikut :
Gambar 4.3 Sinyal pwm sudut terbesar
56
Gambar 4.4 Sudut terbesar pada motor servo X
3.
Sudut terbesar yang dihasilkan adalah dengan sinyal OCR1A = 3317, sehingga sinyal PWM yang dihasilkan adalah sinyal dengan periode terkecil yaitu : 2.32ms sesuai yang terlihat pada gambar berikut :
Gambar 4.5 Sinyal pwm sudut terkecil
57
Gambar 4.6 sudut terkecil pada motor servo X
Data Pengukuran
Tabel 4.2 Data penguuran kondisi motor berdasarkan nilai sinyal PWM
No
Nilai OCR
Periode (ms)
Kondisi Servo X
Kondisi Servo Y
1.
967
0.7
Terbesar
Terbesar
2.
2142
1.52
Tengah
Tengah
3.
3317
2.32
Terkecil
Terkecil
Pada Tabel 4.2 jika nilai OCR dirubah maka kondisi motor servo berubah sesuai besar nilai OCR tersebut.
4.2.5 Kesimpulan Dari
pengujian
kesimpulan bahwa motor
servo
Y
untuk
yang
telah
dilakukan,
mengendalikan
motor
dapat
diperoleh
servo
X
dapat dilakukan dengan memberikan nilai OCR
yang sama seperti yang terlihat pada Tabel 4.2.
4.3
dan
Pengujian komunikasi serial antara PC dengan mikrokontroler 4.3.1 Tujuan Tujuan dari pengujian ini adalah untuk mengetahui kinerja rangkaian komunikasi serial.
58
4.3.2 Peralatan Peralatan yang dibutuhkan dalam pengujian berikut ini antara lain adalah : 1.
rangkaian minimum sistem yang telah terintegrasi rangkaian MAX232;
2.
kabel RS232 USB to Serial converter.
3.
PC yang telah terinstal driver kabel RS232, Visual Basic dan CodeVision AVR;
4.
power Supply
5.
downloader
4.3.3 Langkah Pengujian Langkah-langkah yang harus dilakuan dalam melakukan pengujian ini adalah : 1.
hubungkan
rangkaian
minimum
sistem
dengan
power
supply yang telah tersedia, kemudian tancapkan soket DB9 male pada soket DB9 female pada rangkaian. 2.
buat program sederhana dengan memanfaatkan code wizard yang ada pada CodeVision AVR seperti pada gambar berikut :
59
Gambar 4.7 Konfigurasi USART pada CodeWizard AVR
3.
masukkan potongan program sederhana berikut ini ke dalam while(1) : putchar(rx_buffer[0]);
4.
compile program di atas kemudian download program tersebut ke dalam mikrokontroler.
5. lakukan AVR
Seting
konfigurasi
seperti gambar di bawah ini :
terminal
pada
CodeVision
60
Gambar 4.8 Konfigurasi terminal pada Codevision AVR
6.
buat aplikasi sederhana pada visual basic untuk mengirim data pada mikrokontroler seperti gambar berikut :
Gambar 4.9 Contoh tampilan aplikasi komunikasi PC-Mikrokontroler
buat program sederhana untuk mengirim data seperti gambar berikut :
Gambar 4.8 Contoh program komunikasi serial pada visual basic
61
7.
tampilkan jendela terminal pada CodeVision AVR kemudian klik “connect” kemudian klik “HEX”, secara otomatis akan merubah angka menjadi hexadesimal.
8.
jalanan program pada visual basic, kemudian isi nilai pada textbox sesuai keinginan dan klik “Kirim”.
9.
lihat hasil pada jendela terminal pada CodeVision AVR.
10. berikan nilai yang berbeda pada textbox yang terdapat pada aplikasi di visual basic, kemudian amati perbedaan tersebut.
4.3.4 Analisa data Setelah melakukan langkah pengujian di atas maka didaptkan hasil sebagai berikut : 1.
Pengiriman pertama :
Gambar 4.10 Pengiriman angka 1 pada VB
Gambar 4.11 Hasil data yang diterima pada percobaan pertama
62
2.
Pengiriman kedua :
Gambar 4.12 Pengiriman angka 2 pada VB
Gambar 4.13 Hasil data yang diterima pada percobaan kedua
3.
Pengiriman ketiga :
Gambar 4.14 Pengiriman angka 3 pada VB
Gambar 4.15 Hasil data yang diterima pada percobaan ketiga
63
4.3.5 Kesimpulan Dari
analisa
data
yang
telah
dilakukan
pada
langkah
pengujian di atas dapat disimpulkan bahwa data yang dikirimkan melalui visual basic tidak mengalami perubahan sedikitpun.
4.4
Pengujian Aplikasi pada Visual Basic 4.4.1 Tujuan Tujuan dari pengujian ini adalah untu mengetahui kondisi webcam apakah mengetahui
dapat
berfungsi
secara
normal,
kemudian
untuk
cara kerja Image Processing pada visual basic yang
diaplikasikan pada alat ini.
4.4.2 Peralatan Peralatan yang dibutuhkan dalam pengujian berikut ini antara lain adalah : Peralatan yang dibutuhkan untuk pengujian ini antara lain : 1.
Webcam
2.
Laptop/PC yang telah terinstal Visual Basic.
3.
Objek berwarna.
4.4.3 Langkah Pengujian Langkah-langkah yang harus dilakuan dalam melakukan pengujian ini adalah : Langah-langkah yang harus dilakukan dalam pengujian ini adalah : 1.
Hungungkan webcam pada laptop melalui soket USB yang tersedia.
2.
Play/jalankan program Image Processing pada visual basic
4.4.4 Analisa Data Berikut adalah screen shot pengujian deteksi benda :
64
Gambar 4.16 Pengujian Image Processing pada Visual Basic 1
Gambar 4.17 Pengujian Image Processing pada Visual Basic 2
4.4.5 Kesimpulan Dari analisa data yang telah dilakukan pada langkah pengujian di atas dapat disimpulkan bahwa dari hasil pengujian 1 di atas, program berhasil mendeteksi objek yang diinginkan. Dari hasil pengujian 2 di atas, program berhasil memprioritaskan satu objek yang diinginkan saja sebagai target. Pada pengujian di atas juga terdapat informasi tentang posisi target terhadap titik pusat kamera.
4.5 Pengujian Aplikasi Image Processing pada OpenCV 4.5.1 Tujuan Tujuan dari pengujian ini adalah untu mengetahui kondisi webcam apakah dapat berfungsi secara normal, kemudian untuk mengetahui cara kerja Image Processing pada OpenCV yang diaplikasikan pada alat ini.
65
4.5.2 Peralatan Peralatan yang dibutuhkan untuk pengujian ini antara lain : 1. Webcam 2. Bola berwarna hitam 3. Laptop / PC yang sudah terinstal program Cygwin, OpenCV2.0.0a-win32_1, CV-AVR dan software â&#x20AC;&#x153;Virtual Serial Port Driverâ&#x20AC;?
4.5.3 Langkah Pengujian Langah-langkah yang harus dilakukan dalam pengujian ini adalah : 1.
Hungungkan webcam pada laptop melalui soket USB yang tersedia.
2.
Play/jalankan program Image Processing pada OpenCV yang telah dibuat.
4.5.4 Analisa Data Berikut adalah screen shot pengujian deteksi benda :
Gambar 4.18 Pengujian Image Processing pada OpenCV 1
66
Gambar 4.19 Pengujian Image Processing pada OpenCV 2
Gambar 4.20 Aplikasi konsol
4.5.5 Kesimpulan Dari analisa data yang telah dilakukan pada langkah pengujian di atas dapat disimpulkan bahwa dari hasil pengujian 1, program berhasil mendeteksi pengujian
2,
diinginkan
saja
terdapat
objek
yang
diinginkan.
Dari
hasil
program berhasil memprioritaskan satu objek yang
aplikasi
sebagai konsol
target. Pada yang
pengujian
di
atas
juga
menjelaskan kondisi objek yang
terdeteksi, koordinat pusat objek yang terdeteksi.
67
4.6 Pengujian sistem secara keseluruhan Setelah melakukan beberapa pengujian terhadap minimum sistem hingga aplikasi
Image
Processing
maka
selanjutnya
adalah
menguji
sistem meliputi program pada PC dan kontroler serta komunikasi di antaranya.
Tabel 4.3 Kondisi Image Processing terhadap hardware
1.
Kanan, Atas
Respon pada OpenCV Cepat
2.
Kanan, Tengah
Cepat
Diam
Biasa
Bagus
3.
Kanan, Bawah
Cepat
Lambat
Biasa
Bagus
4.
Kiri, Atas
Cepat
Lambat
Biasa
Bagus
5.
Kiri, Tengah
Cepat
Diam
Biasa
Bagus
6.
Kiri, Bawah
Cepat
Lambat
Biasa
Bagus
7.
Tengah, Atas
Cepat
Diam
Biasa
Bagus
8.
Tengah, Tengah
Diam
Diam
Biasa
Bagus
9.
Tengah, Bawah
Cepat
Diam
Biasa
Bagus
Dari yang
di
No
Posisi Target
percobaan
atas,
Lambat
Hasil Citra Hasil Citra Pada Pada VB OpenCV Biasa Bagus
Respon Pada VB
program
berjalan
sesuai
dengan
apa
diinginkan. Pada saat objek berada pada posisi yang jauh dari pusat frame maka motor akan bergerak menuju pusat frame dan ketika menemui titik pusat frame motor akan mempertahankan posisinya.
BAB V PENUTUP
Pada bab ini akan dibahas mengenai hasil, kelebihan dan kelemahan tiap metode yang
dipakai
perencanaan
oleh
dan pembuatan
penulis.
serta
Setelah
implementasi
melakukan
sistem
robot
ini,
kemudian dilakukan pengujian dan analisa maka dapat dimabil kesimpulan dan saran-saran sebagai berikut:
5.1
Kesimpulan Setelah
melakukan
pengujian tugas
berbagai
akhir
ini,
tahapan maka
dalam
penulis
pengerjaan
memiliki
dan
beberapa
kesimpulan sebagai berikut: 1)
Cara kerja
sistem
dalam
tracking
target
adalah
dengan
membandingkan titik pusat target dengan titik pusat gambar yang diperoleh kamera, kemudian memperkecil selisih error secara terus menerus sampai didapatkan nilai yang sama. 2)
Kecepatan
tracking
menggunakan
visual
basic
kurang
responsif sehingga proses menuju target seringkali terlewati, namun hasil pemrosesan citra cukup bagus. 3)
Kecepatan tracking menggunakan OpenCV cukup responsif, namun citra
yang
dihasilkan
kurang
maksimal
sehingga
seringkali objek tidak terdeteksi. 4)
5.2
Iluminasi sangat berpengaruh dalam penggunaan alat ini.
Saran Untuk peningkatan kemampuan alat ini maka ada beberapa hal yang harus
diperhatikan : 1.
Untuk mengimbangi kecepatan program Image Processing diperlukan webcam dengan frame per second (fps) yang tinggi pula, agar gambar yang diperoleh ketika objek bergerak tetap jelas.
68
69
2.
Program perlu diperbaiki lagi sehingga antara proses pengolahan citra dengan respon motor seimbang.
3.
Bahan kontruksi rangka dibuat dengan bahan dasar logam, sehingga robot dapat bergerak lebih stabil.
4. Harapan kedepan alat ini dapat dikembangkan dengan menggunakan
kamera inframerah untuk deteksi pada malam hari.
70
DAFTAR PUSTAKA Arihutomo,
Muhas. 2010.
Rancang Bangun
Sistem Penjejakan
Objek
Menggunakan Metode Viola Jones Untuk Aplikasi Eyebot. Jurusan Teknik Telekomunikasi Politeknik Elektronika Negeri Surabaya Institut Teknologi Sepuluh Nopember, Surabaya.
Kustiawan, Dedi. 2009. Kendali Raket Pada
Game Serangga Nakal
Menggunakan Kamera. Jurusan Teknologi Informasi Politeknik Elektronika Negeri Surabaya Institut Teknologi Sepuluh Nopember, Surabaya.
Kurniawan, Aditya. 2009. Aplikasi Computer Vision Dengan Metode Fuzzy Pada Text
Reader.
Jurusan
Teknik
Elektronika
Politeknik
Elektronika
Negeri Surabaya Institut Teknologi Sepuluh Nopember,
Surabaya. “openCVsources”, (http://sourceforge.net/projects/opencvlibrary.) “openCV”, (http://osc.ugm.ac.id/site/index.php/2008/06/opencv/.) Rusiana, Endang. 2011 ”Simple Color Tracking Menggunakan Webcam Dengan Library AForge.NET” Ciamis.
Rusmadi, Dedi. 2006. Teknik Interfacing Port Serial dan Paralel. Yogyakarta: Graha Ilmu.
LAMPIRAN
71
72
Lampiran 1: Foto hasil rancang bangun robot shape follower.
73
Lampiran 2: Desain PCB Minimum system robot Shape Follower.
74
Lampiran 3: Desain aplikasi Image Processing dengan visual basic.
2
4
5
3
1
6 7
8
9
20
10
11
19
12
13
14
15
16
17
18
75
Keterangan Lampiran 3 : 1.
display pembacaan kamera.
2.
display Image Processing.
3.
display colour filtering dan center detection.
4.
informasi ekstraksi warna pada pada display .
5.
informasi threshold pada display .
6.
informasi koordinat pada display colour filtering.
7.
informasi posisi horizontal (sumbu X).
8.
informasi posisi vertical (sumbu Y).
9.
tombol start untuk menjalankan aplikasi.
10. tombol stop untuk menghentikan aplikasi. 11. tombol untuk menghubungkan koneksi antara kabel serial dengan aplikasi. 12. tombol untuk memutuskan koneksi antara kabel serial dengan aplikasi. 13. horizontal scroll sebagai pengubah nilai . 14. horizontal scroll sebagai pengubah nilai kontras. 15. daftar comm. port yang disediakan. 16. nilai bandwidth untuk colour filtering. 17. daftar driver yang terinstal. 18. daftar format resolusi yang tersedia. 19. komponen timer untuk proses . 20. komponen Microsoft common control sebagai media penghubung komunikasi serial.
76
Lampiran 4: List program aplikasi image processing dengan visual basic. Dim red, green, blue As Integer Dim R(200, 200), G(200, 200), B(200, 200) As Integer Dim Rb(200, 200), Gb(200, 200), Bb(200, 200) As Integer Dim Rc(200, 200), Gc(200, 200), Bc(200, 200) As Integer Dim koefB, koefC As Double Dim rcf(200, 200), gcf(200, 200), bcf(200, 200) As Integer Dim rth, gth, bth As Integer Dim xglob, yglob As Single Dim GM(3, 3), Rgauss(200, 200), Ggauss(200, 200), Bgauss(200, 200) As Integer Dim H(500), V(500) As Integer Dim P(500, 500) As Integer Dim Hpast, Vpast As Integer Dim ULx, URx, BLx, BRx As Integer Dim ULy, URy, BLy, BRy As Integer Dim CenterPointX As Integer Dim CenterPointY As Integer Private Type mRGB R As Long G As Long B As Long End Type Private Function GetRGBFromRef(ByVal MyColor As Long) As mRGB Dim CurrColor As Long Dim RedShade As Long Dim GreenShade As Long Dim BlueShade As Long Dim ret As mRGB CurrColor = MyColor RedShade = (CurrColor Mod (2 ^ 16)) Mod (2 ^ 8) GreenShade = (CurrColor Mod (2 ^ 16)) / (2 ^ 8) BlueShade = (CurrColor / (2 ^ 16)) ret.R = RedShade ret.G = GreenShade ret.B = BlueShade GetRGBFromRef = ret End Function Sub load() For Each Device In VideoCap1.Devices cbodrivervid.AddItem Device.Name Next cbodrivervid.ListIndex = 0 For Each VideoFormat In VideoCap1.VideoFormats cboformatvid.AddItem VideoFormat.Name Next cboformatvid.ListIndex = 6 LblSelDrv = cbodrivervid.ListIndex End Sub Sub ambil()
77
VideoCap1.Device = cbodrivervid.ListIndex VideoCap1.VideoFormat = cboformatvid.ListIndex VideoCap1.SampleBufferMode = 3 VideoCap1.UseOverlay = False VideoCap1.FrameRate = 1500 VideoCap1.ShowDateTime = False VideoCap1.Start End Sub Private Sub cbodrivervid_Click() ambil End Sub Private Sub cboformatvid_Click() ambil End Sub Private Sub cmdstart_Click() TmrExecute.Enabled = True cmdstart.Enabled = False CmdDisconnect.Enabled = False cmdstop.Enabled = True CmdConnect.Enabled = False End Sub Private Sub cmdstop_Click() TmrExecute.Enabled = False cmdstart.Enabled = False CmdDisconnect.Enabled = True cmdstop.Enabled = False CmdConnect.Enabled = False End Sub Private Sub CmdConnect_Click() MSComm1.CommPort = CboCom.Text MSComm1.PortOpen = True CmdConnect.Enabled = False CmdDisconnect.Enabled = True cmdstart.Enabled = True End Sub Private Sub CmdDisconnect_Click() MSComm1.PortOpen = False cmdstart.Enabled = False cmdstop.Enabled = False CmdDisconnect.Enabled = False CmdConnect.Enabled = True End Sub Private Sub Form_Load() MSComm1.Settings = "9600,n,8,1" CboCom.AddItem (1) CboCom.AddItem (2) CboCom.AddItem (3) CboCom.AddItem (4) cmdstart.Enabled = False cmdstop.Enabled = False CmdDisconnect.Enabled = False load
78
ambil End Sub Private Sub MnuAbout_Click() FrmAbout.Show End Sub Private Sub PicOutRk_Click() rth = Rc(xglob, yglob) gth = Gc(xglob, yglob) bth = Bc(xglob, yglob) Label9 = rth & " , " & gth & " , " & bth End Sub Private Sub PicOutRk_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) xglob = X yglob = Y LblColExt = Rc(X, Y) & " , " & Gc(X, Y) & " , " & Bc(X, Y) End Sub Private Sub TmrExecute_Timer() PicOutRk.Cls Dim ImageArray As Variant Dim MyRGB As mRGB Dim i As Long Dim j As Long Dim iWidth As Long Dim iHeight As Long ImageArray = VideoCap1.GetSampleBufferRGB(iWidth, iHeight) For i = 0 To iWidth - 1 For j = 0 To iHeight - 1 MyRGB = GetRGBFromRef(ImageArray(i, j)) With MyRGB R(iWidth - i, j) = .R G(iWidth - i, j) = .G B(iWidth - i, j) = .B End With Next j Next i 'gaussian GM(1, 1) = GM(1, 2) = GM(1, 3) = GM(2, 1) = GM(2, 2) = GM(1, 3) = GM(3, 1) = GM(3, 2) = GM(3, 3) =
1 2 1 2 4 2 1 2 1
For k = 1 To 1 For i = 0 To iWidth For j = 0 To iHeight R(i, j) = ((R(i, j) * GM(1, 1)) + (R(i + 1, j) * GM(2, 1)) + (R(i + 2, j) * GM(3, 1)) + (R(i, j + 1) * GM(1, 2)) + (R(i + 1, j
79
+ 1) * GM(2, 2)) + (R(i + 2, j + 1) * GM(3, 2)) GM(1, 3)) + (R(i + 1, j + 2) * GM(2, 3)) + (R(i GM(3, 3))) / 16 G(i, j) = ((G(i, j) * GM(1, 1)) + (G(i + 1, (G(i + 2, j) * GM(3, 1)) + (G(i, j + 1) * GM(1, + 1) * GM(2, 2)) + (G(i + 2, j + 1) * GM(3, 2)) GM(1, 3)) + (G(i + 1, j + 2) * GM(2, 3)) + (G(i GM(3, 3))) / 16 B(i, j) = ((B(i, j) * GM(1, 1)) + (B(i + 1, (B(i + 2, j) * GM(3, 1)) + (B(i, j + 1) * GM(1, + 1) * GM(2, 2)) + (B(i + 2, j + 1) * GM(3, 2)) GM(1, 3)) + (B(i + 1, j + 2) * GM(2, 3)) + (B(i GM(3, 3))) / 16
+ (R(i, j + 2) * + 2, j + 2) * j) * GM(2, 1)) + 2)) + (G(i + 1, j + (G(i, j + 2) * + 2, j + 2) * j) * GM(2, 1)) + 2)) + (B(i + 1, j + (B(i, j + 2) * + 2, j + 2) *
Next j Next i Next k ' koefB = HSBBVal.Value Label10 = HSBBVal.Value For i = 0 To iWidth For j = 0 To iHeight Rb(i, j) = (R(i, j) + koefB) Gb(i, j) = (G(i, j) + koefB) Bb(i, j) = (B(i, j) + koefB) If Rb(i, j) < 0 Then Rb(i, j) = 0 If Gb(i, j) < 0 Then Gb(i, j) = 0 If Bb(i, j) < 0 Then Bb(i, j) = 0 Next j Next i 'contrast koefC = (HSBCVal.Value / 10) Label11 = HSBCVal.Value For i = 0 To iWidth For j = 0 To iHeight Rc(i, j) = Int(Rb(i, j) * koefC) Gc(i, j) = Int(Gb(i, j) * koefC) Bc(i, j) = Int(Bb(i, j) * koefC) If Rc(i, j) < 0 Then Rc(i, j) = 0 If Gc(i, j) < 0 Then Gc(i, j) = 0 If Bc(i, j) < 0 Then Bc(i, j) = 0 If Rc(i, j) > 255 Then Rc(i, j) = 255 If Gc(i, j) > 255 Then Gc(i, j) = 255 If Bc(i, j) > 255 Then Bc(i, j) = 255 Next j Next i For i = 0 To iWidth For j = 0 To iHeight PicOutRk.PSet (i, j), RGB(Rc(i, j), Gc(i, j), Bc(i, j)) Next j Next i 'filter bw = Val(TxtBW) For i = 0 To iWidth
80
For j = 0 To iHeight If Rc(i, j) > (rth - bw) And Gc(i, j) > (gth - bw) And Bc(i, j) > (bth - bw) And Rc(i, j) < (rth + bw) And Gc(i, j) < (gth + bw) And Bc(i, j) < (bth + bw) Then rcf(i, j) = 0 gcf(i, j) = 0 bcf(i, j) = 0 Else rcf(i, j) = 255 gcf(i, j) = 255 bcf(i, j) = 255 End If Next j Next i For i = 0 To iWidth For j = 0 To iHeight PicFilter.PSet (i, j), RGB(rcf(i, j), gcf(i, j), bcf(i, j)) Next j Next i 'center PicFilter.Cls For i = 0 To PicFilter.ScaleWidth For j = 0 To PicFilter.ScaleHeight If rcf(i, j) = 0 Then P(i, j) = 0 If rcf(i, j) = 255 Then P(i, j) = 1 Next j Next i For i = 0 To PicFilter.ScaleWidth H(i) = 1 Next i For j = 0 To PicFilter.ScaleHeight V(j) = 1 Next j For i = 0 To PicFilter.ScaleWidth For j = 0 To PicFilter.ScaleHeight PicFilter.PSet (i, j), RGB(rcf(i, j), gcf(i, j), bcf(i, j)) Next j Next i For i = 1 To PicFilter.ScaleWidth Hpast = H(i - 1) For j = 1 To PicFilter.ScaleHeight H(i) = H(i) * P(i, j) Next j If H(i) = 0 And Hpast = 1 Then PicFilter.Line (i, 0)-(i, 120), vbRed ULx = i BLx = i ElseIf H(i) = 1 And Hpast = 0 Then PicFilter.Line (i, 0)-(i, 120), vbRed URx = i BRx = i Else End If Next i For j = 1 To PicFilter.ScaleHeight Vpast = V(j - 1) For i = 1 To PicFilter.ScaleWidth
81
V(j) = V(j) * P(i, j) Next i If V(j) = 0 And Vpast = 1 Then PicFilter.Line (0, j)-(160, j), vbBlue ULy = j URy = j ElseIf V(j) = 1 And Vpast = 0 Then PicFilter.Line (0, j)-(160, j), vbBlue BLy = j BRy = j Else End If Next j CenterPointX = ((URx - ULx) / 2) + ULx CenterPointY = ((BLy - ULy) / 2) + ULy PicFilter.Line (CenterPointX - 5, CenterPointY)-(CenterPointX + 5, CenterPointY), vbGreen PicFilter.Line (CenterPointX, CenterPointY - 5)-(CenterPointX, CenterPointY + 5), vbGreen PicOutRk.Line (CenterPointX - 5, CenterPointY)-(CenterPointX + 5, CenterPointY), vbGreen PicOutRk.Line (CenterPointX, CenterPointY - 5)-(CenterPointX, CenterPointY + 5), vbGreen LblKoor = CenterPointX & " , " & CenterPointY 'position If CenterPointX < 70 Then LblCtrX = "Berada di Kiri," MSComm1.Output = "3" End If If CenterPointX > 90 Then LblCtrX = "Berada di Kanan," MSComm1.Output = "1" End If If CenterPointX < (80 + 10) And CenterPointX > (80 - 10) Then LblCtrX = "Berada di Tengah," MSComm1.Output = "2" End If If CenterPointY < 50 Then LblCtrY = "Atas" MSComm1.Output = "1" End If If CenterPointY > 70 Then LblCtrY = "Bawah" MSComm1.Output = "3" End If If CenterPointY < (60 + 10) And CenterPointY > (60 - 10) Then LblCtrY = "Tengah" MSComm1.Output = "2" End If End Sub
82
Lampiran 5: List program aplikasi image processing dengan OpenCV. #include #include #include #include #include #include #include #include #include
"cv.h" "highgui.h" <stdlib.h> <stdio.h> <unistd.h> <fcntl.h> <termios.h> <string.h> "serial.h"
#define umax 3217 #define umin 1000 int rPos,gPos,bPos,rentang=80,rThreshold=200,gThreshold=,bThreshold =; int rx,ry,oca,ocb,spx=320,spy=,kp =3,ki= 2,kd= 0; unsigned char oc1ah,oc1al,oc1bh,oc1bl, tracking=0; // PID double xerr_old, xerr, xP_err, xI_err, xD_err; double yerr_old, yerr, yP_err, yI_err, yD_err; float kp2,ki2,kd2; int radius = 60; CvScalar blue = CV_RGB(0,0,); CvScalar blk = CV_RGB(1,,); int connectivity = 8; int thickness = 2; // Text variables double hscale = 0.7; double vscale = 0.4; double shear = 0.2; int thickness2 = 2; int line_type = 8; IplImage *frame = 0, *filter=; char* WindowName = "Jendela color filtering"; const char* text = "Objek tidak terdeteksi..."; /******************************************************/ void mouseHandler( int event, int xm, int ym, int flags, void *param ) { /* user clicked the image, save subimage as template */ if( event == CV_EVENT_LBUTTONDOWN ) { uchar *data = ( uchar* )frame->imageData;
83
uchar* ptr=(uchar*)(frame->imageData+ym*frame>widthStep); bPos = ptr[3*xm]; gPos = ptr[*xm+]; rPos = ptr[3*xm+]; cvSetTrackbarPos("RED","control panel",rPos ); cvSetTrackbarPos("GREEN","control panel",gPos ); cvSetTrackbarPos("BLUE","control panel",bPos ); /* template is available, start tracking! */ fprintf( stdout, " warna yang difilter >> R=%d ;G=%d ;B=%d \n",rPos,gPos,bPos ); tracking=0; spx=spx; spy=spy; fprintf( stdout, " setting point >> x=%i ;y=%i \n",spx,spy ); } if( event == CV_EVENT_LBUTTONUP ) { tracking=1; } } /******************************************************/ //XPID double XPID(double spx, double maxLocx) { double xu; xerr_old = xerr; xerr = spx - maxLocx; xP_err = xerr; xI_err +=xerr_old; xD_err = xerr - xerr_old; xu = (kp2) * xP_err + (ki2)* xI_err + (kd2) * xD_err; xu = 2150-xu; if (xu > umax) {xu = umax;} if (xu < umin) {xu = umin;} if (xI_err > 2000) {xI_err = 2000;} if (xI_err < -) {xI_err = -;} return xu; } /******************************************************/ //YPID double YPID(double spy, double maxLocy) { double yu; yerr_old = yerr; yerr = maxLocy - spy; yP_err = yerr; yI_err +=yerr_old; yD_err = yerr - yerr_old;
84
yu = (kp2) * yP_err + (ki2) * yI_err + (kd2) * yD_err; yu = yu+2050; if (yu > umax) {yu = umax; } if (yu < umin) {yu = umin; } if (yI_err > 2000) {yI_err = 2000; } if (yI_err < -) {yI_err = -; } return yu; } /***********************************************/ int main( int argc, char **argv ) { CvCapture *capture = 0; int key = 0; int x,y,r,g,b,dr,dg,db; fd = open_port(); init_port(fd); /* initialize camera */ capture = cvCaptureFromCAM( 1 ); CvScalar blue = CV_RGB(0,,0); CvFont font1; cvInitFont(&font1, CV_FONT_HERSHEY_SIMPLEX,hscale,vscale,shear,thickness2,line_type); /* always check */ if ( !capture ) { fprintf( stderr, "Cam\n" ); return 1; } /* create a window for the video */ cvNamedWindow( "normal cam", CV_WINDOW_AUTOSIZE ); cvNamedWindow( "control panel", CV_WINDOW_AUTOSIZE ); cvResizeWindow( "control panel", 420,); cvSetMouseCallback( "normal cam", mouseHandler, NULL ); cvNamedWindow(WindowName, CV_WINDOW_AUTOSIZE); cvResizeWindow( WindowName, 640,); filter=cvCreateImage(cvSize(640,480), 8, 1); cvCreateTrackbar("KP","control panel",&kp,,); cvCreateTrackbar("KI","control panel",&ki,,); cvCreateTrackbar("KD","control panel",&kd,,); cvCreateTrackbar("RED","control panel",&rThreshold,5,); cvCreateTrackbar("GREEN","control panel",&gThreshold,255,); cvCreateTrackbar("BLUE","control panel",&bThreshold,5,); cvCreateTrackbar("BANDWIDTH","control panel",&rentang,200,); while( key != 'q' ) { //Create Controls & Windows /* get a frame */ frame = cvQueryFrame( capture );
85
cvSmooth(frame,frame,CV_GAUSSIAN,3,); uchar *filterData = (uchar *)filter->imageData; for(y=; y<; y++) { uchar* ptr=(uchar*)(frame->imageData+y*frame>widthStep); for(x=; x<; x++) { b=ptr[*x]; g=ptr[*x+1]; r=ptr[*x+2]; dr=rThreshold-r; dg=gThreshold-g; db=bThreshold-b; int delta=rentang/2; if(dr<=delta && dg<=delta && db<=delta && dr>=~delta && dg>=~delta && db>=~delta) { filterData[y*filter>widthStep+x*filter->nChannels]=; } else { filterData[y*filter>widthStep+x*filter->nChannels]=5; } } } cvSmooth(filter,filter,CV_GAUSSIAN,3,); cvErode(filter,filter,0,); cvDilate(filter,filter,0,); double minVal,maxVal; CvPoint minLoc,maxLoc; cvMinMaxLoc(filter,&minVal,&maxVal,&minLoc,&maxLoc,0); char buffer[33]; sprintf(buffer, "X=%i
Y=%i", minLoc.x,minLoc.y);
kp2=kp*0.10;ki2=ki*.10;kd2=kd*.10; if (minLoc.x< || minLoc.y<3 || tracking != 1) { cvRectangle(frame,cvPoint(320,),cvPoint(,),cvScalar (,,,),1,,); cvPutText(frame,text,cvPoint(220,),&font1,blue); } else {
86
cvRectangle(frame,cvPoint(minLoc.x,minLoc.y),cvPoint(minLoc. x+,minLoc.y+50),cvScalar(,,0,),,,); cvPutText(frame,buffer,cvPoint(minLoc.x,minLoc.y),&font1,blu e); cvCircle(frame,cvPoint(spx,spy),radius,blue,thickness,connec tivity); oca=XPID(spx,minLoc.x); ocb=YPID(spy,minLoc.y+40); } //oc1ah,oc1al,oc1bh,oc1bl; oc1bh=ocb>>8; oc1bl=ocb&0xFF; oc1ah=oca>>8; oc1al=oca&0xFF; write(fd,&oc1ah write(fd,&oc1al write(fd,&oc1bh write(fd,&oc1bl
,1); ,1); ,1); ,1);
printf(("x=%4i ; y=%4i ; sx=%5i ; sy=%5i \n"),minLoc.x,minLoc.y,ocb,oca); cvShowImage(WindowName,filter); cvShowImage("normal cam",frame); //char *filterDataOrigin; /* always check /* exit if user press 'q' */ key = cvWaitKey( 1 ); } close(fd); /* free memory */ cvReleaseCapture( &capture ); cvReleaseImage( &frame ); cvReleaseImage( &filter ); cvDestroyWindow( "normal cam" ); cvDestroyWindow( "WindowName" ); return 0; }
87
Lampiran 6: List program kontroler untuk OpenCV. #include <mega8.h> #ifndef RXB8 #define RXB8 1 #endif #ifndef TXB8 #define TXB8 0 #endif #ifndef UPE #define UPE 2 #endif #ifndef DOR #define DOR 3 #endif #ifndef FE #define FE 4 #endif #ifndef UDRE #define UDRE 5 #endif #ifndef RXC #define RXC 7 #endif #define #define #define #define #define
FRAMING_ERROR (1<<FE) PARITY_ERROR (1<<UPE) DATA_OVERRUN (1<<DOR) DATA_REGISTER_EMPTY (1<<UDRE) RX_COMPLETE (1<<RXC)
// USART Receiver buffer #define RX_BUFFER_SIZE 4 char rx_buffer[RX_BUFFER_SIZE]; #if RX_BUFFER_SIZE <= 256 unsigned char rx_wr_index,rx_rd_index,rx_counter; #else unsigned int rx_wr_index,rx_rd_index,rx_counter; #endif // This flag is set on USART Receiver buffer overflow bit rx_buffer_overflow; // USART Receiver interrupt service routine interrupt [USART_RXC] void usart_rx_isr(void) { char status,data;
88
status=UCSRA; data=UDR; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) { rx_buffer[rx_wr_index++]=data; #if RX_BUFFER_SIZE == 256 // special case for receiver buffer size=256 if (++rx_counter == 0) { #else if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE) { rx_counter=0; #endif rx_buffer_overflow=1; } } } #ifndef _DEBUG_TERMINAL_IO_ // Get a character from the USART Receiver buffer #define _ALTERNATE_GETCHAR_ #pragma used+ char getchar(void) { char data; while (rx_counter==0); data=rx_buffer[rx_rd_index++]; #if RX_BUFFER_SIZE != 256 if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0; #endif #asm("cli") --rx_counter; #asm("sei") return data; } #pragma used#endif // Standard Input/Output functions #include <stdio.h> #include <delay.h> #define #define #define #define #define #define
periode 27647 tmax 3200 tmin 1100 delta 2100 mx PORTB.1 my PORTB.2
unsigned int s1,s2,s3,s4; // Timer1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Place your code here mx=1; my=1;
89
if (rx_buffer[0]>12 || rx_buffer[0]<3.5 || rx_buffer[2]>12 || rx_buffer[2]<3.5) { OCR1A=2142; OCR1B=2142; } else { OCR1AH=s1;//rx_buffer[0]; OCR1AL=s2;//rx_buffer[1]; OCR1BH=s3;//rx_buffer[2]; OCR1BL=s4;//rx_buffer[3]; } //delay_ms(5); } // Timer1 output compare A interrupt service routine interrupt [TIM1_COMPA] void timer1_compa_isr(void) { // Place your code here mx=0; } // Timer1 output compare B interrupt service routine interrupt [TIM1_COMPB] void timer1_compb_isr(void) { // Place your code here my=0; } void main(void) { PORTB=0x00; DDRB=0x06; PORTC=0x00; DDRC=0x3F; PORTD=0x00; DDRD=0x00; TCCR1A=0x02; TCCR1B=0x1A; TCNT1H=0x00; TCNT1L=0x00; ICR1=periode; OCR1A=2142; OCR1B=2142; TIMSK=0x1C; UCSRA=0x00; UCSRB=0x98; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47; ACSR=0x80; SFIOR=0x00; #asm("sei") while (1) { s1=rx_buffer[0]; s2=rx_buffer[1];
90
s3=rx_buffer[2]; s4=rx_buffer[3]; } }
91
Lampiran 7: List program kontroler untuk Visual Basic. #include <mega8.h> #define tmax 3217 #define tmin 1000 #ifndef RXB8 #define RXB8 1 #endif #ifndef TXB8 #define TXB8 0 #endif #ifndef UPE #define UPE 2 #endif #ifndef DOR #define DOR 3 #endif #ifndef FE #define FE 4 #endif #ifndef UDRE #define UDRE 5 #endif #ifndef RXC #define RXC 7 #endif #define #define #define #define #define
FRAMING_ERROR (1<<FE) PARITY_ERROR (1<<UPE) DATA_OVERRUN (1<<DOR) DATA_REGISTER_EMPTY (1<<UDRE) RX_COMPLETE (1<<RXC)
// USART Receiver buffer #define RX_BUFFER_SIZE 2 char rx_buffer[RX_BUFFER_SIZE]; #if RX_BUFFER_SIZE <= 256 unsigned char rx_wr_index,rx_rd_index,rx_counter; #else unsigned int rx_wr_index,rx_rd_index,rx_counter; #endif // This flag is set on USART Receiver buffer overflow bit rx_buffer_overflow; // USART Receiver interrupt service routine interrupt [USART_RXC] void usart_rx_isr(void)
92
{ char status,data; status=UCSRA; data=UDR; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0) { rx_buffer[rx_wr_index++]=data; #if RX_BUFFER_SIZE == 256 // special case for receiver buffer size=256 if (++rx_counter == 0) { #else if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE) { rx_counter=0; #endif rx_buffer_overflow=1; } } } #ifndef _DEBUG_TERMINAL_IO_ // Get a character from the USART Receiver buffer #define _ALTERNATE_GETCHAR_ #pragma used+ char getchar(void) { char data; while (rx_counter==0); data=rx_buffer[rx_rd_index++]; #if RX_BUFFER_SIZE != 256 if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0; #endif #asm("cli") --rx_counter; #asm("sei") return data; } #pragma used#endif // Standard Input/Output functions #include <stdio.h> #include <delay.h> #define sx OCR1A #define sy OCR1B unsigned char t; void main(void) { PORTB=x00; DDRB=x06; PORTC=x00; DDRC=x3F; PORTD=x00; DDRD=x00; TCCR1A=xA2;
93
TCCR1B=x1A; TCNT1H=x00; TCNT1L=x00; ICR1=; OCR1AH=x00; OCR1AL=x00; OCR1BH=x00; OCR1BL=x00; TIMSK=x1C; UCSRA=x00; UCSRB=x98; UCSRC=x86; UBRRH=x00; UBRRL=x47; ACSR=x80; SFIOR=x00; #asm("sei") t=; sx=; sy=2; delay_ms(); while (1) { if( rx_buffer[0]==x31 && rx_buffer[1]==x31) { if (sx>=tmin)sx--; if (sy>=tmin)sy--; delay_ms(t); } else if( rx_buffer[0]==0x33 && rx_buffer[1]==0x33) { if (sx<=tmax)sx++; if (sy<=tmax)sy++; delay_ms(t); } else if( rx_buffer[0]==0x31 && rx_buffer[1]==0x33) { if (sx>=tmin)sx--; if (sy<=tmax)sy++; delay_ms(t); } else if( rx_buffer[0]==0x33 && rx_buffer[1]==0x31) { if (sy<=tmax)sx++; if (sx>=tmin)sy--; delay_ms(t); } else if( rx_buffer[0]==0x31 && rx_buffer[1]==0x32) { if (sx>=tmin)sx--; delay_ms(t); } else if( rx_buffer[0]==0x33 && rx_buffer[1]==0x32) { if (sx<=tmax)sx++; delay_ms(t); } else if( rx_buffer[0]==0x32 && rx_buffer[1]==0x31) {
94
if (sy>=tmin)sy--; delay_ms(t); } else if( rx_buffer[0]==0x32 && rx_buffer[1]==0x33) { if (sy<=tmax)sy++; delay_ms(t); } else ; putchar(rx_buffer[0]); putchar(rx_buffer[1]); putchar(OCR1AL); putchar(OCR1BL); } }
95
PERNYATAAN KEASLIAN TULISAN Saya yang bertanda tangan di bawah ini: Nama
: Rizky Dwi Septanto
NIM
: 9123100013
Program Studi Menyatakan
: Teknik Mekatronika dengan
benar-benar merupakan
sebenarnya hasil
bahwa
laporan
tugas
akhir
saya
sendiri,
bukan
merupakan
karya
ini
pengambilalihan tulisan atau pikiran orang lain yang saya akui sebagai hasil tulisan atau pikiran saya sendiri. Apabila di kemudian hari terbukti atau dapat dibuktikan tugas akhir ini hasil jiplakan, maka saya bersedia menerima sanksi atas perbuatan tersebut.
Malang, 13 Februari 2013 Yang Membuat pernyataan,
Rizky Dwi Septanto
96
RIWAYAT HIDUP PENULIS
Rizky Dwi Septanto dilahirkan di Mojokerto tanggal 12 September
1992,
bersaudara
dari pasangan
Sugiarti.
Setelah
putra
kedua Bapak
dari
Irianto
tiga
dan
Ibu
menempuh pendidikan formal di SDN
Balongsari 2 dan lulus tahun 2004, SMP Negeri 8 dan lulus tahun 2007 dan SMK Tamansiswa Mojokerto lulus tahun 2010 penulis melanjutkan pendidikan Diploma 3 di POLITEKNIK KOTA MALANG pada tahun 2010 dan dilanjutkan dengan mengerjakan tugas akhir dengan judul Rancang Bangun Robot Shape Follower dengan Metode . Pada saat menempuh pendidikan mulai dari SD penulis sangat menyukai musik, pada duduk di bangku SMP hingga SMK penulis aktif dalam kegiatan ektrakurikuler musik. Dilanjutkan masuk perguruan tinggi penulis juga aktif dan ikut serta dalam organisasi kemahasiswan UKM Robotika dan penulis dipercaya sebagai
wakil
ketua
UKM
Robotika
(2012-2013).
Semoga
ilmu yang penulis dapatkan dari bangku SD hingga Perguruan Tinggi dapat menjadi bekal untuk mengarungi kehidupan selanjutnya. Dan ilmu yang didapatkan menjadi ilmu yang bermanfaat, dan barokah, Amin. Dengan
ketekunan
dan dukungan dari semuanya, tugas akhir
ini.
Semoga
dan
motivasi untuk
terus
belajar,
berusaha
penulis telah berhasil menyelesaikan pengerjaan dengan
bermanfaat bagi semuanya.
Data Riwayat Penulis Nama : Rizky Dwi Septanto Email : rizkydseptanto@gmail.com
penulisan
tugas
akhir
ini
dapat