You are on page 1of 9

AUTOMATIC MOBILE ROBOT MENGGUNAKAN DATA KAMERA SEBAGAI

PENGAMBIL GAMBAR JALAN ROBOT

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

1) Program Studi S1 Sistem Komputer, STIKOM Surabaya, email: hanny.kristianto@gmail.com


2) Program Studi S1 Sistem Komputer, STIKOM Surabaya, email: susianto@stikom.edu
3) Program Studi S1 Sistem Komputer, STIKOM Surabaya, email: madha@stikom.edu

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 dapat membantu manusia dalam


peralatan transportasi menjadi sangat mengendarai kendaraan. Sistem yang
penting. Kebutuhan alat transportasi yang bersifat otomatis ini diharapkan dapat
aman dan nyaman merupakan hal yang membantu atau bahkan menggantikan
sangat didambakan. Sampai saat ini, sebagian besar peran pengemudi dalam
sebagian besar sistem navigasi atau kemudi mengendalikan mobil.
alat transportasi darat (mobil) masih banyak Sistem image processing digunakan
dilakukan dengan tenaga manusia. Untuk untuk membantu mengimplementasikan
dapat mengendalikan mobil dengan baik sistem autopilot di darat. Sistem tersebut
seseorang harus mempunyai ketrampilan akan diaplikasikan oleh penulis pada sebuah
khusus, juga diperlukan konsentrasi disaat mobile robot yang diberi kamera untuk
mengendalikannya di jalan raya. dapat mengambil gambar lintasan yang
Mengemudi kendaraan dengan konsentrasi sedang dilintas oleh mobile robot tersebut.
yang kurang sangat berbahaya, karena Lintasan yang ditempuh oleh robot tersebut
berisiko besar terjadi kecelakaan. Untuk itu berupa lintasan tanpa ada halangan dan
diperlukan diperlukan suatu sistem yang tanpa ada persimpangan jalan. Selain itu,
1
lintasan tersebut menggunakan perbedaan kamera tersebut diolah pada software
kontras warna antara bahu jalan dengan Microsoft Visual C++ 2008 menggunakan
jalan. library OpenCV dan hasilnya dikirm
melalui serial menuju mikrokontroler.
Dengan memanfaatkan library Mikrokontroler mengendalikan motor sesuai
OpenCV yaitu CVScalar, pendeteksian
antara bahu jalan dengan badan jalan dapat dengan perintah dari PC, sehingga motor
diwujudkan. Oleh karena itu Image DC dapat berjalan sesuai dengan jalan yang
processing dapat mendeteksi jalan dengan ditempuh mobile robot.
bahu jalan yang dilintasi, sedangkan Proses Pendeteksian Jalan
penggunaan sensor ultrasonic dan sensor Proses Pendeteksian Jalan yang
cahaya tidak tepat guna dalam mendeteksi dilakukan oleh Processor (Notebook)
jalan dan bahu jalan tersebut. Dikarenakan
tampak pada blok diagram gambar 2.
penggunaan sensor tersebut mendeteksi
bahu jalan dan badan jalan dengan Perintah arah jalan
berdasarkan
mendekati bahu jalan tersebut untuk dapat Gambar RGB Grayscale Biner
koordinat pixel

dideteksi, sedangkan pada kondisi nyata j


mobil harus menjaga jarak dengan bahu Gambar 2 Blok Diagram Pengolahan
jalan. Sehingga, penggunaan Image gambar
processing menjadi tepat guna untuk Pada gambar 2 gambar RGB
mengimplementasikan autopilot di darat.
diperoleh dari hasil capture kamera yang
METODE lalu dirubah ke gambar grayscale kemudian
Pengerjaan Tugas Akhir ini dapat terlihat biner. Pada gambar biner, gambar jalan
jelas dari blok diagram yang tampak pada terlihat kontras antara jalan dan bahu jalan.
gambar 3.1. Blok diagram tersebut Sehingga diambil lah koordinat pada bahu
menggambarkan proses dari capture gambar jalan untuk menjadi acuan mobile robot
hingga perintah ke motor. Terdapat bergerak ke kiri, ke kanan atau lurus.
beberapa komponen penting pada blok Proses Perubahan Warna dari RGB ke
diagram tersebut antara lain adalah webcam, Grayscale
PC, mikrokontroler dan motor DC. Proses perubahan warna dari RGB
Personal
ke Grayscale bertujuan untuk
Kamera Computer
 ‡ŽƒŽ—‹ mempermudah proses selanjutnya yaitu
proses merubah grayscale menjadi biner.

 Sehingga gambar yang diterima oleh
Motor Roda
 Kanan
