RANCANG BANGUN ROBOT
PERMAINAN CATUR
BERBASIS KAMERA
TUGAS AKHIROleh :
Ian Agung Prakoso 2204100060
Dosen Pembimbing :
Ir. Djoko Purwanto, M.Eng., Ph.D.
Bidang Studi Elektronika | Jurusan Teknik Elektro | FTI – ITS | Surabaya
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
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
Sistem Mekanik
Sistem Elektrik
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 Gripper
Posisi webcam Sistem mekanik robot
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 .
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
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
Program pada PC (MS. Visual C++ 2008 & Open CV)
Program Mikrokontroler (Code Vision AVR)
Perancangan Perangkat
Lunak
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”.
(a)
Image sebelum proses Perspective Transform.
(b)
Image setelah proses Prespective Transform.
void cvWarpPerspective( const CvArr* src,
CvArr* dst,
const CvMat* map_matrix, int flags = CV_INTER_LINEAR +
CV_WARP_FILL_OUTLIERS, CvScalar fillval = cvScalarAll(0));
Perancangan Perangkat Lunak
Inisialisasi chessboard
Inisialisasi chessboard diperlukan untuk mendapatkan koordinat titik tengah dari tiap kotak hitam-putih dari papan catur.
Setiap corner disini didefinisikan sebagai titik tengah dalam setiap 4 kotak dalam
chessboard
Koordinat Pixel
Sebuah corner
int cvFindChessboardCorners( const void* image,
CvSize pattern_size, CvPoint2D32f* corners, int* corner_count = NULL,
int flags =
CV_CALIB_CB_ADAPTIVE_THRESH );
void cvFindCornerSubPix( const CvArr* image, CvPoint2D32f* corners,
int count, CvSize win, CvSize zero_zone, CvTermCriteria criteria);
Perancangan Perangkat Lunak
Deteksi buah catur
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
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
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, 1 θ 2 θ β α ( 1 2) 2 1 1cosθ + cosθ +θ =l l x y =l1sinθ1 +l2sin(θ1 +θ2) + − − = − 2 1 2 2 2 1 2 2 1 2 2 cos l l l l y x θ (( )) 2 2 2 2 1 2 2 2 2 1 1 1 sin cos sin . cos tan θ θ θ θ θ yl l l x l x l l y + + − + = −
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
Penghitungan Resolusi Gerak Robot
Pengujian Perangkat Keras
Pengujian Perangkat Lunak
Pengujian Gabungan
Penghitungan Resolusi Gerak Robot (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 untuk Gerakan Translasi pada DOF-1
Penghitungan Resolusi Gerak Robot (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 untuk Gerakan Rotasi pada DOF-2
Penghitungan Resolusi Gerak Robot (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 untuk Gerakan Rotasi pada DOF-3
Penghitungan Resolusi Gerak Robot (4)
Kalibrasi Pixel dengan Area Kerja Robot
Koordinat Pixel (dimulai dari pojok kiri bawah) dan koordinat kartesian robot (dimulai dari pojok kiri atas)
Persamaan untuk mengubah koordinat suatu titik P(xp,yp) menjadi P(xr,yr)dalam koordinat kartesian robot,
(
x panjang pixel)
b yr = p * 1 +(
)
(
c y panjang pixel)
a xr = − p * 1 + ) 8 1 ( ) 8 1 ( 1 a a Tengah JarakTitik a a Tengah JarakTitik pixel cm pixel panjang − − = Pengujian Perangkat Keras
Pengujian Pengiriman Data Serial
Berhasil 1234568 1234567 Berhasil 1000000 999999 Berhasil 100000 99999 Berhasil 10000 9999 Berhasil 1000 999 Berhasil 200 199 Berhasil 100 99 Berhasil 20 19 Berhasil 10 9 Berhasil 2 1 Kategori Data Terima Data Kirim
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 0 dstQuad[3].y frame->width dstQuad[3].x 0 dstQuad[2].y -10 dstQuad[2].x (frame->height)*1 dstQuad[1].y ((frame->width)*(1))+5 dstQuad[1].x (frame->height)*(1.04) dstQuad[0].y -5 dstQuad[0].x Nilai Variabel
Pengujian Perangkat Lunak
Pengujian Deteksi Buah Catur
Tabel. Range Nilai Hue, Saturation,Value
V>105 60<S<200 80<H<115 Biru V>165 S>30 H<10; H>150 Merah Value (V) Saturation (S) Hue (H) Warna
Tabel. Range counter untuk warna merah dan warna biru
Counter biru > 280 Biru Counter merah > 190 Merah Counter Warna 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
Pengujian Perangkat Lunak
Pengujian Path Planner (1)
Tujuan :
Mengetahui seberapa akurat algoritma untuk
menghasilkan path
Pengujian ini dilakukan dengan memberikan
halangan pada jalur pergerakan buah catur.
Pengujian Perangkat Lunak
Pengujian Path Planner (2) Tabel. Hasil Pengujian
Path Planner 100 20 c7 100 20 b6 100 20 b4 100 20 c3 100 20 e3 100 20 f4 100 20 f6 100 20 e7 d5 Knight 95 20 h1 100 20 c2 100 20 a8 100 20 h7 e4 Bishop 100 20 e1 100 20 h5 100 20 a5 100 20 e8 e5 Rock 95 20 c3 100 20 b3 100 20 a3 b2 Pawn Akhir Awal Type Prosentase Pengujian Posisi Posisi Buah Catur
Dari table pengujian didapatkan rata – rata keberhasilan algoritma
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 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 4 50 10 9 45 9 1 53 8 7 47 7 5 49 6 4 58 5 0 54 4 4 58 3 1 55 2 54 1 Selisih error (pixel) error posisi (pixel) Pengujian
Nilai rata-rata selisih error
adalah 4 pixel.
Berdasarkan hasil kalibrasi
pixel didapatkan panjang
pixel sebesar 1/9 pixel/cm sehingga selisih error rata-rata adalah 0.4444 cm.
Nilai repeatibility untuk
robot manipulator ini
adalah 0.4444cm.
Pengujian Penggabungan
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
11 c1-d1 11 10 c2-d2 10 7 c3-d3 9 9 c5-d5 8 8 c4-d4 7 5 d3-e3 6 7 d2-e2 5 9 d1-e1 4 11 d6-e6 3 10 d5-e5 2 8 d4-e4 1 error posisi (pixel) Pergerakan Pengujian
Didapatkan nilai error posisi rata-rata sebesar 9.5 pixel atau sebesar 1.06 cm.
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.