pengontrol robot sepak bola beroda dengan … · ii final project wheeled soccer robot controller...
TRANSCRIPT
TUGAS AKHIR
PENGONTROL ROBOT SEPAK BOLA BERODA
DENGAN METODE COLOR TRACKING
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Elektro
Disusun oleh:
FRANSISCUS XAVERIUS ENRICO WIDA ARTANTO
NIM: 145114012
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2018
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ii
FINAL PROJECT
WHEELED SOCCER ROBOT CONTROLLER BY
COLOR TRACKING METHOD
Presented as Partial Fulfillment of the Requierments
To Obtain the Sarjana Teknik Degree
In Electrical Engineering Study Program
FRANSISCUS XAVERIUS ENRICO WIDA ARTANTO
NIM: 145114012
DEPARTMENT OF ELECTRICAL ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2018
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP
Motto Hidup:
“The only way to do great work is to love what you do,
Imagine no limitations on what you can be,
Everyone has their own time zone,
Stay or Move”
Skripsi ini saya persembahkan untuk....
Tuhan Yesus Kristus Sang Juru selamatku
Keluarga dan orang terkasih
Universitas Sanata Dharma Yogyakarta
Teman-teman dari Teknik Elektro
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
INTISARI
Penelitian ini mencoba melakukan analisa video dengan menggunakan metode color
tracking yang diterapkan pada robot sepak bola beroda agar dapat secara otomatis
mendeteksi dan mengikuti suatu objek berdasarkan warnanya.
Pengontrol robot sepak bola beroda menggunakan Raspberry Pi 3 sebuah komputer
mini yang digunakan untuk mengontrol pergerakan robot secara otomatis dengan
menggunakan masukan video dari Webcam. Pengolahan citra dari masukan video
digunakan untuk mendeteksi objek berdasarkan warna masing-masing objek dengan
bantuan library python yaitu OpenCV. Hasil pengolahan citra akan mendapatkan posisi x
dan posisi y dari masing-masing objek yang terdeteksi akan digunakan untuk
mengendalikan pergerakan robot berdasarkan mode yang diinginkan. Pengendalian robot
terbagi menjadi tiga mode yaitu mode bersiap, bermain, dan berhenti. Mode bersiap robot
akan bergerak menuju tengah seperti posisi kick off. Mode bermain robot akan bergerak
merebut bola, menggiring bola menuju gawang lawan, dan menendang bola ke gawang
lawan. Digunakan sensor kompas untuk membantu robot menuju arah gawang lawan.
Keluaran sensor kompas berupa sudut yang dapat ditentukan arah yang akan dituju.
Perintah dan informasi yang dikirim dari sistem ke robot menggunakan socket python.
Sistem mampu mengendalikan pergerakan robot berdasarkan mode yang diinginkan.
Sistem berhasil mengendalikan pergerakan robot pada mode bersiap pada posisi ujung
kanan lapangan dengan rata-rata kesalahan sebesar 0% dan pada posisi ujung kiri lapangan
dengan rata-rata kesalahan sebesar 0,3%. Sistem berhasil mengendalikan pergerakan robot
pada mode bermain dengan rata-rata kesalahan setpoint akhir sebesar 1,65%. Sistem
berhasil mengkoreksi sudut pada arah yang dituju dengan baik. Sistem berhasil melakukan
komunikasi dengan baik karena data yang dikirim dengan yang diterima adalah sama.
Kata kunci: Raspberry Pi, Python, Robot Sepak Bola Beroda, Color Tracking
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
ABSTRACT
This research tries to do video analysis using the color tracking method that is
applied to wheeled soccer robots so that it can automatically detect and follow an object
based on its color.
Wheeled soccer robot controller using Raspberry Pi 3, a mini computer that is used
to control the movement of robot automatically by using video input from a Webcam.
Image processing from video input is used to detect objects based on the color of each
object with the help of the python library, OpenCV. The image processing results will get
the position x and the y position of each detected object will be used to control the
movement of the robot based on the desired mode. Robot control is divided into three
modes, namely the mode of bersiap, bermain, and berhenti. The bersiap mode will move
towards the middle like the kick off position. The bermain mode will move to grab the
ball, dribble the ball towards the opponent's goal, and kick the ball into the opponent's
goal. A compass sensor is used to help the robot go towards the opponent's goal. Compass
sensor output in the form of an angle that can be determined in the direction to be
addressed. Commands and information sent from the system to the robot use python
socket.
The system is able to control the movement of the robot based on the desired mode.
The system successfully to control the movement of the robot in the ready mode at the
right end position of the field with an average error of 0% and the position of the left end
of the field with an average error of 0,3%. The system successfully to to control the
movement of the robot in play mode with an average setpoint error of 1,65%. The system
succeeds in correcting the angle in the direction that is intended properly. The system
successfully communicates well because the data sent with the received is the same.
Keywords: Raspberry Pi, Python, Wheeled Soccer Robot, Color Tracking
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
DAFTAR ISI
DAFTAR GAMBAR .......................................................................................................... xiii
DAFTAR TABEL .............................................................................................................. xvi
BAB I ..................................................................................................................................... 1
1.1. Latar Belakang ............................................................................................................. 1
1.2. Tujuan dan Manfaat Penelitian .................................................................................... 2
1.3. Pembatasan Masalah .................................................................................................... 2
1.4. Metodologi Penelitian .................................................................................................. 3
BAB II ................................................................................................................................... 5
2.1. Raspberry Pi ................................................................................................................. 5
2.1.1. Raspberry Pi 3 ................................................................................................. 5
2.1.2. USB Webcam ................................................................................................... 6
2.1.3. Modul Sensor Kompas HMC5883L ................................................................ 7
2.2. Python 2 ....................................................................................................................... 9
2.3. Tkinter ........................................................................................................................ 10
2.4. Pengolahan Citra Digital (Image Processing)............................................................ 13
2.4.1. OpenCV ......................................................................................................... 15
2.4.2. Ruang Warna HSV ........................................................................................ 15
2.5. Pelacakan Objek ......................................................................................................... 17
2.6. Pembentukan Gambar pada Kamera Lubang Jarum .................................................. 19
2.6.1. Proyeksi Sebuah Titik pada Kamera ............................................................. 20
2.6.2. Proyeksi Sebuah Garis pada Kamera............................................................. 23
2.6.3. Perhitungan Jarak Robot dan Gawang .......................................................... 24
2.6.4. Penentuan Posisi Robot di Lapangan ............................................................ 26
2.7. Python Socket ............................................................................................................ 27
BAB III ................................................................................................................................ 30
3.1. Proses Kerja Sistem ................................................................................................... 30
3.2. Perancangan Perangkat Keras .................................................................................... 31
3.2.1. Desain Coach Computer Pengontrol Robot................................................... 31
3.2.2. Posisi Kamera Pada Robot ............................................................................ 32
3.3. Perancangan Perangkat Lunak ................................................................................... 34
3.3.1. Diagram Alir Utama ...................................................................................... 34
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
3.3.2. Subprogram Bersiap ...................................................................................... 37
3.3.3. Subprogram Bermain ..................................................................................... 39
3.3.4. Subprogram Berhenti ..................................................................................... 41
3.3.5. Subprogram Menentukan Posisi Bola, Gawang dan Lawan ......................... 41
3.3.6. Subprogram Tindakan Pengontrolan Bertahan.............................................. 43
3.3.7. Subprogram Tindakan Pengontrolan Menyerang .......................................... 46
3.3.8. Subprogram Kirim Perintah ke Robot ........................................................... 48
BAB IV ................................................................................................................................ 50
4.1. Perubahan Proses Kerja Sistem .................................................................................. 50
4.2. Perubahan Perancangan ............................................................................................. 51
4.2.1. Perubahan Fungsi Sensor Kompas ................................................................ 51
4.2.2. Perubahan Mode Menyerang ......................................................................... 53
4.2.3. Perubahan Mode Bertahan............................................................................. 55
4.2.4. Perubahan Subprogram Kirim Perintah ke Robot ......................................... 56
4.3. Hasil Implementasi..................................................................................................... 60
4.4. Hasil dan Analisa Keberhasilan Sistem ..................................................................... 64
4.5. Pembahasan Perangkat Keras .................................................................................... 76
4.6. Pembahasan Perangkat Lunak.................................................................................... 77
BAB V ................................................................................................................................. 92
5.1. Kesimpulan ................................................................................................................ 92
5.2. Saran ........................................................................................................................... 93
DAFTAR PUSTAKA .......................................................................................................... 94
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
DAFTAR GAMBAR
Gambar 1. 1 Diagram blok perancangan.. ............................................................................. 3 Gambar 2. 1 Tampilan Board Rasberry Pi. ........................................................................... 5
Gambar 2. 2 Logitech C270 USB Webcam yang digunakan. ............................................... 6
Gambar 2. 3 Modul sensor kompas HMC5883L yang digunakan. ....................................... 8
Gambar 2. 4 Contoh Tkinter. ............................................................................................... 10
Gambar 2. 5 Tampilan Window Tkinter. ............................................................................ 13
Gambar 2. 6 Citra terbentuk array 2 dimensi. ..................................................................... 13
Gambar 2. 7 Representasi citra digital dalam 2 dimensi. .................................................... 15
Gambar 2. 8 contoh library pada OpenCV. ......................................................................... 15
Gambar 2. 9 Model ruang warna RGB dan HSV ................................................................ 16
Gambar 2. 10 Warna-warna pada Pemodelan RGB yang digunakan.................................. 17
Gambar 2. 11 Proses pembentukan gambar pada kamera lubang jarum. ............................ 20
Gambar 2. 12 Representasi matematika dari pembentukan sebuah titik pada kamera. ....... 20
Gambar 2. 13 Representasi matematika dari pembentukan gambar pada kamera
pada bidang XZ. ........................................................................................... 21
Gambar 2. 14 Representasi kesebangunan antara titik Q, bidang gambar, dan pusat
proyeksi pada bidang XZ. ............................................................................ 21
Gambar 2. 15 Representasi matematika dari pembentukan gambar pada kamera
pada bidang YZ. ........................................................................................... 22
Gambar 2. 16 Representasi kesebangunan antara titik Q, bidang gambar, dan pusat
proyeksi pada bidang YZ. ............................................................................ 22
Gambar 2. 17 Representasi matematika dari pembentukan sebuah garis yang
melewati titik Q1 dan Q2 pada kamera........................................................ 23
Gambar 2. 18 Pendeteksian objek gawang menunjukkan nilai pixel yang
berhubungan. ................................................................................................ 25
Gambar 2. 19 Desain sistem koordinat lapangan. ............................................................... 26
Gambar 2. 20 Penentuan koordinat terhadap salah satu tiang. ............................................ 27 Gambar 3. 1 Blok diagram cara kerja sistem....................................................................... 30
Gambar 3. 2 Tampilan Robot. ............................................................................................. 32
Gambar 3. 3 Tampilan Robot .............................................................................................. 32
Gambar 3. 4 Tampilan Robot .............................................................................................. 32
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
Gambar 3. 5 Penentuan posisi kamera dengan jarak robot terhadap bola. .......................... 33
Gambar 3. 6 Spesifikasi lapangan secara keseluruhan. ....................................................... 34
Gambar 3. 7 Kerangka interface program utama. ............................................................... 34
Gambar 3. 8 Diagram alir utama. ........................................................................................ 35
Gambar 3. 9 Representasi nilai piksel x dan y dari kamera pada lapangan. ....................... 36
Gambar 3. 10 Representasi nilai x dan y dari sensor kompas pada lapangan. ..................... 36
Gambar 3. 11 Diagram alir subprogram bersiap. ................................................................ 37
Gambar 3. 12 Gambaran pergerakan saat bola berada di tengah lapangan. ........................ 38
Gambar 3. 13 Gambaran pergerakan saat bola berada di sebelah kiri gawang. .................. 38
Gambar 3. 14 Gambaran pergerakan saat bola berada di sebelah kanan gawang. .............. 39
Gambar 3. 15 Diagram alir subprogram bermain. ............................................................... 40
Gambar 3. 16 Diagram alir subprogram stop. ..................................................................... 41
Gambar 3. 17 Diagram alir subprogram menentukan tujuan robot dan posisi lawan. ........ 42
Gambar 3. 18 Diagram alir subprogram tindakan pengontrolan bertahan. ......................... 44
Gambar 3. 19 Gambaran pergerakan bertahan saat bola berada di sebelah ........................ 45
Gambar 3. 20 Gambaran pergerakan bertahan saat bola berada di sebelah ........................ 45
Gambar 3. 21 Diagram alir subprogram tindakan pengontrolan menyerang. ..................... 46
Gambar 3. 22 Gambaran pergerakan menyerang saat bola berada di sebelah
kiri gawang................................................................................................... 47
Gambar 3. 23 Gambaran pergerakan menyerang saat bola berada di sebelah
kanan gawang............................................................................................... 48
Gambar 3. 24 Diagram alir subprogram kirim perintah ke robot. ....................................... 49 Gambar 4. 1 Perubahan Blok Diagram Cara Kerja Sistem ................................................. 50
Gambar 4. 2 Representasi nilai x dan y dari sensor kompas pada lapangan........................ 51
Gambar 4. 3 Grafik nilai y ................................................................................................... 52
Gambar 4. 4 Grafik nilai x ................................................................................................... 52
Gambar 4. 5 Perubahan representasi nilai sudut dari sensor kompas pada lapangan. ........ 53
Gambar 4. 6 Perubahan gambaran pergerakan menyerang saat bola .................................. 54
Gambar 4. 7 Perubahan gambaran pergerakan menyerang saat bola ................................. 54
Gambar 4. 8 Perubahan diagram alir subprogram tindakan pengontrolan bertahan. .......... 55
Gambar 4. 9 Perubahan gambaran pergerakan bertahan ..................................................... 56
Gambar 4. 10 Tampilan GUI ............................................................................................... 60
Gambar 4. 11 Tampilan pada lapangan hasil analisis OpenCV .......................................... 61
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
Gambar 4. 12 Tampilan Geany............................................................................................ 62
Gambar 4. 13 Tampilan hasil analisa dan perintah yang dikirim ........................................ 63
Gambar 4. 14 Hasil implementasi robot dari tampak depan ............................................... 63
Gambar 4. 15 Hasil implementasi robot dari tampak samping ........................................... 63
Gambar 4. 16 Hasil implementasi posisi kamera pada robot .............................................. 64
Gambar 4. 17 Tampilan posisi robot hasil analisa saat mode bersiap ................................. 65
Gambar 4. 18 Posisi robot di lapangan saat keadaan mode bersiap di titik A..................... 66
Gambar 4. 19 Hasil kamera pada mode bersiap dari titik A ................................................ 66
Gambar 4. 20 Hasil kamera pada mode bersiap dari titik B ................................................ 67
Gambar 4. 21 Posisi robot di lapangan saat keadaan mode bermain. ................................. 70
Gambar 4. 22 Denah sudut yang dikirim ............................................................................. 74
Gambar 4. 23 Tampilan hasil pengolahan sudut kompas. ................................................... 74
Gambar 4. 24 Coach computer lengkap dengan alat pembantunya. ................................... 76
Gambar 4. 25 Robot dan tata letak kamera. ........................................................................ 76
Gambar 4. 26 Listing program pemanggilan library serta inisialisasi variabel. .................. 77
Gambar 4. 27 Listing program pengaturan komunikasi dengan robot. ............................... 78
Gambar 4. 28 Listing program untuk menentukan posisi objek. ......................................... 79
Gambar 4. 29 Listing program untuk merubah format data posisi. ..................................... 79
Gambar 4. 30 Listing program untuk pengaturan sensor kompas. ...................................... 80
Gambar 4. 31 Listing program untuk menjalankan sensor kompas. ................................... 81
Gambar 4. 32 Listing program untuk menentukan arah yang diinginkan. .......................... 82
Gambar 4. 33 Listing program untuk pengaturan servo dalam menggerakan kamera. ....... 82
Gambar 4. 34 Motor servo yang digunakan. ....................................................................... 83
Gambar 4. 35 Listing program untuk tampilan GUI. .......................................................... 84
Gambar 4. 36 Listing program untuk tombol-tombol tampilan GUI. ................................. 85
Gambar 4. 37 Listing program tampilan antarmuka untuk menandai objek. ...................... 86
Gambar 4. 38 Listing program untuk mengubah data menjadi string
untuk dikirim ke robot. ................................................................................ 87
Gambar 4. 39 Listing program untuk menentukan setpoint pada mode bersiap. ................ 88
Gambar 4. 40 Listing program untuk menentukan setpoint pada mode bermain. ............... 89
Gambar 4. 41 Penentuan jarak robot antara lawan atau bola. ............................................. 89
Gambar 4. 42 Listing program untuk merubah ke mode bermain. ...................................... 90
Gambar 4. 43 Listing program untuk menentukan mode berhenti. ..................................... 91
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
DAFTAR TABEL
Tabel 2. 1 spesifikasi dari Logitech HD Webcam C270. ...................................................... 7
Tabel 2. 2 Penggunaan Tipe Data dalam Python .................................................................. 9
Tabel 2. 3 Macam-macam operator dalam Python .............................................................. 10
Tabel 2. 4 Komponen – Komponen Tkinter ........................................................................ 11
Tabel 2. 5 Pergeseran koordinat robot terhadap tiang gawang ke koordinat robot
di lapangan. ......................................................................................................... 27 Tabel 3. 1 Daftar kode untuk informasi dan perintah kepada robot .................................... 48
Tabel 3. 2 Format pengiriman informasi dan perintah kepada robot .................................. 49 Tabel 4. 1 Data dari pengujian............................................................................................. 52
Tabel 4. 2 Data dari pengujian panjang lapangan (nilai y) .................................................. 52
Tabel 4. 3 Perubahan daftar kode untuk informasi dan perintah kepada robot ................... 58
Tabel 4. 4 Format informasi dan perintah yang dikirim oleh sistem. .................................. 58
Tabel 4. 5 Format informasi yang diterima oleh sistem. ..................................................... 58
Tabel 4. 6 Data dari pengujian pada mode bersiap dari titik A ........................................... 67
Tabel 4. 7 Data dari pengujian pada mode bersiap dari titik B ........................................... 68
Tabel 4. 8 Pengukuran nilai posisi y.................................................................................... 68
Tabel 4. 9 Data dari pengujian pada mode bermain ............................................................ 71
Tabel 4. 10 Data Dikirim saat objek kiper lawan di luar jangkauan kamera ...................... 75
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB I
PENDAHULUAN
1.1. Latar Belakang
Bidang ilmu robotika pada masa sekarang ini banyak dimanfaatkan dalam berbagai
aspek kehidupan manusia. Robot saat ini berkembang sangat pesat, sehingga dapat
melakukan berbagai pekerjaan yang menggantikan satu jenis atau lebih pekerjaan yang
biasa dikerjaan oleh manusia. Untuk pekerjaan-pekerjaan tertentu, manusia sudah
menggunakan bagian tertentu dari robot. Dalam melakukan pekerjaan nya, robot
mengandalkan suatu sensor untuk mengikuti suatu pola gerakan suatu objek. Salah satu
sensor yang digunakan untuk indra penglihatan robot adalah kamera. Kamera merupakan
perangkat keras yang berfungsi menangkap gambar dan mengubahnya ke dalam bentuk
citra digital yang dapat dibaca dan diproses oleh komputer. Pada proses tersebut
pengolahan citra digital berperan sehingga robot bisa memproses citra tersebut, mengolah
informasi yang diperlukan dari citra tersebut dan menentukan keputusan dan aksi yang
harus dilakukan robot tersebut.
Perkembangan teknologi kemampuan dari suatu komputer saat ini dan meningkatkan
kebutuhan akan analisa video dilakukan secara otomatis yang diterapkan pada robot
sehingga menambah kemampuan robot dalam mendeteksi dan mengikuti suatu objek
sehingga menghasilkan algoritma object tracking dengan berbagai metode. Penggunaan
tracking objek saat ini merupakan sebuah permasalahan yang penting untuk sejumlah
aplikasi yang bisa menguntungkan dalam penerapannya, terutama dalam bidang robotika
yaitu mobile robot, robot soccer dan masih banyak lagi yang bida diaplikasikan.
Judul tugas akhir ini juga menggunakan object tracking yaitu Pengontrol Robot
Sepak Bola Beroda Dengan Metode Color Tracking, pada penelitian ini akan mendesain
dan mengimplementasikan kemampuan robot dapat mendeteksi dan melakukan tracking
sebuah objek menurut warna. Robot akan melakukan tracking terhadap objek bola dengan
warna tertentu dan menggunakan sebuah lapangan sepakbola dengan ukuran tertentu.
Robot menggunakan Raspberry Pi sebagai pemroses utamanya. Robot juga menggunakan
sistem kendali yang memudahkan pengendali untuk mengoperasikannya. Untuk membuat
robot mampu melakukan itu dibutuhkan sensor dan penerapan metode pengontrol yang
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
khusus. Sehingga robot dapat melakukan pengolahan citra untuk mengenali objek apa yang
harus di ikuti dan menghasilkan keputusan mengikuti objek dari keadaan yang di dapat
dari kamera.
Pada penelitian sebelumnya terdapat beberapa peneliti yang pernah melakukan
percobaan robot seperti ini dengan kamera diletakkan diatas lapangan, pada penelitian ini
akan menggunkan kamera yang terpasang pada robot. Dalam tugas akhir ini, akan
dilakukan analisis terhadap prosedur tracking pada proses pendeteksian dan tracking
melalui pemrosesan data dengan bantuan kamera.
1.2. Tujuan dan Manfaat Penelitian
Tujuan dari penelitian ini adalah:
1. Merancang suatu pengontrol robot sepak bola beroda yang dapat mengenal dan
mendeteksi objek yang menjadi sasarannya.
2. Memprogram Raspberry Pi agar dapat mengoperasikan kamera untuk melakukan object
tracking pada warna secara otomatis.
3. Merancang robot yang dapat dikendalikan secara nirkabel.
Manfaat dari penelitian ini adalah:
1. Untuk Masyarakat:
Menyediakan sebuah edukasi, pedoman, dan rujukan untuk pengembangan pembuatan
pengontrol robot sepakbola beroda bagi masyarakat luas.
2. Untuk Universitas Sanata Dharma:
Menyediakan robot yang nantinya digunakan sebagai bahan acuan, pedoman, dan rujukan
untuk program studi Teknik Elektro Universitas Sanata Dharma dalam mengikuti Kontes
Robot Indonesia dalam bidang Robot Sepak Bola Beroda Indonesia.
1.3. Pembatasan Masalah
Agar Tugas Akhir ini bisa mengarah pada tujuan dan untuk menghindari terlalu
kompleksnya permasalahan yang muncul, maka perlu adanya batasan-batasan masalah
yang sesuai dengan judul dari Tugas Akhir ini. Adapun batasan masalah adalah:
1. Menggunakan Raspberry Pi 3 sebagai komputer mini yang mengolah video sebagai
pengontrol robot untuk mengejar, menghindar lawan, dan menendang bola.
2. Bahasa pemograman yang digunakan adalah bahasa pemograman Python.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
3. Kamera yang digunakan adalah USB Webcam terpasang pada robot.
4. Komunikasi Wireless dengan robot menggunakan Python Socket
5. Bola yang digunakan adalah bola futsal berwarna orange.
6. Gawang berwarna putih berukuran 1 x 2 m.
7. Luas lapangan keseluruhan berukuran sekitar 7m x 5m.
1.4. Metodologi Penelitian
Berdasarkan pada tujuan yang ingin dicapai metode yang digunakan dalam
penyusunan tugas akhir ini adalah:
1. Studi literatur, yaitu dengan cara mendapatkan data dengan membaca buku-buku dan
jurnal-jurnal yang berkaitan dengan permasalahan yang dibahas dalam tugas akhir ini.
2. Perancangan subsistem hardware dan software. Tahap ini bertujuan untuk mencari
bentuk model yang optimal dari sistem yang akan dibuat dengan mempertimbangkan
berbagai faktor-faktor permasalahan dan kebutuhan yang telah ditentukan. Bagian yang
dibuat adalah bagian coach computer yang akan menjadi kontroler bagi robot, pada
coach computer akan terdapat program pengalisis video yang diproses dengan metode
pengolahan citra sehingga didapatkan posisi objek. Lalu hasil dari pengolahan citra
tersebut akan dipakai untuk menghindari lawan saat mengejar atau menggiring bola
menuju gawang. Untuk mengirimkan perintah ke robot menggunakan modem wireless.
Gambar 1. 1 Diagram blok perancangan..
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
3. Pembuatan subsistem harware dan software. Tahap ini bertujuan untuk membuat model
yang sesuai dengan yang telah dirancang pada tahap sebelumnya.
4. Proses pengambilan data dilakukan dua percobaan. Pengambilan data yang pertama
dilakukan dengan meletakan bola pada posisi acak lalu kamera akan mendeteksi objek
bola dan mengirimkan sinyal bahwa objek bola berhasil di deteksi. Pengambilan data
kedua dilakukan dengan percobaan kamera mendeteksi gawang dan mengirim sinyal
bahwa objek gawang berhasil di deteksi. Data yang diambil adalah berupa informasi
atau perintah yang akan dikirim ke robot yaitu nilai pengukuran jarak berupa nilai x dan
y dari objek (gawang, bola, dan tujuan tertentu) dan nilai yang didapatkan dari kompas.
Nilai pengukuran jarak didapatkan dari pengolahan citra video masukan dari USB
Webcam.
5. Analisis dan penyimpulan hasil percobaan. Analisis data yang dilakukan dengan melihat
kemampuan coach computer untuk mengolah masukan video dan dari hasil pengolahan
tersebut sudah mampu mendeteksi objek bola dan gawang. Selain itu juga menganalisis
data yang dikirimkan sudah bisa diterima oleh robot. Dan menyimpulkan berdasarkan
data yang didapat apakah coach computer sudah berhasil mengendalikan robot sepak
bola beroda dengan baik.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
BAB II
DASAR TEORI
2.1. Raspberry Pi
Perangkat Raspberry Pi terlihat pada gambar 2.1 adalah komputer papan tunggal
(single board circuit,SBC) yang seukuran sebuah kartu kredit.Diantara kelebihan
Raspberry Pi dibanding board microcontroler yang lain yaitu Port/koneksi untuk display
berupa TV atau Monitor PC serta koneksi USB untuk Keyboard dan Mouse serta camera
seperti webcam. Raspberry Pi memiliki prosesor, RAM dan port yang bisa ditemukan pada
banyak komputer. Raspberry Pi dapat digunakan untuk mengedit dokumen, memutar video
HD, bermain game, coding dan masih banyak lagi seperti sebuah komputer desktop [2].
Gambar 2. 1 Tampilan Board Rasberry Pi.
2.1.1. Raspberry Pi 3
Raspberry Pi dibuat dengan type yang berbeda – beda. Pada peneltian ini
menggunakan type terbaru dari Raspberry Pi yaitu Raspberry Pi model B. Berikut
merupakan spesifikasi dari Raspberry Pi 3 model B:
1. Quad Core 1.2GHz Broadcom BCM2837 64bit CPU
2. 1GB RAM
3. BCM43438 wireless LAN dan Bluetooth Low Energy (BLE) di board
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
4. GPIO 40 pin
5. 4 slot USB 2
6. 4 keluaran Pole stereo dan port composite video
7. Full size HDMI
8. Port kamera CSI untuk menghubungkan Pi Camera
9. Port DSI untuk menghubungkan layar sentuh yang kompatibel dengan Raspberry Pi
10. Port Micro SD untuk memuat sistem operasi dan menyimpan data
11. Upgrade sumber daya USB Mikro hingga 2,5A
2.1.2. USB Webcam
Webcam merupakan singkatan dari web camera adalah merupakan perangkat yang
berupa sebuah kamera digital yang dihubungkan ke komputer atau laptop. Layaknya
kamera pada umumnya, sebuah webcam dapat mengirimkan gambar-gambar secara real-
time dengan bantuan internet. Ada banyak jenis webcam yang terjual di pasaran. Beberapa
di antaranya dapat dihubungkan ke komputer dengan menggunakan USB port, namun ada
juga yang berjenis wireless [4]. Namun untuk jenis webcam yang akan dipakai
menggunakan USB port.
Pada umumnya webcam dilengkapi dengan sejumlah fitur seperti:
1. Mikrofon
2. Kemampuan untuk digeser dan disesuaikan posisinya (sesuai keinginan pengguna)
3. Sensor yang terpasang secara built-in yang dapat mendeteksi pergerakan yang ada di
depannya
4. Lampu indikator yang ketika menyala berarti kamera tersebut tengah aktif
Gambar 2. 2 Logitech C270 USB Webcam yang digunakan [5].
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
Tabel 2. 1 spesifikasi dari Logitech HD Webcam C270.
Camera Specifications:
Connection Type Corded USB
USB Type High Speed USB 2.0
USB VID_PID VID_046D&PID_081A
Microphone Built-in, Noise Supression
Lens and Sensor Type Plastic
Focus Type Fixed
Field of View (FOV) 60°
Focal Length 4.0 mm
Optical Resolution (True) 1280 x 960 1.2MP
Image Capture (4:3 SD) 320x240, 640x480 1.2 MP, 3.0 MP
Image Capture (16:9 W) 360p, 480p, 720p
Video Capture (4:3 SD) 320x240, 640x480, 800x600
Video Capture (16:9 W) 360p, 480p, 720p,
Frame Rate (max) 30fps @ 640x480
Video Effects (VFX) N/A
Right Light Right Light 2
Buttons Other NA
Indicator Lights (LED) Activity/Power
Privacy Shade No
Clip Size (max) 0 to infinity
Cable Length 5 Feet or 1.5 Meters
Mirip dengan kamera digital pada umumnya, webcam bekerja dengan menangkap
cahaya lewat lensa berukuran kecil di bagian depan dengan bantuan detektor cahaya
mikroskopik yang terpasang pada microchip penerima gambar, umumnya berteknologi
CMOS image sensor. Webcam pada jenis ini menggunakan kabel USB di bagian belakang
berguna untuk menyuplai listrik ke webcam dari komputer dan mengambil informasi
digital yang ditangkap oleh sensor webcam untuk diteruskan ke komputer. Kamera
memiliki lebar lensa sebesar 4mm dengan besar sudut view-nya adalah 60°.
2.1.3. Modul Sensor Kompas HMC5883L
Modul Kompas HMC5883L adalah sebuah modul yang digunakan untuk
menunjukkan arah mata angin digital, atau juga disebut kompas digital. Modul ini
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
menggunakan komponen utama berupa IC HMC5883 yang merupakan IC kompas digital 3
axis yang memiliki interface berupa 2 pin I2C.
HMC5883 memiliki sensor magneto-resistive HMC118X series ber-resolusi tinggi,
ditambah ASIC dengan konten amplification, automatic degaussing strap driver, offset
cancellation dan 12 bit ADC yang memungkinkan keakuratan kompas mencapai 1 sampai
2 °. Modul ini biasa digunakan untuk keperluan sistem navigasi otomatis, mobile phone,
netbook dan perangkat navigasi personal.
Gambar 2. 3 Modul sensor kompas HMC5883L yang digunakan.
Modul ini memiliki 5 pin, diantaranya :
1. VCC (5V)
2. GND
3. SCL
4. SDA
5. DRDY
Berikut adalah beberapa fitur dari Modul Kompas GY-273 :
1. Berbasis sensor magnetoresistive 3 axis.
2. 12-Bit ADC terkopling dengan Low Noise AMR Sensor yang memiliki 2 mili-gauss
3. Field dengan resolusi.kurang lebih 8 Gauss Fields.
4. Tegangan kerja 5V DC.
5. Menggunakan antarmuka I2C
6. Keluaran rata-rata maksimum 160 Hz.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
2.2. Python 2
Python merupakan bahasa pemograman tingkat tinggi ( high level language) yang
dikembangkan oleh Guido van Rosum pada tahun 1998. Python dirancang untuk
memberikan kemudahan yang sangat luar biasa kepada programer baik dari segi efisien
waktu, maupun kemudahan dalam pengembangan program. Python menjadi bahasa resmi
yang terintegrasi dalam Raspberry Pi. Python mampu menangani pemrograman sederhana
hingga pemrograman yang kompleks serta mendukung pemrograman berbasis grafis (GUI
programming)[6].
1. Tipe Data Python
Python sendiri mempunyai tipe data yang cukup unik bila kita bandingkan dengan
bahasa pemrograman yang lain. Berikut adalah tipe data dari bahasa pemrograman
Python[7] :
Tabel 2. 2 Penggunaan Tipe Data dalam Python
Tipe Data Contoh Penjelasan
Boolean True atau False Menyatakan benar(True) yang bernilai 1, atau
salah(False) yang bernilai 0
String "Ayo belajar
Python"
Menyatakan karakter/kalimat bisa berupa huruf
angka, dll (diapit tanda " atau ')
Integer 25 atau 1209 Menyatakan bilangan bulat
Float 3.14 atau 0.99 Menyatakan bilangan yang mempunyai koma
Hexadecimal 9a atau 1d3 Menyatakan bilangan dalam format heksa
(bilangan berbasis 16)
Complex 1 + 5j Menyatakan pasangan angka real dan imajiner
List ['xyz', 786, 2.23] Data untaian yang menyimpan berbagai tipe data
dan isinya bisa diubah-ubah
Tuple ('xyz', 768, 2.23) Data untaian yang menyimpan berbagai tipe data
tapi isinya tidak bisa diubah
Dictionary {'nama':
'adi','id':2}
Data untaian yang menyimpan berbagai tipe data
berupa pasangan penunjuk dan nilai
2. Operator
Operator merupakan simbol – simbol tertentu yang digunakan untuk melakukan operasi
tertentu. Ada beberapa macam operator yang terdapat dalam bahasa pemrogaman
Python yaitu:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
Tabel 2. 3 Macam-macam operator dalam Python
Operator Simbol Contoh
Penjumlahan + c = a + b
Pengurangan - c = a - b
Perkalian * c = a * b
Pembagian / c = a / b
Sisa Bagi % c = a % b
Pemangkatan ** c = a ** b
Lebih Besar > c = a > b
Lebih Kecil < c = a < b
Sama Dengan == c = a == b
Tidak Sama dengan != c = a != b
Lebih Besar Sama dengan >= c = a >= b
Lebih Kecil Sama dengan <= c = a <= b
Logika AND and c = a and b
Logika OR or c = a or b
Negasi/kebalikan not c = not a
AND & c = a & b
OR | c = a | b
XOR ^ c = a ^ b
Negasi/kebalikan ~ c = ~a
Left Shift << c = a << b
Right Shift >> c = a >> b
2.3. Tkinter
Tkinter merupakan modul yang disediakan oleh Python untuk pengembangan
aplikasi GUI. Modul ini merupakan pustaka default Python yang dikembangkan dari
toolkit Tk atau Tcl (Tool Command Language). Untuk membuat aplikasi GUI
menggunakan Tkinter, maka harus mengetahui tahapan-tahapan dalam membangun
aplikasi GUI menggunakan Tkinter.
Gambar 2. 4 Contoh Tkinter.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
Secara umum terdapat 5 tahapan dalam pengembangan aplikasi GUI menggunakan
Tkinter yaitu [6]:
1. Memanggil modul Tkinter melalui perintah import Tkinter atau from Tkinter
import *.
2. Membuat objek jendela root (top-level windowingobject) yang memuat seluruh aplikasi
GUI.
3. Membuat atau menambahkan komponen-komponen GUI dan fungsionalitas ke dalam
objek jendela root.
4. Mengkoneksikan atau menggabungkan komponen-komponen GUI yang sudah
ditambahkan menjadi satu aplikasi.
5. Memanggil loop utama.
Dengan menggunakan Tkinter, dapat ditambahkan beberapa komponen pada aplikasi
yang akan dibuat. Komponen ini bisa berdiri sendiri atau dapat diisi komponen lain
(disebut Container), misalkan tombol, cekbox, dan label. Komponen container merupakan
komponen yang berisi/ditempeli oleh komponen lain seperti frame dan window.
Tabel 2. 4 Komponen – Komponen Tkinter
Komponen Deskripsi
Button Komponen Button berfungsi untuk menampilkan sebuah tombol.
Canvas Komponen Canvas digunakan untuk menggambar bentuk seperti
garis, lingkaran, poligon, dan kotak.
Checkbutton
Komponen Checkbutton berfungsi menampilkan sejumlah pilihan
yang ditandai dengan tanda „centang‟. Pengguna aplikasi dapat
memilih lebih dari satu pilihan.
Entry Komponen Entry berfungsi menampilkan kotak teks satu-baris
untuk menerima masukan dari pengguna.
Frame Komponen Frame berfungsi sebagai kontainer bagi komponen lain.
Label Komponen Label berfungsi memberikan keterangan untuk
komponen lain. Komponen ini juga dapat diisi gambar.
Listbox Komponen Listbox berfungsi menyediakan daftar pilihan untuk
pengguna.
Menubutton Komponen Menubutton berfungsi menampilkan menu.
Menu Komponen Menu berfungsi memberikan berbagai perintah kepada
pengguna. Perintah-perintah ini juga tercantum dalam Menubutton.
Message Komponen Message berfungsi menampilkan teks yang terdiri dari
sejumlah baris untuk menerima beberapa nilai dari pengguna.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
Radiobutton Komponen Radiobutton berfungsi menampilkan sejumlah pilihan
dalam bentuk tombol radio.
Scale Komponen Scale berfungsi menampilkan skala geser.
Scrollbar Komponen Scrollbar berguna untuk menambahkan fungsi geser
(scroll) pada beberapa komponen, seperti komponen Listbox.
Text Komponen Text berfungsi menampilkan teks dalam multi baris.
Toplevel Komponen Toplevel digunakan untuk membuat sebuah kontainer
window yang terpisah.
Untuk menjalankan aplikasi yang sudah di desain dengan beberapa komponen di
dalamnya, maka perlu mengeksekusi program tersebut. Ketika sebuah program di
eksekusi, maka program tersebut akan mengalami perputaran tak berhingga (infinite loop).
Kode untuk memasukan program yang sudah dibuat dalam kondisi perputaran ini yaitu
Tkinter.mainloop()
Jika menggunakan from-import untuk mengambil semua fungsi pada Tkinter, cukup
menuliskan
Root.mainloop()
Dengan root pada kode diatas mengacu pada window utama (toplevel). Berikut ini
merupakan sebuah listing program untuk menampilkan sebuah window.
Selain itu dapat menuliskan kode diatas seperti ini,
Tampilan yang dihasilkan dari program diatas seperti gambar 2.5 berikut ini,
1
2
3
4
# file: cobaTk.py
import Tkinter
root = Tkinter.Tk()
# Kode untuk menambahkan komponen
root.mainloop()
1
2
3
4
5
# file: cobaTk.py
From Tkinter import *
root = Tk()
# Kode untuk menambahkan komponen
root.mainloop()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
Gambar 2. 5 Tampilan Window Tkinter.
2.4. Pengolahan Citra Digital (Image Processing)
Pada indera penglihatan manusia dapat dengan mudah beradaptasi dan
menginterprestasikan sebuah objek untuk mendapatkan informasi, dimana sebuah objek
dapat mengalami perubahan baik karena perbedaan siang dan malam atau karena pengaruh
cahaya dan bayangan. Citra dapat di definisikan sebagai fungsi dari dua variable misalnya
f(x,y) dimana f sendiri adalah sebagai amplitudo (misal kecerahan) citra pada
koordinat (x,y)[8].
Gambar 2. 6 Citra terbentuk array 2 dimensi.
Pengolahan citra adalah cabang ilmu yang informatika untuk memperbaiki kualitas
citra agar kualitasnya lebih baik atau lebih mudah diinterpretasi oleh manusia maupun
komputer. Input dari program pengolahan citra adalah citra dan keluarannya pun citra pula.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
Sedangkan digital disini mempunyai maksud bahwa pengolahan citra atau gambar
dilakukan menggunakan komputer.
Dewasa ini pengolahan citra digital digunakan dalam berbagai bidang untuk
mempermudah manusia dalam melakukan analisis dan pekerjaan. Untuk pekerjaan-
pekerjaan tertentu , manusia sudah menggunakan bagian tertentu dari robot. Robot ini
bekerja mengandalkan sensor. Salah satu sensor yang dapat digunakan robot adalah
kamera. Disitulah Pengolahan Citra Digital berperan sehingga robot bisa memproses citra
tersebut, mengekstrak informasi yang diperlukan dari citra tersebut dan menetukan
keputusan dan aksi yang harus dilakukan robot tersebut.
Sebuah citra digital dapat diwakili oleh sebuah matriks dua dimensi f(x,y) yang
terdiri dari M kolom dan N baris, dimana perpotongan antara kolom dan baris disebut
piksel (pixel = picture element) atau element terkecil dari sebuah citra. Berikut ini adalah
gambaran matriks dari citra digital:
Dimana indeks baris (x) dan indeks kolom (y) menyatakan suatu koordinat titik pada citra,
sedangkan f (x,y), merupakan intensitas (° keabuan) pada titik (x,y).Sehingga suatu citra f
(x,y) dalam fungsi matematis dapat ditulis sebagai berikut:
0 = x = M-1
0 = x = N-1
0 = f (x,y) = G-1
dengan:
M = jumlah piksel baris (row) pada array citra
N = jumlah piksel kolom (column) pada array citra
G = nilai skala keabuan (graylevel)
(2.1)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
Gambar 2. 7 Representasi citra digital dalam 2 dimensi.
2.4.1. OpenCV
OpenCv merupakan sebuah library (perpustakaan) yang digunakan untuk mengolah
gambar dan video hingga mampu mengestrak informasi didalamnya. OpenCV dapat
berjalan di berbagai bahasa pemograman, seperti C, C++, JAVA, Python, dan juga support
diberbagai platform seperti Windows, Linux, Mac OS, iOS dan Android. Disinilah ada
keterkaitan antara OpenCV dan Python. Kemampuan Python untuk mengolah citra
sangatlah terbatas, untuk itu Python perlu import library dari OpenCV.
Gambar 2. 8 contoh library pada OpenCV.
2.4.2. Ruang Warna HSV
Ruang wana HSV (Hue, Saturation, Value) merupakan model warna yang lebih baik
digunakan untuk berbagai keperluan pengolahan citra dan computer vision. Misalnya pada
object tracking berdasarkan warna, segmentasi citras dsb. Hue (H) merupakan suatu nilai
yang mempresentasikan spektrum warna dari cahaya tampak (merah, jingga, kuning, biru,
dan ungu). Saturation (S) merupakan nilai yang menunjukkan tingkat kejenuhan atau
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
kemurnian dari suatu warna. Semakin besar nilai saturasi maka semakin murni warna yang
dihasilkan. Sedangkan Value (V) dapat didefinisikan sebagai nilai yang menunjukkan
tingkat kecerahan warna, nilai nya berkisar 0-100 % apabila nilainya 0 maka akan menjadi
hitam, semakin besar nilai maka semakin cerah dan muncul variasi-variasi baru dari warna
tersebut [10]. Ruang warna HSV diperoleh dari ruang warna RGB melalui persamaan
berikut.
( ) ( )
{
(
)
(
)
(
) }
{
(
)
}
Dengan R = Red, G = Green, B = Blue. Ruang warna HSV diilustrasikan pada gambar di
bawah ini:
(2.2)
(2.3)
(2.4)
(2.5)
(2.6)
Gambar 2. 9 Model ruang warna RGB dan HSV [9]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
Cara yang dilakukan pada color filtering ialah dengan menentukan batas atas serta
batas bawah nilai dari sebuah piksel pada gambar, ketika dalam suatu citra terdapat piksel
yang memiliki nilai intensitas warna diantara batas atas dan bawah yang dikenhendaki
maka piksel tersebut akan diloloskan. Karena model warna HSV (Hue Saturation Value)
ini sendiri merupakan model warna yang diturunkan dari model warna RGB (Red Green
Blue) maka untuk mendapatkan hasil warna HSV (Hue Saturation Value) ini, harus
melakukan proses konversi warna dari RGB (Red Green Blue) ke HSV (Hue Saturation
Value).
Pada proses thresholding, piksel-piksel objek dan background dikelompokkan
menjadi dua mode yang dominan. Cara untuk mengestrak objek dari background adalah
dengan memilih nilai threshold T yang memisahkan dua mode tersebut. Nilai T didapat
dari proses color filtering menggunakan ruang warna HSV. Kemudian untuk titik (x,y)
yang memenuhi f(x,y) > T disebut titik objek, selain itu disebut titik background.
Gambar 2. 10 Warna-warna pada Pemodelan RGB yang digunakan.
2.5. Pelacakan Objek
Tujuan utama dari pelacakan objek adalah mendapatkan lintasan yang dilalui objek
pada sebuah video. Ada banyak metode pelacakan objek yang bisa digunakan. Pelacakan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
objek berdasarkan warna bisa sangat sederhana. Misalnya saja menggunakan rentang
warna. Sederhannya objek didefinisikan dengan rentang H sekian, S sekian dan V sekian.
Warna adalah fitur terpenting dari sebuah objek. Ada banyak kasus dimana pelacakan
objek cukup menggunakan warna saja. Misalnya saja pelacakan bola warna oranye di
lapangan bewarna hijau. Warna bola berbeda dengan lapangan (hijau), warna garis
lapangan (putih), warna gawang (biru), dan pembatas lapangan (putih). Pada kasus dimana
objek memiliki warna yang jauh berbeda dengan warna latar, maka fitur warna adalah yang
terbaik.
Kelemahan dari fitur warna adalah saat latar memiliki warna yang mirip dengan
objek yang ingin dilacak. Oleh karena itu, berdasarkan kasus diatas ketika ada penonton
yang memakai pakaian berwarna oranye dan terlihat oleh kamera yang terpasang pada
robot, maka algoritma pelacakan sering terganggu. Untuk menangani hal ini, algoritma
pelacakan bisa disempurnakan dengan membatasi ukuran dan bentuk objek. Artinya jika
objek oranye berukuram terlalu besar atau bentuknya bukan lingkaran, maka objek oranye
itu bukanlah bola.
Suatu objek dapat direpresentasikan dalam berbagai bentuk yang berbeda. Selain
berdasarkan warna bisa jugan menggunakan kontur sebagai representasi objek. Kontur
adalah rangkaian piksel terluar dari sebuah objek. Untuk membedakan antara objek yang
menjadi target dengan objek lainnya dilakukan penandaan. Objek bisa ditandai dengan titik
tengah dari objek tersebut. Biasanya digunakan untuk objek yang ukurannya sangat kecil.
Berikut ini dibahas tentang sistem deteksi yang memanfaatkan pengenalan warna:
a. Color Filtering
Color Filtering adalah suatu teknik pengolahan citra yang yang dipakai untuk
memanipulasi suatu citra berdasarkan warna spesifik. Cara kerjanya adalah dengan
membandingkan komponen warna setiap piksel citra dengan warna spesifik. Warna yang
digunakan dalam Color Filtering dapat direpresentasikan dalam berbagai ruang warna,
antara lain RGB (Red, Green, Blue), HSV (Hue, Saturation, Value), YCbCr, dsb. HSV
merupakan ruang warna yang sangat cocok untuk mengidentifikasi warna-warna dasar,
dimana warna dasar ini digunakan dalam penelitian sebagai warna identifikasi robot.
Selain itu, HSV menoleransi terhadap perubahan intensitas cahaya. Inilah yang menjadi
keunggulan HSV dibandingkan dengan ruang warna lainnya. Untuk membentuk segmen
sesuai dengan warna yang diinginkan maka ditentukan nilai toleransi pada setiap dimensi
warna, kemudian nilai toleransi tersebut digunakan dalam perhitungan proses threshold
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
b. Operasi Thresholding
Thresholding adalah proses pengubahan nilai pixel pada citra yang memenuhi syarat
nilai ambang atau berada dalam rentang nilai yang diinginkan, menjadi nilai tertentu yang
dikehendaki. Nilai ambang yang digunakan dalam sistem ini adalah hasil color filtering
citra RGB. Hasil dari proses threshold tersebut akan membentuk segmen area dengan
warna sesuai toeransi yang diinginkan.
c. Kontur (Contours)
Kontur adalah keadaan yang ditimbulkan oleh perubahan intensitas pada pixel-pixel
yang bertetangga atau bersebelahan.Keadaan ini terjadi karena adanya perubahan intensitas
inilah mata kita mampu mendeteksi tepi-tepi (edge) objek di dalam citra.
Secara garis besar, berikut ini merupakan proses mendeteksi objek berdasarkan
segmentasi warna:
1) Menetukan citra RGB yang menjadi objek deteksi, nilai warna HSV yang menjadi
acuan dan nilai toleransi HSV yang digunakan.
2) Melakukan filter warna pada citra berdasarkan nilai acuan (T) dan nilai toleransi (tol).
Dengan x sebagai warna HSV pada piksel yang ada maka warna yang tidak termasuk
dalam rentang T-tol < x < T+tol diberi warna hitam.
3) Konversi citra RGB ke HSV.
4) Mendeteksi tepi (edge), tampilkan hasil filter.
2.6. Pembentukan Gambar pada Kamera Lubang Jarum
Pembentukan gambar pada kamera adalah sebuah proses yang memetakan objek
pada bidang 3 dimensi ke dalam bidang 2 dimensi, yang disebut bidang gambar. Pada
umumnya fungsi ini untuk memodelkan objek di dunia nyata ke model pada kamera. Pada
kamera terdapat efek perspektif yang membuat benda yang terletak jauh dari kamera akan
tampak lebih kecil daripada benda yang terletak dekat dengan kamera. Kamera lubang
jarum (pinhole camera) adalah basis studi gambar dan citra kamera [11]. Proses
pembentukan gambar pada kamera lubang jarum ditunjukkan pada Gambar 2.11.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
Gambar 2. 11 Proses pembentukan gambar pada kamera lubang jarum[11].
2.6.1. Proyeksi Sebuah Titik pada Kamera
Gambar 2. 12 Representasi matematika dari pembentukan sebuah titik pada kamera.
Pada gambar 2.12, bidang gambar Z=f adalah bidang gambar pada kamera terletak
diantara pusat proyeksi dan objek sebagai tempat terbentuknya gambar dari objek yang
ditangkap. Misal terdapat titik Q yang terletak pada koordinat Q = (X,Y,Z). Titik ini akan
diproyeksi ke bidang gambar Z=f pada titik q = (x,y,z). Proyeksi titik q dapat dipisahkan
menjadi 2 bagian, yaitu proyeksi titik q pada bidang XZ yang ditunjukkan pada Gambar
2.13, dan pada bidang YZ yang ditunjukkan pada Gambar 2.15.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
Gambar 2. 13 Representasi matematika dari pembentukan gambar pada kamera pada
bidang XZ.
Gambar 2. 14 Representasi kesebangunan antara titik Q, bidang gambar, dan pusat
proyeksi pada bidang XZ.
Pada Gambar 2.14, besar nya x, yaitu koordinat proyeksi titik Q pada bidang gambar Z=f:
.........................................................................................................(2.7)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
Gambar 2. 15 Representasi matematika dari pembentukan gambar pada kamera pada
bidang YZ.
Gambar 2. 16 Representasi kesebangunan antara titik Q, bidang gambar, dan pusat
proyeksi pada bidang YZ.
Pada Gambar 2.16, besar nya y, yaitu koordinat proyeksi titk Q pada bidang gambar Z=f:
.........................................................................................................(2.8)
Jadi titik Q yang memiliki koordinat (X,Y,Z) akan diproyeksikan pada bidang gambar pada
koordinat (x,y,f) atau (f X/Z, f Y/Z, f). Karena posisi gambar yang terbentuk akan selalu
berada pada bidang Z=f, maka koordinat gambar yang terbentuk pada bidang gambar dapat
ditulis sebagai q = x,y atau (f X/Z, f Y/Z).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
2.6.2. Proyeksi Sebuah Garis pada Kamera
Gambar 2. 17 Representasi matematika dari pembentukan sebuah garis yang melewati titik
Q1 dan Q2 pada kamera[12].
Pada Gambar 2.17, sebuah garis yang memiliki panjang Dob serta menghubungkan
titik Q1 dan Q2 akan diproyeksikan ke bidang gambar kamera. Titik Q1 yang memiliki
koordinat (X1, Y1, Z1) akan memiliki proyeksi q1 yang terletak pada koordinat (x1, y1).
Sedangkan titik Q2 memiliki koordinat (X2, Y2, Z2) akan memiliki proyeksi q2 yang terletak
pada koordinat (x2, y2).
Panjang garis pada dunia nyata adalah Dob yang dapat dihitung dengan rumus :
Dob = √( ) ( ) ( )
Jika garis sejajar dengan bidang gambar kamera, maka Z2 = Z1, sehingga rumus Dob
menjadi:
Dob = √( ) ( )
Proyeksi garis yang memiliki panjang Dob pada bidang gambar adalah garis yang memiliki
panjang dob dapat dihitung dengan rumus:
dob = √( ) ( )
Jika dijabarkan, dob adalah
dob = √( ) ( )
dob = √(
) (
) (menggunakan persamaan (2.7) dan (2.8))
dob = √( ( )) (
( )) (Z2= Z1= Z)
dob = √(
(( ) ( )
dob = (
) √( ) ( )
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
dob = (
)( Dob)
dob =
.........................................................................................................(2.9)
Jadi panjang proyeksi sebuah garis yangs sejajar dengan bidang gambar adalah dob =
dimana adalah fokus kamera, Dob adalah panjang garis asli, dan Z adalah jarak garis dan
lubang kamera.
2.6.3. Perhitungan Jarak Robot dan Gawang
Tiang gawang yang berbentuk silinder akan terlihat berbentuk persegi panjang pada
bidang gambar kamera. Setelah sudah berhasil mendeteksi gawang lawan maka pergu
menentukan jarak antara kamera dan gawang agar posisi menendang bola yang baik. Lebar
tiang gawang akan digunakan untuk mencari jarak antara robot dan tiang gawang.
Perhitungan jarak robot dan gawang dilakukan dengan menggunakan persamaan
(2.9) pada Bab 2.6.2 Gambar menunjukkan lebar tiang gawang hasil proyeksi pada bidang
gambar kamera yang dapat digambarkan seperti sebuah garis dengan lebar z=dtg cm. Jika
lebar tiang gawang asli adalah =Dtg cm, dan fokus kamera adalah f cm, maka dapat
dicari dob=jrg yaitu jarak robot ke gawang dengan persamaan :
jrg = f
.........................................................................................................(2.10)
dimana
jrg = jarak tiang gawang dan robot (cm)
f = fokus kamera (cm)
Dtg = lebar tiang gawang asli (cm)
dtg = lebar tiang gawang hasil proyeksi dalam sentimeter (cm)
Pendeteksian tiang gawang pada mendeteksi lebar tiang gawang dalam satuan pixel,
sedang kan persamaan untuk menghitung jarak robot dan tiang gawang (persamaan 2.10)
menggunakan lebar tiang gawang dalam satuan sentimeter. Oleh karena itu dibutuhkan
penkonversian nilai antara sentimeter dan pixel sebagai satuan lebar tiang gawang yang
terdeteksi. Resolusi kamera adalah 640 x 480 pixel. Analisa lebar tiang gawang dilakukan
secara landscape, sehingga lebar resolusi layar yang digunakan adalah 640 pixel. Sebuah
objek yang terdeteksi pada layar dengan panjang dob akan menggunakan Pob pixel dengan
rumus:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
Pob = R
......................................................................................................(2.11)
dengan:
Pob = lebar proyeksi sebuah objek di bidang gambar kamera (pixel)
R = resolusi (pixel)
= lebar benda yang terdeteksi pada layar (cm)
L = lebar layar (cm)
Jarak robot dan tiang gawang (jrg) pada persaman (2.10) dapat dicari dengan
menggunakan persamaan (2.11) dengan pob= ptg dan = karena objek yang dideteksi
adalah tiang gawang.
jrg = f
, sedangkan ptg = R
, maka :
jrg = f
jrg =
........................................................................................................(2.12)
Fokus kamera yang digunakan (f) adalah 4 mm, lebar tiang gawang yang asli
(Dtg) adalah 200cm, Resolusi layar (R) adalah 640 pixel, dan lebar layar (L) adalah 19,2
cm . Dari rumus jrg =
adalah suatu kosntanta yang memiliki nilai 2666,67, sehingga
jrg dapat dicari dengan rumus:
jrg = f
...................................................................................................(2.13)
dengan:
jrg = jarak antara robot dan tiang gawang (cm)
Ptg = lebar proyeksi tiang gawang di bidang gambar kamera (pixel)
Gambar 2. 18 Pendeteksian objek gawang menunjukkan nilai pixel yang berhubungan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
Keterangan gambar 2.18:
(1) Ptg = 100 pixel ; = 26,67 cm
(2) Ptg = 50 pixel ; = 53,33 cm
2.6.4. Penentuan Posisi Robot di Lapangan
Desain sistem koordinat lapangan ditunjukkan pada Gambar 2.19. Berdasarkan
dengan ukuran yang sudah ditentukan maka koordinat (0,0) berada ditengah lapangan
dengan sumbu X positif menunjukkan daerah kanan lapangan, sedangkan sumbu X negatif
menunjukkan daerah kiri lapangan. Sumbu Y positif menunjukkan daerah depan
penyerangan, sedangkan sumbu Y negatif menunjukkan daerah belakang penyerangan.
Gambar 2. 19 Desain sistem koordinat lapangan.
Setelah mendapatkan antara jarak robot dan tiang gawang yaitu jrg dan sudut putar
robot dan kompas robot (a), maka didapat posisi robot terhadap salah satu tiang gawang
dengan koordinat x dan y dapat dicari menggunakan sudut putar robot dan kompas robot
seperti pada Gambar 3.8. Koordinat dapat diperoleh dari rumus:
xrg = jrg sin(α)......................................................................................................(2.14)
yrg = jrg cos(α).....................................................................................................(2.15)
dimana
α = sudut putar robot
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
jrg = jarak antara robot dan tiang gawang
90 adalah posisi robot saat menghadap lurus ke depan.
Gambar 2. 20 Penentuan koordinat terhadap salah satu tiang.
Koordinat robot terhadap koordinat lapangan dapat dicari dengan melakukan
pergeseran koordinat xrg dan yrg . Tabel berikut merupakan pergeseran koordinat robot
terhadap tiang gawang ke koordinat robot terhadap lapangan.
Tabel 2. 5 Pergeseran koordinat robot terhadap tiang gawang ke koordinat robot di
lapangan.
Jenis tiang gawang Rumus koordinat robot
terhadap lapangan
Gawang sendiri
Tiang kanan xrh = xrg + 150
yrh = 0 - yrg
Tiang kiri xrh = xrg + 350
yrh = 0 - yrg
Gawang musuh
Tiang kanan xrh = xrg + 350
yrh = 700 - yrg
Tiang kiri xrh = xrg + 150
yrh = 700 - yrg
2.7. Python Socket
Python hanya menggunakan dua domain komunikasi, yaitu UNIX(AF_UNIX) dan
internet (AF_INET) domain. Pengalamatan pada UNIX domain direpresentasikan sebagai
string, dinamakan dalam lokal path: contoh /tmp/sock [13]. Sedangkan pengalamatan
Internet domain direpresentasikan sebagai tuple (host,port), dimana host merupakan string
yang merepresentasikan nama host internet yang sah (hostname), misalnya:
darkstar.drslump.net atau berupa IP address dalam notasi dotted decimal, misalnya :
192.168.1.1. Dan port merupakan nomor port yang sah antara 1 sampai 65535. Tetapi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
dalam keluarga UNIX penggunaan port di bawah 1024 memerlukan akses root privileges.
Sebelum menggunakan modul socket dalam Python, maka modul socket harus terlebih
dahulu diimport. Berikut contohnya:
Untuk proto bersifat opsional dan biasanya bernilai 0. Untuk membuat socket stream
(TCP) internet domain digunakan statement berikut :
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Jika SOCK_STREAM diganti dengan SOCK_DGRAM berarti membuat socket
datagram (UDP). Kemudian untuk membuat socket stream dalam UNIX domain :
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
Ketika proses lain ingin berhubungan dengan server atau menggunakan layanan
server, maka proses harus terhubung dengan alamat dan nomor port tertentu yang
dispesifikasikan oleh server. Ini dilakukan dengan memanggil metode socket
connect(address), dimana address adalah sebuah tuple (host, port) untuk Internet domain
dan pathname untuk UNIX domain. Berikut contohnya :
sock.connect (('localhost',12345)) atau
sock.connect (('192.168.1.1',12345))
Sedangkan untuk UNIX domain,
sock.connect ('/tmp/sock') #Koneksi ke file socket
Setelah socket berhasil dibuat, maka Python akan mengembalikan sebuah socket
descriptor. Sebelum digunakan, maka socket harus diikatkan (binding) ke alamat dan
nomor port yang sesuai agar proses lain dapat ditujukan ke socket. Berikut ini contoh
untuk binding socket pada internet domain :
sock.bind(('localhost',12345)) atau
sock.bind(('192.168.1.1',12345))
Sedangkan untuk mengikatkan (binding) socket pada UNIX domain digunakan :
sock.bind('/tmp/sock') #/tmp/sock merupakan file socket
Perintah di atas akan membuat file pipe/tmp/sock yang dapat digunakan untuk
berkomunikasi antara server dan client. Setelah socket diikatkan (bind), langkah
#!/usr/bin/env python
#Mengimport modul socket
import socket
# Mengimport seluruh konstanta, data, dan method
from socket import *
# Mengimport konstanta
from socket import AF_INET, SOCK_STREAM
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
selanjutnya adalah memanggil method listen(queue). Perintah ini menginstruksikan socket
untuk listen pada port-port yang telah diikatkan (bind), dan queue merupakan sebuah
integer yang merepresentasikan maksimum antrian koneksi, berikut contoh penggunaannya
sock.listen(5) #Mendengarkan koneksi dengan maksimum
antrian sebanyak 5
Untuk menerima koneksi dari permintaan (request) client pada koneksi yang
menggunakan socket stream (TCP). Method yang digunakan accept(), berikut contoh
penggunaannya :
sock.accept() #Menerima koneksi
Statement di atas akan mengembalikan sebuah tuple (conn, address) dimana conn
adalah objek socket baru yang berguna untuk mengirim dan menerima data dari koneksi,
dan address merupakan alamat dari client.
Menerima koneksi tidak akan berarti tanpa digunakan untuk mengirim dan menerima
data. Oleh karena itu digunakan method send(string) untuk socket stream (TCP) dan
sendto(string,address) untuk socket datagram (UDP). Berikut ini penggunaannya untuk
socket stream.
sock.send('ini pesan dari server')
Sedangkan untuk socket datagram digunakan :
sock.sendto('pesan dari server' , ('192.168.1.1' ,
12345))
Untuk menerima data yang dikirim dari server digunakan method recv(bufsize) untuk
socket stream dan recvfrom (bufsize). Berikut ini penggunaannya untuk socket stream :
sock.recv(1024) #Menerima data sebesar 1024 byte
Statement di atas akan mengembalikan data yang dikirimkan oleh client. Sedangkan
untuk socket datagram :
sock.recvfrom(1024) #Menerima data sebesar 1024 byte
Statement di atas akan mengembalikan dua buah field yaitu data, address.
Untuk menutup koneksi yang telah dibuat digunakan method close(s). Berikut
penggunaanya:
sock.close() #Menutup koneksi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
BAB III
RANCANGAN PENELITIAN
3.1. Proses Kerja Sistem
Dalam perancangan pengontrol robot sepakbola beroda dengan metode color
tracking terdapat 2 tahap perancangan yaitu perancangan perangkat keras dan perangkat
lunak. Perancangam alat ini terdiri dari beberapa bagian utama, yaitu Raspberry Pi 3,
Kamera, Monitor, Keyboard, Mouse, serta modem wireless. Pada robot terpasang USB
Webcam yang berfungsi sebagai pengambilan gambar secara terus menerus secara secara
streaming. Pada penelitian ini Raspberry Pi sebagai komputer akan memproses gambar
dengan library Open CV menggunakan bahasa pemograman python. Dan informasi yang
telah diterima robot akan mengikuti pergerakan posisi bola. Raspberry Pi menjadi sebuah
komputer serta microcontroller yang dapat melakukan proses pengolahan citra sekaligus
dapat mengendalikan rangkaian elektronik lain untuk melakukan pergerakan pada robot.
Gambar 3. 1 Blok diagram cara kerja sistem.
Penjelasan blok diagram gambar 3.1. adalah sebagai berikut :
1. Bagian Kontrol Utama
Kontrol utama robot menggunakan Coach Computer, yaitu Raspberry Pi (R3) yang
dilengkapi dengan monitor, keyboard, mouse yang bertugas mengolah perintah dan sudah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
ditanamkan algoritma pergerakan robot. Tugas utama dari Raspberry Pi ini memproses
inputan video kamera yang diletakkan di kepala robot sebagai mata dan mengunci target
sehingga didapatkan nilai posisi x dan y dari bola, lawan, dan gawang yang dituju..
Kemudian menentukan pergerakan robot berdasarkan posisi bola terhadap robot dan
mengirimkan perintah berupa data ke robot melalui komunikasi wireless.
2. Bagian Komunikasi Robot
Pemrosesan data komunikasi menggunakan tiga Raspberry Pi yang dikirim melalui
Python Socket. Dengan R1 (USB Webcam) yang bertugas mengirimkan data inputan video
ke R3 (Coach Computer). Lalu R3 (Coach Computer) bertugas mengirimkan data ke R2
(pergerakan robot) dan R3 (Coach Computer) menerima data dari R2 (pergerakan robot)
melalui koneksi wireless yang kemudian dikembalikan ke R3 (Coach Computer) dengan
menggunakan Python Socket.
Pemrosesan inputan video menggunakan image processing dengan bantuan library
OpenCV dari Python. Dengan proses tersebut maka ditemukan objek yang dapat dibedakan
melalui warnanya masing-masing. Setelah mendapatkan warna dari masing-masing objek
dilakukan color filtering menggunakan OpenCV sehingga didapatkan nilai x dan y dari
masing-masing objek dengan menggunakan dasar teori persamaan 2.1.
Dengan menggunakan nilai x dan y yang sudah didapat perintah dapat dikirim oleh
R3 (Coach Computer) melalui modem wireless dengan menggunakan protokol Python
Socket ke R2 (pergerakan robot) sehingga dapat digunakan untuk mengontrol robot untuk
mengejar, menggiring bola menuju gawang yang dituju. Setiap perintah nantinya akan
diberikan kode-kode unik yang hanya bisa dibaca oleh robot.
3.2. Perancangan Perangkat Keras
Perancangan perangkat keras sistem terdiri dari desain Coach Computer sebagai
pengontrol robot sepak bola beroda serta tata letak dari USB Webcam.
3.2.1. Desain Coach Computer Pengontrol Robot
Pada gambar 3.1, perancangan coach computer pengontrol robot sepak bola beroda,
berupa Raspberry Pi 3 yang dilengkapi dengan case khusus untuk Raspberry Pi 3 dan
dipasang Heatsink dan kipas sehingga coach computer bisa digunakan untuk durasi yang
lama. Untuk catu daya menggunakan PSU Adapter 5V 3A, dengan daya tersebut
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
Raspberry Pi 3 tidak akan kekurangan daya ketika ditambahkan dengan USB Webcam.
Untuk pembuatan program utama maka ditambahkan monitor, keyboard, dan mouse.
Coach computer akan dilengkapi dengan USB Webcam sebagai pengambil citra video saat
uji coba di lapangan yang akan dianalisis oleh program utama sebagai inputan. Selain itu
untuk mengirimkan perintah ke robot akan dilengkapi modem wireless sebagai penyedia
jaringan internet untuk mengirim data.
3.2.2. Posisi Kamera Pada Robot
Pada perancangan posisi kamera sebagai pendeteksi bola, lawan, dan gawang yang
dituju menggunakan USB Webcam yang akan diletakkan pada robot dengan tinggi 40 – 60
cm sesuai dengan keadaan pada saat bermain. Untuk kemiringan kamera akan disesuaikan
agar dengan kemiringan yang tepat maka kamera dapat mengambil video dari seluruh
lapangan.
Gambar 3. 2 Tampilan Robot.
Gambar 3. 4 Tampilan Robot
dari Depan.
Gambar 3. 3 Tampilan Robot
dari Samping.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
Untuk menentukan spesifikasi kamera dengan posisi kemiringan yang tepat dapat
dimisalkan nilai ketinggian 50 cm, lalu menghitung besar sudut yang diperlukan untuk
mencakup seluruh lapangan menggunakan aturan segitiga. Pada gambar 3.5 menunjukkan
jarak antara robot dan bola (jbr) diperoleh dari rumus aturan segitiga siku-siku adalah:
jbr =
( ) , dengan hr (tinggi robot) adalah 50 cm.
jbr =
( )
dengan :
jbr = jarak bola dan robot (cm)
= tinggi robot (cm) = (50 cm)
y = sudut kamera (°)
Gambar 3. 5 Penentuan posisi kamera dengan jarak robot terhadap bola.
Misal robot akan memasuki area lapangan dari sisi luar disebelah salah satu
gawang dan posisi bola di tengah lapangan maka dibutuhkan posisi kamera agar mencakup
setengah lapangan dengan besar sudut view awal kamera adalah 90 , tinggi robot 50 cm,
dan jarak antara bola dan robot saat ini 450 cm , maka berdasarkan aturan segitiga siku-
siku besar y adalah
= 83,65
Maka besar sudut view yang diperlukan saat itu sebesar: 83,65 agar area yang
ditangkap oleh kamera efisien.
Pada gambar 3.6 adalah gambar lapangan yang digunakan untuk uji coba robot,
dengan perancangan sebagai berikut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
Gambar 3. 6 Spesifikasi lapangan secara keseluruhan.
1. Luas lapangan keseluruhan sekitar 7m x 5m.
2. Gawang berukuran lebar 2m dan tinggi 1m diukur dari sisi dalam tiang.
3. Warna gawang adalah putih.
3.3. Perancangan Perangkat Lunak
3.3.1. Diagram Alir Utama
Pada perancangan perangkat lunak akan dibuat program utama yang berisi
program untuk menampilkan interface untuk menentukan mode permainan, program
pengolah citra yang diberikan oleh USB Webcam agar didapatkan koordinat dari setiap
objek, serta program untuk mengontrol robot mengejar atau menggiring bola untuk
menghindari lawan.
Gambar 3. 7 Kerangka interface program utama.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
Gambar 3. 8 Diagram alir utama.
Mode bersiap adalah mode yang mengatur robot bergerak ketengah lapangan untuk
bersiap dalam permainan seperti keadaan kick off pada permainan sepak bola.
Mode berhenti adalah mode yang mengatur agar robot menghentikan proses yang
sedang berlangsung. mode ini digunakan ketika waktu permainan telah selesai. Dengan
cara mengirim perintah berhenti sehingga kondisi pergerakan robot menjadi LOW .
Mode bermain adalah mode yang mengatur robot untuk mengejar dan menggiring
bola menuju gawang lalu menembak bola tersebut kedalam gawang. Pada saat dalam mode
bermain pertama robot akan mendeteksi apakah bola dalam penguasaan lawan atau tidak,
jika bola dalam penguasaan lawan maka robot akan melakukan tindakan pengontrolan
bertahan agar dapat merebut bola, jika bola dalam keadaan bebas maka robot akan
melakukan tindakan pengontrolan menyerang. Tindakan pengontrolan bertahan adalah
perintah untuk membuat robot berada di depan lawan dan bersiap untuk merebut bola, jika
bola sudah direbut maka robot akan melakukan tindakan pengontrolan menyerang yaitu
membawa bola menuju gawang dan berusaha membuat goal (mencetak angka).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
Dari masing-masing mode yang sudah dibuat terdapat berbagai macam pengontrolan
pergerakan dengan menggunakan koordinat x dan y dari masing-masing objek yang diolah
dengan analisis dari pengolahan citra digital dari kamera dan pengolahan digital dari sensor
kompas. Nilai x dan y dari masing-masing objek yag didapatkan akan dijadikan perintah
yaitu berupa setpoint yang diinginkan dan informasi yaitu berupa letak posisi robot
sekarang dan posisi lawan yang dikirim tergantung dari mode yang sedang berlangsung
pada robot.
Gambar 3. 9 Representasi nilai piksel x dan y dari kamera pada lapangan.
Gambar 3. 10 Representasi nilai x dan y dari sensor kompas pada lapangan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
3.3.2. Subprogram Bersiap
Pada gambar 3.10 menunjukkan kondisi robot dalam mode bersiap maka kamera
akan mengambil video yang akan di analisis oleh program utama untuk mengontrol robot
bergerak mendekati bola dan bersiap untuk mengejar bola. Pada proses ini robot akan
dikontrol untuk bergerak ke tengah lapangan untuk bersiap seperti dalam kick off dalam
sepak bola yang sebenarnya.
Gambar 3. 11 Diagram alir subprogram bersiap.
Tindakan pengontrolan bersiap dibuat beberapa tindakan untuk menentukan posisi
setpoint dari robot menggunakan informasi koordinat x dan y dari nilai piksel dari kamera,
maka ditentukan:
a. Jika posisi bola di tengah lapangan seperti saat kick off atau saat tendangan bebas
untuk robot, maka nilai setpoint untuk robot adalah x = posisi „x‟ bola dan y =
posisi „y‟ bola - 60.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
Gambar 3. 12 Gambaran pergerakan saat bola berada di tengah lapangan.
b. Jika posisi bola dalam penguasaan lawan artinya tendangan bebas untuk lawan
pada posisi kiri gawang, maka nilai setpoint untuk robot adalah x = posisi „x‟ bola -
60 dan y = posisi „y‟ bola - 60.
Gambar 3. 13 Gambaran pergerakan saat bola berada di sebelah kiri gawang.
c. Jika posisi bola dalam penguasaan lawan artinya tendangan bebas untuk lawan
pada posisi kanan gawang, maka nilai setpoint untuk robot adalah x = posisi „x‟
bola + 60 dan y = posisi „y‟ bola - 60.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
Gambar 3. 14 Gambaran pergerakan saat bola berada di sebelah kanan gawang.
3.3.3. Subprogram Bermain
Pada gambar 3.15 menunjukan saat dalam mode bermain maka maka kamera akan
mengambil video yang akan dianalisa oleh program utama untuk menentukan tujuan dari
robot, posisi lawan, serta menentukan robot untuk bertahan atau menyerang. Jika bola
berada dalam penguasaan lawan maka robot akan dikontrol untuk bertahan, jika bola
dalam keadaan bebas maka robot akan dikontrol untuk mengejar bola. Setelah itu kamera
akan mengambil video yang akan dianalisa oleh program utama untuk mengontrol robot
menggiring bola menuju gawang yang dituju. Proses tersebut juga akan terus berulang
hingga robot berada pada jarak tertentu dari gawang yang dituju lalu program utama
akan mengirimkan perintah untuk menendang bola. Jika bola masih belum masuk maka
akan mengulang proses dari mengejar bola kembali sampai menendang bola hingga
masuk kedalam gawang yang dituju. Perintah yang dikirimkan oleh program utama di
dalam Raspberry Pi 3 akan dikirim melalui Python Socket. Proses tersebut akan terus
berulang hingga robot menguasai bola.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
Gambar 3. 15 Diagram alir subprogram bermain.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
3.3.4. Subprogram Berhenti
Pada gambar 3.16 menunjukkan robot dalam mode berhenti maka semua proses
yang dijalankan akan dihentikan, mode ini digunakan ketika waktu permainan telah
selesai. Dengan cara mengirim perintah berhenti sehingga kondisi pergerakan robot
menjadi LOW .
Gambar 3. 16 Diagram alir subprogram stop.
3.3.5. Subprogram Menentukan Posisi Bola, Gawang dan Lawan
Algoritma penentuan lokasi dan penempatan posisi robot di lapangan diperoleh
dengan menggunakan informasi yang diperoleh dari masukan USB Webcam menampilkan
video dari citra gawang dan bola. Proses pendektesian bola dan gawang dilakukan
menggunakan image processing yang dibantu menggunakan bantuan library OpenCV
yang langsung dapat digunakan dengan Python. USB Webcam akan mengirimkan citra
yang akan melakukan analisis objek menggunakan library OpenCV untuk memberikan
informasi nilai x dan y dari robot,lawan,dan target bola atau gawang berdasarkan warna.
Untuk pendeteksian objek berdasarkan warna menggunakan ruang warna HSV,
pengolahan warna tersebut dipilih karena lebih peka terhadap perubahan cahaya dengan
lingkungan sekitar. Dari hasil nilai x dan y yang didapatkan dijadikan sebagai informasi
yaitu berupa letak posisi bola, posisi lawan dan gawang lawan yang akan dikirim sebagai
tindakan untuk mode yang sedang berlangsung pada robot.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
Gambar 3. 17 Diagram alir subprogram menentukan tujuan robot dan posisi lawan.
Pada Gambar 3.17 menunjukkan bagaimana proses menganalisis input video dari
USB Webcam dengan proses image processing yang dibantu dengan library OpenCV pada
Python.
Setelah dilakukan inisisalisasi kamera yang akan digunakan lalu, dengan
menggunakan dasar teori pada subbab 2.4.2. dilakukan color filtering pada masukan input
video. Pada input video maka didapatkan warna pada citra yang akan dikonversikan
menjadi HSV yang berguna untuk mendapatkan warna dari masing-masing objek dengan
persamaan 2.1, 2.2, 2.3, dan 2.4. dengan warna bola adalah orange, warna dari tim robot
adalah biru dan cyan, dan warna gawang adalah kuning.
a. Biru
Red = 10, Green = 50, Blue = 255, min = min[R,G,B] = 10, max[R,G,B] = 255
Karena max = B, maka: nilai H = (
) = 230,20 ≈ 230
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
Karena max ≠ min, maka: nilai S = 255 – 10 = 245
Nilai V akan dibuat dengan kisaran batas bawah 20 dan batas atas 255 agar dapat
menyesuaikan kondisi perubahan cahaya yang terjadi dengan sekitar.
b. Cyan
Red = 10, Green = 250, Blue = 255, min = min[R,G,B] = 10, max[R,G,B] = 255
Karena max = B, maka: nilai H = (
) = 181,22 ≈ 181
Karena max ≠ min, maka: nilai S = 255 – 10 = 245
Nilai V akan dibuat dengan kisaran batas bawah 20 dan batas atas 255 agar dapat
menyesuaikan kondisi perubahan cahaya yang terjadi dengan sekitar.
c. Orange
Red = 255, Green = 110, Blue = 10, min = min[R,G,B] = 10, max[R,G,B] = 255
Karena max = R, maka: nilai H = (
) = 24,489 ≈ 25
Karena max ≠ min, maka: nilai S = 255 – 10 = 245
Nilai V akan dibuat dengan kisaran batas bawah 20 dan batas atas 255 agar dapat
menyesuaikan kondisi perubahan cahaya yang terjadi dengan sekitar.
d. Kuning
Red = 255, Green = 250, Blue = 10, min = min[R,G,B] = 10, max[R,G,B] = 255
Karena max = R, maka: nilai H = (
) = 58,77 ≈ 59
Karena max ≠ min, maka: nilai S = 255 – 10 = 245
Nilai V akan dibuat dengan kisaran batas bawah 20 dan batas atas 255 agar dapat
menyesuaikan kondisi perubahan cahaya yang terjadi dengan sekitar.
3.3.6. Subprogram Tindakan Pengontrolan Bertahan
Berdasarkan gambar 3.18 menunjukkan fungsi untuk mengontrol robot ketika
keadaan bertahan dengan cara menggunakan informasi koordinat pada kompas, dengan
menggunakan cara tersebut robot dari posisi saat ini bisa langsung ke titik setpoint
berikutnya. Misalnya ketika mengejar bola dalam penguasaan lawan, maka robot akan
dikontrol untuk berbalik ke gawang sendiri berada di posisi center back. Ketika sudah
berada di depan lawan maka robot akan mencoba untuk mencuri bola.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
Gambar 3. 18 Diagram alir subprogram tindakan pengontrolan bertahan.
Tindakan pengontrolan bertahan dibuat beberapa tindakan untuk menentukan posisi
setpoint dari robot menggunakan informasi koordinat x dan y dari nilai piksel dari kamera
dan koordinat x dan y dari sensor kompas, maka ditentukan:
a. Jika posisi bola dalam penguasaan lawan di sebelah kanan gawang artinya robot
melakukan tindakan bertahan di sebelah kanan gawang, maka nilai setpoint sensor
kompas untuk robot adalah x = 400 dan y = 300, dan nilai setpoint kamera untuk
robot adalah x = posisi „x‟ bola dan y = posisi „y‟ bola - 60.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
Gambar 3. 19 Gambaran pergerakan bertahan saat bola berada di sebelah
kanan gawang.
b. Jika posisi bola dalam penguasaan lawan di sebelah kiri gawang artinya robot
melakukan tindakan bertahan di sebelah kiri gawang, maka nilai setpoint sensor
kompas untuk robot adalah x = 100 dan y = 300, dan nilai setpoint kamera untuk
robot adalah x = posisi „x‟ bola dan y = posisi „y‟ bola - 60.
Gambar 3. 20 Gambaran pergerakan bertahan saat bola berada di sebelah
kiri gawang.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
3.3.7. Subprogram Tindakan Pengontrolan Menyerang
Berdasarkan gambar 3.21 menunjukkan fungsi untuk mengontrol robot ketika
keadaan mengejar bola ataupun pada saat menggiring bola maupun menghindari lawan
dilakukan dengan cara menggunakan informasi koordinat pada bola dan kompas, dengan
menggunakan cara tersebut robot dari posisi saat ini bisa langsung ke titik setpoint
berikutnya. Misalnya ketika robot sudah menguasai bola dan posisi lawan menyerang,
maka robot akan dikontrol untuk berada di posisi daerah yang aman dengan setpoint yang
sudah ditentukan. Ketika sudah berada di depan gawang lawan maka robot akan mencoba
untuk mencetak gol.
Gambar 3. 21 Diagram alir subprogram tindakan pengontrolan menyerang.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
Tindakan pengontrolan menyerang dibuat beberapa tindakan untuk menentukan
posisi setpoint dari robot menggunakan informasi koordinat x dan y dari nilai piksel dari
kamera dan koordinat x dan y dari sensor kompas, maka ditentukan:
a. Jika posisi bola dalam penguasaan lawan di sebelah kiri gawang artinya robot
melakukan tindakan menyerang di sebelah kiri gawang, maka nilai setpoint sensor
kompas untuk robot adalah x = 150 dan y = 700, dan nilai setpoint kamera untuk
robot adalah x = posisi „x‟ bola dan y = posisi „y‟ bola - 60.
Gambar 3. 22 Gambaran pergerakan menyerang saat bola berada di sebelah kiri gawang.
b. Jika posisi bola dalam penguasaan lawan di sebelah kanan gawang artinya robot
melakukan tindakan menyerang di sebelah kanan gawang, maka nilai setpoint
sensor kompas untuk robot adalah x = 350 dan y = 700, dan nilai setpoint kamera
untuk robot adalah x = posisi „x‟ bola dan y = posisi „y‟ bola - 60.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
Gambar 3. 23 Gambaran pergerakan menyerang saat bola berada di sebelah kanan gawang.
3.3.8. Subprogram Kirim Perintah ke Robot
Pengiriman perintah kepada robot dilakukan melalui jaringan wireless
menggunakan modem wireless. Dengan menggunakan protokol Socket Python dilakukan
pengiriman perintah kepada robot. Komunikasi dilakukan dengan dengan protokol tersebut
agar perintah yang dikirim bisa tersampaikan dan tidak ada gangguan dari luar. Perintah
yang dikirim berupa posisi x dan y dari objek (bola, lawan, dan gawang). Untuk mengirim
perintah ke robot menggunakan metode Sock.sendto(„perintah yang dikirim‟,(„address
yang dituju‟,port yang digunakan‟)). Port yang digunakan adalah port 32 karena port
tersebut digunakan untuk komunikasi data.
Tabel 3. 1 Daftar kode untuk informasi dan perintah kepada robot
Informasi dan perintah Kode
Posisi bola (x,y) 1
Posisi robot (x,y) 2
Posisi lawan (x,y) 3
Posisi gawang (x,y) 4
Posisi kiper lawan (x,y) 5
Setpoint (x,y) 6
Berhenti 7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
Tabel 3. 2 Format pengiriman informasi dan perintah kepada robot
Informasi dan perintah yang dikirim
Kode Posisi x Posisi y
1 - 6 0 - 9 0 - 9 0 - 9 0 - 9 0 - 9 0 - 9
Misal posisi robot saat ini adalah x=200 dan y=350, lalu posisi setpoint adalah x=100 dan
y=100 maka informasi dan perintah yang dikirim adalah:
Sock.sendto(„1200350‟,(„192.168.1.2‟,32))
Sock.sendto(„1100100‟,(„192.168.1.2‟,32))
Gambar 3. 24 Diagram alir subprogram kirim perintah ke robot.
Pada gambar 3.24 untuk melakukan pengiriman perintah seperti dalam dasar teori
dengan dilakukan inisialisasi domain, type, IP Address, serta port yang digunakan. Jika
sudah menginisialisasi domain maka selanjutnya membuat koneksi dengan address yang
diinginkan. Setelah berhasil membuat koneksi lalu menghubungkan koneksi tersebut.
Setelah berhasil maka perintah dapat dikirimkan sesuai dengan mode yang dipilih
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
BAB IV
HASIL DAN PEMBAHASAN
4.1. Perubahan Proses Kerja Sistem
Pada penelitian ini dilakukan beberapa perubahan proses kerja sistem. Perancangan
sistem pada BAB III adalah perancangan sistem pada kontrol utama
Gambar 4. 1 Perubahan Blok Diagram Cara Kerja Sistem
Penjelasan blok diagram gambar 4.1. adalah sebagai berikut :
1. Bagian Kontrol Utama
Kontrol utama robot menggunakan Coach Computer, yaitu menjalankan Raspberry Pi
(R1) melalui Virtual Network Computing (VNC) dengan menggunakan laptop sebagai
perantara saja untuk menjalankan Raspberry Pi (R1) yang berada didalam robot. Jadi
Raspberry Pi (R1) bertugas sebagai Coach sekaligus mengolah citra, perintah dan sudah
ditanamkan algoritma pergerakan robot. Tugas utama dari Raspberry Pi (R1) ini
memproses citra video kamera yang diletakkan di kepala robot sebagai mata dan
mengunci target sehingga didapatkan nilai posisi x dan y dari bola, lawan, dan gawang
yang dituju. Kemudian menentukan pergerakan robot berdasarkan posisi bola terhadap
robot dan mengirimkan perintah berupa data ke robot melalui komunikasi wireless.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
2. Bagian Komunikasi Robot
Pemrosesan data komunikasi menggunakan dua Raspberry Pi yang dikirim melalui
Python Socket. Dengan R1 (USB Webcam & Coach Computer) yang bertugas memproses
citra video dan mengirimkan perintah berupa data untuk ke R2 (pergerakan robot). Selain
itu R2 (pergerakan robot) bertugas mengirim data berupa Low / High dari sensor IR ke R1
(USB Webcam & Coach Computer) yang berfungsi sebagai tanda bola sudah ditangkap
atau belum. Jika High berarti bola belum ditangkap maka R1 (USB Webcam & Coach
Computer) mengirim algoritma menyerang untuk mengejar bola ke R2 (pergerakan robot).
Lalu saat Low berarti bola sudah ditangkap maka maka R1 (USB Webcam & Coach
Computer) mengirim algoritma menuju ke gawang ke R2 (pergerakan robot). Komunikasi
antara R1 (USB Webcam & Coach Computer) dengan R2 (pergerakan robot) melalui
koneksi wireless dengan menggunakan Python Socket.
4.2. Perubahan Perancangan
Pada penelitian ini dilakukan perubahan fungsi kerja sensor kompas, lalu pada
perancangan perangkat lunak terdapat perubahan yaitu perubahan pada mode menyerang
dan bertahan.
4.2.1. Perubahan Fungsi Sensor Kompas
Setelah dilakukan uji coba ternyata nilai x dan y dari sensor kompas tidak bisa
linear seperti pada gambar 4.2 sehingga dilakukan perubahan fungsi kerja sensor dengan
keluaran berupa sudut 0° sampai 359° untuk menentukan arah menuju arah yang
diinginkan.
Gambar 4. 2 Representasi nilai x dan y dari sensor kompas pada lapangan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
Tabel 4. 1 Data dari pengujian
lebar lapangan (nilai x)
Panjang (m) Nilai x
0 0
1 16
2 6
3 16
4 36
5 52
Tabel 4. 2 Data dari pengujian
panjang lapangan (nilai y)
Panjang (m) Nilai y
0 0
1 13
2 1
3 10
4 14
5 38
6 16
7 2
0
10
20
30
40
50
60
0 1 2 3 4 5
Nila
i X
Lebar Lapangan (m)
nilai x
0
5
10
15
20
25
30
35
40
0 1 2 3 4 5 6 7
Nila
i Y
Panjang Lapangan (m)
nilai y
Dari hasil nilai x dan y yang sudah diambil pada lapangan yang sebenarnya didapat
nilai seperti pada tabel 4.1 untuk panjang lapangan (nilai y) dan tabel 4.2 untuk lebar
lapangan (nilai x) , lalu dapat dilihat pada gambar 4.3 untuk panjang lapangan (nilai y) dan
gambar 4.4 untuk lebar lapangan (nilai x) berupa grafik sehingga terlihat bahwa nilai x
dan y yang dihasilkan dari sensor kompas tidak bisa terbentuk secara linear.
Perubahan fungsi kompas di robot hanya sebagai petunjuk arah menyerang agar
bisa membedakan gawang lawan dengan gawang sendiri. Pada gambar 4.5 menunjukkan
nilai sudut dari keluaran sensor kompas, dengan sudut 0° sebagai gawang lawan dan misal
ketika robot berada pada sudut antara 135° sampai 180° saat mencari gawang maka robot
harus berputar balik sampai pada sudut sekitar sudut 0° agar bisa menghadap pada gawang
lawan. Nilai keluaran dari sensor kompas yaitu dari 0° sampai 359°, jika nilai lebih dari
359° maka akan kembali ke 0° seperti kompas pada umumnya. Saat sudut di 180°
diasumsikan sebagai gawang sendiri sehingga sistem akan memberikan informasi agar
robot dapat kembali menuju arah gawang lawan yaitu 0°.
Gambar 4. 4 Grafik nilai x Gambar 4. 3 Grafik nilai y
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
Gambar 4. 5 Perubahan representasi nilai sudut dari sensor kompas pada lapangan.
4.2.2. Perubahan Mode Menyerang
Perubahan tindakan pengontrolan menyerang untuk menentukan posisi setpoint dari
robot menggunakan informasi koordinat x dan y dari nilai piksel dari kamera dan sudut dari
sensor kompas, dikarenakan pada pembahasan sebelumnya selain menggunakan nilai
piksel dari kamera juga menggunakan nilai x dan y dari sensor kompas yang ternyata
fungsi kerja dari sensor kompas tidak sesuai dengan yang diharapkan dan sudah dilakukan
perubahan yang lebih benar pada pembahasan Bab 4.2.1 , maka ditentukan perubahan
sebagai berikut:
a. Jika posisi bola dalam penguasaan robot di sebelah kiri maka robot akan melakukan
tindakan menyerang di sebelah kiri gawang, maka nilai setpoint kamera untuk
robot adalah x = posisi „x‟ - 150 gawang dan y = posisi „y‟ gawang. Sistem
menentukan setpoint diantara kiper lawan dengan tiang sebelah kiri gawang lawan
agar untuk mendapatkan area yang kosong dari halangan kiper lawan. Dengan
sudut 0° sebagai penunjuk arah gawang lawan dan sudut 180° sebagai penunjuk
arah gawang sendiri. Sudut 0° ditentukan agar digunakan sebagai acuan penunjuk
arah untuk mengembalikan ke robot ke sudut yang dituju jika diposisi sudut yang
salah.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
Gambar 4. 6 Perubahan gambaran pergerakan menyerang saat bola
berada di sebelah kiri gawang
b. Jika posisi bola dalam penguasaan robot di sebelah kanan maka robot akan
melakukan tindakan menyerang di sebelah kanan gawang, maka nilai setpoint
kamera untuk robot adalah x = posisi „x‟ + 150 gawang dan y = posisi „y‟ gawang.
Sistem menentukan setpoint diantara kiper lawan dengan tiang sebelah kanan
gawang lawan agar untuk mendapatkan area yang kosong dari halangan kiper
lawan. Dengan sudut 0° sebagai penunjuk arah gawang lawan dan sudut 180°
sebagai penunjuk arah gawang sendiri. Sudut 0° ditentukan agar digunakan sebagai
acuan penunjuk arah untuk mengembalikan ke robot ke sudut yang dituju jika
diposisi sudut yang salah.
Gambar 4. 7 Perubahan gambaran pergerakan menyerang saat bola
berada di sebelah kanan gawang
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
4.2.3. Perubahan Mode Bertahan
Gambar 4. 8 Perubahan diagram alir subprogram tindakan pengontrolan bertahan.
Pada tindakan pengontrolan keadaan bertahan dilakukan perubahan tindakan ketika
menuju titik setpoint dengan menggunakan nilai piksel dari kamera. Misalnya ketika radius
bola dalam penguasaan lawan, maka robot harus mengikuti nilai piksel dari bola yang
sudah di deteksi, kemudian jika radius bola lepas dari penguasaan maka robot harus segera
mengejar bola dan menangkap bola.
Perubahan tindakan pengontrolan bertahan untuk menentukan posisi setpoint dari
robot menggunakan informasi koordinat x dan y dari nilai piksel dari kamera dan sudut dari
sensor kompas, dikarenakan pada pembahasan sebelumnya selain menggunakan nilai
piksel dari kamera juga menggunakan nilai x dan y dari sensor kompas yang ternyata
fungsi kerja dari sensor kompas tidak sesuai dengan yang diharapkan dan sudah dilakukan
perubahan yang lebih benar pada pembahasan Bab 4.2.1 , maka ditentukan perubahan
sebagai berikut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
Gambar 4. 9 Perubahan gambaran pergerakan bertahan
Berdasarkan gambar 4.9 menunjukkan jika posisi bola masuk dalam radius
penguasaan lawan artinya robot akan melakukan tindakan bertahan maka nilai nilai
setpoint kamera untuk robot adalah x = posisi „x‟ bola dan y = posisi „y‟ bola - 60. Dengan
sudut 0° sebagai penunjuk arah gawang lawan dan sudut 180° sebagai penunjuk arah
gawang sendiri.
.
4.2.4. Perubahan Subprogram Kirim Perintah ke Robot
Pada penelitian ini dilakukan perubahan pada subprogram kirim perintah ke robot
pada bab III sebelumnya pada pembahasan subprogram kirim perintah ke robot dengan
mengirimkan tujuh macam data yaitu posisi bola, posisi robot, posisi lawan, posisi gawang,
posisi kiper lawan serta setpoint. Setelah dilakukan pengujian ternyata semua informasi
yang dikirimkan dari sistem dan diolah oleh robot sendiri akan mengurangi kinerja robot
yang membuat olah data dari robot menjadi lebih berat dan tidak efisien. Pada tabel 4.3
sampai dengan tabel 4.5 merupakan perubahan yang dilakukan agar mengurangi jumlah
data yang dikirim ke robot, dengan mengirimkan informasi untuk mengatur arah serangan
robot serta penunjuk arah serangan agar tidak salah menuju gawang lawan. Selain itu
jumlah kirim data yang dikirim hanya empat saja yaitu mengirim perintah bermain atau
bertahan dan mengirim perintah bersiap. Pada perubahan ini dilakukan berdasarkan
penelitian yang sudah ada dan peneliti memakai untuk dikembangkan[14]. Dengan ini
membuat kinerja dari sistem pada robot menjadi lebih ringan serta mengurangi perhitungan
pada robot. Pada tabel 4.3 merupakan perubahan daftar kode untuk informasi dan perintah
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
kepada robot. Berbeda pada peracangan bab III sebelumnya hanya terdapat tujuh kode,
sekarang total jumlah kode ada tiga belas. Penambahan kode ini antara lain kode perintah
bermain dibagi lagi menjadi tiga yaitu serang, bertahan,dan mencari gawang. Kemudian
kode perintah untuk bersiap, kode perintah kirim data agar robot memberikan informasi
penguasaan bola ke sistem, lalu penambahan kode perintah simpan data agar robot
menyimpan data selama proses berlangsung dengan penamaan file sesuai dengan data yang
dikirim dari sistem.
Berdasarkan tabel 4.4 menunjukkan merupakan format pengiriman informasi yang
diperlukan robot sebagai tindakan pergerakan robot dalam mengejar bola, menggiring bola
menuju gawang, serta menendang bola. Setpoint akan mengirimkan informasi nilai piksel
dari kamera berupa nilai x dan nilai y. Nilai piksel dari kamera akan berfungsi untuk
pergerakan robot saat menuju titik setpoint. Nilai x yang nantinya akan diolah oleh robot
untuk pergerakan ke kiri atau kanan sedangkan nilai y akan diolah oleh robot untuk
pergerakan maju. Untuk penjelasan pengiriman data masih sama dan dapat dilihat pada bab
III pada subprogram kirim perintah. Kompas merupakan penunjuk arah serangan berupa
nilai sudut agar robot dapat membedakan gawang sendiri dengan gawang lawan, misal
sudut pada kompas menunjukkan sudut „180‟ maka sistem akan mengirimkan perintah
berupa kode dan nilainya menjadi ‘04180’. Selain itu menunjukkan format untuk
menentukan kondisi dari robot saat bersiap,bermain atau bertahan dan menendang bola.
Bermain adalah perintah untuk membuat robot mengejar bola, serta menggiring bola
menuju gawang, jika robot diperintahkan untuk mode bermain maka sistem akan mengirim
perintah berupa kode „12 ‟ untuk menyerang dan berupa kode „11 ‟ untuk menuju gawang .
Bertahan adalah perintah untuk robot mendekati lawan ketika bola berada pada penguasaan
lawan, jika robot diperintahkan untuk mode bertahan maka sistem akan mengirim perintah
berupa teks „10‟. Kirim adalah perintah untuk membuat robot mengirimkan data yang
memberitahukan kepada sistem bahwa robot telah mendapatkan bola atau belum, jika robot
diperintahkan untuk mengirim data maka sistem akan mengirim perintah berupa teks ’21’
dan sebaliknya ketika robot diperintahkan untuk tidak mengirim data maka sistem akan
mengirim perintah berupa teks „20’. Tendang adalah perintah untuk membuat robot
menendang bola, jika robot diperintahkan untuk menendang bola maka sistem akan
mengirimkan perintah berupa teks „51’ dan sebaliknya ketika robot diperintahkan untuk
tidak menendang bola maka sistem akan mengirim perintah berupa teks „50’. Bersiap
adalah perintah untuk membuat robot dari ujung lapangan menuju ke tengah lapangan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
untuk memulai kick off , jika robot diperintahkan untuk mode bersiap maka sistem akan
mengirimkan perintah berupa teks „60’.
Pada tabel 4.5 merupakan format informasi yang dikirim oleh robot ke sistem, jika
data yang dikirim robot berisi „90‟ maka bola belum dikuasai robot dan harus melakukan
proses pengejaran sedangkan jika data yang dikirim robot berisi „91‟ maka bola sudah
dalam penguasaan robot.
Tabel 4. 3 Perubahan daftar kode untuk informasi dan perintah kepada robot
Informasi dan perintah Kode Keterangan
Berhenti 00 Perintah mengentikan semua proses
Mencari Gawang 10 Perintah bermain ke robot
Serang 12 Perintah bermain ke robot
Kirim Data 21 Perintah kirim infomasi penguasaan bola
Tidak Kirim Data 20 Perintah tidak kirim infomasi penguasaan bola
Setpoint (x,y) 03 Informasi nilai pixel kamera
Kompas 04 Informasi sudut yang diinginkan
Tendang 51 Perintah tendang ke robot
Tidak Tendang 50 Perintah tidak tendang ke robot
Bersiap 61 Perintah bersiap ke robot
Bertahan 11 Perintah bermain ke robot
Simpan Data 08 Perintah simpan data
Kode Awal USD Sandi untuk mengenali robot
Tabel 4. 4 Format informasi dan perintah yang dikirim oleh sistem.
Tabel 4. 5 Format informasi yang diterima oleh sistem.
Kode
Awal
Kode
Perintah
Informasi yang dikirim Kode
Perintah
Bermain
Setpoint Kompas Simpan data
Kode Posisi
x
Posisi
y Kode Sudut Kode Inputan
USD 00 03 3 digit 3 digit 04 4 digit 08 2 digit 2 digit
USD 20/21 03 3 digit 3 digit 04 4 digit 08 2 digit 2 digit
USD 05/50 03 3 digit 3 digit 04 4 digit 08 2 digit 2 digit
USD 61 03 3 digit 3 digit 04 4 digit 08 2 digit 2 digit
Kode
Awal
Kode
Perintah
Informasi yang dikirim Kode
Perintah
Bermain
Setpoint Kompas Simpan data
Kode Posisi
x
Posisi
y Kode Sudut Kode Inputan
USD 90 03 3 digit 3 digit 04 4 digit 08 2 digit 2 digit
USD 91 03 3 digit 3 digit 04 4 digit 08 2 digit 2 digit
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
Berikut merupakan contoh format pengiriman perintah dan informasi yang dikirim
dari sistem ke robot.
USD 61 03 300 100 04 - 090 08 11 00
1 2 3 4 5 6 7 8 9 10
Keterangan:
1. Kode awal merupakan kode berupa kode USD dengan mengenali dari tiap digitnya
untuk mengenali bahwa data tersebut dikirim dari sistem sendiri.
2. Kode 61 merupakan perintah ke robot untuk bersiap.
3. Kode 03 merupakan informasi setpoint yang akan digunakan untuk pergerakan robot,
data tersebut berupa koordinat posisi x dan posisi y dari pixel kamera.
4. Data berupa nilai 300 merupakan koordinat posisi x.
5. Data berupa nilai 100 merupakan koordinat posisi y.
6. Kode 04 merupakan informasi sudut kompas yang akan digunakan untuk membantu
robot mengarah kan kembali ke gawang lawan jika robot di posisi arah yang salah.
7. Data berupa nilai – 090 ° merupakan hasil koreksi sudut dari pengolahan sistem yang
akan dikirim ke robot mengembalikan ke arah tujuan 0 °.
8. Kode 08 merupakan perintah ke robot untuk menyimpan data selama proses sedang
dijalankan.
9. Data berupa nilai 11 merupakan inputan dari sistem untuk menamai file data
percobaan yang tersimpan.
10. Kode sebenarnya adalah untuk perintah bermain, tetapi karena kondisi yang diminta
saat ini adalah kondisi bermain maka tidak perlu diberi nilai atau diberi nilai 00.
Berdasarkan penjelasan diatas data dari sistem dikirim berupa paket data yang berisi
serangkaian data berupa variabel huruf dan angka yang nantinya akan diterjemahkan oleh
robot. Untuk mempermudah kinerja sistem agar tidak mengirim data yang berbeda-beda
maka format data yang dikirim adalah satu paket data yang sama, kemudian akan
diterjemahkan robot berdasarkan digit yang diambil datanya sesuai dengan yang
diperlukan untuk pergerakan robot. Paket data tersebut akan dikirim secara berulang-ulang
dari sistem ke robot, tetapi karena dikirim dengan format yang sama sehingga
mempermudah robot untuk mengolah data tersebut, tetapi sebaliknya jika dikirim secara
terus menerus dengan format yang berbeda-beda, kemungkinan dapat menyebab data yang
dikirim sekarang dapat tertimpa dengan data yang dikirim berikutnya, sehingga data
sebelumnya tidak tersimpan atau tidak terbaca oleh robot. Maka untuk mengatasi masalah
tersebut pada perancangan bab III dilakukan perubahan format pengiriman data.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
4.3. Hasil Implementasi
Implementasi dari sistem hasil perancangan ditunjukkan pada gambar 4.10 sampai
dengan gambar 4.16. Pada penelitian dibuat tampilan GUI untuk mempermudah
pengontrolan robot sepak bola beroda. Penjelasan untuk melakukan pengoperasian Gui
pada gambar 4.10 adalah sebagai berikut:
Gambar 4. 10 Tampilan GUI
1. Mode bersiap adalah mode untuk memberi perintah ke robot untuk bergerak ke
tengah lapangan agar kondisi bersiap sebelum permainan dimulai seperti keadaan
kick off pada permainan sepak bola umumnya maupun bersiap saat robot mendapat
tendangan bebas.
2. Mode bermain adalah mode untuk memberi perintah ke robot untuk mengejar bola
dan menggiring bola menuju ke gawang lawan lalu menendang bola ke dalam
gawang lawan. Pada mode bermain tersebut terdapat algoritma untuk mendeteksi
apakah bola dalam keadaan bebas atau dalam penguasaan lawan. Jika bola dalam
keadaan bebas maka robot akan melakukan tindakan untuk mengejar bola lalu
menggiring menuju gawang lawan. Jika bola dalam keadaan penguasaan lawan maka
robot akan melakukan tindakan untuk bertahan. Mode bertahan adalah mode untuk
memberi perintah ke robot untuk membuat robot berada di depan lawan dan
mencoba untuk merebut bola. Jika bola berhasil direbut maka robot akan melakukan
tindakan pengontrolan menyerang.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
3. Mode berhenti adalah mode untuk memberi perintah ke robot untuk menghentikan
semua proses yang sedang berjalan dengan membuat nilai setpoint yang dikirim dari
sistem ke robot menjadi nol sehingga membuat robot menjadi diam karena nilai
setpoint nol artinya tidak ada objek yang terdeteksi.
Gambar 4. 11 Tampilan pada lapangan hasil analisis OpenCV
Pada gambar 4.11 merupakan hasil dari pengolahan citra dari inputan video
menggunakan kamera Webcam dengan bantuan library tambahan yang support dengan
Python yaitu OpenCV. Hasil dari pengolahan citra tersebut nantinya berguna untuk
menemukan nilai x dan y dari masing-masing objek yang terdeteksi dan digunakan sebagai
informasi ke robot untuk mengatur pergerakan robot sepak bola beroda. Seperti pada
gambar 4.11 terdapat objek yang bola yang sudah dilakukan proses pengolahan citra
dengan menandai objek bola tersebut dengan sebuah titik bulat, lalu diberi nama agar lebih
mudah dikenali. Selain itu ditampilkan posisi x dan posisi y beserta titik koordinat setpoint
dengan diberi nama target agar mempermudah peneliti. Tetapi tampilan ini tidak
ditampilkan ketika program berjalan karena membuat kinerja dari sistem menjadi semakin
berat, maka hanya ditampilkan berupa tampilan terminal yang berisi data yang
menunjukkan objek yang terdeteksi. Selain itu untuk mempercepat proses yang dianalisa
oleh sistem maka bahasa pemograman Python tersebut dijalankan melalui perangkat lunak
Geany, seperti pada gambar 4.12 merupakan tampilan dari Geany.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
Gambar 4. 12 Tampilan Geany
Pada bab III terdapat perancangan subprogram kirim perintah ke robot dengan
menggunakan menggunakan komunikasi wireless. Perintah dikirim berupa nilai setpoint
yang harus diinginkan dan sudut dari kompas sebagai petunjuk arah menyerang. Semua
perintah tersebut dapat dikirim dari sistem ke robot menggunakan bantuan library pada
Python yaitu Python Socket dengan jenis komunikasi yang dilakukan adalah UDP.
Tampilan dan hasil analisa serta informasi dan perintah yang dikirim ke robot dapat dilihat
pada gambar 4.13. Untuk kode serta banyaknya digit dapat dilihat pada perubahan
perancangan pada bab IV dan sudah sesuai dengan perancangan. Angka pada digit pertama
merupakan kode untuk masing-masing objek yang terdeteksi. Angka pada digit kedua
hingga keempat merupakan nilai posisi x. Angka pada digit kelima hingga ketujuh
merupakan nilai posisi y. Pada bab III bagian blog diagram sistem terjadi perubahan
perancangan dari sebelumnya menggunakan tiga Raspberry Pi hanya menggunakan dua
Raspberry pi dikarenakan sistem tidak mampu untuk berkomunikasi tiga arah. Pada saat
mode bersiap hanya terjadi komunikasi satu arah yaitu sistem memberikan perintah serta
informasi ke robot. Pada saat mode bermain terjadi komunikasi dua arah yaitu sistem
memberikan perintah serta informasi ke robot dan robot mengirimkan informasi bahwa
bola sudah dalam penguasaan atau masih dalam proses pengejaran bola. Informasi tersebut
didapatkan dari sensor yang terdapat pada robot. Sensor pada robot tersebut merupakan
sensor untuk mendeteksi sebuah objek benda padat yaitu objek bola sehingga ketika
terdeteksi ada bola maka sistem akan memberikan kode berisikan informasi penguasaan
bola. Sehingga sistem secara terus menerus meminta informasi penguasaan bola ke robot.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
Gambar 4. 13 Tampilan hasil analisa dan perintah yang dikirim
Berdasarkan gambar 4.14 dan gambar 4.15 merupakan hasil implementasi robot
tampak depan dan tampak samping. Hasil implemenatsi sesuai dengan perancangan desain
robot pada bab III . Dan pada gambar 4.16 merupakan hasil implementasi posisi kamera
robot sesuai dengan perancangan posisi kamera pada bab III.
Gambar 4. 15 Hasil implementasi
robot dari tampak samping
Gambar 4. 14 Hasil implementasi
robot dari tampak depan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
Gambar 4. 16 Hasil implementasi posisi kamera pada robot
Dari pengujian setiap mode sistem sudah mampu menjalankan setiap mode dengan
baik. Pada mode bersiap dilakukan pengambilan data pada dua posisi awal yaitu posisi
awal robot pada ujung kanan gawang sendiri (titik A) dan posisi awal robot pada ujung kiri
gawang sendiri (titik B), kemudian robot menuju setpoint pada tengah lapangan pada
posisi kick off . Pengujian bersiap pada titik A mendapatkan rata-rata kesalahan sebesar
0% dan percobaan pada titik B mendapatkan rata-rata kesalahann sebesar 1,52%. Pada
pengujian mode bermain sistem akan mengirim perintah ke robot agar bisa merebut bola,
menggiring bola, menuju gawang lawan, dan menendang bola pada setpoint terakhir yang
diinginkan. Dari hasil pengujian mode bermain berdasarkan hasil setpoint terakhir yang
diberikan mendapat rata-rata kesalahan sebesar 5,73%.
4.4. Hasil dan Analisa Keberhasilan Sistem
Pengujian untuk menganalisa keberhasilan sistem dilakukan dengan menguji sistem
sudah mampu menentukan objek berdasarkan warnanya, sistem sudah mampu menentukan
posisi x dan y dari masing-masing objek yang terdeteksi, dan sistem sudah mampu
menentukan tindakan pengontrolan yang akan dilakukan oleh robot dengan mengatur
pergerakan berdasarkan dari setiap mode yaitu mode bersiap dan mode bermain. Pengujian
sistem akan dilakukan menjadi dua bagian yaitu pengujian berdasarkan setiap mode.
Pengujian yang pertama dilakukan dengan menguji hasil analisa sistem terhadap
masukan video dari Webcam yang kemudian dilakukan pengolahan citra untuk
menentukan objek berdasarkan warnanya lalu sistem menentukan posisi x dan posisi y dari
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
masing-masing objek yang terdeteksi. Setelah sistem mampu menentukan posisi x dan
posisi dari masing-masing objek yang kemudian diolah untuk menjadi informasi dan
perintah yang akan dikirim ke robot yang akan digunakan untuk pergerakan robot pada
setiap mode sesuai dengan perancangan pada bab III. Pengujian yang kedua dilakukan
dengan menguji robot sudah dapat menjalan perintah sesuai dengan yang dikirim dari
sistem. Sistem diharapkan mampu mengendalikan robot untuk bergerak ke posisi dan arah
yang ditentukan sesuai dengan setpoint yang diinginkan pada setiap mode sesuai dengan
perancangan pada bab III. Data pengujian pada mode bersiap dapat dilihat pada gambar
4.17 sampai dengan gambar 4.20 serta pada tabel 4.6 dan tabel 4.7. Data Pengujian pada
mode bermain dapat dilihat pada gambar 4.21 serta pada tabel 4.9 dan tabel 4.10.
Gambar 4.17 menunjukkan posisi awal robot diletakkan di ujung lapangan sebelum
menjalankan mode bersiap. Selanjutnya, gambar 4.18 merupakan tampilan posisi robot
pada titik awal ketika keadaan bersiap yaitu titik A atau titik B. Ketika mode bersiap
dijalankan, sistem akan memberikan perintah agar robot yang berada pada titik A atau titik
B untuk menuju setpoint pada titik C. Pada gambar 4.19 sampai 4.20 serta tabel 4.6 dan 4.7
menunjukkan sistem mampu memberikan hasil sesuai dengan yang diharapkan. Sistem
mampu menentukan objek berdasarkan warna dengan pengolahan citra mengggunakan
OpenCv. Sistem juga mampu menentukan posisi x dan posisi y dari masing-masing objek
serta menentukan setpoint yang sudah diolah oleh sistem untuk mengendalikan pergerakan
robot sesuai dengan perancangan pada Bab III pada subprogram bersiap.
Gambar 4. 17 Tampilan posisi robot hasil analisa saat mode bersiap
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
Gambar 4. 18 Posisi robot di lapangan saat keadaan mode bersiap di titik A
Gambar 4. 19 Hasil kamera pada mode bersiap dari titik A
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
Gambar 4. 20 Hasil kamera pada mode bersiap dari titik B
Tabel 4. 6 Data dari pengujian pada mode bersiap dari titik A
Percobaan Setpoint yang
ditentukan
Setpoint
Hasil Sistem
(x,y)
Keberhasilan
Sistem
Berhenti
Kesalahan
Posisi Setpoint
Akhir
Waktu
(detik)
1 (xxx,330-360) (274,355) Tercapai 0% 00:11,84
2 (xxx,330-360) (374,360) Tercapai 0% 00:11,96
3 (xxx,330-360) (068,357) Tercapai 0% 00:10,92
4 (xxx,330-360) (263,343) Tercapai 0% 00:11,24
5 (xxx,330-360) (241,335) Tercapai 0% 00:17,96
6 (xxx,330-360) (476,330) Tercapai 0% 00:17,90
7 (xxx,330-360) (205,353) Tercapai 0% 00:15,74
8 (xxx,330-360) (235,343) Tercapai 0% 00:18,37
9 (xxx,330-360) (229,336) Tercapai 0% 00:16,00
10 (xxx,330-360) (246,337) Tercapai 0% 00:18,02
11 (xxx,330-360) (312,341) Tercapai 0% 00:14,71
12 (xxx,330-360) (226,334) Tercapai 0% 00:14,47
13 (xxx,330-360) (284,332) Tercapai 0% 00:14,24
14 (xxx,330-360) (277,332) Tercapai 0% 00:14,39
15 (xxx,330-360) (446,340) Tercapai 0% 00:17,05
16 (xxx,330-360) (215,337) Tercapai 0% 00:18,42
17 (xxx,330-360) (256,339) Tercapai 0% 00:18,86
18 (xxx,330-360) (302,335) Tercapai 0% 00:17,49
19 (xxx,330-360) (237,340) Tercapai 0% 00:16,96
20 (xxx,330-360) (524,337) Tercapai 0% 00:16,36
Rata rata kesalahan setpoint akhir dan kecepatan waktu 0% 00:15,66
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
Tabel 4. 7 Data dari pengujian pada mode bersiap dari titik B
Percobaan Setpoint yang
ditentukan
Setpoint
Hasil
Sistem
(x,y)
Keberhasilan
Sistem Berhenti
Kesalahan
Posisi Setpoint
Akhir
Waktu
(detik)
1 (xxx,330-360) (209,346) Tercapai 0% 00:12,47
2 (xxx,330-360) (268,358) Tercapai 0% 00:11,68
3 (xxx,330-360) (347,372) Tercapai 3,33% 00:12,98
4 (xxx,330-360) (460,370) Tercapai 2,77% 00:12,83
5 (xxx,330-360) (231,353) Tercapai 0% 00:25,46
6 (xxx,330-360) (331,351) Tercapai 0% 00:23,29
7 (xxx,330-360) (185,332) Tercapai 0% 00:27,90
8 (xxx,330-360) (275,345) Tercapai 0% 00:51,15
9 (xxx,330-360) (370,348) Tercapai 0% 00:21,39
10 (xxx,330-360) (209,340) Tercapai 0% 00:16,74
11 (xxx,330-360) (524,333) Tercapai 0% 00:17,22
12 (xxx,330-360) (398,340) Tercapai 0% 00:18,24
13 (xxx,330-360) (518,342) Tercapai 0% 00:15,76
14 (xxx,330-360) (428,336) Tercapai 0% 00:18,93
15 (xxx,330-360) (189,349) Tercapai 0% 00:16,45
16 (xxx,330-360) (291,335) Tercapai 0% 00:16,65
17 (xxx,330-360) (264,336) Tercapai 0% 00:15,35
18 (xxx,330-360) (451,343) Tercapai 0% 00:17,29
19 (xxx,330-360) (543,338) Tercapai 0% 00:17,71
20 (xxx,330-360) (224,331) Tercapai 0% 00:19,73
Rata rata kesalahan setpoint akhir dan kecepatan waktu 0,3% 00:19,46
Tabel 4. 8 Pengukuran nilai posisi y
Posisi y (pixel) Ukuran (m)
315 1 m
175 2 m
125 3 m
100 4 m
85 5 m
75 6 m
68 7 m
Berdasarkan pembahasan diatas maka mode bersiap sudah dijalankan sistem dengan
sesuai yang diharapkan. Untuk hasil analisa pengolahan citra objek yang terdeteksi akan
mendapatkan nilai posisi x dan posisi y, namun pada pengujian yang digunakan untuk
posisi y saja karena digunakan untuk jarak antara robot dengan objek yang akan dituju.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
Dari jarak tersebut akan ditentukan titik setpoint yang menjadi koordinat yang harus dituju
dan menjadi setpoint hasil akhir dari pengolahan sistem.
Data pada tabel 4.6 dan tabel 4.7 diambil dari hasil pengolahan sistem dengan posisi
objek yang akan dituju. Data yang diambil adalah titik setpoint yang ditentukan, setpoint
hasil sistem, dan kesalahan posisi akhir setpoint. Pada tabel nilai kesalahan setpoint akhir
dapat dihitung perhitungan pada persamaan
( )
Berikut merupakan contoh perhitungan kesalahan setpoint pada percobaan 3 pada
tabel 4.7.
Pada perhitungan setpoint hasil sistem yang dihitung yaitu nilai posisi y. Dengan
nilai batas atas yang ditentukan yaitu 330 dan nilai batas bawah yang ditentukan yaitu 360.
Pada tabel rata-rata kesalahan setpoint akhir dapat dihitung perhitungan pada persamaan
Berdasarkan tabel rata-rata kecepatan waktu sistem untuk mencapai setpoint akhir
dapat dihitung perhitungan pada persamaan
( )
Pada tabel 4.6 menunjukkan tingkat keberhasilan dari mode bersiap dengan rata-
rata kesalahan dari setiap percobaan dari titik A sebesar 0% untuk posisi y dan untuk
rata-rata waktu yang dibutuhkan robot pada mode bersiap selama menjalankan proses dari
titik A sebesar 15,66 detik. Dari tabel 4.7 menunjukkan tingkat keberhasilan dari mode
bersiap dengan rata-rata kesalahan dari setiap percobaan dari titik B sebesar 0,3% dan
rata-rata waktu yang dibutuhkan robot selama menjalankan proses dari titik B sebesar
19,46 detik. Dengan kesalahan yang cukup kecil maka robot dapat mecari bola dan
menentukan setpoint dengan baik.
Pada tabel 4.8 merupakan pengujian untuk pengukuran nilai posisi y dengan mencari
ukuran per meter. Setelah dilakukan pengukuran sebenarnya pada titik C ukuran dari
setengah lingkaran tersebut satu meter, dengan menggunakan acuan dari tabel 4.8 pada
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
ukuran satu meter mendapatkan posisi y yaitu kurang lebih 315. Pada penelitian ini dibuat
setpoint yang kirim ke robot yaitu posisi y pada nilai 330 maka harus berhenti. Pada saat
pengiriman data ke robot terdapat kendala dimana terdapat jeda, sehingga sangat sulit
untuk mendapatkan nilai posisi y tepat pada 330. Setelah diteliti kejadian memang benar
karena dilihat kembali pada spesifikasi kamera Webcam untuk frame rate yaitu 30 fps
yang artinya setiap framenya yang akan muncul untuk 33 milisecond (1/30 detik),
kemudian ada sepersekian detik lagi untuk jeda dan diikuti oleh frame yang baru dengan
mewakili 30 pixel. Maka nilai setpoint yang tadi sudah ditentukan yaitu 330 ditambah 30
sehingga untuk menentukan keberhasilan sistem jika nilai setpoint posisi y berada pada
antara 330 sampai 360 baru dikatakan berhasil. Jadi misal saja nilai hasil setpoint sistem
tidak berada diantara nilai yang sudah ditentukan maka terdapat kesalahan. Seperti pada
tabel 4.8 pada percobaan 3 nilai posisi y yaitu 372 melebihi nilai yang ditentukan maka
dianggap terjadi kesalahan.
Berdasarkan pada gambar 4.21 merupakan kondisi lapangan dan posisi awal robot
saat memulai pada mode bermain. Keberhasilan sistem pada mode bermain dapat dilihat
sistem mampu mendeteksi bola, lawan, dan kiper lawan, serta robot dapat menggiring bola
menuju gawang dan dapat menendang bola ke dalam gawang lawan.
Gambar 4. 21 Posisi robot di lapangan saat keadaan mode bermain.
Pada tabel 4.9 menunjukkan sistem mampu memberikan hasil sesuai dengan yang
diharapkan. Sistem mampu menentukan objek berdasarkan warnanya dengan pengolahan
citra mengggunakan OpenCv. Sistem juga mampu menentukan posisi x dan posisi y dari
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
masing-masing objek dan menentukan setpoint yang sudah diolah oleh sistem untuk
mengendalikan pergerakan robot sesuai dengan perancangan pada bab III pada subprogram
bermain.
Data pada tabel 4.9 diambil dari hasil pengolahan sistem dengan posisi objek yang
akan dituju. Data yang diambil adalah titik setpoint yang ditentukan, setpoint hasil sistem,
dan kesalahan posisi akhir setpoint. Pada tabel nilai kesalahan setpoint akhir dapat dihitung
perhitungan pada persamaan
( )
Berikut merupakan contoh perhitungan kesalahan setpoint pada percobaan 28 pada
tabel 4.7.
Pada perhitungan setpoint hasil sistem yang dihitung yaitu nilai posisi y. Dengan
nilai batas atas yang ditentukan yaitu 200 dan nilai batas bawah yang ditentukan yaitu 230.
Pada tabel rata-rata kesalahan setpoint akhir dapat dihitung perhitungan pada persamaan
Berdasarkan tabel rata-rata kecepatan waktu sistem untuk mencapai setpoint akhir
dapat dihitung perhitungan pada persamaan
( )
Tabel 4. 9 Data dari pengujian pada mode bermain
Percobaan Setpoint yang
ditentukan
Setpoint
Hasil Sistem
(x,y)
Keberhasilan
Sistem
Menendang Bola
Kesalahan
Posisi
Setpoint
Akhir
Waktu
(detik)
Waktu
Pengujian
1 (xxx,200-230) 289,214 Tercapai 0% 01:16,49 9:13
2 (xxx,200-230) 295,202 Tercapai 0% 01:15,00 9:33
3 (xxx,200-230) 287,204 Tercapai 0% 00:37,13 9:38
4 (xxx,200-230) 337,233 Tercapai 1,3% 00:44,49 12:20
5 (xxx,200-230) 382,255 Tercapai 0% 01:00,43 12:24
6 (xxx,200-230) 257,211 Tidak Tercapai - 00:24,34 12:27
7 (xxx,200-230) 252,104 Tidak Tercapai - 01:31,24 12:29
8 (xxx,200-230) 373,209 Tercapai 0% 01:00,05 12:33
9 (xxx,200-230) 325,203 Tercapai 0% 00:48,93 12:39
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
Percobaan Setpoint yang
ditentukan
Setpoint
Hasil Sistem
(x,y)
Keberhasilan
Sistem
Menendang Bola
Kesalahan
Posisi
Setpoint
Akhir
Waktu
(detik)
Waktu
Pengujian
10 (xxx,200-230) 334,213 Tercapai 0% 00:48,43 12:41
11 (xxx,200-230) 346,214 Tercapai 0% 00:24,25 13:05
12 (xxx,200-230) - Tidak Tercapai - 01:12,52 13:11
13 (xxx,200-230) 249,214 Tercapai 0% 00:36,31 13:17
14 (xxx,200-230) 273,214 Tercapai 0% 01:32,32 13:24
15 (xxx,200-230) - Tidak Tercapai - 00:58,20 13:30
16 (xxx,200-230) 225,230 Tercapai 0% 02:26,86 13:36
17 (xxx,200-230) - Tidak Tercapai - 00:23,50 13:40
18 (xxx,200-230) 250,230 Tercapai 0% 00:22,08 13:45
19 (xxx,200-230) - Tidak Tercapai - 01:20,37 13:49
20 (xxx,200-230) 306,205 Tercapai 0% 01:20,00 13:54
21 (xxx,200-230) 351,247 Tercapai 7,39% 00:22,15 13:58
22 (xxx,200-230) 381,303 Tercapai 31,73% 01:06,85 14:04
23 (xxx,200-230) 374,220 Tercapai 0% 01:17,48 14:09
24 (xxx,200-230) 317,216 Tercapai 0% 01:03,05 14:20
25 (xxx,200-230) 385,209 Tercapai 0% 00:51,65 14:29
26 (xxx,200-230) 252,237 Tercapai 3% 00:37,74 14:32
27 (xxx,200-230) 383,206 Tercapai 0% 00:54,50 14:36
28 (xxx,200-230) 330,234 Tercapai 1,73% 00:45,67 15:33
29 (xxx,200-230) 381,220 Tercapai 0% 00:41,14 15:40
30 (xxx,200-230) - Tidak Tercapai - 01:15,03 15:44
31 (xxx,200-230) 298,205 Tercapai 0% 00:46,51 15:48
32 (xxx,200-230) 355,221 Tercapai 0% 00:57,13 16:02
33 (xxx,200-230) - Tidak Tercapai - 00:46,91 16:06
34 (xxx,200-230) 365,206 Tercapai 0% 00:29,68 16:08
35 (xxx,200-230) 387,204 Tercapai 0% 00:46,75 16:14
36 (xxx,200-230) 388,247 Tercapai 7,39% 00:21,17 16:18
37 (xxx,200-230) 389,238 Tercapai 3,47% 00:48,27 16:21
38 (xxx,200-230) 353,214 Tercapai 0% 00:59,42 16:28
39 (xxx,200-230) 315,207 Tercapai 0% 00:59,13 16:39
40 (xxx,200-230) 292,204 Tercapai 0% 00:45,55 17:37
Rata rata kesalahan setpoint akhir dan kecepatan waktu 1,65% 00:51,96
Berdasarkan pembahasan sebelumnya sama seperti pada mode bersiap untuk hasil
analiasa pengolahan citra objek yang terdeteksi akan mendapatkan nilai posisi x dan posisi
y. Pada pengujian ini untuk posisi y digunakan untuk jarak antara robot dengan objek yang
akan dituju dan posisi x digunakan untuk pergeseran sertpoint gawang agar dapat
menendang di posisi yang aman dari kiper lawan. Setelah dilakukan pengukuran
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
sebenarnya pada titik aman untuk robot berhenti di depan gawang adalah sekitar satu
setengah meter, dengan menggunakan acuan dari tabel 4.8 pada ukuran satu setengah
meter mendapatkan posisi y yaitu kurang lebih 200. Pada penelitian ini dibuat setpoint
yang kirim ke robot yaitu posisi y pada nilai 200 maka harus berhenti dan posisi x bergeser
150 dari nilai sebenarnya. Pada pembahasan sebelumnya bahwa terdapat jeda pada setiap
frame yang muncul, maka nilai setpoint posisi y yang tadi sudah ditentukan yaitu 200
ditambah 30 sehingga untuk menentukan keberhasilan sistem jika nilai setpoint posisi y
berada pada antara 200 sampai 230 dan nilai setpoint posisi x bertambah 150 pada nilai
sebenarnya baru dikatakan berhasil. Seperti contoh pada percobaan 1 pada posisi x
gawang 196 dengan hasil setpoint sistem menjadi 346 sudah sesuai dengan yang
diharapkan, sedangkan pada posisi y gawang 214 dengan hasil setpoint 214 sudah sesuai
dengan nilai posisi yang sudah ditentukan yaitu antara 200 sampai 230.
Dari tabel 4.9 dapat dilihat tingkat keberhasilan sistem dari mode bermain dengan
rata-rata kesalahan dari setiap percobaan sebesar 1,65% untuk posisi y. Untuk rata-rata
waktu yang dibutuhkan robot pada mode bermain selama menjalankan proses sebesar
51,96 detik. Dengan kesalahan yang cukup kecil maka robot dapat menggiring bola
menuju gawang dan menentukan setpoint untuk berhenti di depan gawang dengan baik.
Dari total empat puluh percobaan terdapat delapan percobaan yang gagal karena hasil
setpoint posisi y melebihi batas yang ditentukan. Pada percobaan 22 dari hasil akhir
setpoint sistem posisi y yaitu 303, sedangkan jauh dari setpoint yang diinginkan antara 200
sampai 230. Sehingga didapat kesalahan terhadap posisi y pada percobaan 22 sebesar
31,73%. Penyebab terjadinya kegagalan karena sistem kurang tepat untuk menuju setpoint
yang diinginkan pada objek yang dideteksi. Pengujian dilakukan diluar ruangan sehingga
perubahan pencahayaan sangat mempengaruhi perubahan warna objek yang akan
dideteksi, sehingga ini kemungkinan penyebab terjadinya kegagalan. Dari tabel pengujian
waktu mendapatkan hasil waktu yang baik untuk pengambilan data dengan tingkat
kebehasilan sistem untuk menendang bola ke dalam gawang lawan pada pukul 13:54
sampai 15:40 dengan tingkat pencahayaan yang terang, dikarenakan pada pukul tersebut
semua percobaan tercapai. Hasil terbaik dari pengujian mode bermain pada didapat pada
hasil percobaan 18 berhasil menendang bola ke gawang lawan dengan kesalahan posisi
setpoint akhir sebesar 0% dan kecepatan waktu menuju setpoint sebesar 22,08 detik.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
74
Gambar 4. 22 Denah sudut yang dikirim
Berdasarkan gambar 4.22 merupakan tampilan dari terminal dengan ditandai garis
merah hasil pengolahan untuk koreksi sudut kompas yang akan dikirim ke robot untuk
membantu pergerakan robot menuju gawang lawan dengan acuan pada sudut 0°. Pada
gambar 4.23 merupakan penurunan derajat untuk koreksi sudut kompas untuk
memudahkan pergerakan ke robot untuk membaca sudut yang dikirim oleh sistem . Setelah
sistem mendapatkan posisi sudut sekarang kemudian diolah kembali dengan menurunkan
derajat menjadi sudut maksimal +180°/-180°. Misal ketika posisi sudut sekarang 90° maka
sistem akan mengkoreksi -90° untuk membantu robot menuju titik 0° kembali, selain itu
ketika posisi sudut sekarang 270° maka sistem akan mengkoreksi +90° sesuai dengan
gambar 4.23.
Gambar 4. 23 Tampilan hasil pengolahan sudut kompas.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
Berdasarkan tabel 4.13 merupakan data koreksi sudut yang akan dikirim ke robot
saat kiper lawan tidak dapat dideteksi atau di luar jakauan kamera dari sistem. Dengan
menggunakan koreksi sudut ini dapat membantu mengarahkan robot kembali ke arah
gawang lawan sehingga kamera dari sistem dapat menangkap kembali objek kiper lawan.
Data dari tabel 4.13 diambil dari hasil pengolahan sudut kompas sesuai pada gambar 4.23
menggunakan bantuan tampilan dari terminal akan tertampil hasil pengolahan sudut
tersebut dengan yang sudah ditandai kotak merah pada gambar 4.23, disebelah kiri adalah
posisi sudut sekarang pada robot dan sebelah kanan adalah koreksi sudut hasil pengolahan
dari sistem.
Tabel 4. 10 Data Dikirim saat objek kiper lawan di luar jangkauan kamera
Tujuan Posisi sudut Sekarang Koreksi Sudut yang dikirim
0 177 -177
0 178 -178
0 175 -175
0 173 -173
0 181 +179
0 174 -174
0 186 +174
0 184 +176
0 189 +171
0 189 +171
0 189 +171
0 178 -178
0 176 -176
0 173 -173
0 171 -171
0 170 -170
0 184 +176
0 183 +177
0 182 +178
0 188 +172
0 183 +177
0 179 +179
0 185 +175
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
4.5. Pembahasan Perangkat Keras
Gambar 4. 24 Coach computer lengkap dengan alat pembantunya.
Berdasarkan pada gambar 4.24 merupakan Coach computer pengontrol sepak bola
beroda berbasis Raspberry Pi 3. Pada pembahasan sebelumnya terdapat perubahan
perancangan Coach computer diremote dengan menggunakan laptop yang dilengkapi
dengan keyboard dan mouse untuk mempermudah dalam mengoperasikan program utama.
Disini laptop digunakan sebagai perantara untuk meremote Raspberry pi sebagai Coach
computer yang berada pada robot. Coach computer juga akan dilengkapi dengan USB
Webcam sebagai masukan video yang nantinya akan diolah pada program utama.
Gambar 4. 25 Robot dan tata letak kamera.
Pada gambar 4.25 merupakan desain robot dan desain tata letak kamera pada robot.
Kamera diletakkan pada ketinggian 50 cm dengan pengukuran dari kaki-kaki robot sesuai
Keterangan :
1. Laptop
2. Mouse
3. Keyboard
4. Router
Keterangan :
1. Robot
2. Kamera Webcam
dan Servo
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
77
dengan perancangan pada bab III. Pada kamera ditambahkan servo yang akan digunakan
untuk menggerakkan kamera agar bisa mengikuti pergerakan objek yang terdeteksi.
4.6. Pembahasan Perangkat Lunak
Dalam pembahasan ini dibahas perangkat lunak dari program utama yang digunakan
sistem untuk mengontrol pergerakan robot. Program lunak terdiri dari program utama,
program pendeteksi objek berdasarkan warna, program penyimpanan data, program sensor
kompas, program pergerakan servo, program mode bersiap, program mode bermain,
program mode berhenti, dan program tampilan GUI. Pada program utama berisi inisialisasi
variabel, pemanggilan library pada python, dan pengaturan komunikasi sistem dengan
robot.
Gambar 4. 26 Listing program pemanggilan library serta inisialisasi variabel.
import RPi.GPIO as GPIO from time import sleep import cv2 import numpy as np import math import smbus from socket import * from Tkinter import * vid = cv2.VideoCapture(0) a = 0 c = 0 #Inisialisasi Servo GPIO servo = 12 GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) GPIO.setup(servo, GPIO.OUT) ####################### Inisialisasi Warna ############################## lower_bola = np.array([10, 125, 170], dtype=np.uint8) upper_bola = np.array([20, 255, 255], dtype=np.uint8) #Bola lower_gawang = np.array([90, 33, 210], dtype=np.uint8) upper_gawang = np.array([179, 255, 255 ], dtype=np.uint8) #gawang lower_lawan = np.array([150, 100, 130], dtype=np.uint8) upper_lawan = np.array([179, 158, 245], dtype=np.uint8) #magenta
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
78
Pada gambar 4.26 menunjukkan listing program untuk pemanggilan library pada
python dan memberikan inisialisasi variabel yang digunakan. Pemanggilan library pada
python yang dipanggil adalah Rpi.GPIO, time, cv2, numpy, math, smbus, socket dan
Tkinter. Modul Rpi.GPIO digunakan untuk mengaktifkan pin GPIO pada Raspberry Pi.
Modul time digunakan untuk menunda waktu eksekusi berupa angka yang menyatakan
lama penundaan. Modul cv2 digunakan untuk mengolah citra dari masukan video
menggunakan Webcam. Modul numpy dan math digunakan untuk membantu perhitungan
dalam pengontrolan pergerakan robot. Modul smbus digunakan komunikasi I2C pada
sesnsor kompas. Modul socket digunakan untuk komunikasi pengiriman perintah dari
sistem ke robot serta menerima informasi dari robot. Terdapat inisialisasi variabel vid
untuk menerima masukan video dari kamera Webcam dengan diberikan nilai „0‟ agar
sistem menerima masukan video dari kamera satu. Selain itu menginisialisasi servo pada
pin 12 di board GPIO untuk mengaktifkan pergerakan servo. Lalu menginisialisasi
lower_bola, upper_bola, lower_lawan, upper_lawan, lower_gawang, upper_gawang
untuk inisialisasi warna berdasarkan objeknya menggunakan kode warna ke dalam HSV.
Gambar 4. 27 Listing program pengaturan komunikasi dengan robot.
Pada gambar 4.27 menunjukkan listing program pengaturan komunikasi dengan
robot. Komunikasi mengirim perintah dan informasi dari sistem ke robot dilakukan dua
arah.Variabel host digunakan untuk menyambungkan dari sistem ke alamat yang akan
dituju. Variabel host1 digunakan untuk alamat asal ke sistem. Dalam pengiriman informasi
dan perintah ke robot menggunakan port yang berbeda agar data yang dikirim dan diterima
tidak bertabrakan. Pada variabel port menggunakan 13000 untuk melakukan pengiriman
informasi dan perintah dari sistem ke robot, sedangkan variabel port1 menggunakan 11000
untuk menerima informasi dari robot ke sistem. Variabel UDPSock digunakan untuk
menentukan jenis socket yang digunakan adalah datagram (UDP).
################# Pengaturan Komunikasi dengan Robot ###################### host = "169.254.12.128" host1 = "" port = 13000 #port yang digunakan harus sama yaitu 13000 port1 = 11000 buf = 1024 #jumlah maksimal karakter yang diterima addr = (host, port) addr1 = (host1, port1) UDPSock = socket(AF_INET, SOCK_DGRAM) UDPSock.bind(addr1) #untuk menghubungkan ke robot print "Online"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
79
Gambar 4. 28 Listing program untuk menentukan posisi objek.
Berdasarkan gambar 4.28 merupakan listing program untuk menentukan posisi nilai
x dan y pada masing-masing objek berdasarkan warnanya. Variabel tresh digunakan untuk
menyimpan nilai warna yang akan ditentukan dengan memberikan batasan nilai warna
menggunakan fungsi cv2.inRange. Pada variabel moments digunakan untuk memudahkan
sistem dalam menentukan posisi nilai x dan nilai y suatu objek dengan meletak pusat titik
tengah bidang pada objek tersebut sebagai target objek yang terdeteksi dengan
menggunakan fungsi cv2.moments dengan menggunakan persamaan 4.1[15].
,
Setelah itu nilai x dan nilai y disimpan dalam variabel cx dan cy. Lalu untuk
membantu memberi tanda pada objek bahwa sistem sudah berhasil mendeteksi objek
menggunakan fungsi cv2.circle. Untuk menamai objek agar membedakan objek sesuai
jenis nya menggunakan fungsi cv2.putText.
Gambar 4. 29 Listing program untuk merubah format data posisi.
def track_objects(): global hsv, lower, upper, cx, cy, frame tresh = cv2.inRange(hsv, lower, upper) #blur = cv2.GaussianBlur(tresh, (5, 5), 0) cx, cy = 0, 0 moments = cv2.moments(tresh, True) if moments['m00'] != 0: # calculate the centroid of the object using the moments cx = int(moments['m10'] / moments['m00']) cy = int(moments['m01'] / moments['m00']) cv2.circle(frame, (cx,cy), 10, (0, 0, 255), -1) cv2.putText(frame,"("+str(cx)+","+str(cy)+")", ((cx,cy)[0]+10,(cx,cy)[1]+15),
cv2.FONT_HERSHEY_SIMPLEX, 0.5,(30, 255, 237),1)
def format_data(): global cx, cy if cx < 10: cx ='0'+'0'+str(cx) elif cx < 100: cx ='0'+str(cx) if cy < 10: cy ='0'+'0'+str(cy) elif cy < 100: cy ='0'+str(cy)
(4.1)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
80
Pada gambar 4.29 merupakan listing program untuk merubah format data posisi
nilai x dan nilai y agar robot dapat memahami perintah dan informasi yang dikirim oleh
sistem dalam mengatur pergerakan robot. Variabel format yang dirubah berupa type data
string.
Gambar 4. 30 Listing program untuk pengaturan sensor kompas.
Berdasarkan gambar 4.30 menunjukkan listing program untuk pengaturan sensor
kompas. Pada pembahasan sensor kompas ini peneliti menggunakan program yang sudah
pernah diteliti sebelumnya dan peneliti hanya menggunkan dan mengembangkannya
saja[16]. Sensor kompas yang digunakan adalah HMC5883L dengan menggunakan alamat
####################### Pengaturan Sensor Kompas ######################## bus = smbus.SMBus(1) address = 0x1e def read_byte(adr): return bus.read_byte_data(address, adr) def read_word(adr): high = bus.read_byte_data(address, adr) low = bus.read_byte_data(address, adr+1) val = (high << 8) + low return val def read_word_2c(adr): val = read_word(adr) if (val >= 0x8000): return -((65535 - val) + 1) else: return val def write_byte(adr, value): bus.write_byte_data(address, adr, value) write_byte(0, 0b01110000) # Set to 8 samples @ 15Hz write_byte(1, 0b00100000) # 1.3 gain LSb / Gauss 1090 (default) write_byte(2, 0b00000000) # Continuous sampling scale = 0.92 x_offset = -362 #-170 #mencari data offset diberi nilai 0 y_offset = -703 #-53 #mencari data offset diberi nilai 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
81
slave 0x1E digunakan untuk komunikasi I2C. Pada gambar diatas merupakan pengaturan
yang diperlukan untuk instruksi pada sensor kompas untuk membaca dan menulis data.
Sensor kompas berfungsi untuk penunjuk arah dengan mengukur kekuatan medan magnet
pada sumbu X, Y, dan Z.
Gambar 4. 31 Listing program untuk menjalankan sensor kompas.
Pada gambar 4.31 merupakan listing program untuk mendapatkan data pengukuran
sensor berupa sudut. Karena hanya untuk mendapatkan nilai sudut maka sumbu yang
digunakan hanya sumbu X dan sumbu Y saja. Pada setiap sumbu X, Y, dan Z
menghasilkan data 16 bit yang dipisahkan dengan 8 bit LSB dan 8 bit MSB.
Pada definisi read_compas(offset) terdapat perintah:
Berdasarkan pembahasan diatas pada variabel x_out digunakan untuk membaca
data register keluaran X pada regiter 3 dan pada variabel x_out digunakan untuk membaca
data register keluaran Y pada regiter 7 sesuai dengan datasheet sensor.
Pada variabel offset didapatkan dari hasil kalibrasi sensor kompas dengan mencari
nilai minimum dan maksimum pada sumbu X dan sumbu Y. Setelah mendapatkan nilai X
dan nilai Y maka dapat dicari sudutnya dan dibatasi sampai dengan 360 ° sebagai sudut
maksimum. Pada saat kalibrasi digunakan untuk mencari nilai tengahnya dari masing-
def read_compas(offset): global head x_out = (read_word_2c(3) - x_offset) * scale y_out = (read_word_2c(7) - y_offset) * scale z_out = read_word_2c(5) * scale bearing = math.atan2(y_out, x_out) head = int(math.degrees(bearing)) - offset if (head < 0): head += 360 def format_kompas(): global head if head < 10: head ='0'+'0'+str(head) elif head < 100: head ='0'+str(head)
x_out = (read_word_2c(3) - x_offset) * scale y_out = (read_word_2c(7) - y_offset) * scale
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
82
masing sumbu dan didapatkan nilai offset. Untuk listing program kalibrasi sensor kompas
dapat dilihat di lampiran.
Gambar 4. 32 Listing program untuk menentukan arah yang diinginkan.
Berdasarkan gambar 4.32 menunjukkan listing program untuk menentukan sesuai
arah yang diinginkan. Dengan memanggil fungsi dari penjelasan program sebelumnya
untuk menjalankan sensor kompas, kemudian nilai ° sudut yang dihasilkan dari 0 sampai
359 diolah kembali. Pada varibel kompres berisi nilai 180 yang digunakan untuk
menurunkan ° dari sudut maksimal 359 menjadi sudut maksimal 180 terdapat pada
variabel direct. Kemudian ditentukan arah yang ingin dituju sesuai pada variabel tujuan
berisi nilai 0 sehingga arah yang diinginkan adalah 0° sebagai arah menuju gawang lawan.
Gambar 4. 33 Listing program untuk pengaturan servo dalam menggerakan kamera.
def arah(): global head read_compas(0) format_kompas() tujuan = 0 #dapat diset sesuai arah tujuannya kompres = 180 kompas = head #fungsi kompas 0-359 direct = head - kompres #berapa ° yg diinginkan if (direct > tujuan):
direct = -180 + direct elif (direct < tujuan):
direct = 180 + direct
def setServoAngle(angle): pwm = GPIO.PWM(servo, 50)
pwm.start(0) dutyCycle= 1./18.*(angle)+2 pwm.ChangeDutyCycle(dutyCycle) sleep(0.15) pwm.stop() def mapServoPositionBola (cy_bola): global angle if (10 < cy_bola < 50):
angle = 80 setServoAngle (angle) if (cy_bola >430 ): angle = 55 setServoAngle (angle) def mapServoPositionGawang (cy_lawan): global angle if (cy_lawan ==0 ): angle = 80 setServoAngle (angle)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
83
Gambar 4. 34 Motor servo yang digunakan.
Berdasarkan gambar 4.33 merupakan listing program untuk pengaturan servo
dalam menggerakan kamera agar dapat mengikuti objek yang bergerak. Pada gambar 4.34
merupakan motor servo yang digunakan sebagai penggerak kamera adalah motor servo
180°. Motor servo yang digunakan memiliki pergerakan 0° sampai 180°, namun pada
program ini hanya digunakan untuk menggerakan pada sudut 0° sampai 90° sesuai yang
diperlukan saja. Pada variabel pwm merupakan pengaturan sinyal PWM dengan frekuensi
50 Hz yang diberikan pada pin kontrol pada variabel servo yaitu pin 12 yang sudah
dijelaskan pada pembahasan program utama.
Pada variabel angel merupakan inputan berupa nilai sudut untuk menentukan °
yang diinginkan. Sedangkan diperlukan perhitngan untuk menggerakan servo mengatur
pwm berdasarkan dutycycle . Peneliti melakukan uji coba dutycycle menggunakan
program python guna mengetahui besar dutycycle yang dibutuhkan dari 0° sampai 180°.
Dan didapat jika gerakan menuju posisi 0° dibutuhkan dutycycle sebesar 2% sedangkan
untuk menggerakkan ke posisi 180° dibutuhkan dutycycle sebesar 12%. Sehingga dari
pengujian diatas didapat persamaan sebagai berikut:
Dari persamaan di atas dapat diasumsikan bahwa posisi awal servo adalah 0°
dengan dutycycle 2%, maka didapat perhitungan menjadi:
( )
( )
Berdasarkan persamaan diatas maka didapat variabel y sebagai masukan untuk
menggerakkan servo menuju ° yang diinginkan. Pada definisi mapServoPositionBola
(4.2)
(4.3)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
84
(cy_bola) dan mapServoPositionGawang (cy_lawan) digunakan untuk merubah posisi
kamera dengan meggerakkan servo sesuai perubahan posisi nilai x dan nilai y pada objek
yang terdeteksi.
Gambar 4. 35 Listing program untuk tampilan GUI.
Pada gambar 4.35 merupakan listing program untuk tampilan GUI sebagai tampilan
antarmuka untuk membantu peneliti untuk memberikan perintah ke robot sesuai dengan
root = Tk() root.title("Pengontrol Robot Sepak Bola Beroda") root.t1 = IntVar() cnt = Label(root, text='Pengontrol Robot Sepak Bola Beroda', font=('Arial', 20)) cnt.pack() frm1 = LabelFrame(root, text="Mode yang dipilih",background="White") frm1.pack() frm2 = Frame(frm1) frm2.pack(side=LEFT) cnt1 = LabelFrame(frm2, text='Bersiap', font=('Arial', 20)) cnt1.pack(side=LEFT) frm3 = Frame(frm1) frm3.pack(side=LEFT) cnt2 = LabelFrame(frm2, text='Bermain', font=('Arial', 20)) cnt2.pack(side=LEFT) frm4 = Frame(frm1) frm4.pack(side=LEFT) cnt4 = LabelFrame(frm2, text="Data Ke-") cnt4.pack(side=LEFT) ent = Entry(cnt4) ent.pack(side=LEFT) mode = IntVar() btn1 = Button(cnt1, text="Bersiap", padx=30, pady=30, command=Bersiap) btn1.pack(side=LEFT) btn2 = Button(cnt2, text="Bermain", padx=30, pady=30, command=Bermain) btn2.pack(side=LEFT) btn3 = Button(frm2, text="Berhenti", padx=30, pady=40, command=Berhenti) btn3.pack(side=BOTTOM) root.mainloop()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
85
mode yang diinginkan. Tampilan Gui ini dibuat dengan bantuan menggunakan modul
Tkinter. Tampilan akan berupa frame berisi tombol-tombol dan sebuah textbox. Pada
fungsi LabelFrame() digunakan untuk membuat sebuah frame dengan memiliki label,
fungsi Frame() digunakan untuk membuat frame yang akan dibuat tombol-tombol di
dalamnya, fungsi Button() digunakan untuk membuat tombol berdasarkan modenya, fungsi
Entry() digunakan untuk membuat sebuah masukan textbox nantinya digunakan untuk
menyimpan data.
Gambar 4. 36 Listing program untuk tombol-tombol tampilan GUI.
Pada gambar 4.36 merupakan listing program untuk tombol-tombol pada tampilan
GUI. Jika salah satu tombol ditekan maka salah satu fungsi Bersiap(), Bermain(),
Berhenti() akan dipanggil. Pada variabel a berfungsi untuk menentukan mode yang
pergerakan robot. Diawal pembahasan pada program utama di definisikan variabel yang
diberi nilai nol. Misal jika ditekan tombol mode bermain maka isi variabel a akan berubah
nilainya menjadi dua.
def Bersiap(): global a a = 1 def Bermain(): global a a = 2 def Berhenti(): global a a = 3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
86
Gambar 4. 37 Listing program tampilan antarmuka untuk menandai objek.
Pada gambar 4.37 merupakan listing program tampilan antarmuka untuk menandai
objek. Pada variabel frame merupakan untuk mengaktifkan kamera Webcam sehingga
sistem mendapat inputan citra. Kemudian mengatur tampilan kamera karena posisinya
terbalik maka perlu diputar menggunakan fungsi cv2.flip(). Selanjutnya masukan dari
kamera yang sudah tersimpan dalam variabel frame dirubah menjadi HSV menggunakan
fungsi cv2.COLOR_BGR2HSV untuk mempermudah sistem dalam pendeteksian warna
dalam berbagai pencahayaan. Setelah itu untuk mempermudah dalam menentukan objek
berdasarkan warnanya maka untuk warna ditentukan batas bawah dan batas atas agar objek
lain yang objek lain yang tidak ingin dideteksi tidak ikut terdeteksi. Kemudian sistem akan
memanggil fungsi track_objects() untuk menetukan nilai dari posisi x dan posisi y dari
objek tersebut. Setelah itu sistem memanggil fungsi format_data( ) untuk merubah format
data dari nilai posisi x dan posisi y yang sudah ditemukan, kemudian hasilnya masing-
ret_val, frame = vid.read() frame = cv2.flip(frame,2) frame = cv2.flip(frame,2) hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) ##################### Deteksi Objek Berdasarkan Warna ##################### lower = lower_bola upper = upper_bola track_objects() format_data() cv2.putText(frame, 'Bola', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX
, 1, (0, 125, 255), 2) cx_bola, cy_bola = cx, cy lower = lower_gawang upper = upper_gawang track_objects() format_data() cv2.putText(frame, 'Gawang', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX
, 1, (255, 0, 0), 2) cx_gawang, cy_gawang = cx, cy lower = lower_lawan upper = upper_lawan track_objects() format_data() cv2.putText(frame, 'Lawan', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX
, 1, (255, 0, 0), 2) cx_lawan, cy_lawan = cx, cy
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
87
masing posisi x dan posisi y akan disimpan kembali dalam variabel cx dan cy. Lalu dari
variabel cx dan cy akan digunakan untuk menentukan objek yang ingin dideteksi sesuai
warnanya, seperti contoh jika ingin mendeteksi objek bola maka cx dan cy dirubah menjadi
cx_bola dan cy_bola. Kemudian untuk menamai objek sesuai dengan jenis objek nya pada
tampilan antarmuka dengan menggunakan fungsi cv2.putText agar mempermudah
pengguna bahwa sistem sudah berhasil mendeteksi objek.
Gambar 4. 38 Listing program untuk mengubah data menjadi string untuk dikirim ke robot.
Berdasarkan gambar 4.38 merupakan listing program untuk mengubah data
menjadi string untuk dikirim ke robot. Pada variable data1 untuk menyimpan data objek
bola, variabel data3 untuk menyimpan data objek lawan, variabel data4 untuk menyimpan
data objek gawang, variabel data6 untuk menyimpan data setpoint, variabel data5 untuk
##################### Mengirim Perintah ke Robot ######################### l1=str(cx_bola)+str(cy_bola) data1 = '1'+l1 l3=str(cx_lawan)+str(cy_lawan) data3 = '3'+l3 l4=str(cx_gawang)+str(cy_gawang) data4 = '4'+l4 cx,cy = set_posisi_x_robot, set_posisi_y_robot format_data() set_posisi_x_robot, set_posisi_y_robot = cx,cy l6=str(set_posisi_x_robot)+str(set_posisi_y_robot) data6 = '03'+l6 print str(data1),", ",str(data3) ,", ",str(data4),", ",str(data6),", ",str(head),", ",str(direct),",
",str('Bersiap')
data5= '04'+ str(direct) data7 = str(data1)+", "+str(data3)+", "+str(data4)+", "+str(data6)+", "+str(head)+",
"+str(direct)+", "+str('Bersiap')
save(data7) kirim='08'+str(c) data8 = 'USD'+'06'+str(data6)+str(data5)+str(kirim)+'00' UDPSock.sendto(data8, addr)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
88
menyimpan data sudut kompas, variabel data7 untuk menyatukan yang berisi data1, data3,
data4, dan data6 menjadi satu file dengan memanggil fungsi save(data7). Pada varibel
print merupakan fungsi untuk menampilkan semua data tadi di dalam sebuah tampilan
GUI. Pada varibel kirim merupakan masukan dari sistem berupa angka yang kemudian
dikirim ke robot yang menjadi informasi penamaan file yang akan disimpan oleh robot.
Dari semua data tadi disimpan pada variabel data7 dan dirubah data nya menjadi bentuk
string , lalu data dikirim ke robot dengan menambahkan kode di depan nya pada data tadi
seperti pada perubahan perancangan bab IV. Data tersebut dikirim menggunakan bantuan
modul Socket pada fungsi UDPSock.sendto.
Gambar 4. 39 Listing program untuk menentukan setpoint pada mode bersiap.
Pada gambar 4.39 merupakan listing program untuk menentukan setpoint pada
mode bersiap. Pada progam dirancang menggunakan if dan elif untuk menentukan setpoint
sesuai dengan perancangan pada bab III. Nilai diatas ditentukan berdasarkan nilai posisi x
dan posisi y yang sudah ditentukan lalu diolah agar dapat menentukan setpoint sesuai yang
diinginkan. Saat kondisi mode bersiap setpoint ditentukan pada objek bola untuk mengatur
pergerakan robot agar dapat berhenti pada tengah lapangan seperti kondisi kick off pada
umumnya. Pada variabel cy_bola merupakan hasil pengolahan citra dengan sudah
mendapatkan nilai posisi x dan posisi y, kemudian diolah agar dapat menjadi fungsi untuk
mode bersiap
############### Mengolah Data serta Algoritma untuk Kontrol Robot############ if int(cy_bola) >=300:
set_posisi_x_robot = int(cx_bola) set_posisi_y_robot = int(cy_bola) UDPSock.sendto ('exit', addr)
elif 300 >= int(cy_bola) >= 200:
set_posisi_x_robot = int(cx_bola) set_posisi_y_robot = int(cy_bola)
elif 200 >= int(cy_bola) >= 120:
set_posisi_x_robot = int(cx_bola) set_posisi_y_robot = int(cy_bola)
elif int(cy_bola) <= 120:
set_posisi_x_robot = int(cx_bola) set_posisi_y_robot = int(cy_bola)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
89
Gambar 4. 40 Listing program untuk menentukan setpoint pada mode bermain.
Berdasarkan pada gambar 4.41 merupakan listing program untuk menentukan
setpoint pada mode bermain. Untuk melakukan tindakan pengontrolan menyerang atau
bertahan maka pada sistem menggunakan penentuan radius seperti pada gambar 4.40.
Gambar 4. 41 Penentuan jarak robot antara lawan atau bola.
serang='USD'+'21'+'00000000'+'000000'+'0000'+'12' bertahan='USD'+'21'+'00000000'+'000000'+'0000'+'12' ###menentukan bola dalam penguasaan musuh atau tidak k1 = (int(cx_lawan)-int(cx_bola))**2 k2 = (int(cy_lawan)-int(cy_bola))**2 radius1 = math.sqrt(k1+k2) if int(radius1) < 110: ##Mode bertahan diaktifkan set_posisi_x_robot = int(cx_lawan) set_posisi_y_robot = int(cy_lawan) UDPSock.sendto(bertahan, addr) #Mengirim perintah bermain elif int(radius1) > 110: ##Mode menyerang diaktifkan set_posisi_x_robot = int(cx_bola) set_posisi_y_robot = int(cy_bola) UDPSock.sendto(serang, addr) #Mengirim perintah bermain #if int(cx_bola) == 0 and int(cy_bola) == 0: #set_posisi_x_robot = int(cx_lawan) #set_posisi_y_robot = int(cy_lawan) #UDPSock.sendto('21', addr) #Mengirim perintah bermain cv2.circle(frame, (int(set_posisi_x_robot),int(set_posisi_y_robot)), 10, (0, 0, 255), -1) cv2.putText(frame,'Target', (int(set_posisi_x_robot),int(set_posisi_y_robot)), cv2.FONT_HERSHEY_SIMPLEX, 1,(30, 255, 237),2)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
90
Sehingga dari gambar 4.40 didapat persamaan seperti berikut:
√( ) ( )
Kemudian untuk mengolah radius yang sudah di dapatkan untuk dijadikan acuan untuk
mendapatkan setpoint terdapat pada perintah:
Hasil perhitungan dari persamaan 4.4 tersimpan pada variabel radius1, misal saja
nilai radius yang dihasilkan 100 maka mode bertahan yang akan dijalankan oleh sistem.
Gambar 4. 42 Listing program untuk merubah ke mode bermain.
Pada gambar 4.42 merupakan listing program untuk melakukan perubahan ke
mode bermain. Jika pada pada tampilan GUI ditekan pada mode bermain maka sistem akan
melakukan pemanggilan modul pada fungsi def Bermain(). Pada variabel kirim merupakan
untuk memberikan perintah ke robot untuk memberikan informasi kondisi penguasaan bola
ke sistem. Memberikan informasi ke sistem sangat penting agar sistem dapat menentukan
fungsi yang harus dijalankan. Setelah dari robot merespon jawaban dari sistem maka robot
akan mengirim paket data berupa kode dan informasi. Pada listing program terdapat
keterangan fungsi terima data dari robot. Data yang diterima akan diterjemahkan sistem
dengan proses pertama kali adalah mengkoreksi kode awal yang diterima yaitu USD jika
if int(radius1) < 110: ##Mode bertahan diaktifkan
set_posisi_x_robot = int(cx_lawan) set_posisi_y_robot = int(cy_lawan)
def Bermain(): global a,kirim1,kirim,data,modemain a = 2 kirim='USD'+'20'+'00000000'+'000000'+'0000'+'00' kirim1='USD'+'21'+'00000000'+'000000'+'0000'+'00' tampilan() UDPSock.sendto(kirim1, addr) while (a==2): global modemain #UDPSock.sendto(kirim, addr) #Perintah tidak mengirim data ke robot ###################### Fungsi Terima Data Robot ########################### (data,addr1) = UDPSock.recvfrom(buf) if data[0]=='U' and data[1]=='S' and data[2]=='D':
if data[3]=='9': #Posisi modemain= str(data[4])
else: return
modemain= modemain mulai()
(4.4)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
91
sudah benar maka paket data tersebut benar dikirim dari robot sendiri. Selanjutnya
menerjemahkan kode informasi berupa angka 90 berarti bola belum dikuasai robot maka
sistem akan menjalankan fungsi untuk menyerang dan 91 berarti bola sudah dikuasai robot
maka sistem akan menjalankan fungsi untuk menuju gawang. Setelah menerjemahkan
kode yang diterima dari robot, kemudian sistem memanggil fungsi mulai() untuk
mengaktifkan fungsi untuk menyerang atau menuju gawang.
Berdasarkan pada gambar 4.43 merupakan listing program untuk menentukan mode
berhenti. Jika pada tampilan GUI ditekan tombol berhenti maka sistem akan memanggil
modul pada fungsi def Berhenti() sehingga sistem memerintahkan robot untuk
memberhentikan semua proses yang sedang berjalan.
Gambar 4. 43 Listing program untuk menentukan mode berhenti.
def Berhenti(): global a, modemain a = 3 modemain = '0' UDPSock.sendto ('exit', addr)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
92
BAB V
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Berdasarkan hasil pengujian dan pengambilan data dari sistem pengontrol robot
sepak bola beroda dengan metode color tracking, dapat diambil kesimpulan sebagai
berikut.
1. Dalam pengujian dan pengambilan data dilakukan di luar ruangan sehingga ketika
pencahayaan yang cukup terang saat siang hari sistem mampu menganalisa
masukan berupa video dari Webcam untuk diolah berdasarkan warna objek
menghasilkan berupa titik koordinat pixel kamera menggunakan pengolahan citra
dengan bantuan library OpenCV yang mengarahkan pergerakan robot berdasarkan
berbagai mode.
2. Dalam pengujian dan pengambilan data dilakukan di luar ruangan sehingga ketika
pencahayaan yang kurang terang saat sore hari sistem kurang mampu untuk
membaca objek sesuai warnanya.
3. Dalam pencahayaan yang cukup terang sistem mampu mengarahkan robot menuju
setpoint sesuai yang diinginkan dengan rata-rata kesalahan untuk posisi y pada
mode bersiap yaitu 0% untuk dari titik A (ujung kanan gawang sendiri) dan 0,3%
untuk dari titik B (ujung kiri gawang sendiri). Sedangkan pada mode bermain
dengan rata-rata kesalahan titik setpoint akhir untuk menendang sebesar 1,65%.
4. Robot dapat menerima perintah dan mengeksekusi perintah dari sistem sesuai
dengan mode yang diperintahkan untuk menggerakan robot menggunakan socket
Python.
5. Sensor kompas yang diprogram dapat menghasilkan sudut maksimal yaitu 360°.
6. Robot dapat secara otomatis menjalakan kondisi bersiap sesuai perintah dari sistem.
7. Robot dapat secara otomatis menjalakan kondisi bermain yaitu merebut bola dan
menuju gawang sesuai perintah dari sistem.
8. Ketika kondisi robot menuju gawang masih kurang tepat untuk berhenti di luar
kotak pinalti dikarenakan terdapat jeda dari kamera Webcam.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
93
5.2. Saran
Setelah dilakukan seluruh proses maka diperoleh saran untuk pengembangan
penelitian selanjutnya yaitu:
1. Diperlukan pengembangan lebih lanjut mengenai metode sistem mengenali warna
objek yang tidak berpengaruh terhadap cahaya.
2. Diperlukan Webcam dengan kualitas gambar yang lebih baik dan jeda kamera yang
lebih cepat diatas 30fps.
3. Sistem dapat dikembangkan dengan teknologi multiprocessing agar dapat
melaksanakan banyak proses sekaligus dan dapat mempercepat proses kinerja
sistem sehingga pergerakan robot menjadi lebih cepat.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
94
DAFTAR PUSTAKA
[1].Kontes Robot Indonesia, http://belmawa.ristekdikti.go.id/2017/07/07/pers-release-
kontes-robot-indonesia-kri-tingkat-nasional-2017/, diakses 29 Oktober 2017.
[2].Rakhman,Edi. RASPBERRY PI – Mikrokontroler Mungil yang Serba Bisa.
Yogyakarta: ANDI.
[3].Raspberry Pi Camera, https://www.element14.com/community/docs/DOC-
54359/l/raspberry-pi-camera-board, diakses 11 November 2017.
[4].Pengertian dan fungsi webcam, http://www.nesabamedia.com/pengertian-webcam-dan-
fungsi-webcam/, diakses 22 Desember 2017
[5].Spesifikasi logitech HD Webcam C270,
http://support.logitech.com/en_us/article/17556, 22 Desember 2017
[6].Sianipar,R.H. dan Hamzam Wadi. Pemrograman PYTHON (Teori dan Implementasi).
Bandung: INFORMATIKA.
[7].PYTHON, https://www.belajarpython.com/2015/05/tipe-data-python.html, diakses 11
November 2017.
[8].Hidayatullah, Priyanto. Pengolahan Citra Digital (Teori dan Aplikasi Nyata). Bandung:
INFORMATIKA
[9].Model Ruang Warna HSV, https://pemrogramanmatlab.com/2016/06/08/model-ruang-
warna-pengolahan-citra/, diakses 12 Desember 2017.
[10].Konversi RGB ke HSV, https://www.rapidtables.com/convert/color/rgb-to-hsv.html,
diakses 12 Desember 2017.
[11].Poling, Bryan. “A Tutorial On Camera Models”. Minnesota : University of
Minnesota.
[12].Hoiem, Derek, “Projective Geometry and Camera Models”, Illinois : University of
Illinois.
[13] Pemograman Jaringan Sederhana di Python, http://studiawan.com/pemrograman-
jaringan-sederhana-di-python/, diakses 18 November 2017.
[14] Cakrawala,Fendish. Pengontrol Robot Soccer Beroda Berbasis Raspberry Pi 3 Sebagai
Prototype ERSBI 2017. Yogyakarta : Universitas Sanata Dharma.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
95
[15] Pemograman Jaringan Sederhana di Python, https://docs.opencv.org/3.4/dd/d49/
tutorial_py_contour_features.html, diakses 25 Agustus 2018.
[16] Ardiyanto,Lukas.Robot Pemadam Api Berkaki Dengan Algoritma Depth First Search.
Yogyakarta: Universitas Sanata Dharma.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L1
Diagram Blok Rangkaian
VCC
GND
INPUT
5 V
GND
GPIO 18
5 V
GND
GPIO 03
GPIO 02
VCC
GND
SCL
SDA
US
B
Inp
uta
n
vid
eo
Raspberry Pi 3 Model B
USB Webcam
Motor Servo Sensor Kompas HMC5883L
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L2
Listing Program
import RPi.GPIO as GPIO from time import sleep import cv2 import numpy as np import math import smbus from socket import * from Tkinter import * vid = cv2.VideoCapture(0) a = 0 c = 0 #define Servos GPIO servo = 12 GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) GPIO.setup(servo, GPIO.OUT) ############################### Inisialisasi Warna ############################# lower_bola = np.array([10, 125, 170], dtype=np.uint8) upper_bola = np.array([20, 255, 255], dtype=np.uint8) #orange Bola FIX lower_gawang = np.array([90, 33, 210], dtype=np.uint8) upper_gawang = np.array([179, 255, 255 ], dtype=np.uint8) #gawang siang lower_lawan = np.array([150, 100, 130], dtype=np.uint8) upper_lawan = np.array([179, 158, 245], dtype=np.uint8) #magenta ####################### Pengaturan Komunikasi dengan Robot #################### host = "169.254.12.128" host1 = "" port = 13000 #port yang digunakan adalah 13000, harus sama port1 = 11000 buf = 1024 #jumlah maksimal karakter yang diterima addr = (host, port) addr1 = (host1, port1) UDPSock = socket(AF_INET, SOCK_DGRAM) UDPSock.bind(addr1) print "Online"
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L3
def tampilan(): global c c= int(ent.get()) root.t1.set(c) f=open("Percobaan" + str(c) + ".csv", "a") f.write(str('Posisi_Bola')) f.write(', ') f.write(str('Posisi_Gawang')) f.write(', ') f.write(str('Posisi_Lawan')) f.write(', ') f.write(str('Posisi_Setpoint')) f.write(', ') f.write(str('Sudut')) f.write(', ') f.write(str('Koreksi_Sudut')) f.write(', ') f.write(str('Kondisi')) f.write("\r\n") def save(data7): global c c= int(ent.get()) root.t1.set(c) f=open("Percobaan" + str(c) + ".csv", "a") f.write(str(data7)) f.write("\r\n") f.flush() f.close() def track_objects(): global hsv, lower, upper, cx, cy, frame tresh = cv2.inRange(hsv, lower, upper) #blur = cv2.GaussianBlur(tresh, (5, 5), 0) res=cv2.bitwise_and(frame, frame, mask= tresh) cx, cy = 0, 0 moments = cv2.moments(tresh, True) if moments['m00'] != 0: # calculate the centroid of the object using the moments cx = int(moments['m10'] / moments['m00']) cy = int(moments['m01'] / moments['m00']) cv2.circle(frame, (cx,cy), 10, (0, 0, 255), -1) cv2.putText(frame,"("+str(cx)+","+str(cy)+")", ((cx,cy)[0]+10,(cx,cy)[1]+15),
cv2.FONT_HERSHEY_SIMPLEX, 0.5,(30, 255, 237),1)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L4
bus = smbus.SMBus(1) address = 0x1e def read_byte(adr): return bus.read_byte_data(address, adr) def read_word(adr): high = bus.read_byte_data(address, adr) low = bus.read_byte_data(address, adr+1) val = (high << 8) + low return val def read_word_2c(adr): val = read_word(adr) if (val >= 0x8000): return -((65535 - val) + 1) else: return val def write_byte(adr, value): bus.write_byte_data(address, adr, value) write_byte(0, 0b01110000) # Set to 8 samples @ 15Hz write_byte(1, 0b00100000) # 1.3 gain LSb / Gauss 1090 (default) write_byte(2, 0b00000000) # Continuous sampling scale = 0.92 x_offset = 102 #-362 #-170 #mencari data offset diberi nilai 0 y_offset = -293 #-703 #-53 #mencari data offset diberi nilai 0 def read_compas(offset): global head x_out = (read_word_2c(3) - x_offset) * scale y_out = (read_word_2c(7) - y_offset) * scale z_out = read_word_2c(5) * scale bearing = math.atan2(y_out, x_out) head = int(math.degrees(bearing)) - offset if (head < 0): head += 360 def format_kompas(): global head if head < 10: head ='0'+'0'+str(head) elif head < 100: head ='0'+str(head)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L5
def arah(): global head,direct tujuan = 0 #dapat diset sesuai arah tujuannya kompres = 180 kompas = int(head) #fungsi kompas 0-359 direct = kompres - kompas #berapa derajat yg diinginkan if int(direct) > tujuan: direct = -180 + direct elif int(direct) < tujuan: direct = 180 + direct def format_arah(): global direct if direct>=100: direct='+'+str(direct) elif 100> direct >=10: direct='+'+'0'+str(direct) elif 10> direct >0: direct='+'+'00'+str(direct) elif direct ==0: direct='+000' elif 0> direct >-10: direct='-'+'00'+str(-direct) elif -10>= direct >-100: direct='-'+'0'+str(-direct) ################################# Pengaturan Servo########################## def setServoAngle(angle): assert angle >=20 and angle <= 150 pwm = GPIO.PWM(servo, 50) pwm.start(0) #dutyCycle = angle / 18. + 3. dutyCycle= 1./18.*(angle)+2 pwm.ChangeDutyCycle(dutyCycle) sleep(0.15) pwm.stop() def mapServoPositionBola (cy_bola): global angle if (10 < cy_bola < 50): angle = 80 setServoAngle (angle) if (cy_bola >430 ): angle = 55 setServoAngle (angle)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L6
def mapServoPositionGawang (cy_lawan): global angle if (cy_lawan ==0 ): angle = 80 setServoAngle (angle) # Initialize angle servos at 90-90 position global angle angle =80 setServoAngle (angle) ############################ Fungsi untuk Mode Bersiap ########################## global a a = 1 tampilan() while (a==1): global hsv, frame, lower, upper, lower_bola, upper_bola,lower_gawangkiri, upper_gawangkiri,lower_gawangkanan,upper_gawangkanan, lower_lawan, upper_lawan, cx, cy,angle,head,direct,c,ellipse ret_val, frame = vid.read() frame = cv2.flip(frame,2) frame = cv2.flip(frame,2) #blur = cv2.GaussianBlur(frame, (5,5), 0) hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) ############################ Deteksi Objek Berdasarkan Warna #################### lower = lower_bola upper = upper_bola track_objects() format_data() cv2.putText(frame, 'Bola', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX , 1, (0, 125, 255), 2) cx_bola, cy_bola = cx, cy set_posisi_x_robot= 0 set_posisi_y_robot= 0 lower = lower_gawang upper = upper_gawang track_objects() format_data() cv2.putText(frame, 'Gawang', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2) cx_gawang, cy_gawang = cx, cy lower = lower_lawan upper = upper_lawan track_objects() format_data()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L7
cv2.putText(frame, 'Lawan', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX , 1, (255, 0, 0), 2)
cx_lawan, cy_lawan = cx, cy read_compas(0) format_kompas() arah() format_arah() #################### Mengolah Data serta Algoritma untuk Kontrol Robot ############
if int(cy_bola) >=300: set_posisi_x_robot = int(cx_bola) set_posisi_y_robot = int(cy_bola) UDPSock.sendto ('exit', addr) elif 300 >= int(cy_bola) >= 200: set_posisi_x_robot = int(cx_bola) set_posisi_y_robot = int(cy_bola) elif 200 >= int(cy_bola) >= 120: set_posisi_x_robot = int(cx_bola) set_posisi_y_robot = int(cy_bola) elif int(cy_bola) <= 120: set_posisi_x_robot = int(cx_bola) set_posisi_y_robot = int(cy_bola) cv2.circle(frame, (int(set_posisi_x_robot),int(set_posisi_y_robot)),
10, (0, 0, 255), -1) cv2.putText(frame,'Target', (int(set_posisi_x_robot),int(set_posisi_y_robot)), cv2.FONT_HERSHEY_SIMPLEX, 1,(30, 255, 237),2) ########################### Mengirim Perintah ke Robot ######################### l1=str(cx_bola)+str(cy_bola) data1 = '1'+l1 l3=str(cx_lawan)+str(cy_lawan) data3 = '3'+l3 l4=str(cx_gawang)+str(cy_gawang) data4 = '4'+l4 cx,cy = set_posisi_x_robot, set_posisi_y_robot format_data() set_posisi_x_robot, set_posisi_y_robot = cx,cy l6=str(set_posisi_x_robot)+str(set_posisi_y_robot) data6 = '03'+l6
print str(data1),", ",str(data3) ,", ",str(data4),", ",str(data6),", ",str(head) ,", ",str(direct),", ",str('Bersiap')
data5= '04'+ str(direct)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L8
data7 = str(data1)+", "+str(data3)+", "+str(data4)+", "+str(data6) +", "+str(head)+", "+str(direct)+", "+str('Bersiap')
save(data7) kirim='08'+str(c) data8 = 'USD'+'06'+str(data6)+str(data5)+str(kirim)+'00' UDPSock.sendto(data8, addr) root.update() ########################### Fungsi untuk Mode Berrmain ######################## ############################ Fungsi mengejar bola ############################## def detect_1(): global hsv, frame, lower, upper, lower_bola, upper_bola,lower_gawangkiri, upper_gawangkiri,lower_gawangkanan,upper_gawangkanan, lower_lawan, upper_lawan, cx, cy,angle,head,direct,c,ellipse lower = lower_bola upper = upper_bola track_objects() format_data() cv2.putText(frame, 'Bola', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX
, 1, (0, 125, 255), 2) cx_bola, cy_bola = cx, cy # position Servo at center of circle mapServoPositionBola(int(cy_bola)) lower = lower_gawang upper = upper_gawang track_objects() format_data() cv2.putText(frame, 'Gawang', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX
, 1, (255, 0, 0), 2) cx_gawang, cy_gawang = cx, cy lower = lower_lawan upper = upper_lawan track_objects() format_data() cv2.putText(frame, 'Lawan', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX
, 1, (255, 0, 0), 2) cx_lawan, cy_lawan = cx, cy
set_posisi_x_robot= 0 set_posisi_y_robot= 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L9
read_compas(0) format_kompas() arah() format_arah() serang='USD'+'21'+'00000000'+'000000'+'0000'+'12' bertahan='USD'+'21'+'00000000'+'000000'+'0000'+'12' ###menentukan bola dalam penguasaan musuh atau tidak k1 = (int(cx_lawan)-int(cx_bola))**2 k2 = (int(cy_lawan)-int(cy_bola))**2 radius1 = math.sqrt(k1+k2) if int(radius1) < 110: ##Mode bertahan diaktifkan set_posisi_x_robot = int(cx_lawan) set_posisi_y_robot = int(cy_lawan) UDPSock.sendto(bertahan, addr) #Mengirim perintah bermain elif int(radius1) > 110: ##Mode menyerang diaktifkan set_posisi_x_robot = int(cx_bola) set_posisi_y_robot = int(cy_bola) UDPSock.sendto(serang, addr) #Mengirim perintah bermain
cv2.circle(frame, (int(set_posisi_x_robot),int(set_posisi_y_robot)), 10, (0, 0, 255), -1) cv2.putText(frame,'Target', (int(set_posisi_x_robot),int(set_posisi_y_robot)),
cv2.FONT_HERSHEY_SIMPLEX, 1,(30, 255, 237),2) ########################## Mengirim Perintah ke Robot ########################## l1=str(cx_bola)+str(cy_bola) data1 = '1'+l1 l3=str(cx_lawan)+str(cy_lawan) data3 = '3'+l3 l4=str(cx_gawang)+str(cy_gawang) data4 = '4'+l4 cx,cy = set_posisi_x_robot, set_posisi_y_robot format_data() set_posisi_x_robot, set_posisi_y_robot = cx,cy l6=str(set_posisi_x_robot)+str(set_posisi_y_robot) data6 = '03'+l6
print str(data1),", ",str(data3) ,", ",str(data4),", ",str(data6),", ",str(head) ,", ",str(direct),", ",str('Serang')
data5= '04'+ str(direct)
data7 = str(data1)+", "+str(data3)+", "+str(data4)+", "+str(data6)+", "+str(head) +", "+str(direct)+", "+str('Serang')
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L10
save(data7) kirim='08'+str(c) data8 = 'USD'+'21'+str(data6)+str(data5)+str(kirim)+'12' UDPSock.sendto(data8, addr) root.update() #########################Fungsi Saat Menuju Gawang ########################## def detect_2(): global hsv, frame, lower, upper, lower_bola, upper_bola,lower_gawangkiri, upper_gawangkiri,lower_gawangkanan,upper_gawangkanan, lower_lawan, upper_lawan, cx, cy,angle,head,direct,c,ellipse cx=0 cy=0 lower = lower_bola upper = upper_bola track_objects() format_data() cv2.putText(frame, 'Bola', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX
, 1, (0, 125, 255), 2) cx_bola, cy_bola = cx, cy lower = lower_gawang upper = upper_gawang track_objects() format_data() cv2.putText(frame, 'Gawang', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX
, 1, (255, 0, 0), 2) cx_gawang, cy_gawang = cx, cy set_posisi_x_robot=0 set_posisi_y_robot=0 lower = lower_lawan upper = upper_lawan track_objects() format_data() cv2.putText(frame, 'Lawan', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX
, 1, (255, 0, 0), 2) cx_lawan, cy_lawan = cx, cy
# position Servo at center of circle mapServoPositionGawang(int(cy_lawan))
read_compas(0) format_kompas() arah() format_arah()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L11
tendang='USD'+'51'+'00000000'+'040000'+'0000'+'00' tendang1='USD'+'50'+'00000000'+'040000'+'0000'+'00' berhenti='USD'+'00'+'00700500'+'040000'+'0000'+'00' ######################################### Ganti Setpoint ke Gawang ##################################### if 400 >= int(cx_lawan) >= 200 and 100 >= int(cy_lawan) >= 1 set_posisi_x_robot = int(cx_lawan) + 250 set_posisi_y_robot = int(cy_lawan) elif 400 >= int(cx_lawan) >= 200 and 180 >= int(cy_lawan) >= 100: #serang kiri UDPSock.sendto(berhenti, addr) set_posisi_x_robot = int(cx_lawan) + 250 set_posisi_y_robot = int(cy_lawan) UDPSock.sendto(tendang, addr) UDPSock.sendto(tendang1, addr) UDPSock.sendto(berhenti, addr) print 'Tendang' UDPSock.sendto ('exit', addr) elif 400 >= int(cx_lawan) >= 200 and 300 >= int(cy_lawan) >= 180 : #serang kiri set_posisi_x_robot = int(cx_lawan) + 250 set_posisi_y_robot = int(cy_lawan) elif int(cx_lawan) >= 400 : #serang kiri jauh dari gawang if int(cy_lawan) <= 200: set_posisi_x_robot = int(cx_lawan) - 250 set_posisi_y_robot = int(cy_lawan)
elif int(cy_lawan) >= 200: UDPSock.sendto(berhenti, addr) set_posisi_x_robot = int(cx_lawan) - 250 set_posisi_y_robot = int(cy_lawan) UDPSock.sendto(tendang, addr) UDPSock.sendto(tendang1, addr) UDPSock.sendto(berhenti, addr) print 'Tendang' UDPSock.sendto ('exit', addr)
elif 200 >= int(cx_lawan) >= 1 : #serang kanan if int(cy_lawan) <= 200: set_posisi_x_robot = int(cx_lawan) + 250 set_posisi_y_robot = int(cy_lawan) elif int(cy_lawan) >= 200: UDPSock.sendto(berhenti, addr) set_posisi_x_robot = int(cx_lawan) + 250 set_posisi_y_robot = int(cy_lawan) UDPSock.sendto(tendang, addr) UDPSock.sendto(tendang1, addr) UDPSock.sendto(berhenti, addr) print 'Tendang' UDPSock.sendto ('exit', addr)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L12
elif int(cx_lawan) == 0 and int(cy_lawan) == 0 : #serang kanan set_posisi_x_robot = int(cx_lawan) set_posisi_y_robot = int(cy_lawan)
cv2.circle(frame, (int(set_posisi_x_robot),int(set_posisi_y_robot)), 10, (0, 0, 255), -1) cv2.putText(frame,'Target', (int(set_posisi_x_robot),int(set_posisi_y_robot)),
cv2.FONT_HERSHEY_SIMPLEX, 1,(30, 255, 237),2) ########################### Mengirim Perintah ke Robot ########################## l1=str(cx_bola)+str(cy_bola) data1 = '1'+l1 l3=str(cx_lawan)+str(cy_lawan) data3 = '3'+l3 l4=str(cx_gawang)+str(cy_gawang) data4 = '4'+l4 cx,cy = set_posisi_x_robot, set_posisi_y_robot format_data() set_posisi_x_robot, set_posisi_y_robot = cx,cy l6=str(set_posisi_x_robot)+str(set_posisi_y_robot) data6 = '03'+l6 print str(data1),", ",str(data3) ,", ",str(data4),", ",str(data6),", ",str(head)
,", ",str(direct),", ",str('Mencari gawang') # data5= '04'+ str(direct) data7 = str(data1)+", "+str(data3)+", "+str(data4)+", "+str(data6)+", "+str(head)
+", "+str(direct)+", "+str('Mencari gawang') # save(data7) kirim='08'+str(c) data8 = 'USD'+'21'+str(data6)+str(data5)+str(kirim)+'11' UDPSock.sendto(data8, addr) root.update() ############## Fungsi untuk Deteksi objek dan Pemilihan Mode Bermain ############### def mulai(): global hsv, frame, lower, upper, lower_bola, upper_bola,lower_gawangkiri, upper_gawangkiri,lower_gawangkanan,upper_gawangkanan, lower_lawan, upper_lawan, cx, cy,angle,head,direct,c,ellipse ret_val, frame = vid.read() frame = cv2.flip(frame,2) frame = cv2.flip(frame,2)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L13
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) if modemain=='0': detect_1() elif modemain=='1': detect_2() root.update() #################### Fungsi Terima Data Robot ##################### def terima(): global modemain (data,addr1) = UDPSock.recvfrom(buf) print "data terima \t:" +str(data) if data[0]=='1': #Posisi Bola modemain= '1' elif data[0]=='2': #Posisi Robot modemain= '2' ######################################### Fungsi Utama Bermain ##################################### def Bermain(): global a,kirim1,kirim,data,modemain a = 2 kirim='USD'+'20'+'00000000'+'000000'+'0000'+'00' kirim1='USD'+'21'+'00000000'+'000000'+'0000'+'00' tampilan() UDPSock.sendto(kirim1, addr) while (a==2): global modemain #UDPSock.sendto(kirim, addr) #Perintah tidak mengirim data ke robot ###################### Fungsi Terima Data Robot ########################## (data,addr1) = UDPSock.recvfrom(buf) #print "data terima \t:" +str(data) if data[0]=='U' and data[1]=='S' and data[2]=='D': if data[3]=='9': #Posisi Bola modemain= str(data[4]) else: return modemain= modemain mulai() root.update() ####################### Fungsi untuk Mode Berhenti ######################### def Berhenti(): global a, modemain a = 3 modemain = '0' berhenti='USD'+'00'+'03700500'+'000000'+'0000'+'11' UDPSock.sendto ('exit', addr) UDPSock.sendto (berhenti, addr) root.update()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L14
########################### Fungsi Tampilan ################################### root = Tk() root.title("Pengontrol Robot Sepak Bola Beroda") root.t1 = IntVar() cnt = Label(root, text='Pengontrol Robot Sepak Bola Beroda', font=('Arial', 20)) cnt.pack() frm1 = LabelFrame(root, text="Mode yang dipilih",background="White") frm1.pack() frm2 = Frame(frm1) frm2.pack(side=LEFT) cnt1 = LabelFrame(frm2, text='Bersiap', font=('Arial', 20)) cnt1.pack(side=LEFT) frm3 = Frame(frm1) frm3.pack(side=LEFT) cnt2 = LabelFrame(frm2, text='Bermain', font=('Arial', 20)) cnt2.pack(side=LEFT) frm4 = Frame(frm1) frm4.pack(side=LEFT) cnt4 = LabelFrame(frm2, text="Data Ke-") cnt4.pack(side=LEFT) ent = Entry(cnt4) ent.pack(side=LEFT) mode = IntVar() btn1 = Button(cnt1, text="Bersiap", padx=30, pady=30, command=Bersiap) btn1.pack(side=LEFT) btn2 = Button(cnt2, text="Bermain", padx=30, pady=30, command=Bermain) btn2.pack(side=LEFT) btn3 = Button(frm2, text="Berhenti", padx=30, pady=40, command=Berhenti) btn3.pack(side=BOTTOM) root.mainloop()
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L15
Kondisi Percobaan Mode bermain pada Lapangan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI