PERANCANGAN SISTEM ROBOT MOBIL PENDETEKSI BOLA TENIS MEJA Ario Witjakso1; Puspita Harum Larasati2; Andi Nurdiansah3; Nathaniel4 Jurusan Sistem Komputer, Fakultas Ilmu Komputer, BINUS University Jalan K.H. Syahdan No. 9, Palmerah, Jakarta Barat 11480 ABSTRACT Computer vision is a branch of science supported developing robotics industry in many benefits. The purpose of the research is to design a robot mobil which could detect object (pingpong balls) and estimate probable distance to approach the object. This research is hoped to be useful in the next robot contests or other application. The method used in this object detection research is integral image technique. Algorithm AdaBoost (Adaptive Boosting) is used to choose best features from other tens of thousands features. Keywords: image processing, ping-pong balls, AdaBoost, integral image. ABSTRAK Computer Vision merupakan salah satu cabang ilmu yang mendukung perkembangan industri robotika yang mengalami perkembangan pesat dalam berbagai kegunaannya. Tujuan dari penelitian ini adalah merancang sebuah robot mobil yang dapat mendeteksi objek (dalam hal ini adalah bola ping-pong) dan mengestimasi jarak agar dapat melakukan pergerakan untuk mendekati objek tersebut, yang diharapkan dapat berguna dalam kontes-kontes robot mendatang ataupun aplikasi lainnya. Metode yang digunakan dalam pendeteksian objek pada penelitian ini adalah dengan teknik integral image. Algoritma AdaBoost (Adaptive Boosting) digunakan untuk memilih fitur-fitur terbaik dari puluhan ribu fitur lain yang mungkin dapat digunakan. Kata kunci: image processing, bola ping-pong, AdaBoost, integral image. Perancangan Sistem Robot... (Ario Witjakso; dkk) 153 PENDAHULUAN Semakin banyaknya kontes-kontes robot yang melibatkan penggunaan vision di dalamnya, memperlihatkan semakin berkembangnya penelitian-penelitian di bidang robotika. Salah satu contoh dari kontes robot yang sudah ada adalah RoboSoccer, sebuah robot mobil yang dapat mentracking bola berdasarkan keunikan warna bola tersebut. Dalam jurnal ini hanya akan dibahas tentang bagaimana robot mobil dapat mendeteksi objek yang diinginkan, yakni bola ping-pong dan dapat melakukan pergerakan mendekati objek tersebut dengan pengestimasian jarak dan posisi antara objek dengan robot mobil. Metode pendeteksian objek yang digunakan pada jurnal ini adalah integral image. Metode ini menggunakan fitur-fitur, yang merupakan fitur versi mini dari fungsi basis Haar (Haar basis functions). Kelebihan dari metode ini dibandingkan dengan metode scaning pada citra secara piksel per piksel adalah kecepatannya. Citra di-scan dengan menggunakan fitur-fitur yang telah dipilih sebelumnya dengan ukuran fitur terkecil 16x16 piksel. Algoritma AdaBoost akan menentukan fitur-fitur terbaik yang akan digunakan dalam melakukan pendeteksian. Di dalam algoritma AdaBoost, kita telah men-training gambar-gambar yang terdiri dari positive image (yaitu objek berupa bola ping-pong) dan negative image (objek selain bola ping-pong) yang akan dijadikan gambar acuan dalam komputasi fitur. Fitur-fitur yang telah dipilih dengan menggunakan algoritma AdaBoost tadi dan mendapati hasil yang dideteksi (bola ping-pong), akan ditandai dengan sebuah sub-window. Kumpulan dari beberapa sub-window akan digabungkan (merge), sehingga akan tampak sebuah sub-window baru yang menandakan bahwa objek yang diinginkan telah didapat. Dengan metode seperti ini diharapkan dapat memperkecil kesalahan dalam pendeteksian. Akan tetapi beberapa kelemahan masih dapat terjadi, antar lain karena faktor pencahayaan, warna objek lain, dan warna latar belakang. Setelah proses pendeteksian objek selesai, perhitungan jarak dilakukan guna mengestimasi jarak dan posisi yang harus ditempuh robot mobil untuk mendekati bola. Pergerakan robot mobil pada penelitian ini belum dilakukan secara real time. PEMBAHASAN Pembahasan meliputi seluruh bagian dari sistem yang meliputi, yaitu webcam, PC, dua buah motor servo, dan mikropengendali AT89S52, seperti ditunjukkan pada gambar 1: Gambar 1 Sistem secara keseluruhan 154 Jurnal Teknik Komputer Vol. 18 No. 2 Agustus 2008: 153 - 163 Algoritma yang digunakan dalam penelitian ini terdiri atas 3 modul utama (Gambar 2), yakni modul komputasi fitur, modul learning (pemilihan fitur), dan modul pencarian bola. Komputasi fitur merupakan proses untuk menentukan nilai threshold dari setiap fitur yang digunakan berdasarkan teknik perhitungan integral image. Selanjutnya adalah pemilihan fitur yang merupakan proses untuk melakukan pemilihan fitur-fitur terbaik yang akan digunakan, dengan menggunakan algoritma AdaBoost. Sementara, pencarian bola termasuk proses scaning, merging, dan pengkalkulasian jarak dan posisi objek. Gambar 2 Proses Pendeteksian Objek 1. Modul Komputasi Fitur Modul komputasi fitur digunakan untuk menentukan nilai threshold dari setiap fitur yang digunakan. Prosedur penelitian ini mengklasifikasikan citra berdasarkan nilai dari fitur-fitur sederhana yang digunakan. Alasan pemilihan penggunaan fitur dibandingkan dengan penggunaan piksel per piksel adalah kecepatan pemrosesannya. Fitur yang digunakan merupakan versi mini dari fungi basis Haar (Haar basis functions). Dalam penelitian ini digunakan 3 jenis fitur, yaitu fitur dengan 2 persegi panjang, fitur dengan 3 persegi panjang, dan fitur dengan 4 persegi panjang. Gambar 3 menunjukan contoh dari fitur-fitur yang digunakan. Gambar 3 (A) dan (B) merupakan fitur dengan 2 persegi panjang, (C) merupakan fitur dengan 3 persegi panjang, dan (D) merupakan fitur dengan 4 persegi panjang Perancangan Sistem Robot... (Ario Witjakso; dkk) 155 Cara perhitungan fitur ialah dengan menggunakan integral image. Integral image merupakan penjumlahan dari seluruh piksel yang berada dalam persegi panjang berwarna putih dikurangi dengan seluruh jumlah piksel yang ada di persegi panjang berwarna abu-abu, seperti pada Gambar 4. Gambar 4 Contoh gambar bola grayscale dengan fitur A, B, C, dan D. 2. Modul Learning (Pemilihan Fitur) AdaBoost (Adaptive Boosting) AdaBoost merupakan sebuah algoritma learning yang banyak digunakan dalam masalah pengklasifikasian. Dalam penelitian ini AdaBoost digunakan untuk memilih fitur-fitur yang baik (weak-classifier) dan membentuk sebuah strong-classifier (kumpulan dari beberapa weakclassifier). Untuk kemudahan dalam pembacaan dan penyusunan buku, maka hanya akan diberikan ilustrasi cara kerja AdaBoost menggunakan 30 gambar dan 4 fitur (pada percobaan sebenarnya, digunakan 60 gambar dan 112 fitur) dengan ukuran gambar training 16 x 16 piksel. Gambar 5 menunjukkan gambar-gambar yang digunakan untuk training, dengan 6 gambar positif (gambar bola) dan 24 gambar negatif (gambar bukan bola). Gambar 5 contoh gambar yang digunakan untuk training (6 gambar positif dan 24 gambar negatif) Dan gambar di bawah menunjukkan 4 fitur yang digunakan untuk ilustrasi proses pemilihan fitur dengan AdaBoost. Gambar 6 Beberapa contoh fitur yang digunakan Tabel 1 menunjukkan hasil klasifikasi dengan menggunakan 4 fitur. 156 Jurnal Teknik Komputer Vol. 18 No. 2 Agustus 2008: 153 - 163 Tabel 1 Hasil klasifikasi fitur Fitur 1 Fitur 2 Fitur 3 9 9 9 Gambar 1 * 9 9 9 Gambar 2 * 9 9 9 Gambar 3 * 9 9 9 Gambar 4 * 9 9 9 Gambar 5 * 9 9 9 Gambar 6 * 9 9 9 Gambar 7 ** 9 9 9 Gambar 8 ** 9 9 8 Gambar 9 ** 9 9 8 Gambar 10 ** 8 9 8 Gambar 11 ** 9 9 8 Gambar 12 ** 8 9 8 Gambar 13 ** 9 9 8 Gambar 14 ** 9 9 8 Gambar 15 ** 9 9 8 Gambar 16 ** 9 9 9 Gambar 17 ** 9 9 9 Gambar 18 ** 9 9 9 Gambar 19 ** 9 9 8 Gambar 20 ** 9 9 8 Gambar 21 ** 9 9 8 Gambar 22 ** 9 9 8 Gambar 23 ** 8 9 8 Gambar 24 ** 9 9 9 Gambar 25 ** 9 9 8 Gambar 26 ** 9 9 8 Gambar 27 ** 9 9 8 Gambar 28 ** 8 8 9 Gambar 29 ** 9 9 9 Gambar 30 ** 9 = Gambar berhasil diklasifikasi dengan benar oleh fitur bersangkutan 8 = Gambar yang salah diklasifikasi oleh fitur bersangkutan * = Gambar positif ** = Gambar negatif Fitur 4 9 9 9 9 9 9 9 9 8 8 9 8 8 8 8 8 9 9 9 8 9 9 8 8 9 9 9 8 9 8 Berdasarkan tabel 1, dilihat dari jumlah gambar yang berhasil diklasifikasi dengan benar, fitur 2 terpilih sebagai fitur terbaik, disusul oleh fitur 1, fitur 4 dan terakhir fitur 3. Akan tetapi, dengan menggunakan algoritma AdaBoost, urutan Fitur terbaik ialah Fitur 2, disusul oleh Fitur 4, Fitur 3 dan Fitur 1. AdaBoost menggunakan sistem pembobotan untuk masing-masing gambar. Pada umumnya AdaBoost dilatih dengan menggunakan jumlah gambar positif yang lebih sedikit dibandingkan dengan gambar negatif, sehingga memberikan nilai bobot untuk gambar positif yang sedikit lebih tinggi dibanding dengan gambar negatif, dengan tujuan supaya kesalahan deteksi pada benda yang bukan bola menjadi lebih kecil (Viola & Jones, 2001). Algoritma AdaBoost yang secara umum dipakai untuk pengklasifikasian ialah sebagai berikut: 1. Input berupa gambar untuk training , dengan = gambar, = 1 untuk gambar positif, = 0 untuk gambar negatif, dan i ialah jumlah gambar dengan i = 1.....N , dengan m = jumlah gambar negatif, dan l = jumlah 2. Inisialisasi bobot awal gambar positif 3. For t = 1...........T , dimana t ialah jumlah iterasi (tergantung dari banyaknya fitur yang akan dipilih) a. Normalisasi semua bobot, sehingga penjumlahan total dari semua bobot ialah satu Perancangan Sistem Robot... (Ario Witjakso; dkk) 157 b. Untuk setiap fitur, hitung error rate c. Pilih Fitur dengan error rate terkecil d. Update bobot 4. dengan = 1 bila gambar diklasifikasi dengan benar dan 0 bila salah diklasifikasi, dan hasil akhir klasifikasi yang bagus : , dimana αt = 1 βt Tabel 2 menunjukkan proses pemilihan urutan fitur terbaik dengan menggunakan AdaBoost dari 4 fitur. Tabel 2 Proses pemilihan urutan fitur terbaik dengan menggunakan AdaBoost Bobot Awal Bobot Bobot setelah setelah Iterasi 4 Iterasi 3 Gambar 1 * 0.0833 0.0426 0.0393 0.0459 -0.1137 Gambar 2 * 0.0833 0.0426 0.0393 0.0459 -0.1137 Gambar 3 * 0.0833 0.0426 0.0393 0.0459 -0.1137 Gambar 4 * 0.0833 0.0426 0.0393 0.0459 -0.1137 Gambar 5 * 0.0833 0.0426 0.0393 0.0459 -0.1137 Gambar 6 * 0.0833 0.0426 0.0393 0.0459 -0.1137 Gambar 7 ** 0.0208 0.0106 0.0098 0.0115 -0.0284 Gambar 8 ** 0.0208 0.0106 0.0098 0.0115 -0.0284 Gambar 9 ** 0.0208 0.0106 0.0162 0.0070 -0.0173 Gambar 10 ** 0.0208 0.0106 0.0162 0.0070 -0.0173 Gambar 11 ** 0.0208 0.0106 0.0098 0.0042 0.0042 Gambar 12 ** 0.0208 0.0106 0.0162 0.0070 -0.0173 Gambar 13 ** 0.0208 0.0106 0.0162 0.0070 0.0070 Gambar 14 ** 0.0208 0.0106 0.0162 0.0070 -0.0173 Gambar 15 ** 0.0208 0.0106 0.0162 0.0070 -0.0173 Gambar 16 ** 0.0208 0.0106 0.0162 0.0070 -0.0173 Gambar 17 ** 0.0208 0.0106 0.0098 0.0115 -0.0284 Gambar 18 ** 0.0208 0.0106 0.0098 0.0115 -0.0284 Gambar 19 ** 0.0208 0.0106 0.0098 0.0115 -0.0284 Gambar 20 ** 0.0208 0.0106 0.0162 0.0070 -0.0173 Gambar 21 ** 0.0208 0.0106 0.0098 0.0042 -0.0105 Gambar 22 ** 0.0208 0.0106 0.0098 0.0042 -0.0105 Gambar 23 ** 0.0208 0.0106 0.0162 0.0070 -0.0173 Gambar 24 ** 0.0208 0.0106 0.0162 0.0070 0.0070 Gambar 25 ** 0.0208 0.0106 0.0098 0.0115 -0.0284 Gambar 26 ** 0.0208 0.0106 0.0098 0.0042 -0.0105 Gambar 27 ** 0.0208 0.0106 0.0098 0.0042 -0.0105 Gambar 28 ** 0.0208 0.0106 0.0162 0.0070 -0.0173 Gambar 29 ** 0.0208 0.5000 0.4618 0.5392 0.5392 Gambar 30 ** 0.0208 0.0106 0.0162 0.0189 -0.0468 0.0833 0.6152 1.1193 1.6766 Error Rate Fitur 1 0.0208 0.5208 # 0.9826 # 1.5218 # Error Rate Fitur 2 0.3333 0.5035 0.7308 0.8285 # Error Rate Fitur 3 0.2500 0.3777 0.5720 # 0.6675 # Error Rate Fitur 4 # = Error rate yang diabaikan, karena fitur bersangkutan telah dipilih pada iterasi sebelumnya * = Gambar positif ** = Gambar negatif 158 Bobot setelah Iterasi 1 Bobot setelah Iterasi 2 Jurnal Teknik Komputer Vol. 18 No. 2 Agustus 2008: 153 - 163 Pada setiap iterasi, bobot untuk setiap gambar di-update berdasarkan tingkat kesalahan (error rate) dari fitur yang terkecil, dan fitur dengan tingkat kesalahan terkecil akan dipilih. Perhatikan bahwa pada iterasi awal, tingkat kesalahan terkecil pada fitur 2 dan tingkat kesalahan terbesar pada fitur 3. Akan tetapi, pada iterasi berikutnya, tingkat kesalahan terkecil ada pada fitur 4 dan terbesar pada fitur 1. Dalam penelitian ini, dalam hal pemilihan fitur dengan AdaBoost, fitur dengan tingkat kesalahan di atas 0.5 tidak akan digunakan. Karena banyaknya jumlah fitur yang dapat digunakan maka untuk menambah kecepatan pemrosesan cukup dipilih fitur-fitur yang terbaik untuk mengklasifikasikan bola, misalnya dengan Sub-Window dengan ukuran 24x24 piksel, kemungkinan jumlah fitur yang dapat digunakan ialah 45.396 fitur (Carnegie Mellon School of Computer Science, 2002). Dari 55 fitur yang menggunakan algoritma ini, terpilih 28 fitur yang cocok untuk digunakan dalam sistem pendeteksian objek. 3. Modul Pencarian Bola Gambar 7 Diagram alir pencarian bola Berdasarkan diagram alir (Gambar 7), setelah citra di-capture, dilakukan pengkonversian citra dari RGB ke grayscale. Setelah itu proses scanning, dimana ukuran terkecil sub-window akan dijalankan terlebih dahulu pada setiap classifier, kemudian fitur yang sama dengan ukuran yang lebih besar akan dijalankan pada proses berikut dan seterusnya hingga didapat gambar yang cocok dengan pendeteksian. Setelah proses scanning selesai, dilakukan proses merging sehingga tampak sebuah sub-window baru yang menandakan bahwa objek yang diinginkan telah terdeteksi. proses selanjutnya adalah pengalkulasian jarak dan posisi objek guna menentukan arah pergerakan robot mobil. Penjelasan tentang scanning, merging dan pengalkulasian jarak dan posisi akan dibahas lebih lanjut dalam sub-bab berikut. Perancangan Sistem Robot... (Ario Witjakso; dkk) 159 3.1 Scanning Pada bagian ini menguraikan suatu algoritma untuk membangun classifier cascade untuk mengurangi waktu komputasi yang didasarkan pada fitur-fitur yang telah terseleksi dalam classifier, dengan fitur ini akan dilakukan scanning gambar pada classifier cascade yang digunakan. Semua contoh fitur yang digunakan untuk latihan mengklasifikasi gambar yang dinormalisir (nilai piksel gambar menjadi setara dalam kondisi lingkungan yang berbeda) untuk memperkecil pengaruh dari kondisi cahaya yang berbeda, dan ukuran sub-window yang berbeda. Normalisasi dilakukan dengan membagi nilai fitur (penjumlahan nilai fitur dalam metode integral image) dengan nilai piksel total pada sub-window tersebut. Proses scanning fitur dilakukan ke seluruh bagian gambar. Ukuran dari fitur yang digunakan terbagi beberapa ukuran. Ukuran yang paling kecil dijalankan terlebih dahulu, kemudian fitur yang sama dengan ukuran yang lebih besar akan dijalankan pada proses berikut dan seterusnya hingga didapat gambar yang cocok dengan pendeteksian bagian dari citra. Gambar-gambar yang lolos seleksi dari semua classifier akan ditandai dengan sebuah gambar bujur sangkar putih (subwindow). 3.2. Merging Merging merupakan penggabungan dari beberapa sub-window menjadi satu sub-window berdasarkan titik pusat pada banyaknya kumpulan sub-window pada hasil scanning fitur tersebut. Algoritma merging menggunakan teknik yang sama dengan teknik labeling, dengan mengelompokkan sub-window yang berdekatan menjadi satu kelompok. 3.3. Kalkulasi Jarak dan Posisi Apabila PC telah berhasil menentukan posisi bola berdasarkan algoritma yang digunakan pada program MATLAB, maka PC akan mengalkulasi jumlah step yang diperlukan untuk menggerakkan motor servo. Algoritma yang dipakai untuk menentukan jumlah step yang ditunjukkan pada Gambar 8, yaitu dengan: 1. Menentukan titik acuan/titik tengah pada gambar (Xtengah) 2. Menentukan titik sudut sub-window berdasarkan hasil deteksi bola (Xbola, Ybola) 3. Memprediksi jarak bola sebenarnya, dengan rumus: jarakbola = (d^1.5)/50 + d/12 + offset/1.8 4. Menentukan sudut kemiringan (orientasi) bola terhadap kamera, dengan rumus: Sudutbola = atan(Y/X) Gambar 8 Hubungan posisi bola dengan estimasi perpindahan robot mobil 5. 160 Jarak yang harus ditempuh robot untuk mencapai bola dengan jumlah step putaran motor dengan rumus berikut ini: Jumlah step robot maju= jarakbola/S Jurnal Teknik Komputer Vol. 18 No. 2 Agustus 2008: 153 - 163 6. Di mana: - S = Konstanta jarak = 1.3 Besar sudut yang harus ditempuh robot untuk mencapai bola dengan jumlah step putaran motor dengan rumus berikut ini: Jumlah step robot berbelok = sudutbola/C Di mana: - C = Konstanta orientasi = 7 Format data serial yang dikirimkan oleh PC ke mikropengendali untuk menggerakkan motor servo ialah berupa 8 bit. Data serial yang dikirimkan oleh PC ke mikrokontroller akan diinterpretasi oleh mikrokontroler sebagai perintah, yaitu: 00000001 = maju selangkah 00000010 = mundur selangkah 00000011 = kiri selangkah 00000100 = kanan selangkah Untuk menguji kehandalan sistem, beberapa percobaan dilakukan, antara lain: pengujian terhadap jarak antara objek dengan kamera, kondisi cahaya, latar belakang, dan pengujian terhadap objek lain. Berikut ringkasan dari hasil deteksi pada berbagai kondisi yang berbeda, termasuk waktu proses dan tingkat keberhasilan ditunjukkan pada tabel 3: Tabel 3 Tingkat keberhasilan percobaan pada berbagai kondisi Kondisi Tingkat Keakuratan Bola putih Bola orange Jarak antara Objek Dengan kamera 25 cm 35 cm 45 cm 55 cm 65 cm Kondisi Cahaya Redup Sedang Terang Pengujian terhadap Kotak objek lain Steker Bola sepak kecil Lingkaran Kubus & silinder Pengujian terhadap Biru warna latar Kuning Merah Hijau Hitam Warna-warni Lantai Waktu proses (ukuran gambar 176 x 144) pada Pentium IV 1.4 MHz PC, 512 MB RAM Perancangan Sistem Robot... (Ario Witjakso; dkk) 100% 100% 100% 90% 80% 90% 95% 95% 100% 95% 90% 90% 90% 95% 95% 100% 5% 5% 5% 10% 5% 95% 100% 95% 100% 95% 95% 95% 100% 95% 100% 100% 95% 95% 95% 1.25 detik Jumlah Percobaan 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 161 PENUTUP Berdasarkan penelitian yang telah dilakukan, simpulan yang diperoleh yaitu bahwa objek (bola ping-pong putih/jingga) yang akan dideteksi harus dalam keadaan diam dan jarak minimum objek yang dapat dideteksi adalah 25 cm dan jarak maksimumnya adalah 65 cm. Jarak terbaik pendeteksian antara objek dengan kamera adalah 25 cm. Sementara, ¾ ukuran bola yang tertangkap kamera masih dapat terdeteksi oleh sistem ini. Objek harus mendapatkan cahaya yang merata; kondisi cahaya yang baik untuk pendeteksian ini adalah cahaya terang dan kondisi cahaya yang gelap akan mempengaruhi pendeteksian menjadi tidak baik. Estimasi jarak dan pergerakan robot mobil kurang baik dan waktu proses untuk pendeteksian ini lebih kurang 1,25 detik. DAFTAR PUSTAKA Anonim, Kejuaraan sepakbola dunia ROBOcup (Human vs Humanoid). (2003). (http://www.robocup.org) Anonim, MATLAB communication with external device. http://www.chem.duke.edu/~boris/matlab/Lesson5.pdf Carnegie Mellon School of Computer Science. (2002). www.cs.cmu.edu/afs/cs.cmu.edu/project/theo-20/www/mlc/2002/boosting.pdf Dari Hanselman, Duance., Bruce Littlefield. (1997). Matlab the language of technical computing. Prentice Hall. Haralick, Robert M., Linda G Shapiro. (1992). Computer and robot vision. Addison Wesley. Jain, Ramesh, Kasturi, Rangachar, Schunck Brian G. (1995). Machine vision. McGraw-Hill. P. Viola and M.J. Jones. Robust real-time object detection. In Proc. of IEEE Workshop on Statistical and Theories of Computer Vision, 2001. http://www.wisdom.weizmann.ac.il/~hassner/cv03/ICCV01-Viola-Jones.pdf Tabratas, Tharom (2003). Pengolahan Citra pada Robot mobil. http://ilmukomputer.internux.net.id/berseri/tharom-robot/index.php 162 Jurnal Teknik Komputer Vol. 18 No. 2 Agustus 2008: 153 - 163 LAMPIRAN WebCam PC 1 40 2 39 3 38 4 37 5 36 6 35 7 34 8 33 9 32 10 31 11 30 12 29 13 28 14 27 15 26 16 25 17 24 + 18 23 + 19 22 20 21 sv1 sv2 Vcc ( 5V ) Vcc ( 5V ) 1μF 1μF TXD RXD + + 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 Max232 + 1μF 1μF + 1K RXD TXD L 7805 C-V 22pF 7.2 - 12 V 12MHz 22pF AT89S52 Gambar 9 Skematik Rangkaian Gambar 10 GUI Gambar 11 Sistem Perancangan Sistem Robot... (Ario Witjakso; dkk) 163