TUGAS AKHIR
RANCANG BANGUN ROBOT PERMAINAN CATUR BERBASIS KAMERA Oleh : Ian Agung Prakoso 2204100060 Dosen Pembimbing : Ir. Djoko Purwanto, M.Eng., Ph.D. Bidang Studi Elektronika | Jurusan Teknik Elektro | FTI – ITS | Surabaya 2010
Outline Latar Belakang Tujuan Perumusan Masalah Perencanaan dan Pembuatan Alat Pengujian software dan hardware
Latar Belakang Salah satu konstruksi awal robot permainan catur adalah Turk yang dibuat pada tahun 1976 oleh Wolfgang Von Kompelen yang sebenarnya digerakkan oleh manusia di dalam robot tersebut. Salah satu sistem robot permainan catur adalah chesster[1]
[1].Meppelink, David J. dan Martin, Fred., 2003. A Tangible Interface to Computerized Chess. University of Massachusetts Lowell.
Sistem Permainan Catur yang menjadi latar belakang Tugas Akhir
Tujuan
Membuat robot manipulator untuk menggerakkan buah catur Membuat sistem image processing untuk mengetahui keberadaan buah catur pada papan catur yang sebenarnya.
Perumusan Masalah
Pendeteksian posisi dari papan catur melalui sensor visual. Pengubahan sebuah gerakan buah catur yang kita inginkan menjadi serangkaian urutan perintah dan data untuk menggerakkan lengan robot. Pendeteksian keberadaan dan warna buah catur pada kotak hitam atau putih yang kita inginkan. Kamera sebagai sensor visual yang digunakan sebanyak 1 buah dan terletak statis di atas papan catur. Lengan robot yang digunakan bertipe 3 DOF robot. Papan catur yang digunakan berukuran 50x50 cm2.
Perencanaan dan Pembuatan Alat
Diagram Blok Sistem
Perancangan Perangkat Keras
Sistem Mekanik Sistem Elektrik
Perancangan Perangkat Keras Sistem Mekanik Konfigurasi robot yang digunakan adalah konfigurasi SCARA 3 DOF (Degree of Freedom). Open loop system untuk sistem kontrol geraknya. Kemudian digunakan motor stepper sebagai penggerak. Terdapat sensor limit switch sebagai pembatas gerak robot namun bukan sebagai feedback sistem secara keseluruhan.
Perancangan Perangkat Keras Mekanik Robot Permainan Catur Berbasis Kamera Sistem mekanik robot manipulator
Sistem mekanik Gripper
Posisi webcam
Perancangan Perangkat Keras Sistem Elektrik Rangkaian sistem minimum mikrokontroler ATMega 32 sebagai penyimpan program kontroler. Rangkaian driver motor stepper bertipe bipolar. Rangkaian driver solenoid sebagai penggerak gripper Rangkaian power supply untuk menyuplai tegangan motor stepper dan solenoide Rangkaian Limit Switch untuk mereset dan inisialisasi robot . Jalur komunikasi serial standar RS232.
Perancangan Perangkat Keras Rangkaian Sistem Minimum Mikrokontroler ATMega 32 Mikrokontroler ATMega 32 sebagai rangkaian penerjemah data serial dari PC menjadi firing sequence untuk mengontrol motor Stepper dan mengontrol ON/OFF solenoide
Perancangan Perangkat Keras Jalur Komunikasi Serial RS 232
Komunikasi serial RS-232 antara uc dengan PC menggunakan IC max232
Perancangan Perangkat Keras Rangkaian Driver Motor Stepper
Rangkaian Driver Motor Stepper tipe Bipolar Menggunakan rangkaian H-Bridge Motor Stepper Universal difungsikan sebagai tipe bipolar
Perancangan Perangkat Keras Rangkaian Driver Solenoide
Rangkaian Driver Solenoide menggunakan Transistor Switching
Rangkaian Power Supply untuk driver solenoid
Perancangan Perangkat Lunak
Program pada PC (MS. Visual C++ 2008 & Open CV) Program Mikrokontroler (Code Vision AVR)
Diagram Alir Program Pada Komputer
Perancangan Perangkat Lunak Program pada PC Akuisisi Citra oleh Web Camera * Inisialisasi chessboard * Deteksi buah catur * Path Planner * Inverse Kinematik ** *Blok Computer Vision **Robot Interface
Perancangan Perangkat Lunak Akuisisi Citra oleh Web Camera Program akan mengakuisisi citra tersebut dengan skala RGB dengan nama ”frame” kemudian dilakukan proses Perspective Transform pada Open CV untuk mendapatkan citra baru bernama ”dst”. void cvWarpPerspective( const CvArr* src, CvArr* dst, const CvMat* map_matrix, int flags = CV_INTER_LINEAR + CV_WARP_FILL_OUTLIERS, CvScalar fillval = cvScalarAll(0));
(a) Image sebelum proses Perspective Transform.
(b) Image setelah proses Prespective Transform.
Perancangan Perangkat Lunak Inisialisasi chessboard Inisialisasi chessboard diperlukan untuk mendapatkan koordinat titik tengah dari tiap kotak hitam-putih dari papan catur. int cvFindChessboardCorners( const void* image, CvSize pattern_size, CvPoint2D32f* corners, int* corner_count = NULL, int flags = CV_CALIB_CB_ADAPTIVE_THRESH ); Koordinat Pixel
Setiap corner disini didefinisikan sebagai titik tengah dalam setiap 4 kotak dalam chessboard void cvFindCornerSubPix( const CvArr* image, CvPoint2D32f* corners, int count, CvSize win, CvSize zero_zone, CvTermCriteria criteria);
Sebuah corner
Perancangan Perangkat Lunak
Algoritma deteksi buah catur digunakan untuk menentukan kondisi suatu petak apakah kosong ataukah terisi buah catur hitam ataukah terisi buah catur putih.
Algoritma deteksi buah catur dibuat menggunakan prinsip filter warna yang diterapkan pada citra berskala RGB yang telah diubah ke dalam skala HSV oleh Open CV.
Filter warna menggunakan proses thresholding nilai Hue, Saturation, Value setiap pixel pada ROI (Region of Interest) citra berskala HSV.
Kemudian dilakukan penghitungan jumlah pixel warna merah dan warna biru melalui nilai counter
Deteksi buah catur
Perancangan Perangkat Lunak Path Planner
Pola pergerakan buah catur dengan metode Continuous Path sesuai dengan hasil path yang dihasilkan dari algoritma Path Planner.
Pergerakan robot harus diinisialisasi pada awalnya agar robot manipulator mulai bergerak pada posisi awal yang telah ditentukan. Inisialisasi menggunakan fungsi dari limit switch.
Pada Tugas akhir ini setiap robot manipulator selesai melakukan fungsi place maka robot akan me-reset posisinya sendiri kembali ke posisi awal yang telah ditentukan. Kemampuan repeatibility robot ditentukan berdasarkan kemampuan robot untuk kembali mendekati posisi awal yang telah ditentukan.
Perancangan Perangkat Lunak Inverse Kinematik α
θ2
β
θ1
Inverse Kinematic adalah analisa kinematik untuk mendapatkan besar sudut dari masing – masing joint jika kita mempunyai data koordinat posisi (x,y,z). P(x,y) dimana, x = l1 cosθ1 + l 2 cos(θ1 + θ 2 ) y = l1 sin θ1 + l 2 sin (θ1 + θ 2 )
x 2 + y 2 − l12 − l 22 θ 2 = cos 2l1l 2 −1
θ 1 = tan −1
y (l1 + l 2 cos θ 2 ) − x.l 2 sin θ 2 x(l1 + l 2 cos θ 2 ) + yl 2 sin θ 2
Perancangan Perangkat Lunak
Program Mikrokontroler Fungsi Konversi_data ()
Fungsi Konversi_data() merubah paket data serial yang telah dirubah ke array karakter2[k] menjadi array karakter 1[i][j]. Karakter1[i][0] merupakan bagian array yang menentukan apakah gerakan robot merupakan gerak motor stepper atau solenoid. Karakter1[i][1] merupakan bagian array yang menentukan jumlah delay ketika motor stepper bergerak. Karakter1[i][2] merupakan bagian array yang menentukan arah gerak motor stepper dan solenoid. Karakter1[i][3] merupakan bagian array yang menentukan jumlah counter (firing sequence) pada motor stepper.
Fungsi Run_Motor()
Fungsi Run_motor() merupakan fungsi untuk mengirimkan firing sequence yang berupa pulsa dari mikrokontroler ke driver motor stepper dan driver solenoid
Pengujian Alat
Pengujian Alat
Penghitungan Resolusi Gerak Robot Pengujian Perangkat Keras Pengujian Perangkat Lunak Pengujian Gabungan
Penghitungan Resolusi Gerak Robot (1) Penghitungan Resolusi Gerak Robot untuk Gerakan Translasi pada DOF-1
Penghitungan pertama untuk gerakan translasi naik dengan memberikan setiap kenaikannya 2000 step dengan delay per-step sebesar 3 ms sehingga persamaan garis lurusnya untuk gerak translasi naik adalah y=0.016+0.000248x Penghitungan kedua untuk gerakan translasi turun dengan memberikan setiap penurunannya 2000 step dengan delay per-step sebesar 3 ms dan persamaan garis lurusnya untuk gerak translasi turun adalah y=0.018+0.000249x
Penghitungan Resolusi Gerak Robot (2) Penghitungan Resolusi Gerak Robot untuk Gerakan Rotasi pada DOF-2
Perhitungan pertama untuk gerakan rotasi searah jarum jam pada DOF-2 dengan memberikan 10 step dan delay per-step sebesar 60 ms untuk setiap gerakan dan persamaan garis lurusnya untuk gerak rotasi searah jarum jam pada DOF-2 adalah y=-2.47937+0.78269x Perhitungan kedua untuk gerakan rotasi berlawanan jarum jam pada DOF-2 dengan memberikan 10 step dan delay per-step sebesar 60 ms untuk setiap gerakan dan persamaan garis lurusnya untuk gerak rotasi berlawanan jarum jam pada DOF-2 adalah y=-2.11365+0.778512 x
Penghitungan Resolusi Gerak Robot (3) Penghitungan Resolusi Gerak Robot untuk Gerakan Rotasi pada DOF-3
Perhitungan pertama untuk gerakan rotasi searah jarum jam pada DOF-3 dengan memberikan 20 step dan delay per-step sebesar 60 ms untuk setiap gerakan dan persamaan garis lurusnya untuk gerak rotasi searah jarum jam pada DOF-3 adalah y= -9.68166+0.146789x Perhitungan kedua untuk gerakan rotasi berlawanan jarum jam pada DOF-3 dengan memberikan 20 step dan delay per-step sebesar 60 ms untuk setiap gerakan dan persamaan garis lurusnya untuk gerak rotasi berlawanan jarum jam pada DOF-3 adalah y=-8.83001+0.145455x
Penghitungan Resolusi Gerak Robot (4) Kalibrasi Pixel dengan Area Kerja Robot
Persamaan untuk mengubah koordinat suatu titik P(xp,yp) menjadi P(xr,yr)dalam koordinat kartesian robot,
(
)
y r = x p * panjang1 pixel + b
((
)
)
x r = c − y p * panjang1 pixel + a = JarakTitik Tengah ( a1 − a8) panjang 1 pixel cm pixel JarakTitik Tengah ( a1 − a8)
Koordinat Pixel (dimulai dari pojok kiri bawah) dan koordinat kartesian robot (dimulai dari pojok kiri atas)
Pengujian Perangkat Keras Pengujian Pengiriman Data Serial Tabel .Pengujian Pengiriman Data Serial Data Data Kategori Kirim Terima 1
2
Berhasil
9
10
Berhasil
19
20
Berhasil
99
100
Berhasil
199
200
Berhasil
999
1000
Berhasil
9999
10000
Berhasil
99999
100000
Berhasil
999999
1000000
Berhasil
1234567
1234568
Berhasil
Pengujian Perangkat Lunak Pengujian Inisialisasi Chessboard Tujuan : Mendapatkan kondisi yang optimal untuk deteksi corner chessboard terutama dari sisi pengaturan pencahayaan. Mendapatkan parameter perspective transform agar tampilan chessboard pada image yang akan diolah mendekati bentuk persegi. Tabel 3. Nilai optimal variabel pada proses perspective transform
Variabel
Nilai
dstQuad[0].x
-5
dstQuad[0].y
(frame->height)*(1.04)
dstQuad[1].x
((frame->width)*(1))+5
dstQuad[1].y
(frame->height)*1
dstQuad[2].x
-10
dstQuad[2].y
0
dstQuad[3].x
frame->width
dstQuad[3].y
0
Pengujian Perangkat Lunak Pengujian Deteksi Buah Catur Tujuan : Mendapatkan range nilai Hue, Saturation, Value yang optimal dalam pendeteksian buah catur hitam (warna merah) dan pendeteksian buah catur putih (warna biru) serta range nilai counter warna merah dan warna biru untuk penentuan kategori isi tiap petak. Tabel. Range Nilai Hue, Saturation,Value Warna
Hue (H)
Saturation (S)
Value (V)
Merah
H<10; H>150
S>30
V>165
Biru
80
60<S<200
V>105
Tabel. Range counter untuk warna merah dan warna biru Warna
Counter
Merah
Counter merah > 190
Biru
Counter biru > 280
Pengujian Perangkat Lunak Tujuan : Mengetahui seberapa akurat algoritma untuk menghasilkan path Pengujian ini dilakukan dengan memberikan halangan pada jalur pergerakan buah catur.
Gambar. Hasil Path Planner
Pengujian Path Planner (1)
Pengujian Perangkat Lunak
Tabel. Hasil Pengujian Path Planner Buah Catur Type
Pawn
Rock
Bishop
Knight
Posisi
Posisi
Awal
Akhir
b2
e5
e4
d5
Pengujian Path Planner (2)
Pengujian
Prosentase
a3
20
100
b3
20
100
c3
20
95
e8
20
100
a5
20
100
h5
20
100
e1
20
100
h7
20
100
a8
20
100
c2
20
100
h1
20
95
e7
20
100
f6
20
100
f4
20
100
e3
20
100
c3
20
100
b4
20
100
b6
20
100
c7
20
100
Dari table pengujian didapatkan rata – rata keberhasilan algoritma path planner sekitar 99,6%.
Pengujian Penggabungan Tujuan : Mengetahui hasil pergerakan yang dilakukan oleh robot manipulator sesuai dengan posisi yang diberikan. Mengetahui repeatability dari robot manipulator Terdiri atas : Pengujian repeatability Pengujian error posisi
Pengujian Penggabungan Pengujian repeatability (1)
Repeatability adalah kemampuan robot untuk kembali pada posisi yang sama. Selisih error didapat dengan menghitung selisih antara error posisi dengan error posisi pertama. Pada pengujian ini buah catur digerakkan dari d4 ke e4 sebanyak 10 kali lalu dihitung error posisinya menggunakan algoritma template matching pada Open CV.
Tabel Hasil pengujian repeatability error Selisih Pengujian posisi error ke(pixel) (pixel) 1
54
2
55
1
3
58
4
4
54
0
5
58
4
6
49
5
7
47
7
8
53
1
9
45
9
10
50
4
Pengujian Penggabungan Pengujian repeatability (2)
Nilai rata-rata selisih error adalah 4 pixel. Berdasarkan hasil kalibrasi pixel didapatkan panjang pixel sebesar 1/9 pixel/cm sehingga selisih error ratarata adalah 0.4444 cm. Nilai repeatibility untuk robot manipulator ini adalah 0.4444cm.
Pengujian Penggabungan Pengujian error posisi (1)
Pengujian hasil pergerakan juga dilakukan dengan menghitung error posisi rata-rata dari 10 pergerakan yang berbeda. Error posisi juga dihitung dengan menggunakan algoritma template matching pada Open CV.
Pengujian Penggabungan Pengujian error posisi (2) Tabel. Hasil pengujian error posisi Pengujian ke-
Pergerakan
error posisi (pixel)
1
d4-e4
8
2
d5-e5
10
3
d6-e6
11
4
d1-e1
9
5
d2-e2
7
6
d3-e3
5
7
c4-d4
8
8
c5-d5
9
9
c3-d3
7
10
c2-d2
10
11
c1-d1
11
Didapatkan nilai error posisi rata-rata sebesar 9.5 pixel atau sebesar 1.06 cm.
Kesimpulan
Kesimpulan
Kesimpulan yang diperoleh dalam Tugas Akhir ini adalah:
Dalam prosedur Inisialisasi chessboard parameter brightness webcam yang optimal berada pada nilai 4. Filter warna HSV dengan metode thresholding cukup baik digunakan dalam pendeteksian warna merah dan biru. Rata – rata keberhasilan algoritma path planner sekitar 99,6%. Error posisi rata – rata hasil pergerakan sebesar 1.06 cm. Nilai repeatibility untuk robot manipulator ini adalah 0.4444cm.
SEKIAN terima kasih