1 AUTOMATIC MOBILE ROBOT MENGGUNAKAN

Download memanfaatkan adanya kamera sebagai pengambil gambar jalan sehingga gambar tersebut dapat diolah oleh prosessor. Untuk itu mobile robot ini ...

0 downloads 561 Views 257KB Size
AUTOMATIC MOBILE ROBOT MENGGUNAKAN DATA KAMERA SEBAGAI PENGAMBIL GAMBAR JALAN ROBOT 1)

1)

Hanny Kristianto 2)Susijanto Tri Rasmana 3)Madha Christian Wibowo

Program Studi S1 Sistem Komputer, STIKOM Surabaya, email: [email protected] 2) Program Studi S1 Sistem Komputer, STIKOM Surabaya, email: [email protected] 3) Program Studi S1 Sistem Komputer, STIKOM Surabaya, email: [email protected]

Abstraksi, Pada saat ini, sangat sering ditemukan kemajuan teknologi di berbagai bidang. Salah satunya adalah pengendalian tanpa awak atau yang biasa disebut dengan autopilot. Teknologi pengendalian tanpa awak tersebut umumnya digunakan pada pesawat komersial dan pada bidang pertahanan negara guna mengendalikan rudal dan alat perang lainnya. Namun kali ini peneliti memanfaatkan teknologi pengolahan citra untuk membuat suatu pengendalian mobile robot tanpa awak. Tugas akhir ini bertujuan untuk membuat mobile robot yang berjalan pada sebuah lintasan dengan memanfaatkan adanya kamera sebagai pengambil gambar jalan sehingga gambar tersebut dapat diolah oleh prosessor. Untuk itu mobile robot ini memerlukan microcontroller, prosessor, kamera, relay driver dan motor DC. Dimana input dari kamera dibaca oleh prosessor lalu diolah dengan teknologi pengolahan citra menggunakan Open CV. Dengan memanfaatkan library dari Open CV maka proses untuk mengolah gambar dapat menjadi lebih cepat. Dengan CVScalar dari library OpenCV maka peneliti dapat menentukan nilai pixel yang berada di jalan atau berada di bahu jalan, sehingga prosessor dapat menentukan keputusan laju dari mobile robot. Hasil tersebut dikirimkan melalui komunikasi serial ke microcontroller sehingga microcontroller dapat mengolah perintah dari prosessor untuk menggerakan motor DC sebagai pengendali mobile robot. Untuk menentukan jalan dari mobile robot maka peneliti memanfaatkan library dari Open CV antara lain CVcvtcolor untuk merubah gambar dari RGB ke biner, lalu menggunakan CVTreshold untuk mengubah dari grayscale ke biner dan menggunakan CVScalar untuk membuat pixel acuan yang menentukan bahu jalan dan badan jalan. Mobile robot ini dapat berjalan dilintasannya yang memiliki tikungan ke kiri dan ke kanan dan tanpa ada halangan atau persimpangan jalan. Namun mobile robot ini dapat berjalan baik atau tidak tergantung dengan intensitas cahaya yang didapatkan oleh mobile robot. Karena, bahan yang dibuat untuk jalan lintasan dari mobile robot adalah berbahan vinyl yang mudah memantulkan cahaya walau berwarna hitam. 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, 1

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 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

 ‡ŽƒŽ—‹

Personal Computer

    

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). 2

j

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 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

Jalan mengenai batas kiri ?

Motor kanan : mundur Motor kiri : maju

Jalan mengenai batas kanan?

Motor kanan :maju Motor kiri :mundur

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.

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

Pulse Width Modulation (PWM) Pengendalian motor DC menggunakan PWM. PWM digunakan untuk menurunkan kecepatan sehingga laju dari mobile robot dapat dikendalikan dan error(keluar dari jalur) dapat dikurangi. Laju 6

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 8 , gambar 9 dan gambar 10 merupakan hasil dari respon mobile robot.

Gambar 8 Respose Lurus Dari gambar 8 terlihat pada Command Prompt bahwa ketika mendapati gambar seperti itu respon dari hasil pengolahan adalah lurus.

4 Meter

Gambar 7 Jalan Mobile Robot

Gambar 9 Respon Kiri Dari gambar 9 terlihat pada Command Prompt bahwa ketika mendapati 7

gambar seperti itu respon pengolahan adalah belok kiri.

dari

hasil

Gambar 10 Respon Kanan Dari gambar 10 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)

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. 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). Faruq Bamukrah, Jihan. 2010. Image Processing - Pengolahan Citra. (online).(http://jihanfaruqbamukrah .blogspot.com/2010/05/pengertianpengolahan-citra-image.html) Tejo. 2006. Transmisi. (online). (http://www.pdfio.com/k1153255.html) 8

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)

9