• Tidak ada hasil yang ditemukan

BAB IV IMPLEMENTASI DAN PENGUJIAN

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB IV IMPLEMENTASI DAN PENGUJIAN"

Copied!
29
0
0

Teks penuh

(1)

BAB IV

IMPLEMENTASI DAN PENGUJIAN

4.1 Implementasi

4.1.1 Implementasi Mekanisme Gerak dan Aktuator (Turret)

Berdasarkan spesifikasi dan analisis, sistem mekanisme gerak yang dirancang harus memiliki komponen gerak 2 (dua) dimensi yaitu ke arah sumbu horiosontal dan vertikal. Kemampuan gerak pada 2 (dua) arah tersebut untuk mendukung pergerakan sensor kamera untuk mendapatkan informasi citra yang maksimal bagi robot. Selain untuk menggerakan mekansime gerak (turret) tersebut dibutuhkan aktuator berupa motor servo untuk mendapatkan pergerakan yang memperhatikan kepresisian sudut.

Perlu diperhatikan pemilihan bahan yang tepat untuk mengimplementasikan mekanisme gerak (turret) yang diimplementasikan. Bahan yang digunakan harus memiliki kriteria kekokohan agar mampu mengangkat seluruh komponen–komponen yang dilekatkan dan ringan agar mudah digerakan oleh aktuator motor servo. Bahan yang digunakan untuk mengimplementasikan mekanisme gerak (turret) adalah alumium.

Selain itu perlu diperhatikan lokasi penempatan mekanisme gerak (turret) dengan memperhatikan luas area yang dimiliki, kesesuaian dengan komponen–komponen lain, dan aturan dimensi robot. Dibawah ini adalah gambar rancang platform robot.

(2)

Gambar 4.1 Rancangan Robot VAIRo

Dimensi dari platform robot VAIRo diatas adalah: Panjang : 260 mm

Lebar : 200 mm Tinggi : 250 mm

Pada rancangan awal ini bentuk mekanisme penggerak yang dirancang masih sederhana dan hanya dapat bergerak ke arah sumbu horisontal saja. Selain itu berdasarkan gambar rancangan tersebut didapatkan tinggi base robot mencapai 100 mm, sedangkan tinggi maksimum robot berdasarkan peraturan KRCI divisi expert single adalah 300 mm. Berdasarkan hal tersebut ukuran tinggi maksimum rancangan mekanisme penggerak (turret) adalah 200 mm. Selain itu perlu diperhatikan lebar

(3)

mekanisme penggerak yang akan diimplementasikan tidak dapat lebih dari 115 mm dengan dengan mempertimbangkan akan dipasangnya beberapa sensor jarak pada bagian kiri dan kanan robot. Pada awal perancangan dan implementasi turret memiliki batas gerak yaitu tidak dapat bergerak ke arah vertikal. Namun pergerakan yang terbatas tersebut membatasi jangkauan penglihatan robot untuk itu perlu ditambahan fitur pergerakan ke arah vertikal.

Gambar rancangan turret dengan mekanisme gerak 2 (dua) arah dapat dilihat pada bagian perancangan. Rancangan awal turret dengan 2 (dua) mekanisme gerak mengalami 1 (kali) perubahan karena pada rancangan awal didapati terdapat kerumitan untuk mengimplementasikan pada bagian mekanisme gerak arah horisontal. Selain itu pada rancangan awal tidak diperhitungkan pelekatan komponen-komponen sensor lainya seperti sensor jarak dan suhu. Dibawah ini adalah gambar implementasi akhir dari turret setelah dipasang pada robot.

(4)

Gambar 4.2 Implementasi Turret pada Robot

Gambar diatas menunjukan hasil akhir dari pembuatan mekanisme penggerak (turret) yang telah digabungkan dengan beberapa sensor dan aktuator. Dimensi akhir dari mekanisme penggerak adalah:

Panjang : 80 mm Lebar : 110 mm Tinggi : 140 mm

4.1.2 Implementasi Algoritma Gerak Turret

Berdasarkan spesifikasi sistem yang dirancang dibutuhkan suatu algoritma perangkat lunak untuk mengendalikan pergerakan turret yang dibuat. Spesifikasi sistem yang ingin diwujudkan adalah pergerakan yang efisien dan cepat untuk membantu kamera melakukan pengenalan objek baik dari segi warna dan bentuk. Berdasarkan analisis dan perancangan yang dilakukan dimiliki 2 (dua) macam algoritma pergerakan yang

(5)

diimplementasikan. Algoritma yang pergerakan turret yang diimplementasikan adalah:

• Algoritma object scanning • Algoritma object follower

Kedua algoritma tersebut akan diimplementasikan pada robot VAIRo untuk mendeteksi warna dan bentuk benda, kemudian diuji dan dipilih algoritma mana yang lebih baik digunakan pada robot VAIRo untuk menyelesaikan misi – misinya pada KRCI 2009 divisi expert single.

4.1.2.1 Algoritma Object Scanning

Konsep dari algoritma seperti yang telah dijelaskan pada bagian perancangan perangkat lunak adalah membagi gerak turret menjadi beberapa posisi pada arah vertikal maupun horisontal. Seperti yang telah diketahui bahwa CMUcam3 memiliki 1 port GPIO (General Purpose Input Output) yang memiliki 3 (tiga) buah mode kerja yaitu;

• Input • Output • Servo

Pada implementasi algoritma ini mode GPIO yang digunakan adalah mode servo. Selain itu perlu ditentukan berapa dan letak pin yang akan digunakan dengan mode servo.

Berdasarkan spesifikasi sistem yang dirancang turret diharapkan memiliki kemampuan gerak 2 (dua) dimensi yaitu ke arah horisontal dan vertikal, untuk itu digunakan 2 (dua) buah aktuator motor servo yang masing–masing akan dihubungkan pada pin 1 dan 2 port GPIO modul CMUcam3. Dibawah ini adalah tabel hubungan tipe motor servo yang digunakan, letak pin, dan arah pergerakan.

Tabel 4.1 Tabel Hubungan Servo Dengan CMUcam3 Servo GPIO CMUcam3 Pin Arah Gerakan

HS-322HD 1 Horisontal

(6)

