AUTOMATIC MOBILE ROBOT MENGGUNAKAN DATA KAMERA SEBAGAI PENGAMBIL GAMBAR JALAN ROBOT
Hanny Kristianto 1)
1)
Program Studi S1 Sistem Komputer, STIKOM Surabaya, email:
[email protected]
Abstraction, At this time, very often found in various areas of technological advancement. One is a control with no crew or commonly called the autopilot. Unmanned control technology is generally used on commercial aircraft and in the field of missile defense in order to control and other war equipment. But this time the researchers made use of image processing technology to create an unmanned mobile robot control. This thesis aims to create a mobile robot that runs on a track by utilizing the camera as a picture taker road so the image can be processed by the processor. For the mobile robot requires a microcontroller, processor, camera, relay driver and DC motor.Where the input is read by the processor of the camera and then processed with image processing technology using Open CV. By making use of the Open CV library for image processing, the process can be faster. With CVScalar of OpenCV library, the researcher can determine the pixel values that are on the road or in the shoulder of the road, so the processor can determine the rate decisions of the mobile robot. The results are transmitted via serial communication to the microcontroller so that the microcontroller can process commands from the processor to drive the DC motor as the controller of mobile robot. To determine the path of the mobile robot researchers from the Open CV library use among others CVcvtcolor to convert images from RGB to binary, then use CVTreshold to convert from grayscale to binary and use CVScalar to create a pixel of reference specify the path and the road shoulder. Mobile robot can walk dilintasannya that has bends to the left and right and without any hitch or fork in the road. But the mobile robot can go well or not depends on the intensity of light generated by the mobile robot. Because, the material is made for passage of the mobile robot is made of vinyl that is easy to reflect light while black. Keyword : Open CV, Mobile Robot, autopilot,Microcontroller
Di era modern saat ini keberadaan peralatan transportasi menjadi sangat penting. Kebutuhan alat transportasi yang aman dan nyaman merupakan hal yang sangat didambakan. Sampai saat ini, sebagian besar sistem navigasi atau kemudi alat transportasi darat (mobil) masih banyak dilakukan dengan tenaga manusia. Untuk dapat mengendalikan mobil dengan baik seseorang harus mempunyai ketrampilan khusus, juga diperlukan konsentrasi disaat mengendalikannya di jalan raya. Mengemudi kendaraan dengan konsentrasi yang kurang sangat berbahaya, karena berisiko besar terjadi kecelakaan. Untuk itu diperlukan diperlukan suatu sistem yang dapat membantu manusia dalam mengendarai kendaraan. Sistem yang bersifat otomatis ini diharapkan dapat membantu atau bahkan menggantikan
sebagian besar peran pengemudi dalam mengendalikan mobil. Sistem image processing digunakan untuk membantu mengimplementasikan sistem autopilot di darat. Sistem tersebut akan diaplikasikan oleh penulis pada sebuah mobile robot yang diberi kamera untuk dapat mengambil gambar lintasan yang sedang dilintas oleh mobile robot tersebut. Lintasan yang ditempuh oleh robot tersebut berupa lintasan tanpa ada halangan dan tanpa ada persimpangan jalan. Selain itu, lintasan tersebut menggunakan perbedaan kontras warna antara bahu jalan dengan jalan. Dengan memanfaatkan library OpenCV yaitu CVScalar, pendeteksian antara bahu jalan dengan badan jalan dapat diwujudkan. Oleh karena itu Image processing dapat mendeteksi jalan dengan 1
bahu jalan yang dilintasi, sedangkan penggunaan sensor ultrasonic dan sensor cahaya tidak tepat guna dalam mendeteksi jalan dan bahu jalan tersebut. Dikarenakan penggunaan sensor tersebut mendeteksi bahu jalan dan badan jalan dengan mendekati bahu jalan tersebut untuk dapat dideteksi, sedangkan pada kondisi nyata mobil harus menjaga jarak dengan bahu jalan. Sehingga, penggunaan Image processing menjadi tepat guna untuk mengimplementasikan autopilot di darat. METODE Pengerjaan Tugas Akhir ini dapat terlihat jelas dari blok diagram yang tampak pada gambar 3.1. Blok diagram tersebut menggambarkan proses dari capture gambar hingga perintah ke motor. Terdapat beberapa komponen penting pada blok diagram tersebut antara lain adalah webcam, PC, mikrokontroler dan motor DC. Kamera
Melalui USB
Personal Computer
U S A R T
Motor Roda Kanan
Motor Roda Kiri
Microcontroller
Gambar 1 Blok Diagram Gambar 1 merupakan proses mengalirnya data input hingga menjadi output. Data yang diperoleh dari kamera berupa data lintasan yang tampak oleh kamera robot pada saat di lintasan lalu data tersebut dikirim ke Personal Computer melalui USB. Pada Personal Computer hasil kamera tersebut diolah pada software Microsoft Visual C++ 2008 menggunakan library OpenCV dan hasilnya dikirm melalui serial menuju mikrokontroler. Mikrokontroler mengendalikan motor sesuai dengan perintah dari PC, sehingga motor DC dapat berjalan sesuai dengan jalan yang ditempuh mobile robot.
Proses Pendeteksian Jalan Proses Pendeteksian Jalan yang dilakukan oleh Processor (Notebook) tampak pada blok diagram gambar 2. Gambar RGB
Biner
Grayscale
Perintah arah jalan berdasarkan koordinat pixel
Gambar 2 Blok Diagram Pengolahan gambar Pada gambar 2 gambar RGB diperoleh dari hasil capture kamera yang lalu dirubah ke gambar grayscale kemudian biner. Pada gambar biner, gambar jalan terlihat kontras antara jalan dan bahu jalan. Sehingga diambil lah koordinat pada bahu jalan untuk menjadi acuan mobile robot bergerak ke kiri, ke kanan atau lurus. Proses Perubahan Warna dari RGB ke Grayscale Proses perubahan warna dari RGB ke Grayscale bertujuan untuk mempermudah proses selanjutnya yaitu proses merubah grayscale menjadi biner. Sehingga gambar yang diterima oleh processor (notebook) dirubah langsung ke grayscale. Perubahan gambar RGB ke Grayscale menggunakan library openCV pada visual C++ menggunakan perintah sebagai berikut. cvCvtColor( CV_BGR2GRAY);
src,
image2Gray,
Pada perintah tersebut sudah terdapat dua frame, yang satu berisi gambar asli dari kamera (src) sedangkan yang lainnya adalah frame yang disediakan untuk hasil perubahan ke grayscale (image2Gray). Sehingga maksud dari potongan perintah tersebut adalah mengubah gambar src ke grayscale (CV_BGR2GRAY) lalu disimpan pada frame bernama image2Gray. Proses Perubahan Gambar Grayscale ke Biner Proses perubahan gambar grayscale ke biner bertujuan untuk membedakan 2
warna secara kontras antara bahu jalan dan badan jalan. Sehingga perintah untuk arah kanan dan kiri maupun lurus dapat semakin jelas. Berikut adalah perintah yang memanfaatkan library OpenCV untuk mengubah gambar grayscale menjadi biner.
START
Inisialisasi : pixel batas kanan dan kiri
cvThreshold(image2Gray,image2Gray,5 0,255,CV_THRESH_BINARY);
Pada perintah tersebut gambar grayscale dari frame image2Gray dirubah menjadi biner (CV_THRESH_BINARY) dengan threshold 50 dan disimpan pada frame yang sama yaitu image2Gray. Threshold bertujuan mengubah pixel diatas threshold untuk menjadi pixel bernilai 255 sedangkan dibawah threshold dirubah menjadi 0, dengan demikian didapatkanlah gambar biner. Proses Pengambilan Koordinat sebagai Acuan Pada proses ini penulis menetapkan koordinat pixel yang digunakan sebagai acuan mobile robot untuk bergerak ke kiri maupun ke kanan. Koordinat pixel yang dipakai adalah koordinat pixel bahu jalan (kanan dan kiri robot) pada posisi robot di tengah jalan, sehingga koordinat tersebut dapat digunakan sebagai acuan. Apabila posisi acuan tersebut terdeteksi mengenai jalan maka robot melakukan aksi, yaitu belok kiri atau kanan tergantung pada acuan kiri atau kanan yang terkena badan jalan. Berikut adalah flowchart untuk memperjelas dari proses pendeteksian jalan.
Jalan mengenai batas kiri ?
Motor kanan : mundur Motor kiri : maju
Jalan mengenai batas kanan?
Motor kanan :maju Motor kiri :mundur
Motor kanan : maju Motor kiri : maju
Gambar 3 Flowchat Pendeteksian Jalan Pada gambar 3 dijelaskan bahwa terdapat pixel yang menjadi batas kanan dan kiri. Pixel tersebut menjadi acuan motor robot untuk bergerak ke kanan dan ke kiri. Berikut bagian dari kode program dalam menentukan pixel hingga keputusan robot bergerak ke kanan atau kiri.
3
CvScalar s; for(i=0;i<120;i++) { s=cvGet2D(image2Gray,460,i); if (s.val[0]==255) k++; } for(i=520;i<640;i++) { s=cvGet2D(image2Gray,460,i); if (s.val[0]==255) j++; }
Pixel dapat diambil dengan memanfaatkan library CvScalar, pada potongan perintah tersebut terlihat bahwa pixel koordinat Y yang diambil pada pixel 460 sedangkan pixel koordinat X yang diambil antara pixel ke 0 sampai 120 (acuan kiri) dan pixel 520 hingga 640 (acuan kanan). Apabila pixel acuan tersebut terkena badan jalan yang bernilai 255 maka diaktifkan flag kanan atau kiri yang digunakan untuk melanjutkan perintah output. Jarak antara kamera dengan jalan yang terproyeksi oleh pixel baris 460 adalah 80 cm. Dengan jarak 80 cm, perbandingan jarak yang sebenarnya dengan pixel adalah 1 : 13. Dapat diartikan bahwa 1 cm sama dengan 13 pixel, dengan ketentuan jarak kamera dengan pixel yang dimaksud adalah 80 cm. Komunikasi Menggerakan Mobile Robot Untuk dapat menggerakan mobile robot maka perintah dari Processor harus dikirim ke mikrokontroler melalui UART, lalu data yang diterima mikrokontroler dibaca dan diproses selanjutnya hingga memperoleh output sesuai yang diinginkan. Pengiriman data dari Processor (Notebook) Pengiriman data dari processor berupa pengiriman data karakter. Pengiriman dilakukan melalui UART dari processor yang sudah dilengkapi dengan
RS-232 menuju mikrontroler dan data yang dikirim adalah “x” (perintah kiri), “y” (perintah kanan) dan “z” (perintah maju). Processor mendeteksi perintah kiri maka processor mengaktifkan flag kiri yang lalu menjadi tanda untuk pengiriman data “x” ke mikrokontroler. Berikut adalah perintah untuk mengirim data. if (k<=3) { cout<<(stderr,"kiri\n"); if (hanny.Open(1,9600)) { char* start= "x"; hanny.SendData(start, 1); cout<<(stderr,"openedX\n"); } k=0; } else if (j<=3) { cout<<(stderr,"kanan\n"); if (hanny.Open(1,9600)) { char* start= "y"; hanny.SendData(start, 1); cout<<(stderr,"openedY\n"); } j=0; } else { cout<<(stderr,"lurus\n"); k=0; j=0; if (hanny.Open(1,9600)) { char* start= "z"; hanny.SendData(start, 1); cout<<(stderr,"OpenL\n"); } }
Pada potongan perintah tersebut ditunjukan bahwa COM serial yang 4
digunakan adalah port 1 dan baudrate yang digunakan sebesar 9600. Perintah pengiriman variabel start dengan dengan perubahan nilai menjadi x ,y atau z sesuai dengan perintah, dan banyaknya karakter yang dikirim adalah 1 hanny.SendData(start, 1). Sebelum perintah tersebut terdapat header dan function yang terlampir digunakan untuk melengkapi perintah mengirim data secara serial. Penerimaan Data Mikrokontroler Data dari processor diolah oleh mikrokontroler agar dapat mengeluarkan output yang nantinya dapat mengendalikan motor DC. Berikut adalah potongan perintah yang digunakan mikrokontroler untuk menerima data serial. angka=getchar(); if (angka=='y') // kanan { OCR1A=40; PORTD.7=1; //mki OCR1B=40; PORTD.6=0; putchar('a'); } else if (angka=='x') // kiri { OCR1A=40; PORTD.7=0; OCR1B=40; PORTD.6=1; putchar('b'); } else if (angka=='z') // lurus { OCR1A=40; PORTD.7=1; OCR1B=40; PORTD.6=1; putchar('c'); } else if(angka == 'a') {
yang dikirim lalu dipilah-pilah sesuai dengan perintah lalu diproses menjadi output yang digunakan untuk mengendalikan motor DC. Perancangan Perangkat Keras Minimum Sistem ATMEGA8535 Minimum sistem ATMEGA8535 yang digunakan adalah minimum sistem dari innovative electronics. Dengan spesifikasi sebagai berikut 1. Mikrokontroler ATMEGA8535 yang mempunyai 8KB Flash Memory dan 8 channel ADC dengan resolusi 10 bit. 2. Mendukung varian AVR 40 pin, antara lain : ATMega8535, ATMega8515, AT90S8515, AT90S8535, dll. Untuk tipe AVR tanpa internal ADC membutuhkan Conversion Socket. 3. Memiliki jalur I/O hingga 35 pin. 4. Terdapat eksternal Brown Out Detector sebagai rangkaian reset. 5. Konfigurasi jumper untuk melakukan pemilihan beberapa model pengambilan tegangan referensi untuk tipe AVR dengan internal ADC. 6. LED Programming indicator. 7. Frekwensi Osilator sebesar 4 MHz. 8. Tersedia jalur komunikasi serial UART RS-232 dengan konektor RJ11. 9. Tersedia port untuk pemrograman secara ISP. 10. Tegangan input Power Supply 9-12 VDC dan output tegangan 5 VDC. Konfigurasi minimum sistem digambarkan pada gambar 4.
OCR1A=OCR1B=PORTD.7=PORTD.6=0; }
Pada potongan perintah diatas ditunjukan bahwa variabel angka digunakan untuk penyimpanan karakter sementara 5
yang digunakan microcontroller sehingga kecepatan mobile robot dapat dikendalikan untuk mengurangi error yang terjadi pada saat mobile robot berjalan di lintasannya. Desain Mekanik Robot Desain mekanik robot, terdiri dari dua motor, base robot dan tiga buah roda. Robot dirancang dengan perangkat elektronik lainnya seperti kamera, relay driver dan minimum sistem, sehingga dapat menjadi suatu bentuk mobile robot. Mobile robot ini dirancang seperti robot line follower, namun karena metode dan perangkat keras yang digunakan berbeda dengan line follower maka bentuk disesuaikan dengan kebutuhan. Berikut adalah bentuk keseluruhan dari mobile robot. Gambar 4 Konfigurasi Minimum Sistem ATMega8535. (Innoative Electronics, 2004) Relay Driver Relay driver digunakan untuk mengendalikan motor DC. Penggunaan relay driver sebagai pengendali motor dikarenakan motor yang dikendalikan adalah motor DC 20 watt dan 12 VDC, sehingga memerlukan motor driver yang sesuai dengan spesifikasi motor tersebut. Gambar 5 adalah konfigurasi rangkaian relay driver.
Gambar 6 Robot tampak atas
Gambar 5 Rangkaian Relay Driver Relay driver tersebut digunakan karena dapat digunakan untuk mengurangi kecepatan motor sesuai dengan nilai PWM 6
7,5 cm
Gambar 7 Robot tampak samping kanan Gambar 9 Robot tampak depan
Gambar 8 Robot tampak samping kiri
Gambar 10 Robot tampak belakang Pulse Width Modulation (PWM) Pengendalian motor DC menggunakan PWM. PWM digunakan untuk menurunkan kecepatan sehingga laju 7
dari mobile robot dapat dikendalikan dan error(keluar dari jalur) dapat dikurangi. Laju dari mobile robot dapat dikendalikan dengan mengubah-ubah nilai PWM yang dikendalikan melalui microcontroller. Sehingga kecepatan dari mobile robot dapat diklasifikasikan menjadi 4 kecepatan, yaitu berhenti, kecepatan pelan, sedang hingga cepat. Pemberian nilai PWM dapat diberikan sebagai berikut : Tabel 1 Kecepatan Motor No. Kecepatan Nilai PWM 1. Berhenti 0 2. Pelan 1-85 3. Sedang 86-170 4. Cepat 171-255 Pada penelitian ini, mobile robot menggunakan kecepatan pelan dengan tujuan error yang dihasilkan sangat kecil sehingga mobile robot dapat berjalan dengan baik. Dengan demikian mobile robot pada penelitian ini diberikan nilai PWM antara 1 -85. Perancangan Jalan Jalan yang digunakan untuk menjadi lintasan pada penelitian ini mempunyai karakteristik tikungan ke kiri dan ke kanan sama banyak dan sama besar, sehingga penelitian ini berimbang antara tikungan kanan dan tikungan kiri. Dengan panjang jalan 16 m dan lebar jalan 39 cm yang terbuat dari bahan vinyl yang dicetak dengan digital printing. Warna jalan dan bahu jalan hanya terdiri dari warna hitam dan putih. Berikut adalah gambar jalan yang digunakan pada penelitian ini. 4 Meter
PENGUJIAN SISTEM Tujuan dari pengujian ini adalah mengetahui hasil keputusan dari pengambilan gambar, apakah sesuai dengan program yang disusun sebelumnya dalam menghadapi jalan. Hasil Pengujian Pengujian secara keseluruhan berjalan dengan baik karena terlihat dari koneksi serial PC dengan mikrokontroler berjalan baik dan respon dari PC terhadap kamera cukup cepat sehingga proses jalan dari mobile robot berjalan dengan lancar. Namun hasil capture dari kamera juga tergantung dengan pencahayaan, karena pencahayaan yang berlebihan atau kekurangan mempengaruhi proses dari pengolahan gambar. Sehingga pencahayaan yang cukup mempengaruhi kelancaran jalannya mobile robot. Gambar 12 , gambar 13 dan gambar 14 merupakan hasil dari respon mobile robot.
Gambar 12 Respose Lurus Dari gambar 12 terlihat pada Command Prompt bahwa ketika mendapati gambar seperti itu respon dari hasil pengolahan adalah lurus.
4 Meter
Gambar 11 Jalan Mobile Robot
Gambar 13 Respon Kiri 8
Dari gambar 13 terlihat pada Command Prompt bahwa ketika mendapati gambar seperti itu respon dari hasil pengolahan adalah belok kiri.
Gambar 14 Respon Kanan Dari gambar 14 terlihat pada Command Prompt bahwa ketika mendapati gambar seperti itu respon dari hasil pengolahan adalah belok kanan. Waktu yang digunakan oleh mobile robot untuk dapat menempuh satu putaran adalah 2 menit 20 detik dengan PWM 8-bit sebesar 40. Namun kondisi mobile robot tersebut mempunyai kelemahan lain selain ketergantungannya dengan cahaya, yaitu mobile robot ini hanya menjaga bumper agar tidak keluar dari jalur, namun terkadang bagian belakang dari mobile robot masih dapat keluar dari jalur. Secara keseluruhan proses dari input kamera hingga output motor dapat disimpulkan dalam sebuah tabel dengan mengambil beberapa sampel dari beberapa tikungan pada lintasan tersebut. Tabel 4.2 merupakan hasil dari proses hubungan kamera dengan keadaan motor. Tabel 2 Hubungan Data Kamera dengan keadaan motor No
Kondisi
1 2 3 4 5
Kanan Kiri Lurus Kiri kanan
Pixel kanan <120 <120 ±120 <120 <120
Pixel kiri >120 >120 ±120 >120 >120
Motor kanan(PWM) Mundur (40) Maju (40) Maju (40) Maju (40) Mundur (40)
Simpulan Dari penelitian ini dan dengan melihat masalah yang telah dirumuskan serta hasil pengujian dan analisa, maka dapat diambil simpulan : 1. Data lintasan dapat ditangkap oleh kamera dan dengan memanfaatkan pengolahan citra, hasil gambar dari kamera digunakan menjadi inputan yang lalu diolah sehingga menghasilkan suatu keputusan. 2. Robot dapat merespon input dari kamera dan apabila hasil dari pengolahan input menunjukan mobile robot tidak berada di tengah lintasan maka motor akan merespon hingga mobile robot berada di tengah lintasan. Untuk dapat menyelesaikan satu putaran lintasan sepanjang 16m mobile robot memerlukan waktu rata-rata 2 menit 20 detik. DAFTAR RUJUKAN ATMEL. 2006. ATmega8535/ ATmega8535L. (online). (www.atmel.com/Images/doc2502. pdf) Adhiguna. 2008. OPENCV. (online). (http://machine-visionadhiguna. blogspot.com / 2008/05/intelopencv-alternatifopensource.html). S, Ari. 2010. Pengenalan PWM. (online). (http://www.aristy.cz.cc/2010/02/pulse-widthmodulation-pwmpengenalan.html).
Motor kiri (PWM) Maju (40) Mundur (40) Maju (40) Mundur (40) Maju (40)
Dari hasil tabel tersebut terlihat bahwa 120 pixel untuk kanan dan kiri menjadi acuan dari gerak motor untuk membuat mobile robot tetap berada di lintasan.
Faruq Bamukrah, Jihan. 2010. Image Processing - Pengolahan Citra. (online).(http://jihanfaruqbamukrah .blogspot.com/2010/05/pengertianpengolahan-citra-image.html)
9
Tejo. 2006. Transmisi. (online). (http://www.pdfio.com/k1153255.html) Salam, Abdul. 2008. Perkembangan Personal Computer (PC). (online). (http://staff.blog.ui.ac.id/abdul.sala m/2008/07/02/perkembanganpersonal-computer-pc/) Anshari, Febi. 2009. Sistem Pengendalian Gerak Pada Mobile Base Robot. (online). (http://www.infogue.com/viewstor y/2009/10/18/sistem_pengendalian _gerak_pada_mobile_base_robot_n doware/?url=http://ndoware.com/si stem-pengendalian-gerak-padamobile-base-robot.html) Irwan. 2011. Pengertian Robot. (online). (http://irwanpanarobost.blogspot.co m/2011/06/pengertian-robot.html) Fathurohim, Muhammad. 2010. Motor DC.(online).(http://rohimston.blogs pot.com/2010/07/motor-dc.html)
10