BAB III PERANCANGAN
Membahas perancangan sistem yang terdiri dari gambaran umum sistem dan bagaimana mengolah informasi yang didapat dari penglihatan dan arah hadap robot di dalam algoritma penentuan lokasi dan penempatan posisi.
3.1. Sistem Instruksi dan Kontrol Robot Sistem kontrol robot terdiri dari 3 bagian utama, yaitu smartphone Android sebagai pemroses utama, controller servo robot kondo KHR-3HV (RCB4) sebagai pengontrol servo-servo yang menggerakkan tubuh robot, dan ATMega324 sebagai pengontrol servo kepala dan memberikan perintah kepada controller KHR-3HV dari smartphone Android. Gambar 3.1 menunjukkan blok diagram sistem instruksi robot yang digunakan.
Gambar 3.1. Sistem instruksi dan kontrol robot.
16
3.2. Desain Perangkat Keras 3.2.1. Smartphone Android Smartphone Android Xperia Mini St15i digunakan sebagai pemroses algoritma utama. Semua instruksi yang dijalankan oleh ATMega 324, controller servo KHR-3HV dan servo kepala berasal dari smartphone Android. Algoritma yang dijalankan mengambil tindakan berdasarkan citra yang didapat dan diolah menggunakan library OpenCV. Informasi akan dieksekusi dalam bahasa Java yang dirancang menggunakan Eclipse IDE.
Gambar 3.2. Sensor orientasi smartphone Android.
Smartphone Android memiliki sensor orientasi dimana terdapat sumbu yaw, pitch, dan roll seperti yang ditunjukkan pada Gambar 3.2. Kompas memanfaatkan sumbu yaw dari sensor Android ini. Sudut 0° diatur agar selalu mengarah ke tiang gawang musuh. Pengaturan sudut kompas ditunjukkan oleh Gambar 3.3.
Gambar 3.3. Nilai kompas (yaw) yang digunakan [14].
17
3.2.2. Mikrokontroler ATMega 324 dan Controller Servo KHR-3HV Mikrokontroler ATMega 324 bertugas mengontrol servo pan dan tilt kepala dan servo tubuh. Pengontrolan servo tubuh dilakukan dengan mengirimkan instruksi gerakan ke controller servo KHR-3HV. Instruksi gerakan yang dikirim adalah instruksi gerakan yang didapat dari perintah smartphone Android.
3.2.3. Modul Bluetooth Modul bluetooth dengan versi DF-Bluetooth V3 digunakan sebagai media penghubung smartphone dengan ATMega 324. Instruksi-instruksi dari Android berbentuk paket data dikirim melalui modul bluetooth ke ATMega 324. Instruksi yang dikirimkan berupa instruksi untuk menggerakkan servo pan dan tilt kepala serta servo tubuh robot.
3.2.4. Motor Servo Motor Servo digunakan untuk mengontrol gerakan kepala robot. Terdapat 2 motor servo yang digunakan, yaitu untuk pan dan tilt kepala robot. Motor servo dikontrol oleh ATMega 324 dengan menggunakan modulasi lebar pulsa atau Pulse Width Modulation (PWM). Gambar 3.4 menunjukkan konfigurasi pan dan tilt kepala robot
Gambar 3.4. Arah sudut pan dan tilt servo kepala robot [14].
18
3.3. Pendeteksian Tiang Gawang Menggunakan Android dan OpenCv Algoritma penentuan lokasi dan penempatan posisi robot di lapangan diperoleh dengan menggunakan informasi yang diperoleh dari citra gawang, kompas, dan pan kepala robot. Citra gawang yang dipakai adalah citra tiang gawang. Tiang gawang dipilih sebagai acuan karena tiang gawang adalah landmark yang mudah terlihat dari posisi mana saja di lapangan. Proses pendeteksian tiang gawang dilakukan menggunakan android dengan bantuan library OpenCV. Kamera Android akan mengirimkan citra yang akan dilakukan pemeriksaan objek tiang gawang menggunakan library Android OpenCV. Untuk menentukan tiang gawang, digunakan metode penentuan pusat massa [1] dengan mencari objek yang memiliki lebar minimal ptgMin dan tinggi minimal htgMin. Jika sebuah bagian vertikal memiliki warna kuning dengan ketinggian minimal htgMin, maka akan dilakukan pemeriksaan secara horisontal. Jika lebar objek (ptg) lebih besar dari lebar proyeksi sebuah objek tiang gawang minimal (ptgMin), maka objek adalah tiang gawang yang memiliki lebar proyeksi ptg pixel [13]. Gawang tim musuh dan gawang tim sendiri dibedakan menggunakan kompas, dimana 0° adalah arah hadap robot ke gawang tim musuh dan 180° adalah arah hadap ke gawang tim sendiri. Tiang gawang kanan dan kiri dibedakan menggunakan metode pusat massa. Tiang kiri memiliki pusat massa yang berada di kiri pusat massa gawang secara keseluruhan, sedangkan tiang kanan memiliki pusat massa yang berada di kanan pusat massa gawang secara keseluruhan. Gambar 3.5. menunjukkan contoh pendeteksian tiang gawang.
Gambar 3.5. Contoh pendeteksian tiang gawang dengan ptgMin=2 pixel dan htgMin=5 pixel 19
3.4. Perhitungan Jarak Robot dan Gawang Tiang gawang yang berbentuk silinder akan terlihat berbentuk persegi panjang pada bidang gambar kamera. Jika jarak antara kamera dan tiang gawang serta tilt robot tetap, meskipun dilihat dari sudut manapun, lebar persegi panjang hasil proyeksi tiang gawang akan selalu tetap. Lebar tiang gawang akan digunakan untuk mencari jarak antara robot dan tiang gawang.
Gambar 3.6. Proyeksi lebar tiang gawang pada kamera yang akan dianalisis.
Perhitungan jarak robot dan gawang dilakukan dengan menggunakan persamaan (3) pada Bab 2.5.2. Gambar 3.6 menunjukkan lebar tiang gawang hasi proyeksi pada bidang gambar kamera yang dapat diibaratkan sebagai sebuah garis dengan lebar dtg cm. Jika lebar tiang gawang asli adalah Dtg cm, dan fokus kamera adalah f cm, maka dapat dicari jrg, yaitu jarak robot ke gawang dengan persamaan :
jrg f
Dtg d tg ........................................................................................................(4)
dengan jrg
=
jarak bola dan tiang gawang (cm)
f
=
fokus kamera (cm)
Dtg
=
lebar tiang gawang asli (cm)
dtg
=
lebar tiang gawang hasil proyeksi dalam dalam sentimeter (cm)
20
Pendeteksian tiang gawang pada Bab 3.3 mendeteksi lebar tiang gawang dalam satuan pixel, sedangkan persamaan untuk menghitung jarak robot dan tiang gawang (persamaan 4) menggunakan lebar tiang gawang dalam satuan sentimeter. Oleh karena itu, dibutuhkan pengkonversian nilai antara sentimeter dan pixel sebagai satuan lebar tiang gawang yang terdeteksi. Resolusi kamera adalah 480 x 320 pixel. Analisa lebar tiang gawang dilakukan secara landscape, sehingga lebar resolusi layar yang digunakan adalah 480 pixel. Sebuah objek yang terdeteksi pada layar dengan panjang dob, akan menggunakan pob pixel dengan rumus:
pob R
d ob L ........................................................................................................(5)
dengan : pob
=
lebar proyeksi sebuah objek di bidang gambar kamera (pixel)
R
=
resolusi (pixel)
dob
=
lebar benda yang terdeteksi pada layar (cm)
L
=
lebar layar (cm)
Gambar 3.7 menunjukkan hubungan lebar benda dan nilai pixel yang digunakan pada layar sesuai dengan rumus (5).
(1)
(2)
(3)
Gambar 3.7. Pendeteksian sebuah objek bola menunjukkan lebar benda dan nilai pixel yang berhubungan.
Keterangan gambar 3.7: (1) dob = 0,9 cm ; pob = 67 pixel (2) dob = 1,7 cm ; pob = 127 pixel (3) dob = 2,0 cm ; pob = 153 pixel
21
Jarak robot dan tiang gawang (jrg) pada persamaan (4) dapat dicari dengan menggunakan persamaan (5) dengan pob=ptg dan dob=dtg karena objek yang dideteksi adalah tiang gawang.
jrg f
Dtg
jrg f
Dtg L ( ptg ) R
jrg
d tg , sedangkan
ptg R
d tg L , maka :
fDtg R ptg L ........................................................................................................ (6)
Fokus kamera yang digunakan (f) adalah 7,2 cm, lebar tiang gawang yang asli (Dtg) adalah 10 cm, Resolusi layar (R) adalah 480 pixel, dan lebar layar (L) adalah 6,4 cm. Dari rumus jrg,
fDtg R L
adalah suatu konstanta yang memiliki nilai 5400, sehingga jrg
dapat dicari dengan rumus: jrg
5400 ptg ......................................................................................................... (7)
dengan : jrg
=
jarak antara robot dan tiang gawang (cm)
ptg
=
lebar proyeksi tiang gawang di bidang gambar kamera (pixel)
22
3.5. Penentuan Posisi Robot di Lapangan
Gambar 3.8. Desain sistem koordinat lapangan KRSBI.
Desain sistem koordinat lapangan KRSBI ditunjukkan pada Gambar 3.8. Koordinat (0,0) berada di tengah lapangan dengan sumbu Y positif menunjukkan daerah depan penyerangan, sedangkan sumbu Y negatif menunjukkan daerah belakang penyerangan. Sumbu X positif menunjukkan daerah kanan lapangan, sedangkan sumbu X negatif menunjukkan daerah kiri lapangan. Setelah didapat jarak robot dan tiang gawang, yaitu jrg dan selisih sudut pan kepala dan kompas robot (α), maka posisi robot relatif terhadap salah tiang gawang, yaitu koordinat x dan y dapat dicari menggunakan selisih pan dan kompas robot seperti yang ditunjukkan pada Gambar 3.9. Koordinat robot diperoleh dari rumus:
xrg jrg sin( ) ..................................................................................................(8) yrg jrg cos( ) .................................................................................................. (9)
dimana α = pan – 90 – kompas .......................................................................................(10) 90 adalah nilai saat robot menghadap lurus ke depan (gambar 3.4).
23
Gambar 3.9. Penentuan koordinat relatif robot terhadap salah satu tiang gawang
Koordinat robot relatif terhadap koordinat lapangan dapat dicari dengan melakukan pergeseran koordinat xrg dan yrg tergantung dari jenis tiang gawang yang sedang digunakan untuk acuan. Tabel 3.1 adalah pergeseran koordinat relatif robot terhadap tiang gawang ke koordinat robot terhadap lapangan. Gambar 3.10 menunjukkan diagram alir penentuan lokasi robot. Pseudocode 1 menunjukkan algoritma menghitung lokasi robot di lapangan. Tabel 3.1. Tabel pergeseran koordinat relatif robot terhadap tiang gawang ke koordinat robot terhadap lapangan.
Rumus koordinat robot terhadap
Jenis tiang gawang
lapangan xrl = xrg - 112,5
Tiang kanan
yrl = -450 - yrg
Gawang sendiri
xrl = xrg +112,5
Tiang kiri
yrl = -450 - yrg xrl = xrg + 112,5
Tiang kanan
yrl = 450 - yrg
Gawang musuh
xrl = xrg - 112,5
Tiang kiri
yrl = 450 - yrg
24
25
Gambar 3.10. Diagram alir algoritma menentukan lokasi robot //Menghadapkan kepala ke depan if(ada tiang gawang){ //memfokuskan kamera ke tengah tiang gawang //menghitung jarak robot dan tiang gawang //menyelisihkan kompas dan pan kepala robot //mencari x dan y robot terhadap tiang gawang //memeriksa jenis tiang gawang yang sedang dilihat //mendapatkan x dan y robot terhadap lapangan berdasarkan jenis tiang gawang yang sedang dilihat } else{ if(kompas/orientasi robot menghadap ke kiri){ //menghadapkan kepala robot ke kiri //selama belum menemukan gawang, robot melakukan pergeseran kepala ke arah kanan } else{ //menghadapkan kepala robot ke kanan //selama belum menemukan gawang, robot melakukan pergeseran kepala ke arah kiri } }
Pseudocode 1. Pseudocode algoritma menghitung lokasi robot di lapangan 26
3.6. Penentuan Posisi Bola di Lapangan
Robot dapat menentukan posisi bola dilapangan dengan cara mencari jarak bola terhadap robot terlebih dahulu dengan bantuan tilt robot. Gambar 3.11 menunjukkan jarak antara robot dan bola (jbr) diperoleh dari rumus: jbr
hr , dengan hr (tinggi robot) adalah 47 cm. tan
jbr
47 tan .......................................................................................................(11)
dengan jbr
=
jarak bola dan robot (cm)
hr
=
tinggi robot (cm) = (47 cm)
γ
=
sudut tilt (derajat)
Gambar 3.11. Penentuan jarak robot terhadap bola.
27
Setelah mendapatkan jarak robot dan bola, dapat dicari koordinat x dan y relatif bola terhadap robot menggunakan selisih pan dan kompas robot (β) seperti yang ditunjukkan pada Gambar 3.12. Koordinat relatif bola diperoleh dengan rumus: xbr jrb sin( ) ................................................................................................ (12)
ybr jrb cos( ) ..................................................................................................(13) dimana β = pan – 90 – kompas .......................................................................................(14) 90 adalah nilai saat robot menghadap lurus ke depan (gambar 3.4).
Gambar 3.12. Penentuan koordinat relatif bola terhadap robot.
Jika robot telah mengetahui posisinya di lapangan, maka robot dapat menentukan posisi bola relatif terhadap lapangan. xbl xbr xrl ...................................................................................................... (15) ybl ybr yrl ..................................................................................................... (16)
Gambar 3.13 menunjukkan diagram alir penentuan posisi bola. Pseudocode 2 menunjukkan algoritma menghitung lokasi bola relatif terhadap robot.
28
Gambar 3.13. Diagram alir algoritma menentukan lokasi bola //Menghadapkan kepala depan if(ada bola){ //memfokuskan kamera ke bola //menghitung jarak robot bola //menyelisihkan kompas dan pan kepala robot //mencari x dan y bola terhadap robot } else{ //melakukan gerakan memutar tubuh dan kepala untuk mencari bola }
Pseudocode 2. Pseudocode algoritma menghitung lokasi bola
29
3.7. Penentuan Daerah Kerja Robot di Lapangan Terdapat 2 macam peran robot di lapangan yang memerlukan algoritma penentuan lokasi dan penempatan posisi, yaitu robot penyerang dan robot bek. Daerah kerja penyerang adalah untuk berjaga di lapangan bagian depan, sedangkan daerah kerja bek adalah untuk berjaga di lapangan bagian belakang. Algoritma penentuan lokasi dan penempatan posisi didukung oleh proses komunikasi antar robot dimana terdapat informasi tentang robot yang sedang memegang bola seperti yang ditunjukkan pada Gambar 3.14 dan Gambar 3.15. Terdapat 2 kondisi permainan di lapangan, yaitu saat menyerang dan bertahan. Kondisi menyerang ditunjukkan saat robot penyerang mendapatkan bola, dan kondisi bertahan ditunjukkan saat kiper mendapatkan bola. Proses komunikasi akan mengirimkan data kondisi permainan berdasarkan robot yang sedang memegang bola. Berdasarkan data yang masuk, robot akan memanggil fungsi yang menjalankan proses penempatan posisi. Saat menerima data komunikasi yang menunjukkan kondisi untuk menyerangke arah musuh, robot penyerang akan memanggil fungsi yang akan memposisikan dirinya untuk selalu berjaga di depan, sedangkan robot bek akan memanggil fungsi yang memposisikan dirinya untuk selalu berjaga di belakang garis tengah lapangan. Sedangkan saat menerima data komunikasi yang menunjukkan kondisi untuk bertahan, robot penyerang akan memanggil fungsi yang memposisikan dirinya untuk pergi ke belakang hingga garis tengah lapangan, sedangkan robot bek akan berusaha membuang bola ke depan. Proses pemposisian diri terjadi saat robot penyerang/bek tidak sedang memegang bola. Algoritma penentuan lokasi dan penempatan posisi dirancang terpisah dengan algoritma untuk mengejar bola.
30
Gambar 3.14. Proses pergantian kondisi pada robot penyerang
Gambar 3.15. Proses pergantian kondisi pada robot bek
31
3.7.1. Algoritma Penempatan Posisi Menyerang Robot Penyerang Robot penyerang ditunjukkan pada Gambar 3.16. Gambar 3.17 menunjukkan saat kondisi menyerang dan robot tidak sedang memegang bola, maka robot penyerang akan memposisikan dirinya ke arah penyerangan bagian depan bola dengan jarak setengah jarak bola ke gawang, kecuali bola berada di dalam kotak penalti.
Gambar 3.16. Robot yang menjalankan algoritma penyerang.
Gambar 3.17. Penempatan posisi menyerang robot penyerang.
Robot penyerang akan pergi ke arah tengah gawang hingga setengah dari jarak bola ke tengah gawang. Hal ini dilakukan agar proses interaksi lebih sering terjadi antara robot dan bola yang ditendang oleh robot teman. Gambar 3.18 menunjukkan diagram alir penempatan posisi menyerang robot penyerang. Pseudocode 3 menunjukkan algoritma penempatan posisi menyerang robot penyerang. 32
Gambar 3.18. Diagram alir algoritma penempatan posisi menyerang robot penyerang. 33
//mengarahkan orientasi robot ke arah penyerangan //mencari gawang //menghitung lokasi robot di lapangan //mencari bola //menghitung lokasi bola di lapangan if(bola pada kotak pinalti){ //standby menjaga bola } else{ //menghitung seberaba banyak robot harus melangkah ke depan bola ke arah gawang musuh while(langkah belum habis){ //robot maju ke depan if(ada bola){ //mengarahkan pandangan robot ke bola } else{ //mencari bola dengan menggelengkan kepala } } }
Pseudocode 3. Pseudocode algoritma positioning attack robot penyerang 3.7.2. Algoritma Penempatan Posisi Bertahan Robot Penyerang Gambar 3.19 menunjukkan saat kondisi sedang bertahan, maka robot penyerang akan mundur ke belakang lurus hingga garis tengah lapangan. Hal ini mencegah robot penyerang kehilangan bola di bagian depan lapangan. Gambar 3.20 menunjukkan diagram alir penempatan posisi bertahan robot penyerang. Pseudocode 4 menunjukkan algoritma penempatan posisi bertahan robot penyerang.
Gambar 3.19. Penempatan posisi bertahan robot penyerang.
34
Gambar 3.20. Diagram alir algoritma penempatan posisi bertahan robot penyerang.
35
//mengarahkan orientasi robot ke arah gawang sendiri //mencari gawang //menghitung lokasi robot di lapangan //menghitung seberaba banyak robot harus melangkah ke depan bola ke arah gawang sendiri while(langkah belum habis){ //robot maju ke arah sendiri if(ada bola){ //mengarahkan pandangan robot ke bola } else{ //mencari bola dengan menggelengkan kepala } }
Pseudocode 4. Pseudocode algoritma positioning bertahan robot penyerang 3.7.3 Algoritma Penempatan Posisi Robot Bek Robot penyerang ditunjukkan pada Gambar 3.21. Gambar 3.22 menunjukkan saat kondisi menyerang, robot bek akan memposisikan dirinya untuk selalu berjaga di belakang garis tengah lapangan. Gambar 3.23 menunjukkan diagram alir penempatan posisi bertahan robot penyerang. Pseudocode 5 menunjukkan algoritma penempatan posisi robot bek.
Gambar 3.21. Robot yang menjalankan algoritma bek.
Gambar 3.22. Penempatan posisi robot bek. 36
Gambar 3.23. Diagram alir algoritma penempatan posisi robot bek.
37
//mengarahkan orientasi robot ke arah gawang musuh //mencari gawang //menghitung lokasi robot di lapangan if(lokasi robot melebihi garis tengah lapangan){ //menghitung seberaba banyak robot harus melangkah ke depan bola ke arah gawang sendiri while(langkah belum habis){ //robot maju ke arah sendiri if(ada bola){ //mengarahkan pandangan robot ke bola } else{ //mencari bola dengan menggelengkan kepala } } } else{ //standby dan menjaga bola }
Pseudocode 5. Pseudocode algoritma positioning robot bek
38