processor (notebook) dirubah langsung ke

 grayscale. Perubahan gambar RGB ke
Motor Roda
Kiri Grayscale menggunakan library openCV
Microcontroller
pada visual C++ menggunakan perintah
Gambar 1 Blok Diagram sebagai berikut.
Gambar 1 merupakan proses cvCvtColor( src, image2Gray,
CV_BGR2GRAY);
mengalirnya data input hingga menjadi
Pada perintah tersebut sudah
output. Data yang diperoleh dari kamera
terdapat dua frame, yang satu berisi gambar
berupa data lintasan yang tampak oleh
asli dari kamera (src) sedangkan yang
kamera robot pada saat di lintasan lalu data
lainnya adalah frame yang disediakan untuk
tersebut dikirim ke Personal Computer
hasil perubahan ke grayscale (image2Gray).
melalui USB. Pada Personal Computer hasil
2
Sehingga maksud dari potongan perintah
tersebut adalah mengubah gambar src ke
grayscale (CV_BGR2GRAY) lalu disimpan START
pada frame bernama image2Gray.
Proses Perubahan Gambar Grayscale ke
Biner
Inisialisasi : pixel
Proses perubahan gambar grayscale batas kanan dan
kiri
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
Jalan
jelas. Berikut adalah perintah yang mengenai Motor kanan :
batas kiri mundur
memanfaatkan library OpenCV untuk ? Motor kiri : maju
mengubah gambar grayscale menjadi biner.
cvThreshold(image2Gray,image2Gray,5
0,255,CV_THRESH_BINARY);
Pada perintah tersebut gambar
grayscale dari frame image2Gray dirubah
menjadi biner (CV_THRESH_BINARY) Jalan
mengenai
dengan threshold 50 dan disimpan pada batas
Motor kanan :maju
Motor kiri :mundur
kanan?
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
Motor kanan :
gambar biner. maju
Motor kiri : maju
Proses Pengambilan Koordinat sebagai
Acuan
Pada proses ini penulis menetapkan
koordinat pixel yang digunakan sebagai Gambar 3 Flowchat Pendeteksian Jalan
acuan mobile robot untuk bergerak ke kiri Pada gambar 3 dijelaskan bahwa
maupun ke kanan. Koordinat pixel yang terdapat pixel yang menjadi batas kanan dan
dipakai adalah koordinat pixel bahu jalan kiri. Pixel tersebut menjadi acuan motor
(kanan dan kiri robot) pada posisi robot di robot untuk bergerak ke kanan dan ke kiri.
tengah jalan, sehingga koordinat tersebut Berikut bagian dari kode program dalam
dapat digunakan sebagai acuan. Apabila menentukan pixel hingga keputusan robot
posisi acuan tersebut terdeteksi mengenai bergerak ke kanan atau kiri.
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.