Modul sensork kamera CMUcam3 menyediakan fungsi-fungsi penting untuk melakukan pengaturan GPIO, pada tugas akhir ini pengaturan port GPIO untuk pin 1 dan 2 menjadi mode servo adalah dengan menggunakan fungsi:

void cc3_gpio_set_mode (uint8_t pin, cc3_gpio_mode_t mode)

Dibawah ini pengaturan yang dilakukan pada pin 1 dan 2 pada algoritma object scanning.

cc3_gpio_set_mode (0, CC3_GPIO_MODE_SERVO); cc3_gpio_set_mode (1, CC3_GPIO_MODE_SERVO);

Setelah melakukan pengaturan mode dilanjutkan dengan memberikan nilai PWM yang tepat untuk melakukan pengaturan sudut motor servo. Fungsi yang digunakan untuk melakukan pengaturan nilai adalah:

bool cc3_gpio_set_servo_position (uint8_t pin, uint8_t position)

Parameter uint8_t position digunakan untuk menentukan posisi servo. Parameter ini akan memiliki jangkauan nilai dari 0 – 255 yang merepresentasikan sudut 0o – 180o. Pada algoritma ini fungsi ini digunakan untuk mengimplementasikan pergerakan turret.

Sebelum algoritma ini diimplementasikan terdapat beberapa parameter yang harus diatur yaitu:

• Sudut horisontal paling kiri • Sudut horisontal tengah • Sudut horisontal paling kanan • Sudut vertikal paling tinggi • Sudut vertikal tengah

• Sudut vertikal paling rendah

Pengujian dilakukan secara langsung dengan menguji nilai-nilai PWM terhadap sudut pergerakan kamera. Hasil yang didapatkan adalah:

• Sudut horisontal paling kiri = 250 • Sudut horisontal tengah = 120

(7)

• Sudut horisontal paling kanan = 5 • Sudut vertikal paling tinggi = 50 • Sudut vertikal tengah = 120 • Sudut vertikal paling rendah = 198

Berdasarkan perancangan yang dilakukan pergerakan motor servo arah horisontal dan vertikal dibagai menjadi banyak posisi yang digunakan dengan perhitungan sebagai berikut:

Sudut maksimum – Sudut minimum Jumlah posisi gerak

Dengan menggunakan rumus diatas perhitungan sudut servo yang digunakan adalah: • Arah Horisontal

Jumlah posisi gerak : 10

Sudut horisontal maksimum : 250 Sudut horisontal minimum : 5

Sudut pergerakan turret horisontal : 25o

• Arah Vertikal

Jumlah posisi gerak : 6

Sudut vertikal maksimum : 198 Sudut vertikal minimum : 50 Sudut pergerakan turret vertikal : 26o

Data-data diatas digunakan untuk menentukan pergerakan turret baik pada arah horisontal maupun vertikal. Di bawah ini adalah definisi parameter-parameter diatas pada implementasi algoritma ini.

#define SVAIRO_mid 120 #define SVAIRO_leftMAX 250 #define SVAIRO_rightMAX 5 #define SVAIRO_upMAX 50 #define SVAIRO_downMAX 198

Posisi tengah vertikal dan horisontal didefinisikan dengan nama yang sama karena memiliki nilai yang sama.

(8)

Implementasi dari algoritma scanning pada sensor kamera CMUcam3.