3
CvScalar s; RS-232 menuju mikrontroler dan data yang
for(i=0;i<120;i++)
dikirim adalah “x” (perintah kiri), “y”
{
s=cvGet2D(image2Gray,460,i); (perintah kanan) dan “z” (perintah maju).
if (s.val[0]==255) Processor mendeteksi perintah kiri maka
k++; processor mengaktifkan flag kiri yang lalu
} menjadi tanda untuk pengiriman data “x” ke
for(i=520;i<640;i++)
mikrokontroler. Berikut adalah perintah
{
s=cvGet2D(image2Gray,460,i); untuk mengirim data.
if (s.val[0]==255) if (k<=3)
j++; {
} cout<<(stderr,"kiri\n");
if (hanny.Open(1,9600))
Pixel dapat diambil dengan
{
memanfaatkan library CvScalar, pada char* start= "x";
potongan perintah tersebut terlihat bahwa hanny.SendData(start,
pixel koordinat Y yang diambil pada pixel 1);
460 sedangkan pixel koordinat X yang
cout<<(stderr,"openedX\n");
diambil antara pixel ke 0 sampai 120 (acuan }
kiri) dan pixel 520 hingga 640 (acuan k=0;
kanan). Apabila pixel acuan tersebut terkena }
badan jalan yang bernilai 255 maka else if (j<=3)
{
diaktifkan flag kanan atau kiri yang
cout<<(stderr,"kanan\n");
digunakan untuk melanjutkan perintah if (hanny.Open(1,9600))
output. {
Jarak antara kamera dengan jalan char* start= "y";
yang terproyeksi oleh pixel baris 460 adalah hanny.SendData(start,
1);
80 cm. Dengan jarak 80 cm, perbandingan
jarak yang sebenarnya dengan pixel adalah cout<<(stderr,"openedY\n");
1 : 13. Dapat diartikan bahwa 1 cm sama }
dengan 13 pixel, dengan ketentuan jarak j=0;
kamera dengan pixel yang dimaksud adalah }
else
80 cm. {
Komunikasi Menggerakan Mobile Robot cout<<(stderr,"lurus\n");
Untuk dapat menggerakan mobile k=0;
robot maka perintah dari Processor harus j=0;
if (hanny.Open(1,9600))
dikirim ke mikrokontroler melalui UART,
{
lalu data yang diterima mikrokontroler char* start= "z";
dibaca dan diproses selanjutnya hingga hanny.SendData(start,
memperoleh output sesuai yang diinginkan. 1);
Pengiriman data dari Processor
cout<<(stderr,"OpenL\n");
(Notebook)
Pengiriman data dari processor }
berupa pengiriman data karakter. }
Pengiriman dilakukan melalui UART dari Pada potongan perintah tersebut
processor yang sudah dilengkapi dengan ditunjukan bahwa COM serial yang
4
digunakan adalah port 1 dan baudrate yang yang dikirim lalu dipilah-pilah sesuai
digunakan sebesar 9600. Perintah dengan perintah lalu diproses menjadi
pengiriman variabel start dengan dengan output yang digunakan untuk
perubahan nilai menjadi x ,y atau z sesuai mengendalikan motor DC.
dengan perintah, dan banyaknya karakter Perancangan Perangkat Keras
yang dikirim adalah 1 hanny.SendData(start, Minimum Sistem ATMEGA8535
1). Sebelum perintah tersebut terdapat Minimum sistem ATMEGA8535
header dan function yang terlampir yang digunakan adalah minimum sistem
digunakan untuk melengkapi perintah dari innovative electronics. Dengan
mengirim data secara serial. spesifikasi sebagai berikut
Penerimaan Data Mikrokontroler 1. Mikrokontroler ATMEGA8535 yang
Data dari processor diolah oleh mempunyai 8KB Flash Memory dan
mikrokontroler agar dapat mengeluarkan 8 channel ADC dengan resolusi 10
output yang nantinya dapat mengendalikan bit.
motor DC. Berikut adalah potongan perintah 2. Mendukung varian AVR 40 pin,
yang digunakan mikrokontroler untuk antara lain : ATMega8535,
menerima data serial. ATMega8515, AT90S8515,
angka=getchar(); AT90S8535, dll. Untuk tipe AVR
if (angka=='y') // kanan tanpa internal ADC membutuhkan
{ OCR1A=40;
Conversion Socket.
PORTD.7=1; //mki
OCR1B=40; 3. Memiliki jalur I/O hingga 35 pin.
PORTD.6=0; 4. Terdapat eksternal Brown Out
putchar('a'); Detector sebagai rangkaian reset.
} 5. Konfigurasi jumper untuk
else if (angka=='x') // kiri
melakukan pemilihan beberapa
{
OCR1A=40; model pengambilan tegangan
PORTD.7=0; referensi untuk tipe AVR dengan
OCR1B=40; internal ADC.
PORTD.6=1; 6. LED Programming indicator.
putchar('b');
}
7. Frekwensi Osilator sebesar 4 MHz.
else if (angka=='z') // lurus 8. Tersedia jalur komunikasi serial
{ UART RS-232 dengan konektor RJ-
OCR1A=40; 11.
PORTD.7=1;
9. Tersedia port untuk pemrograman
OCR1B=40;
PORTD.6=1; secara ISP.
putchar('c'); 10. Tegangan input Power Supply 9-12
} VDC dan output tegangan 5 VDC.
else if(angka == 'a') 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

Pulse Width Modulation (PWM)


Pengendalian motor DC
Gambar 5 Rangkaian Relay Driver menggunakan PWM. PWM digunakan
Relay driver tersebut digunakan untuk menurunkan kecepatan sehingga laju
karena dapat digunakan untuk mengurangi dari mobile robot dapat dikendalikan dan
kecepatan motor sesuai dengan nilai PWM error(keluar dari jalur) dapat dikurangi. Laju