for (servo_posH = SVAIRO_rightMAX; servo_posH < SVAIRO_leftMAX; servo_posH+=35) { //search horizontal

cc3_gpio_set_servo_position (CAM_RL, servo_posH);

for (servo_posV = SVAIRO_upMAX; servo_posV < (SVAIRO_downMAX + 1); servo_posV+=37) { //search vertical

cc3_gpio_set_servo_position (CAM_UD, servo_posV);

printf ("servo position (H,V) = %d, %d\n",

cc3_gpio_get_servo_position (CAM_RL), cc3_gpio_get_servo_position (CAM_UD));

simple_track_color (&t_pkt);

printf ("num pix furniture= %d\n", t_pkt.num_pixels); printf ("density furniture= %d\n", t_pkt.int_density);

simple_track_color (&t_pkt2);

printf ("num pix doll= %d\n", t_pkt2.num_pixels); printf ("density doll= %d\n", t_pkt2.int_density);

cc3_timer_wait_ms (500);

Pada potongan program diatas sudut pergerakan turret dikonversikan menjadi nilai PWM dengan rumus:

Sudut pergerakan turret x nilai maksimum PWM Nilai sudut maksimum

Nilai maksimum turret : 255 Nilai sudut maksimum : 180

Pada potongan source code di atas dapat dilihat bahwa proses scanning akan dimulai dari kanan ke kiri arah horisontal dan disetiap sudut posisi horisontal turret proses scanning akan dimulai dari atas ke bawah. Disetiap posisi sudut sensor kamera akan melakukan pendeteksian warna.

4.1.2.2 Algoritma Object Follower

Konsep dari algoritma ini seperti yang telah diuraikan pada bagian perancangan perangkat lunak adalah untuk mendeteksi suatu benda yang memiliki warna tertentu. Pada algoritma ini turret akan bergerak untuk menyesuaikan titik pusat massa benda dengan titik tengah citra. Untuk itu data titik tengah dari citra harus dicari dan disimpan sebagi variable pembanding. Dibawah ini adalah potongan source code untuk mendapatkan titik tengah dari citra.

(9)

x_mid = cc3_g_pixbuf_frame.width / 2;

y_mid = cc3_g_pixbuf_frame.height / 2;

Setelah mendapatkan titik tengah citra, maka akan dideteksi apakah ada warna tertentu yang terdeteksi dan menghitung selisih titik pusat massa dengan titik tengah dari citra bila nilai selisih yang didapatkan besar maka sudut pergerakan turret diatur dengan nilai besar sedangkan bila selisih yang dihasilkan kecil maka nilai sudut yang diberikan kecil. Dibawah ini adalah potongan source code yang digunakan pada implementasi algoritma ini.

While(((t_pkt.centroid_x<(x_mid-5)) || (t_pkt.centroid_x>(x_mid+5))) &&

((t_pkt.centroid_y<(y_mid-5))||(t_pkt.centroid_y>(y_mid+5))))

Fungsi dari fungsi pengulangan ini adalah untuk melakukan pengecekan apakah titik pusat dari objek telah berada pada titik tengah citra. Dibawah ini adalah salah satu potongan source code yang mengatur sudut gerak turret, besar atau kecil, berdasarkan selisih dari titik pusat massa dengan titik tengah citra.

if (t_pkt.centroid_x > (x_mid + 20)) { printf ("turn camera right\n");

servo_current_pos = cc3_gpio_get_servo_position (CAM_RL);

if (servo_current_pos >= (SVAIRO_rightMAX + 10)) {

cc3_gpio_set_servo_position (CAM_RL, (servo_current_pos - 10));

} else

cc3_gpio_set_servo_position (CAM_RL, SVAIRO_rightMAX);

}

Bagian diatas digunakan untuk menggerakan servo ke arah kanan dengan sudut yang lebih besar. Besar sudut pergerakan kamera adalah 7 derajat.

else if (t_pkt.centroid_x > (x_mid + 5)) {

printf ("turn camera right with lowest speed\n");

servo_current_pos = cc3_gpio_get_servo_position (CAM_RL);

if (servo_current_pos >= (SVAIRO_rightMAX + 3)) {

cc3_gpio_set_servo_position (CAM_RL, (servo_current_pos - 3)); } else

cc3_gpio_set_servo_position (CAM_RL, SVAIRO_rightMAX);

}

Bagian potongan source code ini digunakan untuk menggerakan servo ke kanan dengan sudut yang lebih kecil. Besar sudut pergerakan kamera adalah 3.5 derajat.

(10)

4.1.3 Implementasi Algoritma Deteksi Warna

Algoritma deteksi warna merupakan fitur penting yang harus dimiliki sistem penglihatan berdasarkan spesifikasi dan analisis sistem yang dirancang. Algoritma ini akan diimplementasikan langsung pada sensor kamera CMUcam3. Citra yang digunakan pada sistem penglihatan robot VAIRo adalah citra berwarna 3 kanal (RGB). Untuk itu pada implementasi algoritma ini dibuat sebuah fungsi yang akan menangkap nilai pixel – pixel warna pada citra yang akan dideteksi, dan membandingkannya dengan spesifikasi warna tiap kanal yang telah dideskripsikan.

Robot VAIRo dirancang untuk menghindari furniture dan mengenali bayi, untuk itu warna yang digunakan disesuaikan dengan spesifikasi warna dari kedua benda tersebut. Menurut peraturan KRCI 2009 divisi expert single spesifikasi warna dari kedua benda tersebut adalah:

• Furniture Warna : Kuning Spesifikasi RGB : 255 255 0 • Bayi Warna : Biru Spesifikasi RGB : 0 0 255

Deteksi warna pada objek yang akan dilakukan harus mempertimbangkan lingkungan yang akan dihadapi. Robot dapat saja menghadapi lingkungan dengan sistem pencahayaan yang kurang baik sehingga nilai tiap kanal RGB yang digunakan dengan benda yang sama akan dibaca berbeda oleh sensor. Untuk itu pada implementasi algoritma deteksi objek ini pendeskripsian spesifikasi warna untuk tiap kanal diberi jangkauan nilai tertentu. Dibawah ini adalah pendeskripsian spesifikasi warna kuning untuk mendeteksi objek furniture.

t_pkt.lower_bound.channel[CC3_CHANNEL_RED] = 220; t_pkt.upper_bound.channel[CC3_CHANNEL_RED] = 255; t_pkt.lower_bound.channel[CC3_CHANNEL_GREEN] = 220; t_pkt.upper_bound.channel[CC3_CHANNEL_GREEN] = 255; t_pkt.lower_bound.channel[CC3_CHANNEL_BLUE] = 0; t_pkt.upper_bound.channel[CC3_CHANNEL_BLUE] = 20;

(11)

Besar jangkauan nilai yang dideskripsikan dapat disesuaikan dengan keadaan lingkunan, sehingga untuk memperoleh nilai yang tepat harus dilakukan pengujian deteksi warna langsung pada lingkungan yang akan dihadapi robot.

Fungsi untuk mendeteksi objek sendiri adalah:

void simple_track_color(cc3_track_pkt_t * t_pkt) {

cc3_image_t img;

img.channels = 3;

img.width = cc3_g_pixbuf_frame.width;

img.height = 1;//image will hold just 1 row for scanline processing img.pix = cc3_malloc_rows (1); if (img.pix == NULL) { return; } cc3_pixbuf_load (); if (cc3_track_color_scanline_start (t_pkt) != 0) { while (cc3_pixbuf_read_rows (img.pix, 1)) { cc3_track_color_scanline (&img, t_pkt); } } cc3_track_color_scanline_finish (t_pkt); free (img.pix); return; }

Pada fungsi deteksi warna ini terdapat beberapa parameter yang harus diatur terlebih dahulu seperti:

• Banyak kanal yang digunakan (img.channel)

Pada implementasi algoritma ini pada robot VAIRo ketiga kanal warna (RGB) akan digunakan seluruhnya.

• Lebar citra yang akan dideteksi (img.width)

Pada implementasi algoritma ini pada robot VAIRo lebar citra yang akan dideteksi adalah 176 pixel (lebar citra resolusi rendah)

• Panjang citra yang akan digunakan (img.height)

Pada implementasi algoritma ini pada robot VAIRo panjang citra yang akan dideteksi adalah 1 baris, yang berarti pendeteksian warna dilakukan perbaris. Hal ini dilakukan untuk mempercepat proses deteksi warna dilakukan dan akan

(12)

menghemat alokasi memori yang digunkan untuk menyimpa citra yang ditangkap.

Proses pendeteksian warna dimulai pada fungsi cc3_track_color_scanline ()

dieksekusi. Fungsi ini akan menelusuri nilai-nilai pixel tiap baris dan membandingkannya satu persatu dengan nilai spesifikasi warna yang didefinisikan di awal.

4.1.4 Implementasi Algoritma Deteksi Bentuk Dengan Jaringan Saraf Tiruan Metoda Back-propagation

Implementasi algoritma deteksi bentuk dengan jaringan saraf tiruan dimulai dengan mengambil input yang berasal dari nilai-nilai pixel penyusun citra dengan menggunakan fungsi:

void cc3_show_pix_ppm () { uint32_t size_x, size_y; uint8_t p;

cc3_pixbuf_load ();

uint8_t *row = cc3_malloc_rows (1);

size_x = cc3_g_pixbuf_frame.width; size_y = cc3_g_pixbuf_frame.height;

for (y=0; y < size_y; y++) { printf ("{");

cc3_pixbuf_read_rows (row, 1); for (x=0; x < size_x * 3U; x++) {

p = row[x]; printf ("%d, ", p); } printf ("},\n"); } free (row); }

pada fungsi diatas nilai pixel yang ditampilkan dalam format RGB, yang berarti 1 pixel akan diwakili oleh 3 buah kanal sehingga bila lebar citra mula-mula adalah 176 pixel maka setelah ditampilkan akan menjadi 528 pixel. Karena jumlah masukan bagi jaringan saraf tiruan sangat berpengaruh pada waktu pendeteksian bentuk maka perlu dilakukan pengurangan jumlah pixel.

(13)

Terdapat 2 (dua) buah solusi yang digunakan untuk mengurangi nilai jumlah pixel yang digunakan yaitu:

• Memperkecil resolusi citra yang digunakan

Resolusi awal citra yang digunakan adalah 176 x 143 pixel pada mode resolusi rendah. Proses memperkecil resolusi citra dilakukan dengan menggunakan fungsi:

bool cc3_pixbuf_frame_set_roi (int16_t x_0, int16_t y_0, int16_t x_1, int16_t y_1)

fungsi ini akan mengubah nilai titik awal dan akhir citra. Pada implementasi algoritma ini resolusi citra yang digunakan kurang dari 30 x 30 pixel. Untuk itu perlu dilakukan perhitungan untuk mendapatkan nilai x_0, y_0, x_1, dan y_1 yang tepat. Perhitungan untuk mendapatkan nilai-nilai parameter fungsi diatas dideskripisikan sebagai berikut.

x0 = cc3_g_pixbuf_frame.x0 + (cc3_g_pixbuf_frame.width * 3)/ 7; y0 = cc3_g_pixbuf_frame.y0 + (cc3_g_pixbuf_frame.height * 2)/ 5; x1 = cc3_g_pixbuf_frame.x1 - (cc3_g_pixbuf_frame.width * 3) /7; y1 = cc3_g_pixbuf_frame.y1 - (cc3_g_pixbuf_frame.height* 2) /5;

Penjelasan perhitungan fungsi ini adalah: o Reduksi lebar citra

Untuk melakukan reduksi pada citra sehingga didapatkan resolusi lebar citra kurang dari 30 pixel dilakukan dengan membagi lebar citra menjadi 7 bagian sehingga didapatkan lebar citra 25 pixel. Sedangkan citra yang diinginkan hanya yang terletak di tengah-tengah citra keseluruhan. Untuk itu akan diambil bagian citra yang ke-4 saja sedangkan bagian yang lainya akan dibuang. Maka nilai parameter yang diambil adalah:

- x_0 = nilai awal x_0 + ((nilai lebar keseluruhan citra /7)*3) - x_1 =nilai awal x_1 – ((nilai lebar keseluruhan citra /7)*3)

Ilustrasi mengenai reduksi lebar citra yang digunakan dapat dilihat pada gambar 4.1.

(14)

Gambar 4.3 Ilustrasi Reduksi Lebar Citra

o Reduksi panjang citra

Untuk melakukan reduksi pada citra sehingga didapatkan resolusi panjang citra kurang dari 30 pixel dilakukan dengna membagi panjang citra menjadi 5 bagian sehingga didapatkan panjang citra 29 pixel. Sedangkan citra yang diinginkan hanya terletak ditengah-tengah citra keseluruhan. Untuk itu akan diambil baigan citra ke-3 saja sedangkan bagian yang lainnya akan dibuang. Mak nilai parameter yang diambil adalah:

- y_0 = nilai awal y_0 + ((nilai panjang keseluruhan citra /5)*2) - y_1 =nilai awal y_1 – ((nilai panjang keseluruhan citra /5)*2)

Ilustrasi mengenai reduksi panjang citra yang digunakan dapat dilihat pada gambar 4.2.

(15)

• Mengubah citra warna menjadi grayscale

Citra awal yang digunakan adalah citra berwarna sehingga 1 (satu) pixel diwakili 3 (tiga) nilai kanal warna (RGB). Berdasarkan prinsip tersebut bila kita memilih untuk menggunakan resolusi 30 x 30 pixel maka saat menampilkan nilai pixel – pixel tersebut sebanyak 2700 pixel bukan 900. Untuk menanganinya maka dibutuhkan konversi citra menjadi hanya 1 (satu) pixel saja. Hal ini dilakukan dengan mengalikan nilai 3 (tiga) kanal tersebut dengan koefisien tertentu. Dibawah ini adalah cuplikan konversi yang dilakukan untuk mengubah citra warna menjadi grayscale.

float red, green, blue; … … … red = 0.3; green = 0.59; blue = 0.11; … … … if ((x % 3) == 0) {

gray [k]=(int) ((red*(float)row[x-3]) + (green*(float)row[x-2]) + (blue*(float)row[x-1]));

printf ("%d ", gray[k]); k++;

}

Setelah mendapatkan nilai dari pixel citra maka untuk memulai melakukan pendeteksian dengan menggunakan jaringan saraf tiruan dilakukan dengan mendeskripisikan parameter-parameter pada suatu layer. Dibawah ini adalah struktur data yang digunakan untuk mendekripsikan suatu layer pada jaringan saraf tiruan typedef struct { int num_input; int num_neuron; double* in_layer; double* weight; double* y; double* grad; } layer_struct;

(16)

Nilai-nilai yang perlu diatur dan tidak akan berubah selama aplikasi berjalan didefinisikan sebagai berikut.

#define SIZE_HIDDEN 6 //jumlah neuron di hidden layer

#define SIZE_INPUT 725 //jumlah input (banyak pixel)

#define SIZE_OUTPUT 2 //jumlah output

Fungsi aktifasi yang digunakan adalah fungsi sigmoid yang dideskripsikan sebagai berikut.

double sigmoid(double x) {

return (1.0/(1.0+ exp(-x))); // the sigmoid function

}

4.1.5 Implementasi Algoritma Pengambilan Data Bagi Pelatihan Jaringan Saraf Tiruan

Algoritma pengambilan data bagi pelatihan jaringan saraf tiruan merupakan modifikasi dari algoritma deteksi bentuk dengan jaringan saraf tiruan. Perbedaan yang ditambahkan adalah pada fungsi ini citra yang didapatkan robot akan disimpan pada memori, dan akan digunakan bagi pelatihan jaringan saraf tiruan yang dilakukan di komputer PC. Data telah disimpan pada memori memiliki jangkauan nilai dari 0 sampai dengan 255, sedangkan jangkauan nilai yang digunakan dari 0 sampai dengan 1. Oleh karena itu, perlu dilakukan konversi dengan membagi nilai tiap pixel dengan 255.

Proses pelatihan dilakukan dengan melaukan definisi parameter-parameter pada jaringan saraf tiruan yang akan digunakan, seperti di bawah ini.

#define SIZE_HIDDEN 7 //jumlah neuron di hidden layer

#define SIZE_INPUT 725 //jumlah input (banyak pixel)

#define SIZE_OUTPUT 2 //jumlah output

#define MAX_EPOCHS 120000//jumlah max epoch dilakukan

#define TOLERANCE 0.01 //nilai error minimum

#define LEARNING_RATE 0.7

(17)

Selanjutnya nilai – nilai pixel dengan tipe integer menjadi bilangan desimal dengan tipe float. Hasil konversi ini akan disimpan pada menjadi sebuah file untuk keperluan debugging. Setelah konversi dilakukan maka akan dilanjutkan dengan memasukan nilai – nilai tersebut pada jaringan saraf tiruan.

Kalkulasi akan dilakukan oleh jaringan saraf tiruan sampai mendapatkan nilai keluaran yang sesuai dengan toleransi kesalahan paling kecil yang telah dideskripsikan pada parameter TOLERANCE. Proses perhitungan pembobotan dilakukan secara terus menerus sampai MAX_EPOCH tercapai bila keluaran yang didapatkan belum sesuai dengan yang diharapkan.

Penentuan jumlah neuron pada hidden layer ditentukan dengan menggunakan rumus ln N, dengan N adalah jumlah neuron pada input layer. Pada algoritma ini jumlah input yang digunakan adalah 29 x 25 pixel atau 725 pixel. Sehingga neuron pada hidden layer yang digunakan adalah 7.

Bobot-bobot hasil kalkulasi dari jaringan saraf tiruan akan disimpan pada sebuah file, sehingga akan mempermudah proses selanjutnya bila dibutuhkan. Hasil bobot tersebut akan digunakan untuk algoritma deteksi bentuk pada robot VAIRo. Dibawah ini adalah potongan source code yang digunakan untuk melakukan pelatihan jaringan saraf tiruan dengan metoda back-propagation.

while(error>tolerance && k<max_epochs) { error = 0; for(j=0;j<TRAINING_SET_SIZE;j++) { InputToNetwork(&net,&X[j][0]); ActivateNetwork(&net); error += TrainNetwork(&net,&Y[j][0]);}

error *= 0.5; //half of all the training set error k++;}

(18)

4.2 Pengujian

4.2.1 Deskripsi Tugas

Pada bagian ini akan dijelaskan mengenai tugas atau misi yang harus diselesaikan oleh robot pada KRCI 2009 divisi expert single. Deskripsi tugas atau misi yang dikerjakan oleh robot dibagi menjadi 2 bagian besar yaitu:

• Deskripsi tugas robot umum • Deskripsi tugas robot khusus

Deskripisi tugas robot umum akan menjelaskan mengenai misi – misi yang harus dikerjakan robot untuk mendapatkan nilai pada KRCI 2009 divisi expert single. deskripsi tugas robot khusu akan menjelaskan mengenai misi – misi yang akan dilakukan sensor kamera untuk dapat mengenali objek-objek yang terdapat pada KRCI 2009 divisi expert single. pembahasan kedua tugas tersebut akan dilakukan secara terpisah.

4.2.1.1 Deskripsi Tugas Robot Umum

Pada tugas akhir ini, dibuat sebuah autonomous mobile robot berbentuk tank dengan nama VAIRo. Robot ini diikutsertakan pada Kontes Robot Cerdas Indonesia (KRCI) 2009 divisi expert single. Divisi ini merupakan divisi tersulit karena medan yang akan dihadapi robot serta posisi awal robot acak. Pada divisi ini terdapat beberapa tugas yang harus dikerjakan oleh robot yaitu:

• Menaiki tangga (tanjakan) • Menuruni tangga (tanjakan) • Menemukan bayi

• Mengangkat bayi dan membawanya ke home • Mematikan 1 (satu) lilin di lapangan atas • Mematikan 2 (dua) lilin di lapangan bawah

Selain tugas-tugas tersebut, terdapat beberapa ketentuan yang harus dipenuhi yaitu: • Robot diaktifkan dengan modul aktifasi suara

(19)

• Jarak yang diperbolehkan untuk mematikan lilin < 20 cm

Selain itu terdapat beberapa hambatan-hambatan yang dipasang pada lapangan, diantaranya adalah: • Uneven floor • Sound damper • Furniture • Wallpaper • Cermin

Lapangan yang digunakan pada divisi ini terdiri dari 2 bagian yaitu lapangan atas tempat bayi dan 1 (satu) lilin berada, dan lapangan bawah tempat 2 (dua) lilin berada. Masing-masing lapangan memiliki konfigurasi yang yang berbeda seperti pada lapangan atas terdiri dari 12 konfigurasi dan 24 untuk lapangan bawah.

Waktu yang disediakan bagi robot untuk dapat menyelesaikan seluruh tugas adalah 6 menit, maka dibutuhkan suatu strategi yang tepat untuk menyelesaikan tugas tersebut. Startegi yang digunakan robot VAIRo adalah:

• Menemukan tangga dan menuruninya • Menemukan bayi dan mengibarkan bendera • Mematikan lilin di lapangan atas

Tugas-tugas diatas hanya sebagian dari misi robot keseluruhan. Pemilihan untuk tidak mengerjakan keseluruhan tugas karena waktu yang tersedia terlalu singkat dan tugas – tugas tersebut memiliki nilai yang besar.

4.2.1.2 Deskripis Tugas Robot Khusus

Sistem penglihatan yang diimplementasikan pada robot VAIRo ini untuk membantu robot untuk menyelesaikan tugas-tugasnya. Dipilih untuk mengimplementasikan algoritma pendeteksian warna objek kerana terdapat objek-objek yang digunakan dan memiliki spesifikasi warna tertentu. Diantaranya adalah:

• Tangga  Warna: Hijau (R = 0, G = 128, B = 0) • Furniture  Warna : Kuning (R = 255, G = 255, B = 0)

(20)

• Boneka  Warna : Biru (R = 0, G = 0, B = 255) • Karpet  Warna : Biru (R = 0, G = 0, B = 128) • Lantai  Warna : Hitam (R = 0, G = 0, B = 0)

Selain itu terdapat aturan – aturan seperti robot tidak diperbolehkan untuk menambrak furniture, robot boleh mengibarkan bendera dalam jarak kurang dari 20 cm dari boneka, dan robot tidak boleh menabrak dinding tangga saat menaiki maupun menuruninnya.

Berdasarkan hal-hal tersebut maka dalam tugas akhir ini diimplementasikan beberapa algoritma dalam hal penglihatan robot untuk membantu robot untuk menyelesaikan tugas-tugasnya. Pada tugas akhir ini diimplementasika 2 (dua) algoritma yaitu:

• Algoritma Deteksi Warna • Algoritma Deteksi Bentuk

Algoritma deteksi warna digunakan untuk mendeteksi objek-objek dengan dengan speseifikasi tertentu. Pada tugas akhir ini algoritma ini digunakan untuk membedakan warna furniture dengan warna boneka.

Algoritma deteksi bentuk digunakan untuk mendeteksi objek-objek dengan bentuk dasar tertentu. Pada tugas akhir ini algoritma ini digunakan untuk membedakan bentuk boneka dengan warna wallpaper pada dinding lapangan.

4.2.2 Pengujian Pergerakan Turret

Pada bagian perancangan terdapat 2 (dua) algoritma untuk mengatur pergerakan turret pada robot. Kedua algoritma tersebut memiliki keunggulan dan kelemahan masing-masing, namun pada bagian ini akan dilakukan pengujian pada kedua algoritma tersebut untuk menentukan algoritma yang tepat untuk digunakan pada KRCI 2009 divisi expert single. Pengujian dilakukan dengan menggunakan CMUcam3 yang telah ditanamkan program deteksi benda berdasarkan spesifikasi warna tertentu. Objek yang dideteksi adalah:

(21)

• Furniture dengan spesifikasi warna: o Kanal Merah (R) = 255 o Kanal Hijau (G) = 255 o Kanal Biru (B) = 0

• Boneka bayi dengan spesifikasi warna: o Kanal Merah (R) = 0

o Kanal Hijau (G) = 0 o Kanal Biru (B) = 255

Kedua objek itu akan diletakan pada suatu posisi tertentu dan kedua algoritma tersebut diuji dengan beberapa parameter, diantaranya kecepatan dan efisiensi kerja dari masing-masing algoritma.

Pada bagian analisis dikemukakan bahwa pemilihan algoritma disesuaikan dengan kebutuhan robot untuk dapat dengan cepat menyelesaikan misinya. Sehingga faktor kecepatan harus benar-benar diperhitungkan. Selain itu perlu diperhatikan efisiensi kerja turret agar pengenalan objek yang dilakukan menghasilkan keluaran yang tepat sehingga robot dapat memutuskan dengan tepat apa yang akan dilakukannya pada suatu lingkungan tertentu yang dalam hal ini adalah labirin-labirin.

Seperti yang telah dijelaskan sebelumnya bahwa terdapat 2 (dua) rancangan algoritma pergerakan turret dan keduanya telah diimplementasikan untuk diuji pada robot, yaitu:

• Algoritma object scanning • Algorimta object follower

Algoritma yang pertama adalah algoritma object scanning. Algoritma ini bekerja dengan melakukan deteksi secara aktif pada suatu posisi-posisi tertentu secara berulang-ulang. Jangkauan deteksi objek berdasarkan warna adalah pada jarak 20 cm sampai 30 cm. Kecepatan deteksi objek dengan spesifikasi warna tertentu cukup tinggi, namun hal ini mengakibatkan selisih jarak objek yang tedeteksi dan jarak objek sebenarnya relatif terhadap titik tengah robot besar. Error posisi ini menyebabkan proses deteksi benda dengan jaringan saraf tiruan menghasilkan

(22)

persentasi keluaran yang kurang baik. Selain itu algoritma ini akan memerlukan daya yang besar karena sensor kamera harus melakukan pendeteksian warna di 60 posisi untuk tiap 1 (satu) fase proses scanning.

Algoritma yang kedua adalah algoritma object follower. Algoritma ini bekerja dengan melakukan pendeteksian hanya pada objek-objek yang berada didepan sensor sampai objek dengan spesifikasi warna tertentu terdeteksi. Setelah objek dengan warna tertentu terdeteksi maka turret akan bergerak menyesuaika sudut kamera sampai titik berat objek berada tepat ditengah frame. Oleh karena itu, error yang dihasilkan dari selisih posisi objek sesungguhanya dengan objek yang terdeteksi cenderung kecil dibandingkan dengan algoritma object scanning. Error yang kecil mengakibatkan proses deteksi benda dengan jaringan saraf tiruan menghasilkan persentasi keluaran yang lebih baik. Jarak deteksi warna objek pada algoritma ini cenderung lebih kecil yaitu kurang dari 20 cm dengan kualitas penerangan tertentu. Algoritma ini memerlukan daya lebih sedikit dibandingkan dengan algoritma object scanning karena kamera akan bergerak hanya setelah terdeteksi objek dengan spesifikiasi warna tertentu.

Berdasarkan penjelasan mengenai masing-masing kelebihan dan kekurangan algoritma tersebut maka dibuat tabel perbandingan seperti di bawah ini.

Tabel 4.2 Perbandingan Algortima Object Scanning dan Object Follower Algoritma Object Scanning Algoritma Object Follower Jangkauan deteksi luas (20 – 30 cm) Jangkauan deteksi terbatas (< 20 cm) Sudut pergerakan turret terbatas Sudut pergerakan turret luas

Sistem aktif bergerak sebelum menemukan objek

Sistem pasif (tidak bergerak) sebelum menemukan objek

Error posisi objek yang terdeteksi cenderung lebih besar

Error posisi objek yang terdeteksi cenderung lebih kecil

Kecepatan penentuan posisi objek lebih tinggi

Kecepatan penentuan posisi objek lebih rendah

(23)

Kecepatan deteksi bentuk objek lebih rendah

Kecepatan deteksi bentuk objek lebih tinggi

Daya yang dibutuhkan sistem lebih besar Daya yang dibutuhkan sistem lebih sedikit

Berdasarkan spesifikasi sistem yang dirancang diharapkan algoritma pergerak turret yang dilakukan memungkinkan robot untuk mampu mengamati objek dalam arah vertikal dan horisontal, untuk itu algoritma object scanning yang paling tepat untuk memenuhi spesifikasi tersebut karena proses deteksi benda dilakukan pada 60 titik posisi. Selain itu pada spesifikasi sistem disebutkan bahwa robot harus memiliki jarak pandah maksimum dan hal ini di penuhi oleh algoritma object scanning memiliki jarak pandang lebih maksimum dibandingkan dengan jarak pandang robot dengan menggunakan algoritma object follower. Untuk algoritma object scanning dipilih untuk digunakan pada implementasi robot VAIRo pada KRCI divisi expert single.

4.2.3 Pengujian Deteksi Warna Objek

Berdasarkan spesifikasi sistem yang dirancang robot yang dirancang dan diimplementasikan harus dapat mengenali objek berdasarkan spesifikasi warna tertentu, untuk itu algortima deteksi warna objek yang telah dirancang dan diimplementasikan perlu diuji apakah telah memenuhi spesifikasi sistem tersebut. Algoritma pendeteksian warna yang diujikan diimplementasikan pada sensor kamera CMUcam3. Pengujian dilakukan dengan mendeteksi objek-objek dengan spesifikasi warna tertentu. Pada pengujian yang dilakukan akan ditentukan jangkauan warna dari masing-masing objek. Dengan mengubah nilai parameter spesifikasi warna yang digunakan, dan dihasilkan data sebagai berikut:

 Furniture : t_pkt.lower_bound.channel[CC3_CHANNEL_RED] = 220; t_pkt.upper_bound.channel[CC3_CHANNEL_RED] = 255; t_pkt.lower_bound.channel[CC3_CHANNEL_GREEN] = 220; t_pkt.upper_bound.channel[CC3_CHANNEL_GREEN] = 255; t_pkt.lower_bound.channel[CC3_CHANNEL_BLUE] = 0; t_pkt.upper_bound.channel[CC3_CHANNEL_BLUE] = 20;

(24)

 Boneka Bayi : t_pkt.lower_bound.channel[CC3_CHANNEL_RED] = 0; t_pkt.upper_bound.channel[CC3_CHANNEL_RED] = 30; t_pkt.lower_bound.channel[CC3_CHANNEL_GREEN] = 0; t_pkt.upper_bound.channel[CC3_CHANNEL_GREEN] = 30; t_pkt.lower_bound.channel[CC3_CHANNEL_BLUE] = 220; t_pkt.upper_bound.channel[CC3_CHANNEL_BLUE] = 255;

Pada pengujian ini diperlukan tambahan pencahayan pada sensor kamera CMUcam3. Tambahan pencahayaa dilakukan dengan menambahkan suatu modul yang terdiri dari beberapa LED bercahaya putih dipasang disekeliling sensor kamera. Dengan penambahan modul LED ini jarak deteksi warna objek dapat ditingkatkan menjadi 30 – 35 cm.

Selain itu pada pengujian ini ditentukan nilai batas jumlah dan density pixel ditentukan. Penentuan besar nilai yang digunakan pada kedua paramter tersebut akan mempengaruhi jarak deteksi sensor kamera CMUcam3 terhadap warna objek tersebut. Pada algoritma deteksi warna yang diimplementasikan ini besar kedua parameter adalah:

• Jumlah pixel • Density pixel

Penentuan kedua nilai ini juga mempengaruhi jangkauan jarak deteksi sensor dengan objek yang dideteksi. Makin besar nilai yang digunakan sebagai nilai batas parameter digunakan makin dekat jarak deteksi yang didapatkan. Dibawah ini adalah tabel hubungan nilai parameter jumlah dan density pixel dengan jarak deteksi objek.

Tabel 4.3 Tabel Perbandingan Parameter Jumlah dan Density Pixel dengan Jarak Deteksi Objek

Jumlah Pixel Density Pixel Jarak Maksimum Deteksi Objek

> 1 > 10 43 cm

> 5 > 50 40 cm

> 5 > 100 37 cm

> 7 > 100 36 cm

(25)

Berdasarkan data yang dihasilkan pada tabel di atas digunakan nilai jumlah dan density pixel yang digunakan adalah 10 dan 100. Nilai parameter jumlah dan density pixel yang terlalu rendah menyebabkan kesalahan pendeteksian objek menjadi cukup besar. Selain itu dicari hubungan kecepatan deteksi objek dengan jarak dan posisi objek yang didapatkan adalah sebagai berikut.

Tabel 4.4 Tabel Hubungan Jarak dengan Waktu Deteksi Jarak Objek (cm) Waktu Deteksi (s)

10 3.5 15 3.6 20 5 25 5.3 30 6 35 7

Berdasarkan data-data pengujian di atas didapatkan hubungan antara jarak dan kecepatan deteksi, bahwa makin jauh jarak antaran objek dan sensor kamera CMUcam3 mempengaruhi waktu kecepatan deteksi.

Berdasarkan data-data pengujian yang telah dilakukan di atas algortima deteksi warna yang diimplementasikan telah memenuhi spesifikasi sistem yang dirancang. Algoritma ini mampu mengenali suatu benda dengan spesifikasi warna tertentu dari jarak maksimum 35 cm dengan waktu deteksi selama 7 detik.

4.2.4 Pengujian Deteksi Bentuk Objek

Spesifikasi sistem yang dirancang harus mampu mengenali bentuk-bentuk dasar objek. Implementasi algoritma deteksi bentuk dilakukan dengan menggunakan jaringan saraf tiruan metoda back-propagation. Algoritma pengenalan bentuk dengan jaring saraf tiruan dilakukan dengan melakukan pelatihan sampai mendapatkan suatu

(26)

Dibawah ini adalah contoh citra yang digunakan sebagai masukan jaringa saraf tiruan.

Gambar 4.5 Citra Kepala Boneka Berwarna

Citra di atas merupakan contoh citra boneka yang digunakan pada KRCI 2009 divisi expert single. Citra di atas merupakan citra awal berwarna RGB untuk itu perlu dilakukan pemrosesan untuk mengubah citra menjadi grayscale. Dibawah ini adalah contoh citra grayscale hasil proses pengubahan yang dilakukan.

Gambar 4.6 Citra Kepala Boneka Grayscale

Nilai pixel-pixel citra grayscale tersebut akan diubah menjadi nilai dengan jangkauan 0 sampai 1, yang selanjutnya akan digunakan sebagai masukan bagi jaringan saraf tiruan.

Pelatihan yang dilakukan dengan menggunakan jaringan saraf tiruan metoda back-propagation didapatkan data pelatihan sebagai berikut.

(27)

Tabel 4.5 Tabel Hubungan Banyak Data dengan Persentase Keberhasilan Pelatihan Banyak Data Persentase Keberhasilan

Pelatihan (%) 5 30 7 39 10 42 12 49 15 50 18 53 20 56 22 57 30 65 32 66 35 69 38 72

Berdasarkan data diatas jumlah input yang yang diberikan mempengaruhi tingkat keberhasilan pelatihan yang dilakukan dengan metoda back-propagation. Persentase Keberhasilan dihitung dari selisih persentase keberhasilan mutlak yang didapatkan dengan persentase error yang didapatkan. Error yang dihasilkan dihitung dari rata-rata error pada tiap neuron (selisih keluaran yang diharapkan dengan keluaran yang didapatkan).

Tabel 4.6 Tabel Hubungan Data dengan Waktu Pelatihan Banyak Data Waktu Pelatihan (detik)

5 691 7 695 10 695 12 693 15 707 18 700 20 700

(28)

22 1038

30 1065

32 1066

35 1087

38 1095

Berdasarkan tabel di atas didapatkan hubungan banyak data dengan waktu pelatihan yang dilakukan. Makin banyak data yang diberikan waktu yang dibutuhkan untuk melakukan pelatihan makin lama. Hal ini diakibatkan makin banyak data yang dioleh oleh jaringan saraf tiruan, makin kompleks perhitungan yang dilakukan, karena nilai bobot-bobot yang dihasilkan makin akurat.

Setelah dilakuakan pelatihan maka bobot-bobot yang dihasilkan oleh jaringan saraf tiruan ditanamkan pada robot dan diujikan pada pendeteksian benda yang dilakukan. Data-data yang diperoleh adalah sebagai berikut.

Tabel 4.6 Tabel Hubungan Waktu Eksekusi dan Keberhasilan Jumlah Data

Pelatihan

Waktu Eksekusi Pengenalan Bentuk (detik) Persentase Keberhasilan Pengenalan Bentuk (%) 5 6 30 7 7 30 10 7 35 12 10 35 15 10 35 18 10 40 20 12 45 22 11 45 30 12 55 32 13 55 35 13 60 38 12 65

(29)

Berdasarkan data-data diatas didapatkan bahwa waktu eksekusi yang diperlukan robot untuk mengolah 1 masukan citra menggunakan jaringan saraf tiruan relatif sama untuk jumlah data pelatihan yang berbeda. Hal ini diakibatkan karena robot hanya mengeksekusi nilai bobot-bobot yang telah dideskripsikan saja tanpa melakukan tambahan pelatihan secara on-line. Sedangkan persentase keberhasilan robot untuk dapat mengenali bentuk objek terlihat makin tinggi seiring dengan banyaknya input yang digunakan pada pelatihan.

Berdasarkan data-data pengujian algoritma pengenalan bentuk objek didapatkan bahwa pengenalan bentuk dengan jaringan saraf tiruan telah berhasil dilakukan dengan tingkat keberhasilan pengenalan bentuk 65%. Hal tersebut telah memenuhi spesifikasi sistem yang dirancang.

Gambar

Gambar 4.1 Rancangan Robot VAIRo
Gambar  rancangan  turret  dengan  mekanisme  gerak  2  (dua)  arah  dapat  dilihat  pada  bagian  perancangan
Gambar 4.2 Implementasi Turret pada Robot
Tabel 4.1 Tabel Hubungan Servo Dengan CMUcam3
+7

Referensi

Dokumen terkait

Hasil Penelitian menunjukkan beberapa dosis kompos kulit bawang merah tidak berpengaruh nyata bagi pertumbuhan tinggi tanaman terung, tinggi tanaman selada dan

Konversi minyak jelantah sawit menjadi bahan bakar setara diesel melalui reaksi dekarboksilasi dengan pretreatment saponifikasi menggunakan Kalsium Hidroksida telah

(antara lain: Perg. Tinggi juga membantu yang lain) PEMERINTAH DUNIA USAHA/ SWASTA MASYARAKAT PERGURUAN TINGGI JOGJA CYBER

memberikan hasil maksimal.Pada proses dilasi bentuk strel octagon memberi kan hasil terbaik namun ukuran strel tidak bisa ditentukan.Dua tipe ciri yang digunakan sangat

Dari pemodelan ini, juga dapat disimpulkan bahwa densitas elektron pada kesetimbangan termodinamik untuk plasma hidrogen termal menurun seiring meningkatnya waktu

Penerbit Yudhistira cabang Sumbar”, dan Rosmadia (2009) dengan judul “Pengaruh Pelatihan, Pengembangan dan Prestasi Kerja Terhadap Pengembangan Karir Pegawai Pada

Tujuan penelitian ini untuk mengukur persepsi dan sikap apoteker di wilayah Banyumas dalam penggunaan media sosial sebagai media promosi kesehatan masyarakat.. Jenis

Aplikasi Pembelian ini baru akan diproses setelah diterimanya Formulir Pembelian Unit Penyertaan dan dana pembelian telah diterima di rekening Reksa Dana secara lengkap berikut