6
dari mobile robot dapat dikendalikan dengan PENGUJIAN SISTEM
mengubah-ubah nilai PWM yang Tujuan dari pengujian ini adalah mengetahui
dikendalikan melalui microcontroller. hasil keputusan dari pengambilan gambar,
apakah sesuai dengan program yang disusun
Sehingga kecepatan dari mobile robot dapat
sebelumnya dalam menghadapi jalan.
diklasifikasikan menjadi 4 kecepatan, yaitu Hasil Pengujian
berhenti, kecepatan pelan, sedang hingga Pengujian secara keseluruhan berjalan
cepat. Pemberian nilai PWM dapat dengan baik karena terlihat dari koneksi
diberikan sebagai berikut : serial PC dengan mikrokontroler berjalan
Tabel 1 Kecepatan Motor baik dan respon dari PC terhadap kamera
No. Kecepatan Nilai PWM cukup cepat sehingga proses jalan dari
1. Berhenti 0 mobile robot berjalan dengan lancar. Namun
2. Pelan 1-85 hasil capture dari kamera juga tergantung
3. Sedang 86-170 dengan pencahayaan, karena pencahayaan
4. Cepat 171-255 yang berlebihan atau kekurangan
Pada penelitian ini, mobile robot mempengaruhi proses dari pengolahan
menggunakan kecepatan pelan dengan gambar. Sehingga pencahayaan yang cukup
tujuan error yang dihasilkan sangat kecil mempengaruhi kelancaran jalannya mobile
sehingga mobile robot dapat berjalan robot. Gambar 8 , gambar 9 dan gambar 10
dengan baik. Dengan demikian mobile robot merupakan hasil dari respon 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 Gambar 8 Respose Lurus
terbuat dari bahan vinyl yang dicetak Dari gambar 8 terlihat pada
dengan digital printing. Warna jalan dan Command Prompt bahwa ketika mendapati
bahu jalan hanya terdiri dari warna hitam gambar seperti itu respon dari hasil
dan putih. Berikut adalah gambar jalan yang pengolahan adalah lurus.
digunakan pada penelitian ini.
4 Meter

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 dari hasil Dari penelitian ini dan dengan melihat
pengolahan adalah belok kiri. 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.
Gambar 10 Respon Kanan 2. Robot dapat merespon input dari kamera
Dari gambar 10 terlihat pada dan apabila hasil dari pengolahan input
Command Prompt bahwa ketika mendapati menunjukan mobile robot tidak berada di
gambar seperti itu respon dari hasil tengah lintasan maka motor akan
pengolahan adalah belok kanan. merespon hingga mobile robot berada di
Waktu yang digunakan oleh mobile tengah lintasan. Untuk dapat
robot untuk dapat menempuh satu putaran menyelesaikan satu putaran lintasan
adalah 2 menit 20 detik dengan PWM 8-bit sepanjang 16m mobile robot memerlukan
sebesar 40. Namun kondisi mobile robot waktu rata-rata 2 menit 20 detik.
tersebut mempunyai kelemahan lain selain DAFTAR RUJUKAN
ketergantungannya dengan cahaya, yaitu ATMEL. 2006. ATmega8535/
mobile robot ini hanya menjaga bumper ATmega8535L. (online).
agar tidak keluar dari jalur, namun (www.atmel.com/Images/doc2502.
terkadang bagian belakang dari mobile robot pdf)
masih dapat keluar dari jalur.
Secara keseluruhan proses dari input Adhiguna. 2008. OPENCV. (online).
kamera hingga output motor dapat (http://machine-visionadhiguna.
disimpulkan dalam sebuah tabel dengan blogspot.com / 2008/05/intel-
mengambil beberapa sampel dari beberapa opencv-alternatif-
tikungan pada lintasan tersebut. Tabel 4.2 opensource.html).
merupakan hasil dari proses hubungan
S, Ari. 2010. Pengenalan PWM. (online).
kamera dengan keadaan motor.
(http://www.ari-
Tabel 2 Hubungan Data Kamera dengan sty.cz.cc/2010/02/pulse-width-
keadaan motor modulation-pwm-
No Kondisi Pixel Pixel Motor Motor kiri (PWM)
kanan kiri kanan(PWM) pengenalan.html).
1 Kanan <120 >120 Mundur (40) Maju (40)
2 Kiri <120 >120 Maju (40) Mundur (40)
3 Lurus ±120 ±120 Maju (40) Maju (40) Faruq Bamukrah, Jihan. 2010. Image
4 Kiri <120 >120 Maju (40) Mundur (40)
5 kanan <120 >120 Mundur (40) Maju (40) Processing - Pengolahan Citra.
Dari hasil tabel tersebut terlihat bahwa 120 (online).(http://jihanfaruqbamukrah
pixel untuk kanan dan kiri menjadi acuan .blogspot.com/2010/05/pengertian-
dari gerak motor untuk membuat mobile pengolahan-citra-image.html)
robot tetap berada di lintasan.
Tejo. 2006. Transmisi. (online).
Simpulan (http://www.pdfio.com/k-
1153255.html)
8
Salam, Abdul. 2008. Perkembangan
Personal Computer (PC). (online).
(http://staff.blog.ui.ac.id/abdul.sala
m/2008/07/02/perkembangan-
personal-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-pada-
mobile-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)

You might also like