pengontrol robot soccer beroda berbasis … · selama pembuatan tugas akhir ini, penulis menyadari...

114
i TUGAS AKHIR PENGONTROL ROBOT SOCCER BERODA BERBASIS RASPBERRY PI 3 SEBAGAI PROTOTYPE ERSBI 2017 Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program Studi Teknik Elektro Oleh: FENDISH CAKRAWALA STIEFANUS NIM: 135114053 JURUSAN TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2017 PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Upload: lymien

Post on 30-Jun-2019

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

i

TUGAS AKHIR

PENGONTROL ROBOT SOCCER BERODA

BERBASIS RASPBERRY PI 3 SEBAGAI

PROTOTYPE ERSBI 2017

Diajukan Untuk Memenuhi Salah Satu Syarat

Memperoleh Gelar Sarjana Teknik

Program Studi Teknik Elektro

Oleh:

FENDISH CAKRAWALA STIEFANUS

NIM: 135114053

JURUSAN TEKNIK ELEKTRO

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

2017

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 2: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

ii

FINAL PROJECT

SMALL SIZE SOCCER ROBOT CONTROLLER ON

RASPBERRY PI 3 AS ERSBI 2017 PROTOTYPE

Presented as Partial Fulfillment of the Requierments

To Obtain the Sarjana Teknik Degree

In Electrical Engineering Study Program

FENDISH CAKRAWALA STIEFANUS

NIM: 135114053

DEPARTMENT OF ELECTRICAL ENGINEERING

FACULTY OF SCIENCE AND TECHNOLOGY

SANATA DHARMA UNIVERSITY

YOGYAKARTA

2017

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 3: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

iii

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 4: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

iv

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 5: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

v

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 6: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

vi

HALAMAN PERSEMBAHAN DAN MOTTO HIDUP

Motto Hidup:

“Jangan Pernah Menyerah, Jika Sudah Menyerah Maka Habislah Sudah”

“Jangan Pernah Berkata Tidak Bisa, Mungkin Itu Hanyalah Alasan Untuk

Malas Mencoba”

“I Can Do All Things Through Christ”

Skripsi ini saya persembahkan untuk...

Tuhan Yesus Juru selamatku

Keluarga dan orang terkasih

Teman-teman dari Teknik Elektro dan UKM Basket USD

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 7: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

vii

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 8: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

viii

INTISARI

Semakin berkembangnya teknologi robot di Indonesia maka diadakanlah Kontes

Robot Indonesia (KRI) yang bertujuan untuk meningkatkan kreativitas dan kemampuan

mahasiswa perguruan tinggi dalam pengembangan bidang teknologi robotika, salah satu

cabang yang diperlombakan dalam Kontes Robot Indonesia adalah cabang Ekshibisi Robot

Soccer Beroda Indonesia (ERSBI). Pada penelitian ini dibuat sebuah prototipe pengontrol

robot soccer yang dapat dimanfaatkan oleh Teknik Elektro Sanata Dharma untuk mengikuti

Kontes Robot Indonesia dalam bidang Ekshibisi Robot Soccer Beroda Indonesia.

Pengontrol robot soccer akan menggunakan Raspberry Pi 3 sebagai komputer mini

yang akan mengontrol robot secara otomatis berdasarkan masukan video dari Webcam.

Analisa masukan video menggunakan pengolahan citra dengan bantuan library python yaitu

OpenCV untuk menentukan masing-masing objek berdasarkan warnanya. Hasil dari analisa

tersebut adalah posisi x dan y dari masing-masing objek. Posisi x dan y dari masing-masing

objek akan digunakan untuk mengendalikan pergerakan robot berdasarkan mode yang

diinginkan. Mode pengendalian pergerakan robot terbagi menjadi tiga yaitu bersiap,

berhenti, dan bermain. Mode bersiap robot akan bergerak ke posisi tertentu, mode bermain

robot akan bergerak mengejar bola, menghindari lawan dengan metode Virtual Force Field

(VFF), menendang bola ke gawang dan bertahan dari serangan lawan. Perintah dari sistem

untuk robot akan dikirimkan dengan socket python.

Sistem pengontrol robot soccer menggunakan Raspberry Pi 3 dengan pencahayaan

ruangan yang cukup terang berhasil mendeteksi masing-masing objek berdasarkan warnanya

dengan pengolah citra. Sistem berhasil mengendalikan pergerakan robot berdasarkan dengan

mode yang diinginkan. Sistem berhasil mengontrol pergerakan robot pada mode bersiap

dengan rata-rata error sebesar 1,16% untuk posisi x dan 2,73% untuk posisi y. Sistem

berhasil mengontrol pergerakan robot pada mode bermain dengan rata-rata error sudut akhir

sebesar 1,67%.

Kata kunci: Robotika, Robot soccer, Raspberry Pi, Pengolahan citra, Python, VFF

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 9: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

ix

ABSTRACT

The robot technology develops in Indonesia, Kontes Robot Indonesia (KRI) is held to

improve the creativity and ability of college students at robotics technology development.

One of the divisions that contested in Kontes Robot Indonesia is Ekshibisi Robot Soccer

Beroda Indonesia (ERSBI). This research will make a prototype of soccer robot controller

that used by Sanata Dharma University to take part in Kontes Robot Indonesia at division of

Ekshibisi Robot Soccer Beroda Indonesia.

The soccer robot controller will use Raspberry Pi 3 as a mini computer that

automatically control the robot based on video input from a Webcam. Analyze video input

using image processing with the help of python library, that is OpenCV, to determine each

object based on its color. The result of the analysis is the position of x and y of each object.

The x position and y position of each object will be used to control the robot based on the

desired mode. Control mode of robot movement divided into three modes, there are bersiap,

berhenti, and bermain. The bersiap mode will controling robot to a certain position, the

bermain mode will controling after the ball, avoiding the opponent using Virtual Force Field

(VFF) method, kicking the ball into the goal and defend from the opponent's attack.

Commands from the system for robots will execute with a python socket.

The soccer robot control system using Raspberry Pi 3, with enough room lighting,

successfully detects each object based on its color with the image processor. The system

successfully controls the robot based on the desired mode. The system managed to control

the robot in the bersiap mode with an average error of 1.16% for x position and 2.73% for

the y position. The system managed to control robots in bermain mode with an average angle

error of 1.67%.

Keywords: Robotic, Soccer robot, Raspberry Pi, Image processing, Python

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 10: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

x

KATA PENGANTAR

Puji syukur penulis hantarkan kepada Tuhan Yang Maha Esa, atas berkat karunia-Nya

sehingga penulis mampu menyelesaikan tugas akhir dengan judul “Pengontrol Robot Soccer

Beroda Berbasis Raspberry pi 3 sebagai Prototipe ERSBI 2017 ” dengan baik.

Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan

dari berbagai pihak. Oleh karena itu, penulis mengucapkan terima kasih kepada:

1. Ir. Tjendro M. Kom. selaku dosen pembimbing yang memberikan pemikiran, saran,

serta kritik yang membangun dalam menyelesaikan tugas akhir ini.

2. Seluruh dosen dan laboran Teknik Elektro yang telah memberikan ilmu serta

dukungan kepada penulis saat perkuliahan.

3. Orang tua dan keluarga yang telah mendukung penulis semasa kuliah hingga

menyelesaikan tugas akhir ini.

4. Inge Wijayanti Budiawan, George Setiawan kusuma, Edyanto, Andrian yang selalu

memberikan motivasi semasa kuliah hingga menyelesaikan tugas akhir ini.

5. Teman-teman di Teknik Elektro, UKF Basket FST, serta UKM Basket USD yang telah

membantu penulis menjadi orang yang lebih baik.

Penulis menyadari bahwa tulisan ini masih memiliki kekurangan. Oleh karena itu,

kritik dan saran dari semua pihak yang membangun sangat diharapkan. Semoga skripsi ini

bisa berguna untuk semua pihak. Terima kasih.

Yogyakarta, 22 Mei 2017

Penulis

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 11: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

xi

DAFTAR ISI

HALAMAN JUDUL.......................................................................................................... i

HALAMAN PERSETUJUAN .......................................................................................... ii

HALAMAN PENGESAHAN .......................................................................................... iii

PERNYATAAN KEASLIAN KARYA ........................................................................... iv

HALAMAN PERSEMBAHAN DAN MOTTO HIDUP ....................................................v

LEMBAR PERNYATAAN PERSETUJUAN .................................................................. vi

PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS ...................... vii

INTISARI ...................................................................................................................... viii

ABSTRACT .................................................................................................................... ix

KATA PENGANTAR .......................................................................................................x

DAFTAR ISI ................................................................................................................... xi

DAFTAR GAMBAR ..................................................................................................... xiii

DAFTAR TABEL...........................................................................................................xvi

BAB I PENDAHULUAN ..................................................................................................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 DASAR TEORI .....................................................................................................5

2.1. Raspberry Pi ........................................................................................................5

2.2.1. Raspberry Pi 3 ..............................................................................................5

2.3. USB Webcam.......................................................................................................6

2.4. Python 3 ..............................................................................................................6

2.5. Tkinter ............................................................................................................... 10

2.6. Pengolahan Citra (Image Processing) ................................................................. 12

2.7. OpenCV............................................................................................................. 14

2.8. Vektor................................................................................................................ 16

2.9. Virtual Force Field Method ................................................................................ 17

2.10. Python Socket ................................................................................................ 19

BAB III RANCANGAN PENELITIAN ........................................................................... 23

3.1. Proses Kerja Sistem ........................................................................................... 23

3.2. Perancangan Perangkat Keras ............................................................................ 24

3.2.1. Desain Coach Computer Pengontrol Robot Soccer Beroda ......................... 24

3.2.2. Desain Tata Letak Kamera dan Lapangan ................................................... 25

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 12: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

xii

3.3. Perancangan Perangkat Lunak ........................................................................... 27

3.3.1. Diagram Alir Utama ................................................................................... 27

3.3.2. Subprogram Bersiap ................................................................................... 30

3.3.3. Subprogram Berhenti .................................................................................. 33

3.3.4. Subprogram Bermain .................................................................................. 34

3.3.5. Subprogram Menentukan Informasi Sudut Robot, serta Posisi Robot, Lawan

dan Target ................................................................................................................. 36

3.3.6. Subprogram Tindakan Pengontrolan Bertahan ............................................ 39

3.3.7. Subprogram Tindakan Pengontrolan Menyerang ......................................... 41

3.3.8. Subprogram Kirim Perintah ke Robot ......................................................... 44

BAB IV HASIL DAN PEMBAHASAN .......................................................................... 46

4.1. Perubahan Perancangan ..................................................................................... 46

4.1.1. Perubahan Desain Tata Letak Kamera dan Lapangan .................................. 46

4.1.2. Perubahan Mode Bermain ........................................................................... 47

4.1.3. Perubahan Subprogram Kirim Perintah ke Robot ........................................ 48

4.2. Hasil Implementasi ............................................................................................ 50

4.3. Analisa Keberhasilan Sistem .............................................................................. 53

4.4. Pembahasan Perangkat Keras ............................................................................. 65

4.5. Pembahasan Perangkat Lunak ............................................................................ 67

BAB V KESIMPULAN DAN SARAN ............................................................................ 79

5.1. Kesimpulan ........................................................................................................ 79

5.2. Saran ................................................................................................................. 79

DAFTAR PUSTAKA ...................................................................................................... 80

LAMPIRAN ................................................................................................................... L1

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 13: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

xiii

DAFTAR GAMBAR

Gambar 1.1 Diagram blok perancangan..............................................................................3

Gambar 2.1 Wujud dari Raspberry pi [3] ............................................................................5

Gambar 2.2 USB Webcam yang digunakan [4] ...................................................................6

Gambar 2.3 Contoh Tkinter .............................................................................................. 11

Gambar 2.4 contoh penggunaan persamaan (2.1) ............................................................. 13

Gambar 2.5 Contoh dari vektor ........................................................................................ 17

Gambar 2.6 Konsep Virtual Force Field .......................................................................... 18

Gambar 2.7 contoh penggunaan socket pada Python [16] ................................................. 20

Gambar 3.1 Blok diagram cara kerja sistem ..................................................................... 23

Gambar 3.2 Tampilan yang didapat kamera dari atas lapangan [17] ................................ 25

Gambar 3.3 Tampak samping kamera serta jangkauannya ................................................ 26

Gambar 3.4 Kerangka interface program utama ............................................................... 27

Gambar 3.5.1 Diagram alir utama .................................................................................... 28

Gambar 3.5.2 Representasi nilai piksel pada lapangan ...................................................... 29

Gambar 3.6.1 Diagram alir subprogram bersiap ............................................................... 30

Gambar 3.6.2 Gambaran pergerakan saat bola di tengah lapangan .................................... 31

Gambar 3.6.3 Gambaran pergerakan saat bola berada di sebelah kiri gawang ................... 31

Gambar 3.6.4 Gambaran pergerakan saat bola berada di sebelah kanan gawang ............... 32

Gambar 3.6.5 Gambaran pergerakan saat bola berada di pojok kiri gawang ...................... 32

Gambar 3.6.6 Gambaran pergerakan saat bola berada di pojok kanan gawang .................. 33

Gambar 3.7 Diagram alir subprogram berhenti ................................................................. 33

Gambar 3.8 Diagram alir Bermain 1................................................................................. 34

Gambar 3.9 Diagram alir Bermain 2................................................................................. 35

Gambar 3.10.1 Diagram alir subprogram menentukan tujuan robot dan posisi lawan........ 36

Gambar 3.10.2 Gambaran arah sudut robot ...................................................................... 38

Gambar 3.11.1 Diagram alir subprogram tindakan pengontrolan bertahan ........................ 39

Gambar 3.11.2 Gambaran algoritma bertahan .................................................................. 40

Gambar 3.12.1 Diagram alir subprogram tindakan pengontrolan menyerang .................... 41

Gambar 3.12.2 Gambaran algoritma menyerang ............................................................... 42

Gambar 3.12.3 Gambaran hasil akhir algoritma VFF........................................................ 43

Gambar 3.13 Diagram alir subprogram kirim perintah ke robot ........................................ 45

Gambar 4.1 Perubahan desain tata letak kamera ............................................................... 46

Gambar 4.2 Perubahan desain lapangan ........................................................................... 47

Gambar 4.3 Diagram alir Bermain 3................................................................................. 48

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 14: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

xiv

Gambar 4.4 Tampilan GUI ............................................................................................... 51

Gambar 4.5 Tampilan Geany ........................................................................................... 51

Gambar 4.6 Tampilan pada Lapangan Hasil Analisis OpenCV ......................................... 52

Gambar 4.7 Tampilan Hasil Analisa dan Perintah yang Dikirim ....................................... 53

Gambar 4.8 Hasil analisa pada mode bersiap percobaan pertama...................................... 55

Gambar 4.9 Hasil analisa pada mode bersiap percobaan kedua ......................................... 55

Gambar 4.10 Hasil analisa pada mode bersiap percobaan ketiga ....................................... 55

Gambar 4.11 Hasil analisa pada mode bersiap percobaan keempat ................................... 56

Gambar 4.12 Hasil analisa pada mode bersiap percobaan kelima...................................... 56

Gambar 4.13 Hasil analisa pada mode bermain percobaan pertama .................................. 59

Gambar 4.14 Hasil analisa pada mode bermain percobaan kedua ..................................... 60

Gambar 4.15 Hasil analisa pada mode bermain percobaan ketiga ..................................... 60

Gambar 4.16 Hasil analisa pada mode bermain percobaan keempat.................................. 60

Gambar 4.17 Hasil analisa pada mode bermain percobaan kelima .................................... 61

Gambar 4.18 Hasil analisa pada mode bermain percobaan keenam ................................... 61

Gambar 4.19 Hasil analisa pada mode bermain percobaan ketujuh ................................... 61

Gambar 4.20 Hasil analisa video ketika pencahayaan ruangan terang ............................... 64

Gambar 4.21 Hasil analisa video ketika pencahayaan ruangan redup ................................ 64

Gambar 4.21 Hasil analisa video ketika pencahayaan ruangan gelap ................................ 65

Gambar 4.22 Sistem coach computer lengkap dengan alat pembantunya .......................... 66

Gambar 4.23 Lapangan dan tata letak kamera .................................................................. 66

Gambar 4.24 Listing program pemanggilan modul serta inisialisasi variabel .................... 67

Gambar 4.25 Listing program pengaturan komunikasi dengan robot................................. 68

Gambar 4.26 Listing program tampilan antarmuka ........................................................... 68

Gambar 4.27 Listing program fungsi untuk tombol pada antarmuka ................................. 69

Gambar 4.28 Listing program tampilan antarmuka ........................................................... 70

Gambar 4.29 Listing program penentuan posisi dari objek ............................................... 71

Gambar 4.30 Listing program perubahan format data posisi ............................................. 72

Gambar 4.31 Listing program penentuan setpoint pada mode bersiap ............................... 72

Gambar 4.32 Listing program penentuan setpoint pada mode bermain_1 ......................... 73

Gambar 4.33 Listing program penentuan setpoint pada mode bermain_2 ......................... 73

Gambar 4.34 Listing program untuk koreksi sudut saat menghindari lawan ...................... 74

Gambar 4.35 Penentuan jarak antara robot dengan lawan atau target ................................ 75

Gambar 4.36 Listing program untuk pengontrolan gerak robot ......................................... 75

Gambar 4.37 Listing program untuk pengontrolan robot menendang bola ........................ 76

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 15: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

xv

Gambar 4.38 Listing program untuk perubahan format data sudut dan radius ................... 77

Gambar 4.39 Listing program untuk mengubah data menjadi string lalu dikirim .............. 77

Gambar 4.40 Listing program untuk perpindahan mode bermain ...................................... 78

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 16: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

xvi

DAFTAR TABEL

Tabel 2.1 Penggunaan bilangan dalam Python ....................................................................7

Tabel 2.2 Macam-macam operator dalam Python ...............................................................8

Tabel 2.3 Daftar komponen pada Tkinter ......................................................................... 11

Tabel 2.4 Konstanta Keluarga (Family) Protokol.............................................................. 20

Tabel 2.5 Konstanta Type Socket ..................................................................................... 20

Tabel 3.1 Daftar kode untuk informasi dan perintah kepada robot .................................... 44

Tabel 3.2 Format pengiriman informasi dan perintah kepada robot................................... 44

Tabel 3.3 Format pengiriman koreksi sudut belokan robot ............................................... 45

Tabel 4.1 Format pengiriman informasi kepada robot ....................................................... 49

Tabel 4.2 Format pengiriman perintah kepada robot ......................................................... 49

Tabel 4.3 Format pengiriman koreksi sudut belokan robot ............................................... 50

Tabel 4.4 Format informasi yang diterima oleh sistem ..................................................... 53

Tabel 4.5 Data dari pengujian pertama pada mode bersiap ............................................... 54

Tabel 4.6 Error posisi dari percobaan eksekusi mode bersiap ........................................... 58

Tabel 4.7 Data dari pengujian pertama pada mode bermain .............................................. 59

Tabel 4.8 Error sudut dari percobaan eksekusi mode bermain .......................................... 63

Tabel 6.1 Data dari pengujian kedua pada mode bersiap percobaan pertama ................... L2

Tabel 6.2 Data dari pengujian kedua pada mode bersiap percobaan kedua ....................... L3

Tabel 6.3 Data dari pengujian kedua pada mode bersiap percobaan ketiga ...................... L4

Tabel 6.4 Data pengujian kedua pada mode bermain percobaan pertama ......................... L5

Tabel 6.5 Data pengujian kedua pada mode bermain percobaan kedua ............................ L6

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 17: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

1

BAB I

PENDAHULUAN

1.1. Latar Belakang

Semakin berkembangnya teknologi robot di Indonesia maka diadakanlah KRI yaitu

Kontes Robot Indonesia yang bertujuan untuk menumbuh kembangkan, meningkatkan

kreativitas, dan kepekaan mahasiswa perguruan tinggi dalam pengembangan bidang

teknologi robotika, selain itu juga meningkatkan pengetahuan tentang sensor dan teknik

kendali yang mutakhir pada mahasiswa perguruan tinggi, serta membudayakan iklim

kompetitif yang positif di lingkungan perguruan tinggi [1].

Salah satu cabang yang diperlombakan dalam Kontes Robot Indonesia adalah cabang

ERSBI yaitu Ekshibisi Robot Soccer Beroda Indonesia. Ekshibisi Robot Soccer Beroda

Indonesia merupakan divisi terbaru pada Kontes Robot Indonesia yang mulai diperkenalkan

pada ekshibisi di KRI 2016 Tingkat Nasional. Aturan kompetisi mengacu pada KRSBI

(lapangan, permainan, game controller). Robot harus memiliki kamera untuk mendeteksi

bola, dengan jumlah dan tipe yang tidak dibatasi. Robot dapat menggunakan komputer luar

sebagai pengendali [2].

Dengan mengikuti Kontes Robot Indonesia dalam bidang Ekshibisi Robot Soccer

Beroda Indonesia, maka nama Universitas Sanata Dharma khususnya program studi Teknik

Elektro akan semakin baik di tingkat nasional. Selain itu dengan mengikuti Kontes Robot

Indonesia dalam bidang Ekshibisi Robot Soccer Beroda Indonesia, maka kemampuan

mahasiswa dari program studi Teknik Elektro dalam bidang sensor, teknik kendali, serta

teknologi robot akan meningkat.

Berdasarkan permasalahan tersebut, pada penelitian ini dibuat sebuah prototipe

pengontrol robot soccer yang dapat dimanfaatkan oleh Teknik Elektro Sanata Dharma untuk

mengikuti Kontes Robot Indonesia dalam bidang Ekshibisi Robot Soccer Beroda Indonesia.

Pengontrolannya menurut peraturan liga robot soccer beroda internasional dengan cara

membuat komputer yang dapat mengontrol robot untuk mengejar, menggiring, dan

menendang bola secara otomatis, serta dilengkapi sebuah kamera yang cakupannya dapat

menangkap video dari keseluruhan lapangan permainan bola. Pengontrolan dapat

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 18: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

2

dilakukan dengan berbagai macam cara baik Fuzy maupun Analisis Vektor dan lain-lain.

Penelitian ini akan menggunakan Raspberry Pi 3 sebagai komputer mini yang akan

mengontrol robot secara otomatis serta Webcam sebagai pengambil video untuk menentukan

posisi robot dengan musuh, bola, dan gawang yang dituju. Robot diharapkan mampu

mengejar bola, menggiring bola melewati musuh, mencapai jarak tertentu dari gawang dan

menendang bola.

1.2. Tujuan dan Manfaat Penelitian

Tujuan dari penelitian ini adalah:

1. Menciptakan suatu pengontrol robot soccer beroda yang menjadi prototipe untuk

mengikuti Kontes Robot Indonesia dalam bidang Ekshibisi Robot Soccer Beroda

Indonesia.

Manfaat dari penelitian ini adalah:

1. Untuk masyarakat:

Menyediakan sebuah bahan acuan, pedoman, dan rujukan untuk pengembangan

pembuatan prototipe pengontrol robot soccer beroda bagi masyarakat luas.

2. Untuk Universitas Sanata Dharma:

Menyediakan prototipe yang nantinya digunakan sebagai bahan acuan, pedoman,

dan rujukan untuk program studi Teknik Elektro Universitas Sanata Dharma

dalam mengikuti Kontes Robot Indonesia dalam bidang Ekshibisi Robot Soccer

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 yang dimaksud adalah:

1. Menggunakan Raspberry Pi 3 sebagai komputer mini yang mengolah video

untuk mengontrol robot mengejar dan menggiring bola serta menghindari

lawan.

2. Kamera yang digunakan adalah Raspberry Pi USB Camera.

3. Bahasa pemrograman yang digunakan adalah bahasa pemrograman Python.

4. Komunikasi Wireless dengan robot menggunakan Python Socket.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 19: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

3

5. Luas lapangan keseluruhan adalah sekitar 6m x 4m.

6. Kamera digantungkan pada tiang setinggi 3m sampai dengan 4m dan diletakkan

tepat di tengah lapangan.

7. Bola yang digunakan adalah bola tenis berwarna orange.

8. Warna dari gawang adalah kuning.

9. Ukuran dari robot adalah 40cm (lebar) dan 30cm (tinggi). Terdapat tanda tim

di atasnya

1.4. Metodologi Penelitian

Berdasarkan pada tujuan yang ingin dicapai, metode-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 monitor,

kamera, beserta keyboard dan mouse. Di dalam coach computer akan terdapat

program penganalisis video yang akan diproses dengan 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

U

U

Komunikasi wireless

Coach Computer Robot

Mouse dan

Keyboard

USB

Webcam

TX TX

Monitor

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 20: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

4

3. Pembuatan subsistem hardware dan software. Tahap ini bertujuan untuk

membuat model yang sesuai dengan yang telah dirancang pada tahap

sebelumnya.

4. Proses pengambilan data. Data yang diambil adalah informasi atau perintah

yang akan dikirim ke robot yaitu nilai posisi x dan y dari objek (gawang, robot,

lawan, kiper lawan, tujuan tertentu dan bola), serta koreksi sudut untuk

melakukan menghindari lawan. Nilai posisi x dan y didapatkan dari pengolahan

citra video masukan dari USB Camera, sedangkan nilai koreksi sudut

didapatkan dari analisis vektor berdasarkan nilai x dan y yang telah didapatkan.

5. Analisis dan penyimpulan hasil percobaan. Analisis data dilakukan dengan

melihat kemampuan coach computer untuk mengolah masukan video dan dari

hasil pengolahan tersebut sudah mampu mengontrol robot untuk mengejar dan

menggiring bola serta untuk menghindari lawan sudah sesuai dengan dasar

teori. Selain itu juga menganalisis data yang dikirimkan sudah bisa diterima

oleh robot sesuai dengan dasar teori. Setelah itu menyimpulkan berdasarkan

data yang didapat apakah coach computer sudah berhasil mengendalikan robot

soccer beroda dengan baik.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 21: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

5

BAB II

DASAR TEORI

2.1. Raspberry Pi

Pada gambar 2.1 Raspberry Pi adalah komputer mini seukuran kartu kredit yang dapat

terhubung dengan monitor komputer maupun TV, menggunakan mouse dan keyboard

standard. Raspberry Pi adalah suatu perangkat mini yang memungkinkan orang dari berbagai

usia untuk belajar lebih dalam tentang dunia komputer dan untuk belajar tentang bagaimana

caranya membuat program menggunakan bahasa seperti Python dan Scratch [3].

Gambar 2.1 Wujud dari Raspberry pi [3]

Pada Raspberry pi terdapat beberapa bagian seperti CPU sebagai pemroses utama,

GPU untuk memproses tampilan, RAM sebagai memori penyimpan proses yang sedang

berjalan, serta port sebagai penerima masukan ataupun sebagai keluaran dari Raspberry pi.

2.2.1. Raspberry Pi 3

Raspberry Pi memiliki beberapa seri. Seri yang akan digunakan dalam penelitian kali

ini adalah Raspberry Pi 3 model B. Raspberry Pi 3 model B merupakan seri terbaru dari

Raspberry Pi. Berikut ini adalah spesifikasi dari Raspberry Pi 3 model B:

a. CPU : 4x ARM Cortex-A53, 1.2GHz

b. GPU : Broadcom VideoCore IV

c. RAM : 1GB LPDDR2 (900 MHz)

d. Networking : 10/100 Ethernet, 2.4GHz 802.11n wireless

e. Bluetooth : Bluetooth 4.1 Classic, Bluetooth Low Energy

f. Ports : HDMI, 3.5mm analogue audio-video jack, 4x USB 2.0, Ethernet.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 22: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

6

2.3. USB Webcam

Webcam merupakan singkatan dari web dan camera. Webcam adalah sebutan untuk

kamera yang mengambil gambar pada saat itu juga (Real time) dan gambarnya dapat dilihat

atau ditampilkan secara langsung melalui internet, melalui berbagai macam aplikasi pesan

singkat seperti Yahoo Messenger, AOL Instant Messenger (AIM), Windows Live Messenger,

dan Skype. Pada gambar 2.2 Webcam adalah sebuah kamera video digital kecil yang

dihubungkan ke komputer biasanya melalui USB atau PORTCOM. Pengertian lain dari

Webcam adalah sebuah perangkat berupa kamera yang digunakan sebagai penginput citra

atau gambar yang dikendalikan oleh sebuah komputer atau jaringan komputer. Untuk

kamera yang memiliki lebar lensa sebesar 6mm maka besar sudut view-nya adalah 650,

sedangkan kamera dengan lebar lensa sebesar 4mm maka besar sudut view-nya adalah 800

[4].

Gambar 2.2 USB Webcam yang digunakan [4]

2.4. Python 3

Bahasa pemrograman Python adalah salah satu contoh dari beberapa high-level

language, contoh lainnya adalah C++, PHP, Pascal, dan Java. Selain high-level language

ada juga low-level language yang sering kali disebut dengan bahasa mesin atau assembly

languages.

Kebanyakan program dibuat dengan high-level language. Dengan menggunakan high-

level language, program akan lebih mudah dibuat karena bahasa pemrograman tersebut lebih

mudah dipahami jika dibandingkan dengan low-level language. Selain itu, high-level

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 23: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

7

language lebih portabel artinya bahasa pemrograman tersebut dapat berjalan pada komputer

yang berbeda dengan sedikit atau dengan tanpa penyesuaian [5].

Berikut ini adalah beberapa elemen dalam bahasa pemrograman Python [6]:

a. Input

Input berarti membaca sesuatu dari I/O unit, misalkan keyboard. Pada bahasa Python

untuk menerima masukan dari pengguna (user) dapat menggunakan metode input().

Contoh:

>>> a=input()

5

>>> b=input()

4

>>> z=a+b

>>> z

'54'

b. Data

Data dapat berupa konstanta, variabel, dan struktur yang berisi bilangan, kalimat,

ataupun alamat memori.

Tabel 2.1 Penggunaan bilangan dalam Python

Kategori Contoh

Integer normal (long pada C) 123, -123, 0

Integer panjang (panjang tanpa batas) 123456789L

Floating point(double pada C) 1.23 1.23e10 12E3 12e-3

Bilangan oktal 0123

Bilangan heksadesimal 0x123 0xA

Bilangan kompleks 1+2j

Untuk bilangan yang berjenis panjang maka ditambahkan “l” atau “L” di belakang

bilangan tersebut. Untuk bilangan yang berjenis floating point maka digunakan “e” atau “E”

sebagai tanda eksponensial. Untuk bilangan yang berjenis oktal dan heksadesimal masing-

masing diawali dengan “0” dan “0x”, sehingga jika ingin menulis angka 1 desimal tidak

boleh dengan cara 01, karena 01 artinya angka 1 oktal. Untuk bilangan kompleks dengan

memecahnya menjadi bagian real dan imajiner dan diakhiri dengan “j” atau “J”.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 24: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

8

c. Operator

Operator akan mengubah suatu nilai menjadi nilai lain, mengombinasikan nilai, dan

membandingkan nilai. Yang termasuk operator diantaranya adalah operator Aritmetika dan

Assignment.

Tabel 2.2 Macam-macam operator dalam Python

Operator Definisi Contoh

+ Penjumlahan a = b + c

- Pengurangan a = b - c

* Perkalian a = b * c

/ Pembagian a = b / c

% Sisa pembagian a = b % c

- Negasi a = - b

** Pemangkatan a = b ** c

>> Bitwise shiftright a = b + c

<< Bitwise shiftleft a = b + c

~ Bitwise komplemen a = ~ b

| Bitwise or a = b | c

& Bitwise and a = b && c

^ Bitwise xor a = b ^ c

>, >= Perbandingan lebih besar dan lebih besar sama dengan a > b , a >= b

<, <= Perbandingan lebih kecil dan lebih kecil sama dengan a < b , a <= b

== Perbandingan sama dengan a == b

!=, <> Perbandingan tidak sama dengan a <> b , a != b

d. Output

Output berarti menuliskan informasi ke layar, disk, atau salah satu I/O unit. Untuk

menuliskan output program, pada Python 3 menggunakan fungsi print() untuk kalimat yang

ingin ditulis diberikan tanda kutip ganda(“) di awal dan di akhir kalimat.

Contoh:

>>> print("Hello World")

Hello World

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 25: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

9

e. Kondisional

Kondisional berhubungan dengan sejumlah perintah yang akan dijalankan jika kondisi

tertentu dipenuhi. Untuk melakukan hal tersebut dapat digunakan if, if else.

Contoh:

if x==1:

print(“nilai x adalah 1”)

if x==1:

print(“nilai x adalah 1”)

else:

print(“nilai x tidak sama dengan satu”)

f. Loop

Loop berhubungan dengan sejumlah perintah yang akan dikerjakan beberapa kali,

selama beberapa kondisi dipenuhi atau sampai suatu kondisi terpenuhi. Python

menggunakan pernyataan for dan while untuk melakukan loop(pengulangan).

Contoh:

for i in range (10): #mengulangi proses sebanyak 10 kali

print(“saya adalah anak yang baik”)

x=int(input())

while 1:

x= x-1

print (x)

if x==3 : break

g. Modul NumPy

NumPy adalah paket dasar untuk perhitungan scientific pada bahasa pemrograman

Python, di dalam NumPy terdapat:

1. Perhitungan N-dimensional array

2. Kemampuan untuk mengintegrasi kode C/C++ dan Fortran

3. Operasi aljabar linier, transformasi fourier, dan angka acak

4. Contoh penggunaan NumPy

Contoh:

Import numpy as np

Numpy.array([3, 5, 7, 9, 11])

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 26: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

10

h. Subroutine

Subroutine adalah sekumpulan perintah yang bisa dijalankan dari setiap tempat dalam

program dengan cara memanggil namanya. Python menyebutnya fungsi atau metode. Tata

cara penulisan fungsi atau metode di Python yaitu dengan menggunakan pernyataan def

nama_fungsi().

Contoh:

def mode1():

x=int(input())

while 1:

x= x-1

print (x)

2.5. Tkinter

Tkinter adalah pustaka standard yang dimiliki oleh Python. Kombinasi Python dan

Tkinter ini menghasilkan sebuah tampilan grafik yang mudah untuk dibuat sekaligus

menarik. Tkinter menyediakan berbagai komponen grafis diantaranya tombol, label, kotak

teks, yang mana komponen-komponen ini sangatlah sering digunakan dalam aplikasi GUI.

Komponen Tkinter ini sering disebut widget [7]. Modul Tkinter berisi berbagai kelas dan

komponen yang diperlukan untuk membangun sebuah aplikasi GUI. Untuk menggunakan

komponen Tkinter maka harus memanggilnya terlebih dahulu. Cara untuk memanggil modul

Tkinter adalah sebagai berikut:

import Tkinter

Bisa juga dengan memanggil semua metode, kelas, dan atribut dari modul Tkinter

dengan menggunakan cara seperti berikut:

from Tkinter import *

Setiap aplikasi GUI seharusnya memiliki sebuah jendela utama (root window), yang

dapat berisi berbagai komponen yang diperlukan dalam aplikasi yang akan dibuat. Untuk

membuat jendela utama dari suatu aplikasi maka digunakan cara seperti berikut.

top = Tkinter.Tk()

Jika menggunakan pernyataan from-import untuk memanggil modul Tkinter, maka

penulisannya adalah sebagai berikut.

top = Tk()

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 27: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

11

Gambar 2.3 Contoh Tkinter

Dengan menggunakan Tkinter, dapat ditambahkan beberapa komponen pada aplikasi

yang dibuat. Komponen ini bisa berdiri sendiri atau dapat diisi komponen lain (container).

Komponen yang berdiri sendiri merupakan komponen yang tidak dapat diisi oleh komponen

lain, misalkan tombol, checkbox, dan label. Komponen container merupakan komponen

yang bisa berisi atau ditempeli oleh komponen lain seperti frame dan window. Gambar 2.3

adalah contoh dari penggunaan Tkinter.

Tabel 2.3 Daftar komponen pada Tkinter

Komponen Deskripsi

Frame Komponen Frame berfungsi sebagai kontainer bagi komponen

lain.

Label Frame Komponen Label Frame sama seperti Frame namun terdapat

keterangan di atasnya.

Canvas Komponen Canvas digunakan untuk menggambar bentuk seperti

garis, lingkaran, poligon, dan kotak

Button Komponen Button berfungsi untuk menampilkan sebuah tombol.

Radio Button Komponen Radio Button berfungsi menampilkan sejumlah

pilihan dalam bentuk tombol radio.

Scale Komponen Scale berfungsi sebagai menampilkan skala geser

Text Komponen Text berfungsi sebagai penampil teks dalam multi

baris

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 28: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

12

2.6. Pengolahan Citra (Image Processing)

Saat ini istilah citra sangat populer. Banyak peralatan elektronik yang menghasilkan

citra seperti camera, scanner, dan mikroskop digital. Bukan hanya perangkat keras namun

banyak juga perangkat lunak untuk mengolah citra seperti Adobe Photoshop. Lalu menurut

Jain (1989) pengertian pengolahan citra adalah pemrosesan gambar berdimensi dua melalui

komputer digital [8].

Secara fisis atau visual, sebuah citra adalah representasi dari informasi yang

terkandung di dalamnya sehingga mata manusia dapat menganalisis dan

menginterpretasikan informasi tersebut sesuai dengan tujuan yang diharapkan [9].

Kandungan informasi citra dapat dibagi menjadi dua yaitu informasi dasar dan informasi

yang bersifat abstrak. Informasi dasar adalah informasi yang dapat diolah secara langsung

tanpa membutuhkan bantuan tambahan pengetahuan khusus. Informasi dasar ini berupa

warna (color), bentuk (shape) dan tekstur (texture). Informasi abstrak adalah informasi yang

tidak secara langsung dapat diolah kecuali dengan tambahan pengetahuan khusus. Contoh

informasi yang bersifat abstrak adalah ekspresi wajah di dalam sebuah citra yang dapat

menggambarkan situasi perasaan seseorang (keadaan senang, sedih, marah, dan lainnya).

Secara matematis, sebuah citra dapat didefinisikan dengan fungsi dua dimensi f(x,y)

dimana x dan y adalah koordinat spasial (plane) dan f adalah nilai intensitas warna pada

koordinat x dan y. Nilai f, x, dan y semuanya adalah nilai berhingga. Bila nilai-nilai ini

bersifat kontinu maka citranya disebut citra analog. Bila nilai-nilai ini bersifat diskret maka

citranya disebut citra digital. Citra digital umumnya dua dimensi (2D) yang dinyatakan

dalam bentuk matriks dengan jumlah elemen berhingga. Setiap elemen matriks citra

memiliki posisi koordinat x dan y tertentu dan juga memiliki nilai. Secara umum, citra digital

merupakan representasi piksel-piksel dalam ruang 2D yang dinyatakan dalam matriks

berukuran N baris dan M kolom seperti pada persamaan (2.1). Setiap elemen matriks disebut

piksel (picture element, image element, atau pel). Nilai setiap piksel f pada posisi koordinat

x dan y merepresentasikan intensitas warna dan dapat dikodekan dalam 24 bit untuk citra

berwarna (dengan tiga komponen warna RGB: R = Red, G = Green, dan B = Blue), 8 bit

untuk citra gray-level atau 1 bit untuk citra biner.

𝐹 = [𝑓(𝑥, 𝑦)] = [𝑓(0,0) … 𝑓(0,𝑀): … :

𝑓(𝑁, 1) … 𝑓(𝑁,𝑀)] (2.1)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 29: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

13

Gambar 2.4 contoh penggunaan persamaan (2.1)

Video adalah sekumpulan citra yang direkam atau diakuisisi selama satu satuan waktu

tertentu. Citra di dalam video lebih dikenal dengan istilah frame atau frame citra. Kecepatan

standard perekaman dan visualisasi video disesuaikan dengan kecepatan mata manusia

dalam memahami dan menganalisis informasi yang terkandung di dalam setiap frame.

Mengingat bahwa citra adalah bagian dari video, maka setiap teori pengolahan citra

digital juga merupakan teori pengolahan video digital. Secara visual, video adalah sederetan

frame citra yang terekam oleh sensor dalam satu satuan waktu tertentu. Normalnya,

kecepatan perekaman sebuah video adalah antara 25 sampai 30 citra per detik. Kecepatan

ini disesuaikan dengan kecepatan normal visual mata manusia dalam menganalisis dan

memahami pergerakan informasi yang terkandung dalam sederetan citra tersebut.

Ditinjau dari sudut pandang elektronika analog, video adalah sinyal-sinyal analog

dengan amplitudo (yang merepresentasikan intensitas warna cahaya) yang dapat bervariasi

dan berubah secara kontinu menurut fungsi spasio-temporal (spasial dan waktu).

Secara matematis, sinyal video analog merupakan fungsi 1-D f(t), dan setelah melalui

proses sampling dan kuantisasi maka fungsi ini menjadi fungsi diskret f (n, m, t), di mana n

= {1, 2, ..., N} menyatakan baris ke-n citra dan m = {1, 2, ..., M} menyatakan titik sampel

ke-m (atau yang lebih dikenal sebagai piksel ke-m dalam baris ke-n citra), t menyatakan

frame citra pada waktu t sedangkan f menyatakan nilai intensitas warna piksel pada posisi

(n, m) dari frame citra pada waktu t.

y1

X1

f(x1,y1)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 30: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

14

Menurut Gonzalez dan Woods (2002) ruang warna adalah suatu spesifikasi sistem

koordinat dan suatu sub ruang dalam sistem tersebut dengan setiap warna dinyatakan dengan

satu titik di dalamnya. Tujuan dibentuknya ruang warna adalah untuk memfasilitasi

spesifikasi warna dalam bentuk standar. Ada berbagai macam ruang warna contohnya adalah

RGB dan HSV [8].

Ruang warna HSV mengacu pada hue, saturation, and value (value identik dengan

luminance), dengan ide merepresentasikan nuansa warna dalam koordinat silindris 3-D.

Model HSV disebut hexcone model [9]. Persamaan yang digunakan untuk konversi dari

ruang RGB ke HSV adalah seperti berikut:

𝑉 = 𝑀𝑎𝑘𝑠 (2.2)

𝐻 =

{

𝑇𝑖𝑑𝑎𝑘 𝑡𝑒𝑟𝑑𝑒𝑓𝑖𝑛𝑖𝑠𝑖 𝑗𝑖𝑘𝑎 𝑀𝑎𝑘𝑠 = 𝑀𝑖𝑛

(𝐺 − 𝐵

𝑀𝑎𝑘𝑠 −𝑀𝑖𝑛)𝑥 𝐴 𝑗𝑖𝑘𝑎 𝑀𝑎𝑘𝑠 = 𝑅

(𝐵 − 𝑅

𝑀𝑎𝑘𝑠 −𝑀𝑖𝑛+ 2) 𝑥 𝐴 𝑗𝑖𝑘𝑎 𝑀𝑎𝑘𝑠 = 𝐺

(𝑅 − 𝐺

𝑀𝑎𝑘𝑠 −𝑀𝑖𝑛+ 4)𝑥 𝐴 𝑗𝑖𝑘𝑎 𝑀𝑎𝑘𝑠 = 𝐵

(2.3)

𝑆 = { 0 𝑗𝑖𝑘𝑎 𝑀𝑎𝑘𝑠 = 𝑀𝑖𝑛

(𝑀𝑎𝑘𝑠 −𝑀𝑖𝑛) 𝑗𝑖𝑘𝑎 𝑙𝑎𝑖𝑛𝑛𝑦𝑎

(2.4)

Dengan R = Red, G = Green, B = Blue, Maks = max[R, G, B] dan Min = min[R, G, B]

dan A = 60o jika dalam derajat dan A = 𝜋

3 bila dalam radian.

2.7. OpenCV

OpenCV (Open Computer Vision) adalah sebuah library yang sudah sangat familier

pada operasi Pengolahan Citra Computer Vision. Computer Vision itu sendiri adalah cabang

dari Bidang Ilmu Pengolahan Citra (Image Processing) yang memungkinkan komputer

dapat melihat seperti manusia. Dengan vision tersebut komputer dapat mengambil

keputusan, melakukan aksi, dan mengenali terhadap suatu objek. Beberapa

pengimplementasian dari Computer Vision adalah Face Recognition, Face Detection, Face

or Object Tracking, dan Road Tracking [10]. Berikut ini adalah beberapa contoh function

yang terdapat pada library OpenCV [11]:

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 31: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

15

a. Mengambil video sebagai input

Untuk mengambil video, function yang dibutuhkan adalah VideoCapture(). Parameter

yang diisi dalam function tersebut adalah device index atau nama file video tersebut. Device

index sebagai nomor untuk memilih kamera mana yang digunakan, jika hanya menggunakan

satu kamera maka cukup mengisi parameter tersebut dengan angka 0.

Contoh:

Import cv2

vid = cv2.VideoCapture(0)

while(True):

# Mengambil video per frame

ret, frame = vid.read()

# Mengambil video dalam mode hitam-putih

abu = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

# Menampilkan frame yang dihasilkan

cv2.imshow(‘frame’, abu)

if cv2.waitKey(1) & 0Xff == ord(‘q’):break

# menampilkan hasil akhir ketika semua proses telah selesai

vid.release()

cv2.destroyAllWindows()

b. Mendeteksi objek berdasarkan warna

Untuk mendeteksi suatu objek, manusia dapat melakukan hal tersebut dengan cara

mengenali bentuk objek ataupun warna objek tersebut. Begitu juga komputer, dengan

computer vision maka komputer bisa mendeteksi suatu objek berdasarkan bentuknya (Edge

Detection) atau warnanya (Color Detection). Jika mendeteksi suatu objek berdasarkan

warna, openCV dapat menggunakan functioncv2.cvtColor() untuk mengonversi pemilihan

warna berdasarkan metode HSV (Hue Saturation Value) dari BGR (Blue Green Red),

pendeteksian warna dengan metode HSV lebih mudah dibandingkan dengan BGR [12].

Selain itu digunakan juga cv2.inRange() untuk menentukan warna apa yang ingin dideteksi.

Pendeteksian warna dengan HSV menggunakan perhitungan array sehingga dibutuhkan

modul NumPy sebagai bantuan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 32: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

16

Contoh:

import numpy as np

import cv2

vid = cv2.VideoCapture(0)

while(1):

ret, frame = vid.read()

#konversi BGR ke HSV

hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

#mendefinisikan warna yang dipilih

batas_bawah = np.array([110,50,50])

batas_atas = np.array([130,255,255])

#mendeteksi warna yang diinginkan

mask = cv2.inrange(hsv, batas_bawah, batas_atas)

c. Mendeteksi pergerakan objek dengan camshift

Untuk melakukan tracker (mendeteksi pergerakan) suatu objek, OpenCV

menyediakan suatu function yaitu camshift. Metode ini mendeteksi objek berdasarkan warna

dan juga memperhitungkan perubahan warna yang terjadi ketika objek bergerak. Hal

tersebut akan mengakibatkan active windows yang mendeteksi objek tersebut berubah

besarnya sesuai dengan pergerakan objek tersebut.

Contoh pemanggilan fungsi CamShift():

ret, track_window = cv2.CamShift(objek yang ingin dideteksi, batas active window,

keadaan tracker berhenti)

2.8. Vektor

Sebuah besaran yang memiliki magnitudo dan arah, disebut besaran vektor. Besaran

lain yang merupakan vektor adalah perpindahan, gaya, dan momentum. Akan tetapi, banyak

juga besaran yang tidak memiliki arah, seperti massa, waktu, dan suhu. Besaran semacam

ini dapat dinyatakan secara lengkap dengan angka dan satuan, dan disebut dengan besaran

skalar [13]. Pada gambar 2.5 menunjukkan contoh dari sebuah vektor.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 33: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

17

Gambar 2.5 Contoh dari vektor

a. Untuk menentukan besar vektor dari suatu objek berdasarkan posisi (x,y):

𝐹 = √𝑥2 + 𝑦2 (2.5)

b. Untuk menentukan besar sudut dari objek tersebut dengan sumbu x:

𝛼 = 𝑎𝑟𝑐 tan𝑦

𝑥

(2.6)

c. Untuk menentukan selisih sudut kedua objek:

𝜃 = 𝛼1 − 𝛼2 ; 𝑢𝑛𝑡𝑢𝑘 𝛼1 > 𝛼2 (2.7)

d. Untuk menghitung besar resultan kedua gaya:

𝑅 = √𝐹12 + 𝐹2

2 + 2𝐹1𝐹2 cos∠(𝐹1, 𝐹2) (2.8)

e. Untuk menghitung arah dari resultan kedua gaya:

𝜎 = 𝑎𝑟𝑐 sin𝐹1 sin(180 − 𝜃)

𝑅

(2.9)

f. Untuk menghitung besar vektor perpindahan:

𝐹 = √(𝑥2 + 𝑥1)2 + (𝑦2 + 𝑦1)2 (2.10)

2.9. Virtual Force Field Method

Metode Virtual Force Field dikembangkan oleh Koren dan Borenstein pada tahun

1989. Metode ini dapat diartikan sebagai perpaduan dari metode Certain grids dan Potential

Fields Method. Sesuai dengan gambar 2.6 metode ini didesain untuk menghindari rintangan

secara Real-Time. Sebuah window virtual melingkupi sebuah region yang bergerak

bersamaan dengan robot secara tidak terlihat, window virtual tersebut disebut dengan active

window dan melingkupi sebuah area dari batas tertentu. Pusat dari window tersebut berada

pada titik tengah dari robot [14].

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 34: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

18

Gambar 2.6 Konsep Virtual Force Field

Jika lawan berada dalam area active window maka program nantinya akan menghitung

besar resultan antara dinding dan lawan terhadap robot [15]. Berikut ini adalah langkah-

langkahnya:

a. Perhitungan besar vektor antara robot dengan lawan atau target menggunakan

persamaan 2.10, dimana:

𝐹 = Besar vektor antara robot dengan lawan atau target

𝑥1 = Nilai X dari robot

𝑦1 = Nilai Y dari robot

𝑥2 = Nilai X dari lawan atau target

𝑦2 = Nilai Y dari lawan atau target

b. Menghitung besar sudut antara robot dengan lawan dan robot dengan target

menggunakan persamaan 2.2

𝛼 = 𝑎𝑟𝑐 tan (𝑦2 − 𝑦1𝑥2 − 𝑥1

) (2.11)

Keterangan:

𝛼 = Besar sudut antara robot dengan lawan atau target

𝑥1 = Nilai X dari robot

𝑦1 = Nilai Y dari robot

𝑥2 = Nilai X dari lawan atau target

𝑦2 = Nilai Y dari lawan atau target

Active window

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 35: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

19

c. Menghitung selisih antar sudut robot dengan lawan dan sudut robot dengan target

menggunakan persamaan 2.7. dimana:

𝜃 = Besar jumlah sudut antara robot dengan lawan dan sudut robot

dengan target

𝛼1 = Besar sudut antara robot dengan lawan

𝛼2 = Beasr sudut antara robot dengan target

d. Menghitung besar resultan dari robot dengan lawan dan robot dengan target

menggunakan persamaan 2.8. dimana:

𝑅 = Besar resultan dari robot dengan lawan dan robot dengan bola

𝐹1 = Besar vektor antara robot dengan lawan

𝐹2 = Beasr vektor antara robot dengan target

e. Menghitung besar sudut resultan dari robot dengan lawan dan robot dengan target

menggunakan persamaan 2.9. dimana:

𝜎 = Besar sudut resultan dari robot dengan lawan dan robot dengan

bola

𝐹1 = Besar vektor antara robot dengan lawan

𝑅 = Besar resultan dari robot dengan lawan dan robot dengan bola

𝜃 = Besar selisih sudut antara robot dengan lawan dan sudut robot

dengan target

2.10. 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. 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

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 36: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

20

merupakan nomor port yang sah antara 1 sampai 65535. Tetapi dalam keluarga UNIX

penggunaan port di bawah 1024 memerlukan akses root privileges. Sebelum menggunakan

modul socket dalam Python, modul socket harus terlebih dahulu diimport [16]. Pada gambar

2.7 menunjukkan contohnya:

Gambar 2.7 contoh penggunaan socket pada Python [16]

Socket dibuat melalui pemanggilan socket(family, type[Protokol]). Untuk lebih

jelasnya dapat dilihat pada tabel 1 dan tabel 2 berikut ini:

Tabel 2.4 Konstanta Keluarga (Family) Protokol

Family Penjelasan

AF_UNIX Unix Domain Protocol

AF_INET IPv4 Protocol

AF_INET6 Ipv6 Protocol

Tabel 2.5 Konstanta Type Socket

Type Penjelasan

SOCK_STREAM Stream Socket (TCP)

SOCK_DGRAM Datagram Socket (UDP)

SOCK_RAW Raw Socket

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)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 37: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

21

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)

Sebuah server adalah sebuah proses yang mendengarkan (listen) pada port tertentu.

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. Hal ini dilakukan dengan memanggil metode socket connect(address), dimana

address adalah sebuah tuple (host, port) untuk internet domain dan pathname untuk UNIX

domain. Berikut ini adalah 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 selanjutnya adalah memanggil metode 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 ini adalah 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), metode yang digunakan adalah accept(). Berikut contoh

penggunaannya:

sock.accept() #Menerima koneksi

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 38: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

22

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 metode send(string) untuk socket stream (TCP) dan

sendto(string,address) untuk socket datagram (UDP). Berikut ini penggunaan 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 metode recv(bufsize) untuk

socket stream dan recvfrom(bufsize). Berikut ini penggunaan 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 dan address.

Untuk menutup koneksi yang telah dibuat digunakan metode close(s). Berikut ini

adalah penggunaanya :

sock.close() #Menutup koneksi.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 39: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

23

BAB III

RANCANGAN PENELITIAN

3.1. Proses Kerja Sistem

Perancangan alat ini terdiri dari beberapa bagian utama, yaitu Raspberry Pi 3, Kamera,

Monitor, Keyboard, Mouse, Adapter, serta modem wireless. Raspberry Pi 3 bersama

Monitor, Keyboard, Mouse, dan Adapter digunakan sebagai komputer mini yang nantinya

akan dibuat program utama di dalamnya dengan menggunakan bahasa pemrograman Python

untuk mengontrol robot soccer beroda. Kamera yang digunakan adalah USB Webcam.

Keyboard, monitor, dan Mouse diperlukan untuk membantu membuat program utama untuk

mengontrol robot soccer beroda dalam Raspberry Pi 3. Lalu modem wireless untuk

mengirimkan perintah ke robot.

Gambar 3.1 Blok diagram cara kerja sistem

Cara kerja sistem secara keseluruhan, di dalam Raspberry Pi 3 yang dilengkapi dengan

monitor, keyboard, mouse, dan adapter akan dibuat program utama yang digunakan untuk

mengontrol robot soccer beroda. Program tersebut akan memproses input berupa video yang

ditangkap oleh USB Webcam sehingga didapatkan nilai posisi x dan y dari robot, lawan,

bola, kiper lawan serta gawang yang dituju.

U U

Komunikasi wireless

Robot

Mouse dan

Keyboard

USB

Webcam

TX RX

Monitor

GUI & Socket

Python VFF

Pengolahan

Citra

Raspberry pi 3

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 40: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

24

Pemrosesan inputan video menggunakan metode pengolahan citra yang dilakukan

dengan bantuan library OpenCV. Dengan pengolahan citra maka setiap objek dapat

dibedakan melalui warnanya masing-masing. Setelah warna dari masing-masing objek

diidentifikasi maka dengan bantuan OpenCV ditentukan nilai dari x dan y dari masing-

masing objek berdasarkan fungsi warnanya menurut dasar teori persamaan 2.1.

Nilai x dan y yang sudah didapat akan digunakan mengontrol robot untuk mengejar,

menggiring bola menuju gawang yang dituju serta menghindari lawan. Proses tersebut juga

akan terus berulang hingga robot berada pada jarak tertentu dari gawang yang dituju lalu

robot akan menendang bola. Untuk melakukan tindakan menghindari lawan digunakan

metode VFF (Virtual Force Field) yang mengolah nilai x dan y dari masing-masing objek

menjadi besaran sudut untuk melakukan pembelokan.

Perintah yang dikirimkan oleh program utama di dalam Raspberry Pi 3 akan dikirim

melalui modem wireless dengan menggunakan protokol Python Socket agar tidak mendapat

gangguan dari luar. Perintah yang dikirim adalah posisi x dan y dari robot, lawan, bola, kiper

lawan, serta gawang. Setiap perintah nantinya akan diberikan kode-kode unik yang hanya

bisa dibaca oleh robot.

3.2. Perancangan Perangkat Keras

Perancangan perangkat keras sistem berupa desain Coach computer sebagai

pengontrol robot soccer beroda serta tata letak dari USB camera sesuai dengan ketentuan

lomba.

3.2.1. Desain Coach Computer Pengontrol Robot Soccer Beroda

Pada gambar 3.1, perancangan coach computer pengontrol robot soccer beroda,

Raspberry pi 3 akan dilengkapi dengan acrylic case khusus untuk Raspberry Pi 3 beserta

Heatsink sehingga coach computer tersebut awet digunakan dalam durasi yang lama. Untuk

catuan daya akan disediakan oleh PSU Adapter 5V 3A. Adapter tersebut digunakan sebagai

power supply Raspberry Pi 3, dengan keluarannya 5V 3A maka Raspberry Pi 3 tidak akan

kekurangan daya ketika ditambah dengan USB Webcam. Untuk mempermudah pembuatan

program utama maka ditambahkan monitor, keyboard, dan mouse. Coach computer juga

akan dilengkapi dengan USB Webcam sebagai penangkap video saat pertandingan sedang

berlangsung yang akan dianalisis oleh program utama sebagai inputannya. Lalu akan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 41: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

25

dilengkapi modem wireless sebagai penyedia jaringan internet agar dapat mengirimkan

perintah untuk robot saat pertandingan sedang berlangsung.

3.2.2. Desain Tata Letak Kamera dan Lapangan

Pada perancangan tata letak kamera sebagai pendeteksi robot, lawan, bola, serta

gawang yang dituju, USB Webcam akan digantungkan pada tiang dengan tinggi 3 – 4 m

sesuai dengan keadaan pada saat lomba. Kamera akan diletakkan tepat di tengah lapangan

dengan ketinggian yang telah disesuaikan, dengan posisi tersebut maka kamera dapat

mengambil video dari seluruh lapangan.

Untuk perancangan lapangan disesuaikan dengan ketentuan yang berlaku pada

Ekshibisi Robot Soccer Beroda 2016 yaitu [17]:

1. Luas lapangan keseluruhan adalah sekitar 6m x 4m.

2. Radius lingkaran tengah adalah 60cm.

3. Kotak penalti berukuran 300cm x 60cm.

4. Gawang berukuran lebar 80cm tinggi 40cm diukur dari sisi dalam tiang.

5. Warna dari gawang adalah warna kuning.

Gambar 3.2 Tampilan yang didapat kamera dari atas lapangan [17]

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 42: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

26

Untuk menentukan spesifikasi kamera yang akan digunakan maka seperti gambar 3.3

dimisalkan nilai ketinggian penggantungan kamera adalah maksimal sesuai aturan lomba

yaitu 4m, lalu menghitung besar sudut yang diperlukan untuk mencakup seluruh lapangan

menggunakan aturan segitiga.

Gambar 3.3 Tampak samping kamera serta jangkauannya

Berdasarkan gambar 3.3 maka ditentukan:

Panjang alas = 3m

Tinggi = 4m

Maka berdasarkan aturan segitiga siku-siku besar x adalah:

tan 𝑥 = 𝑝𝑎𝑛𝑗𝑎𝑛𝑔 𝑎𝑙𝑎𝑠

𝑡𝑖𝑛𝑔𝑔𝑖

𝑥 = tan−1𝑝𝑎𝑛𝑗𝑎𝑛𝑔 𝑎𝑙𝑎𝑠

𝑡𝑖𝑛𝑔𝑔𝑖

𝑥 = tan−13𝑚

4𝑚 = 36,87o

Maka besar sudut view yang diperlukan sebesar: 2 × 36,87𝑜 = 73,74o. Berdasarkan

hal tersebut maka kamera yang digunakan menurut dasar teori adalah kamera yang memiliki

lebar lensa sebesar 4mm dengan besar sudut view-nya 80o.

Agar area yang ditangkap oleh kamera efisien maka dihitung kembali ketinggian

penggantungan kamera dengan menggunakan aturan segitiga siku-siku.

Panjang alas = 3m

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 43: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

27

X = 40o

Sudut sisanya = (180 - 40 - 90)o = 50o

Maka menurut aturan sin:

𝑡𝑖𝑛𝑔𝑔𝑖

sin 50=

3

sin 40

𝑡𝑖𝑛𝑔𝑔𝑖 = 3 × sin 50

sin 40= 3,57𝑚

Berdasarkan hasil perhitungan maka kamera akan digantungkan setinggi 3,57m.

3.3. Perancangan Perangkat Lunak

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 VFF untuk mengontrol robot mengejar atau menggiring bola untuk menghindari

lawan.

3.3.1. Diagram Alir Utama

Diagram alir utama ditunjukkan pada gambar 3.5 program utama menunjukkan proses

komputer mini mengontrol robot secara keseluruhan. Pada tahap awal program utama pada

monitor akan muncul tampilan interface yang berisi 3 tombol yang merupakan keadaan saat

lomba.

Gambar 3.4 Kerangka interface program utama

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 44: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

28

Gambar 3.5.1 Diagram alir utama

Mode bersiap adalah mode yang mengatur robot bergerak ke tengah lapangan untuk

bersiap dalam permainan seperti keadaan kick off pada permainan sepak bola ataupun

bergerak ke posisi tertentu seperti pada saat bertahan untuk tendangan bebas dari lawan

maupun bersiap untuk menendang bola saat robot mendapat tendangan bebas.

Mode berhenti adalah mode yang mengatur agar robot menghentikan proses yang

sedang berlangsung. Caranya adalah dengan mengganti nilai setpoint dari robot agar robot

berhenti yaitu dengan membuat posisi serta sudut robot sekarang menjadi setpoint dan

berhenti mengirimkan informasi dan perintah pada robot sehingga robot akan menjadi diam.

Mode bermain adalah mode yang mengatur robot untuk mengejar dan menggiring bola

menuju gawang lalu menembak bola tersebut ke dalam 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

Ya Ya

Tidak Tidak

Mulai

Menampilkan GUI ke

monitor

Pilih mode

Mode

Berhenti ?

Bersiap

Bermain

Berhenti

Selesai

Mode

Bersiap ?

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 45: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

29

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).

Di dalam masing-masing mode terdapat berbagai macam pengontrolan pergerakan

robot. Untuk mengontrol robot digunakan koordinat x dan y dari masing-masing objek yang

diolah dengan analisis vektor. Nilai x dan y didapatkan dari pengolahan citra, berdasarkan

dasar teori pada subbab 2.5 persamaan 2.1 maka nilai dari setiap piksel di lapangan akan

dibuat seperti pada gambar 3.5.2. dimana nilai x maksimal adalah 600 dan nilai y maksimal

adalah 400.

Nilai x dan y dari masing-masing objek yang didapatkan akan dijadikan perintah yaitu

berupa setpoint yang diinginkan dan informasi yaitu berupa letak posisi robot serta sudut

robot sekarang, posisi lawan, kiper lawan yang akan dikirim tergantung dari mode yang

sedang berlangsung pada robot.

Gambar 3.5.2 Representasi nilai piksel pada lapangan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 46: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

30

3.3.2. Subprogram Bersiap

Pada gambar 3.6.1 menunjukkan bagaimana kerja dari mode bersiap. Saat dalam mode

bersiap maka kamera akan mengambil video yang akan dianalisis 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, serta robot akan dikontrol ke posisi tertentu untuk

bersiap menghadapi tendangan bebas dari lawan maupun saat tendangan bebas oleh robot.

Nilai x dan y dari robot dan target yang didapat dari proses menentukan pergerakan

robot akan dijadikan setpoint serta informasi keberadaan robot sekarang, nilai tersebut akan

diolah oleh robot untuk menentukan PWM yang diberikan ke motor. Selain itu nilai x dan y

akan diolah berdasarkan dasar teori pada subbab 2.7 agar didapatkan sudut untuk

menentukan seberapa besar dan arah robot harus membelok.

Gambar 3.6.1 Diagram alir subprogram bersiap

Ya

Proses menentukan

informasi sudut robot,

serta posisi robot, dan

target

Tidak Sudah di

tujuan?

Kirim perintah

ke robot

Mulai

Selesai

Tindakan

pengontrolan

bersiap

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 47: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

31

Tindakan pengontrolan bersiap adalah tindakan untuk menentukan posisi setpoint

dari robot. Berdasarkan gambar 3.5.2 maka ditentukan:

a. Jika posisi bola di tengah lapangan seperti pada saat kick off atau tendangan bebas

untuk robot, maka nilai setpoint untuk robot adalah x = posisi ‘x’ bola – 60 dan y =

posisi ‘y’ bola.

Gambar 3.6.2 Gambaran pergerakan saat bola di tengah lapangan

b. Jika bola dalam penguasaan lawan artinya tendangan bebas untuk lawan, 60 < posisi

‘x’ bola < 300 dan posisi y bola < 100, maka nilai setpoint untuk robot adalah x =

posisi ‘x’ bola – 60 dan y = posisi ‘y’ bola + 60.

Gambar 3.6.3 Gambaran pergerakan saat bola berada di sebelah kiri gawang

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 48: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

32

c. Jika bola dalam penguasaan lawan artinya tendangan bebas untuk lawan, 60 < posisi

‘x’ bola < 300 dan posisi y bola > 300, maka nilai setpoint untuk robot adalah x =

posisi ‘x’ bola – 60 dan y = posisi ‘y’ bola – 60.

Gambar 3.6.4 Gambaran pergerakan saat bola berada di sebelah kanan gawang

d. Jika bola dalam penguasaan lawan artinya tendangan bebas untuk lawan, posisi ‘x’

bola < 60 dan posisi y bola < 200, maka nilai setpoint untuk robot adalah x = posisi

‘x’ bola dan y = 160. Nilai tersebut menunjukkan agar robot diam di depan gawang.

Gambar 3.6.5 Gambaran pergerakan saat bola berada di pojok k iri gawang

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 49: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

33

e. Jika bola dalam penguasaan lawan artinya tendangan bebas untuk lawan, posisi ‘x’

bola < 60 dan posisi y bola > 200, maka nilai setpoint untuk robot adalah x = posisi

‘x’ bola dan y = 240. Nilai tersebut menunjukkan agar robot diam di depan gawang.

Gambar 3.6.6 Gambaran pergerakan saat bo la berada di pojok kanan gawang

3.3.3. Subprogram Berhenti

Pada gambar 3.7 menunjukkan robot dalam mode berhenti maka semua proses yang berjalan

akan dihentikan, mode ini dipakai ketika waktu permainan telah selesai. Caranya adalah

dengan mengganti nilai setpoint dari robot agar robot berhenti yaitu dengan membuat posisi

serta sudut robot sekarang menjadi setpoint sehingga dan coach computer akan berhenti

mengirimkan informasi dan perintah pada robot sehingga robot akan menjadi diam.

Berdasarkan hal tersebut maka nilai posisi x setpoint = posisi x robot dan posisi y setpoint =

posisi y robot.

Gambar 3.7 Diagram alir subprogram berhent i

Selesai

Mulai

Menghentikan semua proses

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 50: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

34

3.3.4. Subprogram Bermain

Pada gambar 3.8 menunjukkan robot dalam mode bermain, maka kamera akan

mengambil video yang akan dianalisis oleh program utama untuk menentukan informasi

sudut robot, posisi robot, lawan dan target, 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.

Proses tersebut akan terus berulang hingga robot menguasai bola.

Gambar 3.8 Diagram alir Bermain 1

Ya

Proses menentukan

informasi sudut robot,

serta posisi robot,

lawan dan target

Tindakan

Pengontrolan

Menyerang

Tidak Sudah di

dekat

bola?

Kirim perintah

ke robot

Mulai

Ya

Bola ada

pada

lawan?

Tidak

Tindakan

Pengontrolan Bertahan

Sudah

merebut

bola?

Kirim perintah

ke robot

1

Tidak Ya

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 51: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

35

Pada gambar 3.9 kamera akan mengambil video yang akan dianalisis 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 ke dalam gawang yang dituju. Perintah yang dikirimkan oleh program

utama di dalam Raspberry Pi 3 akan dikirim melalui Python Socket.

Gambar 3.9 Diagram alir Bermain 2

Tidak

Ya

Tindakan Pengontrolan

Menyerang

Sudah di dekat

gawang?

Kirim perintah ke robot

Proses menentukan

informasi sudut robot,

serta posisi robot, lawan

dan target

Selesai

1

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 52: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

36

3.3.5. Subprogram Menentukan Informasi Sudut Robot, serta Posisi

Robot, Lawan dan Target

Untuk menentukan tujuan dari robot, serta posisi lawan maka coach computer akan

melakukan analisis terhadap masukan dari USB Webcam berupa video dengan

menggunakan metode image processing yang dibantu dengan menggunakan library bantuan

yaitu OpenCV yang dapat langsung diintegrasikan dengan Python. OpenCV digunakan

untuk memberikan nilai x dan y dari robot, lawan, dan target (bola atau gawang) berdasarkan

warna. Untuk pendeteksian warna dilakukan dengan metode HSV, metode tersebut dipilih

karena lebih peka terhadap perubahan cahaya. Nilai x dan y dari masing-masing objek yang

didapatkan akan dijadikan perintah yaitu berupa setpoint yang diinginkan dan informasi

yaitu berupa letak posisi robot, serta sudut robot sekarang, posisi lawan, dan kiper lawan

yang akan dikirim tergantung dari mode yang sedang berlangsung pada robot. Berdasarkan

titik posisi objek akan dibuat sebuah active window berbentuk lingkaran.

Gambar 3.10.1 Diagram alir subprogram menentukan tujuan robot dan posisi

lawan

Mulai

Input video

Inisialisasi variabel

Konversi warna input

dari RGB ke HSV

Menentukan warna masing-masing objek

Menentukan nilai x dan y masing-masing

objek dan arah sudut robot

Selesai

Membuat active window

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 53: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

37

Gambar 3.10.1 menunjukkan bagaimana proses menganalisis input video dari USB

Webcam menggunakan metode pengolahan citra yang dibantu dengan pustaka pada Python

yaitu OpenCV.

Berdasarkan dasar teori pada subbab 2.6, pertama dilakukan inisialisasi kamera yang

akan digunakan lalu menerima masukan input video. Lalu warna dari input video akan

dikonversikan menjadi HSV dan setelah itu menentukan warna dari masing-masing objek

dengan persamaan 2.2, 2.3, dan 2.4. maka untuk warna dari tanda tim robot adalah cyan dan

biru, warna bola adalah orange, dan warna gawang adalah kuning:

a. Kuning

Red = 255, Green = 250, Blue = 10, min = min[R,G, B] = 10, maks = maks[R,G,

B]=255

Karena maks = R, maka: H = (250−10

255−10) × 60 = 58,77 ≈ 59

Karena maks ≠ min, maka: S = 255-10 = 245

Nilai V akan dibuat dari kisaran batas bawah 20 dan batas atas 255 agar dapat

menyesuaikan dengan berbagai macam kondisi pencahayaan.

b. Biru

Red = 10, Green = 50, Blue = 255, min = min[R,G, B] = 10, maks = maks[R,G, B]=255

Karena maks = B, maka: H = (10−50

255−10+ 4) × 60 = 230,20 ≈ 230

Karena maks ≠ min, maka: S = 255-10 = 245

Nilai V akan dibuat dari kisaran batas bawah 20 dan batas atas 255 agar dapat

menyesuaikan dengan berbagai macam kondisi pencahayaan.

c. Orange

Red = 255, Green = 110, Blue = 10, min = min[R,G, B] = 10, maks = maks[R,G,

B]=255

Karena maks = R, maka: H = (110−10

255−10) × 60 = 24,489 ≈ 25

Karena maks ≠ min, maka: S = 255-10 = 245

Nilai V akan dibuat dari kisaran batas bawah 20 dan batas atas 255 agar dapat

menyesuaikan dengan berbagai macam kondisi pencahayaan.

d. Cyan

Red = 10, Green = 250, Blue = 255, min = min[R,G, B] = 10, maks = maks[R,G,

B]=255

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 54: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

38

Karena maks = B, maka: H = (10−250

255−10+ 4) × 60 = 181,22 ≈ 181

Karena maks ≠ min, maka: S = 255-10 = 245

Nilai V akan dibuat dari kisaran batas bawah 20 dan batas atas 255 agar dapat

menyesuaikan dengan berbagai macam kondisi pencahayaan.

Setelah warna masing-masing objek telah didapatkan lalu dapat ditentukan nilai x dan

y berdasarkan fungsi warna yang dinginkan dari persamaan 2.1 pada dasar teori subbab 2.5.

selain itu ditentukan juga besar arah sudut robot saat ini sebagai patokan seberapa besar

nantinya robot harus melakukan belokan. Caranya adalah berdasarkan gambar 3.10.2

ditentukan besar sudut yang terbentuk dari dua tanda tim tersebut terhadap sumbu x

berdasarkan dasar teori subbab 2.8 persamaan 2.11.

Gambar 3.10.2 Gambaran arah sudut robot

Misal tanda 1 berada pada posisi x = 210 dan y = 110, dan tanda 2 berada pada posisi

x = 200 dan y = 100 maka arah dari sudut robot adalah:

tan−1 (100− 110

200− 210) = 45𝑜

Nilai posisi x dan y dari masing-masing objek serta besar arah sudut robot akan

dikirimkan sebagai informasi oleh robot. Setelah nilai x dan y didapatkan maka dibuat

sebuah active window pada robot dan lawan yang dipakai oleh metode VFF untuk

menghindari terjadinya tabrakan, serta mengetahui apakah bola dalam penguasaan robot atau

dalam penguasaan lawan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 55: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

39

3.3.6. Subprogram Tindakan Pengontrolan Bertahan

Berdasarkan gambar 3.11.1, untuk mengontrol robot ketika dalam keadaan bertahan

dilakukan dengan cara menggunakan metode VFF ( Virtual Force Field ), metode tersebut

akan dapat meminimalisir terjadinya tabrakan antara robot dengan lawan. Ketika mengejar

bola dalam keadaan penguasaan lawan, robot akan dikontrol untuk berada di depan lawan.

Ketika sudah berada di depan lawan maka robot akan mencoba untuk mencuri bola.

Gambar 3.11.1 Diagram alir subprogram t indakan pengontrolan bertahan

Ya

Ya

Mulai

Sudah di dekat

lawan?

Menghitung besar sudut antara robot dengan lawan, robot dengan target

Menghitung selisih sudutnya

Menghitung besar resultan vektor

Menghitung arah resultan vektor

Selesai

Bergerak menuju lawan

Sudah di depan

lawan?

Tidak

Tidak

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 56: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

40

Gambar 3.11.2 Gambaran algoritma bertahan

Ketika bola berada dalam wilayah active window lawan maka robot akan masuk dalam

submode bertahan. Ketika dalam mode bertahan seperti digambarkan pada gambar 3.11.2,

coach computer akan mengubah setpoint yang awalnya adalah posisi x dan y bola menjadi

nilai setpoint untuk robot adalah x = posisi ‘x’ bola – 60 dan y = posisi ‘y’ bola. Contoh:

Posisi_x_bola = 450 dan posisi_y_bola = 210

Maka

Posisi_x_setpoint = 450 – 60 = 390 dan posisi_y_setpoint = posisi_y_bola = 210

Dengan nilai posisi_x_setpoint selalu lebih kecil dari nilai posisi_x_bola dan nilai

posisi_y_setpoint sama dengan nilai posisi_y_bola maka setpoint yang dikirimkan kepada

robot akan selalu berada pada posisi yang tepat berada di depan lawan.

Ketika robot sudah berada di depan lawan yang artinya robot telah berada pada posisi

yang dinginkan sesuai setpoint maka robot akan menentukan untuk merebut bola atau hanya

menghalangi lawan agar tidak dapat menendang bola ke arah gawang. Ketika robot telah

berhasil merebut bola maka mode bertahan akan selesai dan robot akan beralih ke submode

menyerang untuk berusaha mencetak gol.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 57: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

41

3.3.7. Subprogram Tindakan Pengontrolan Menyerang

Berdasarkan gambar 3.12.1, untuk melakukan pengontrolan ketika menghindari lawan

saat mengejar bola dalam keadaan bebas ataupun pada saat menggiring bola terhadap robot

dilakukan dengan cara metode VFF ( Virtual Force Field ). Jika active window mendeteksi

adanya lawan maka akan dilakukan perhitungan untuk mendapatkan sudut antara robot

dengan lawan dan target menggunakan nilai yang didapatkan pada proses sebelumnya lalu

diolah kembali sesuai dengan langkah-langkah pada VFF. Jika active window tidak

mendeteksi adanya lawan maka robot akan berjalan lurus menuju target.

Gambar 3.12.1 Diagram alir subprogram t indakan pengontrolan menyerang

Ya

Mulai

Apakah

ada

lawan?

Menghitung besar sudut antara robot

dengan lawan, robot dengan target

Menghitung selisih sudutnya

Menghitung besar resultan vektor

Menghitung arah resultan vektor

Selesai

Tidak

Mendeteksi lawan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 58: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

42

Gambar 3.12.2 Gambaran algoritma menyerang

Ketika bola berada dalam wilayah active window robot ataupun tidak dalam berada

wilayah active window robot dan lawan maka robot akan berada dalam submode menyerang.

Ketika bola tidak berada dalam penguasaan robot ataupun lawan maka posisi x dan y setpoint

akan sama dengan posisi x dan y bola. Ketika bola telah berada dalam penguasaan robot

maka setpoint robot akan diubah menjadi posisi x dan y gawang lawan.

Seperti pada gambar 3.12.2 bola berada dalam penguasaan robot dan active window

robot mendeteksi adanya active window lawan maka akan digunakan metode VFF untuk

menghindari lawan. Berdasarkan dasar teori pada subbab 2.8 maka dapat ditentukan berapa

besar sudut belok yang harus dilakukan oleh robot yaitu:

𝐹1 = √(400 + 350)2 + (100 + 150)2 = 790 ; 𝐹2 = √(600 + 350)2 + (150 + 150)2 = 996,2

𝛼1 = 𝑎𝑟𝑐 tan (100 − 150

400 − 350) = −45𝑜; 𝛼2 = 𝑎𝑟𝑐 tan (

150 − 150

600 − 350) = 0𝑜

𝜃 = 0𝑜 − (−45)𝑜 = 45𝑜

𝑅 = √7902 + 996,242 + 2 × 790 × 996,2 cos(45𝑜) = 1652,16

𝜎1 = 𝑎𝑟𝑐 sin790 sin(180 − 45)

1652,16= 19,76𝑜

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 59: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

43

Robot akan terus bergerak dengan sudut 𝜎1 dan ketika sudut antara robot dengan lawan

adalah 90o, untuk menentukan sudut 𝜎2 dengan:

Posisi_x_robot = 400 ; Posisi_x_lawan = 400 ; Posisi_x_target = 600

Posisi_y_robot = 168 ; Posisi_y_lawan = 100 ; Posisi_y_target = 150

maka:

𝐹1 = √(400 + 400)2 + (100 + 168)2 = 844 ; 𝐹2 = √(600 + 400)2 + (150 + 168)2 = 1049

𝛼1 = 𝑎𝑟𝑐 tan (100 − 168

400 − 400) = −90𝑜; 𝛼2 = 𝑎𝑟𝑐 tan (

150 − 168

600 − 400) = −5,13𝑜

𝜃 = −90𝑜 − (−5,13)𝑜 = −84,87𝑜

𝑅 = √8442 + 10492 + 2 × 844 × 1049cos(−84,87𝑜) = 1402

𝜎2 = 𝑎𝑟𝑐 sin844 sin(180 − (−84,47))

1402= −36,81𝑜

Gambar 3.12.3 Gambaran hasil akhir algoritma VFF

Ketika nilai posisi_x_robot telah lebih besar dari posisi_x_lawan maka dapat

dikatakan bahwa robot telah berhasil melewati lawan dan robot akan kembali bergerak

menuju setpoint yang telah ditentukan yaitu gawang lawan. Ketika telah berada pada setpoint

yang diinginkan maka robot akan menentukan untuk menendang bola ke arah gawang, ketika

bola berhasil dihalau gawang maka proses akan berulang dari awal submode menyerang

hingga kembali menendang bola ke gawang hingga berhasil mencetak angka.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 60: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

44

3.3.8. Subprogram Kirim Perintah ke Robot

Untuk melakukan pengiriman perintah kepada robot dilakukan dengan koneksi

wireless menggunakan suatu modem wireless. Agar tidak salah dalam melakukan

pengiriman perintah kepada robot, protokol pengiriman yang digunakan adalah protokol

Socket Python. Selain itu dengan menggunakan protokol tersebut komunikasi yang

dilakukan lebih aman dari gangguan luar.

Perintah yang dikirim berupa posisi x dan y dari objek (gawang, robot, lawan, kiper

lawan, tujuan tertentu dan bola), koreksi sudut untuk melakukan gerakan berupa belokan

saat robot melewati lawan, dan perintah untuk berhenti. Agar perintah tersebut dapat dikenali

hanya oleh robot maka digunakan kode unik sebagai header dari setiap perintah.

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. Untuk lebih jelasnya dapat dilihat

pada tabel berikut:

Tabel 3.1 Daftar kode untuk informasi dan perintah kepada robot

Informasi dan perintah Kode

Posisi robot (x,y) 1

Posisi bola (x,y) 2

Posisi lawan (x,y) 3

Posisi gawang (x,y) 4

Posisi kiper lawan (x,y) 5

Setpoint (x,y) 6

Koreksi sudut (sudut sendiri, sudut yang dinginkan) 7

Berhenti 0

Tabel 3.2 Format pengiriman informasi dan perintah kepada robot

Kode Informasi dan perintah yang dikirim

Posisi x Posisi y

1 - 6 0 - 9 0 - 9 0 - 9 0 - 9 0 - 9 0 - 9

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 61: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

45

Tabel 3.3 Format pengiriman koreksi sudut belokan robot

Kode Perintah yang dikirim

Sudut robot sekarang Sudut yang diinginkan

7 ± 0 - 9 0 - 9 ± 0 - 9 0 - 9

Misal posisi robot saat ini adalah x=250 dan y=300, lalu posisi setpoint adalah x=250 dan

y=100. Dengan sudut robot saat ini +30o dan sudut yang dinginkan adalah – 90o maka

informasi dan perintah yang dikirimkan adalah:

sock.sendto('1250300' , ('192.168.35.53' , 32))

sock.sendto('6250100' , ('192.168.35.53' , 32))

sock.sendto('7+30-90' , ('192.168.35.53' , 32))

Pada gambar 3.13 untuk melakukan pengiriman perintah seperti dalam dasar teori

maka pertama dilakukan inisialisasi domain, type, IP Address, serta port yang digunakan.

Lalu setelah diinisialisasi maka selanjutnya membuat koneksi dengan address yang

diinginkan. Setelah berhasil membuat koneksi lalu mengikat koneksi tersebut (binding).

Setelah berhasil maka perintah untuk robot dapat dikirim sesuai dengan ketentuan tabel 3.1.

Gambar 3.13 Diagram alir subprogram kirim perintah ke robot

Mulai

Inisialisasi domain, type, IP

address, port yang digunakan

Membuat koneksi dengan robot

Mengikat koneksi dengan robot

Mengirim perintah ke robot

Selesai

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 62: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

46

BAB IV

HASIL DAN PEMBAHASAN

4.1. Perubahan Perancangan

Pada penelitian ini dilakukan perubahan perancangan pada desain tata letak kamera

dan lapangan, selain itu juga terdapat perubahan dalam perangkat lunak yaitu perubahan

pada mode bermain

.

4.1.1. Perubahan Desain Tata Letak Kamera dan Lapangan

Pada penelitian ini dilakukan perubahan desain tata letak kamera dan lapangan, pada

bab III kamera digantung pada ketinggian 3m hingga 4m dan dengan ukuran lapangan

keseluruhan 6m x 4m.

Pada gambar 4.1 dan gambar 4.2, perubahan yang dilakukan adalah Webcam

ditambahkan dengan lensa tambahan agar angle view-nya semakin lebar sehingga area yang

bisa dicakup oleh Webcam menjadi lebih lebar. Webcam digantung pada ketinggian 3m dan

dengan ukuran lapangan keseluruhan adalah 2,6m x 2,0m. Hal tersebut dikarenakan tempat

pengujian memiliki tinggi maksimum 3m sehingga kamera hanya mampu melingkupi area

seluas 2,6m x 2,0m

Gambar 4.1 Perubahan desain tata letak kamera

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 63: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

47

Gambar 4.2 Perubahan desain lapangan

4.1.2. Perubahan Mode Bermain

Pada penelitian ini dilakukan perubahan mode bermain, pada bab III mode bermain

hanya mengontrol robot untuk mengejar bola lalu menggiring bola tersebut ke gawang.

Setelah robot berada di dekat gawang maka robot akan menentukan tindakan untuk

mencetak angka tanpa diperintah oleh pengontrol robot soccer beroda.

Pada gambar 4.3 perubahan yang dilakukan adalah membuat mode tambahan untuk

memerintah robot mencetak angka berdasarkan keputusan pengontrol robot soccer beroda.

Caranya adalah dengan mendeteksi sudut robot sekarang lalu menentukan posisi kiper

lawan, setelah itu mengubah setpoint menjadi titik sisi gawang yang lebih terbuka lebar dan

menghitung sudut titik tersebut pada robot. Ketika sudut robot sudah sesuai dengan sudut

setpoint maka robot akan menendang bola. Jika semua hal tersebut dibebankan kepada robot

maka robot harus memperhitungkan tindakan untuk menendang bola. Oleh karena itu agar

kinerja sistem dari robot menjadi lebih ringan dan robot badan berjalan lebih baik, maka

tindakan untuk menendang bola dilakukan oleh sistem

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 64: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

48

Gambar 4.3 Diagram alir Bermain 2

4.1.3. Perubahan Subprogram Kirim Perintah ke Robot

Pada penelitian ini dilakukan perubahan subprogram kirim perintah ke robot, pada bab

III subprogram kirim perintah ke robot mengirimkan tujuh macam data yaitu posisi robot,

posisi bola, posisi lawan, posisi gawang, posisi kiper lawan, posisi tertentu, serta koreksi

sudut. Jika semua informasi hanya dikirimkan dari sistem lalu diolah oleh robot sendiri maka

kinerja dari robot akan menjadi lebih berat.

Pada tabel 4.1 sampai dengan tabel 4.3 perubahan yang dilakukan adalah mengurangi

jumlah data yang dikirim menjadi hanya empat data saja yaitu koreksi sudut dan jarak robot

dengan target, Serta juga ditambahkan informasi untuk menentukan arah serang robot dan

perintah untuk mengatur robot dalam mengirimkan data. Hal tersebut akan membuat kerja

dari sistem lebih ringan serta mengurangi perhitungan yang dilakukan oleh robot. Robot

Tidak

Ya

Menentukan sisi gawang yang lebih terbuka

Sudah di

dekat

gawang?

Kirim perintah ke robot

Proses menentukan informasi

sudut robot, serta posisi robot,

lawan dan target

Kirim perintah tendang bola

Bermain 1

Menentukan sudut robot dengan titik yang

dinginkan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 65: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

49

hanya akan memperhitungkan PID berdasarkan koreksi sudut serta perhitungan jarak hasil

dari perhitungan pengontrol robot soccer beroda.

Pada tabel 4.1 menunjukkan format untuk mengatur arah serang dari robot, ketika

robot diperintah untuk menyerang ke kanan maka sistem akan mengirimkan perintah berupa

teks ‘9A’ dan sebaliknya ketika robot diperintahkan untuk menyerang ke arah kiri maka

sistem akan mengirimkan perintah berupa teks ‘9B’.

Pada tabel 4.2 menunjukkan format untuk mengatur pergerakan dari robot baik dalam

mengejar bola, menggiring bola menuju gawang, serta menendang bola. Radius merupakan

jarak dari robot menuju setpoint, misal radius antara robot dengan setpoint adalah ‘053’

maka sistem akan mengirimkan perintah berupa teks ‘8053’. Tendang adalah perintah untuk

membuat robot menendang bola, jika sistem diperintahkan untuk menendang bola maka

sistem akan mengirimkan perintah berupa teks ‘61’ dan sebaliknya ketika robot

diperintahkan untuk tidak menendang maka sistem akan mengirimkan perintah berupa teks

‘60’. Kirim adalah perintah untuk membuat robot mengirimkan data untuk memberitahukan

bahwa robot telah mendapatkan bola atau belum, jika sistem diperintahkan untuk mengirim

data maka sistem akan mengirimkan perintah berupa teks ‘51’ dan sebaliknya ketika robot

diperintahkan untuk tidak mengirimkan data maka sistem akan mengirimkan perintah berupa

teks ‘50’.

Untuk tabel 4.3 masih sama dengan perancangan pada bab III namun lebih banyak

datanya menjadi tiga digit.

Tabel 4.1 Format pengiriman informasi kepada robot

Kode Informasi yang dikirim

Serang Kanan Serang Kiri

9 A B

Tabel 4.2 Format pengiriman perintah kepada robot

Kode Format Perintah yang dikirim

Perintah Range

8 Radius 0 – 9 0 - 9 0 – 9

6 Tendang 0 – 1

5 Kirim 0 – 1

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 66: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

50

Tabel 4.3 Format pengiriman koreksi sudut belokan robot

Kode Perintah yang dikirim

Sudut robot sekarang Sudut yang diinginkan

7 ± 0 - 9 0 - 9 0 - 9 ± 0 - 9 0 - 9 0 - 9

4.2. Hasil Implementasi

Implementasi sistem hasil perancangan ditunjukkan dari gambar 4.4 sampai dengan

gambar 4.7. Untuk mempermudah penggunaan pengontrol robot soccer beroda dalam

penelitian maka dibuat GUI sesuai dengan gambar 4.4, dengan bantuan keyboard dan mouse

dalam mengoperasikannya. Pengoperasian GUI tersebut adalah sebagai berikut:

1. Mode bersiap adalah mode yang mengatur robot bergerak ke tengah lapangan untuk

bersiap dalam permainan seperti keadaan kick off pada permainan sepak bola ataupun

bergerak ke posisi tertentu seperti pada saat bertahan untuk tendangan bebas dari lawan

maupun bersiap untuk menendang bola saat robot mendapat tendangan bebas.

2. Mode berhenti adalah mode yang mengatur agar robot menghentikan proses yang

sedang berlangsung. Caranya adalah dengan mengganti nilai setpoint dari robot agar

robot berhenti yaitu dengan membuat posisi serta sudut robot sekarang menjadi

setpoint dan berhenti mengirimkan informasi dan perintah pada robot sehingga robot

akan menjadi diam.

3. Mode bermain adalah mode yang mengatur robot untuk mengejar dan menggiring bola

menuju gawang lalu menembak bola tersebut ke dalam 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).

4. Mode serang kiri dan serang ke kanan untuk mengatur tampilan Webcam sehingga saat

pergantian babak sistem mampu memberikan posisi x dan y yang sesuai. Mode yang

dipilih tergantung dari undian arah robot menyerang.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 67: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

51

Gambar 4.4 Tampilan GUI

Video akan diambil oleh Webcam yang ditambahkan dengan lensa tambahan agar

jangkauannya lebih lebar lalu video tersebut akan dianalisa oleh Raspberry Pi menggunakan

bahasa pemrograman Python yang dieksekusi melalui perangkat lunak Geany. Perangkat

lunak tersebut digunakan karena lebih cepat dalam melakukan proses pengontrolan terhadap

robot. Pada gambar 4.5 menunjukkan tampilan dari Geany.

Gambar 4.5 Tampilan Geany

Proses menganalisa masukan video dari Webcam dilakukan pengolahan citra dengan

bantuan library tambahan Python yaitu OpenCV. Hasil dari pengolahan citra adalah posisi

x dan y dari masing-masing objek, lalu posisi tersebut akan diolah untuk mengontrol robot

soceer beroda. OpenCV juga akan menampilkan keadaan di lapangan ditambah dengan

keterangan seperti pada gambar 4.6

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 68: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

52

Gambar 4.6 Tampilan pada Lapangan Hasil Analis is OpenCV

Perintah akan dikirim ke robot menggunakan bantuan library pada Python yaitu

Socket dengan jenis komunikasi yang dilakukan adalah UDP. Perintah yang dikirim adalah

sudut robot sekarang, sudut setpoint robot, serta radius robot dengan setpoint yang

diinginkan. Dengan sudut setpoint dan radius maka sistem dapat mengontrol pergerakan

robot soccer beroda. Pada gambar 4.7 adalah tampilan hasil analisa serta perintah yang

dikirimkan ke robot. Angka pada digit pertama merupakan kode untuk masing-masing objek,

angka pada digit kedua hingga keempat merupakan angka untuk posisi x, angka pada digit

kelima hingga ketujuh merupakan angka untuk posisi y. Kode serta banyaknya digit yang

digunakan tersebut sudah sesuai dengan perancangan pada bab III. Pada mode bersiap hanya

terjadi komunikasi satu arah yaitu sistem memberikan perintah serta informasi ke robot

sedangkan pada mode bermain terjadi komunikasi dua arah yaitu sistem memberikan

informasi serta perintah pergerakan untuk robot dan robot mengirimkan informasi bahwa

robot sudah dalam penguasaan robot atau masih dalam robot pengejaran, informasi tersebut

didapat dari sensor yang terdapat di robot. Pada tabel 4.4 adalah format informasi yang

dikirimkan oleh robot, jika data yang diterima berisi ‘1’ maka bola masih dalam proses

pengejaran sedangkan jika data yang diterima berisi ‘2’ maka bola sudah dalam penguasaan

robot.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 69: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

53

Gambar 4.7 Tampilan Hasil Analisa dan Perintah yang Dikirim

Tabel 4.4 Format informasi yang diterima oleh sistem

Informasi yang diterima

Bola dalam pengejaran Bola dalam penguasaan

1 2

4.3. Analisa Keberhasilan Sistem

Pengujian untuk menganalisa keberhasilan sistem dilakukan dengan melihat

kemampuan sistem menentukan objek berdasarkan warnanya, sistem mampu menentukan

posisi x dan y dari masing-masing objek tersebut, sistem mampu menentukan tindakan yang

akan dilakukan oleh robot dan mengendalikan pergerakannya berdasarkan mode yang dipilih

yaitu bersiap atau bermain.

Pengujian sistem terbagi menjadi dibagi menjadi dua bagian pada setiap mode.

Pengujian pertama yaitu menguji hasil analisis sistem terhadap masukan video untuk

menentukan objek berdasarkan warnanya lalu menentukan posisi x dan y dari masing-masing

objek tersebut. Sistem diharapkan mampu menentukan masing-masing objek berdasarkan

warnanya serta menentukan posisi x dan y dari masing-masing objek untuk diolah menjadi

perintah untuk robot pada setiap mode sesuai dengan perancangan pada bab III. Pengujian

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 70: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

54

kedua yaitu menguji sistem untuk mengendalikan pergerakan robot berdasarkan koreksi

sudut dan radius hasil perhitungan sistem. Sistem diharapkan mampu mengendalikan robot

untuk bergerak ke posisi dan arah tertentu berdasarkan hasil perhitungan koreksi sudut serta

radius yang ditentukan sesuai dengan setpoint yang diinginkan pada setiap mode sesuai

dengan perancangan pada bab III.

Data pengujian pertama pada mode bersiap ditunjukkan oleh gambar 4.8 sampai

dengan gambar 4.13 serta tabel 4.5. Data pengujian kedua pada mode bersiap ditunjukkan

oleh tabel 6.1 sampai tabel 6.3. Data pengujian pertama pada mode bermain ditunjukkan

oleh gambar 4.13 sampai dengan gambar 4.19 serta tabel 4.6. Data pengujian kedua pada

mode bermain ditunjukkan oleh tabel 6.4 sampai dengan 6.5. Pada tabel 4.5, 4.6, 6.1 sampai

dengan tabel 6.5 data dibandingkan dengan hasil yang dinginkan sesuai dengan perancangan

pada bab III.

Berdasarkan pada gambar 4.8 sampai dengan gambar 4.13 serta tabel 4.5 menunjukkan

sistem mampu memberikan hasil sesuai dengan yang dinginkan. Sistem mampu menentukan

jenis objek berdasarkan warnanya dan menentukan posisi x dan y dari masing-masing objek

dengan pengolahan citra menggunakan library OpenCV. Sistem juga mampu menentukan

setpoint yang akan diolah oleh sistem untuk mengatur pergerakan robot sesuai dengan

perancangan pada subbab III yaitu pada subprogram bersiap.

Tabel 4.5 Data dari pengujian pertama pada mode bersiap

Gambar Posisi Bola

(x,y)

Setpoint yang

Diharapkan

(x,y)

Setpoint

Hasil Sistem

(x,y)

4.8 (403,263) (343,263) (343,263)

4.9 (188,365) (128,305) (128,305)

4.10 (079,441) (019,381) (019,381)

4.11 (226,036) (166,096) (166,096)

4.12 (103,020) (043,080) (043,080)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 71: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

55

Gambar 4.8 Hasil analisa pada mode bersiap percobaan pertama

Gambar 4.9 Hasil analisa pada mode bersiap percobaan kedua

Gambar 4.10 Hasil analisa pada mode bersiap percobaan ket iga

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 72: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

56

Gambar 4.11 Hasil analisa pada mode bersiap percobaan keempat

Gambar 4.12 Hasil analisa pada mode bersiap percobaan kelima

Pada tabel 6.1 sampai dengan tabel 6.3 yang terdapat di lampiran menunjukkan data

dari pergerakan robot dalam mode bersiap ketika menuju posisi yang dinginkan sesuai

dengan setpoint yang diberikan. Berdasarkan data yang didapatkan maka sistem mampu

mengarahkan robot menuju setpoint yang dinginkan.

Berdasarkan pada tabel 6.1 yang terdapat di lampiran, dari data nomor satu sampai

dengan nomor tujuh sistem memberikan koreksi sudut yang lebih besar dari sudut robot saat

itu agar robot bergerak ke arah yang benar, ketika sudut robot sudah melewati batas yang

dinginkan maka sistem akan menurunkan sudut yang dinginkan seperti yang terlihat pada

data nomor delapan sampai dengan nomor 23 dan sistem akan terus memperbaiki sudut dari

robot hingga robot mencapai tujuan. Radius yang dikirimkan oleh sistem semakin lama

semakin kecil agar saat robot sudah mencapai tujuan yang dinginkan maka robot akan

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 73: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

57

berhenti. Pada percobaan pertama mode bersiap sistem mampu mengendalikan robot untuk

mencapai tujuan dengan error terhadap posisi akhir yang dinginkan sebesar 2,5% untuk

posisi x dan 2,08% untuk posisi y.

Berdasarkan pada tabel 6.2 yang terdapat di lampiran, dari data nomor satu sampai

dengan nomor 20 sistem memberikan koreksi sudut yang lebih besar dari sudut robot saat

itu agar robot bergerak ke arah yang benar, ketika sudut robot sudah melewati batas yang

dinginkan maka sistem akan menurunkan sudut yang dinginkan seperti yang terlihat pada

data nomor 21 sampai dengan selesai hingga robot mencapai tujuan. Radius yang dikirimkan

oleh sistem semakin lama semakin kecil agar saat robot sudah mencapai tujuan yang

dinginkan maka robot akan berhenti. Ketika robot berhenti sudut robot masih belum sama

dengan yang dinginkan namun radius robot dengan tujuan yang dinginkan sudah sama

dengan nol sehingga robot berhenti gerak. Pada percobaan kedua mode bersiap sistem

mampu mengendalikan robot untuk mencapai tujuan dengan error terhadap posisi akhir

yang dinginkan sebesar 0,94% untuk posisi x dan 6,04% untuk posisi y.

Berdasarkan pada tabel 6.3 yang terdapat di lampiran, sama seperti percobaan

sebelumnya dari data nomor satu sampai dengan nomor 26 sistem memberikan koreksi sudut

yang lebih kecil dari sudut robot saat itu agar robot bergerak ke arah yang benar, ketika sudut

robot sudah melewati batas yang dinginkan maka sistem akan menaikan sudut yang

dinginkan seperti yang terlihat pada data nomor 27 sampai dengan selesai hingga robot

mencapai tujuan. Radius yang dikirimkan oleh sistem semakin lama semakin kecil agar saat

robot sudah mencapai tujuan yang dinginkan maka robot akan berhenti. Ketika robot

berhenti sudut robot masih belum sama dengan yang dinginkan namun radius robot dengan

tujuan yang dinginkan sudah sama dengan nol sehingga robot berhenti gerak. Pada

percobaan ketiga mode bersiap sistem mampu mengendalikan robot untuk mencapai tujuan

dengan error terhadap posisi akhir yang dinginkan sebesar 0,03% untuk posisi x dan 0,08%

untuk posisi y.

Berdasarkan pembahasan diatas serta tabel 4.6 maka mode bersiap dari sistem sudah

sesuai dengan yang dinginkan perancangan pada bab III. Tingkat keberhasilan dari mode

bersiap cukup tinggi dengan rata-rata error dari setiap percobaan sebesar 1,16% untuk posisi

x dan 2,73% untuk posisi y. Dengan error yang cukup kecil maka robot dapat berjalan

mengejar bola lalu menggiring bola tersebut dengan baik, jika error yang terdapat masih

cukup besar maka akan terjadi kemungkinan robot menjadi sulit untuk menggiring bola. Hal

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 74: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

58

tersebut dikarenakan jika robot mengejar bola dari jarak yang cukup jauh maka nantinya

robot akan sulit untuk menempatkan bola pada bagian penggiringnya.

Tabel 4.6 Error posisi dari percobaan eksekusi mode bersiap

Percobaan Error terhadap posisi x Error terhadap posisi y

Percobaan 1 2,50% 2,08%

Percobaan 2 0,94% 6,04%

Percobaan 3 0,03% 0,08%

Rata-rata 1,16% 2,73%

Berdasarkan pada gambar 4.13 sampai dengan gambar 4.19 serta tabel 4.7

menunjukkan sistem mampu memberikan hasil sesuai dengan yang dinginkan. Sistem

mampu menentukan jenis objek berdasarkan warnanya dan menentukan posisi x dan y dari

masing-masing objek dengan pengolahan citra menggunakan library OpenCV. Sistem juga

mampu menentukan setpoint yang akan diolah oleh sistem untuk mengatur pergerakan robot

serta koreksi sudut untuk menghindari benturan dengan lawan saat mengejar bola,

menggiring bola ke gawang, dan mengerahkan robot menendang saat didepan gawang untuk

mencetak angka sesuai dengan perancangan pada subbab III yaitu pada subprogram bermain.

Berdasarkan pada gambar 4.13 sampai dengan 4.15 robot dalam keadaan mengejar

bola, dalam keadaan ini sistem hanya mendeteksi robot, bola, dan lawan. Pada gambar 4.13

robot dalam keadaan menyerang maka setpoint yang diinginkan adalah posisi x dan y dari

bola. Pada gambar 4.14 lawan telah memasuki area dari active window maka sistem

memberikan koreksi sudut yang dinginkan untuk menghindari lawan, setpoint yang

diinginkan adalah posisi x dan y dari bola. Pada gambar 4.15 robot dalam keadaan bertahan

karena bola dalam pengawasan lawan maka maka setpoint yang diinginkan adalah posisi x

dan y dari posisi yang berada persis di depan lawan.

Berdasarkan pada gambar 4.16 dan 4.17 robot dalam keadaan menuju ke gawang,

dalam keadaan ini sistem hanya mendeteksi robot, lawan, dan kiper lawan. Pada gambar

4.16 robot dalam keadaan menyerang maka setpoint sudut yang diinginkan adalah besar

sudut robot terhadap posisi x dan y dari sisi gawang yang lebih jauh jangkauannya dari kiper

lawan. Pada gambar 4.17 lawan telah memasuki area dari active window maka sistem

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 75: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

59

memberikan koreksi sudut yang dinginkan untuk menghindari lawan, setpoint yang

diinginkan adalah posisi x dan y dari gawang.

Berdasarkan pada gambar 4.18 dan 4.19 robot dalam keadaan ingin mencetak angka,

dalam keadaan ini sistem akan mengirimkan perintah untuk menendang bola. Gambar 4.18

robot dalam keadaan bersiap menendang bola untuk mencetak angka maka sistem akan

mengirimkan perintah untuk menendang bola yaitu berupa teks “91”. Pada gambar 4.19

robot telah menendang bola ke arah yang diinginkan namun bola masih belum memasuki

gawang maka sistem memberikan perintah kepada robot untuk kembali mengejar bola, pada

dalam keadaan tersebut sistem mendeteksi robot, lawan, dan bola. Setpoint yang diinginkan

adalah posisi x dan y dari gawang. Ketika robot sudah kembali mendapatkan bola maka

sistem akan memberikan perintah kepada robot untuk kembali mencetak angka. Proses ini

akan terus berulang sampai dengan robot berhasil mencetak angka.

Tabel 4.7 Data dari pengujian pertama pada mode bermain

Gambar

Posisi

Bola

(x,y)

Posisi

Lawan

(x,y)

Posisi

Kiper

Lawan

(x,y)

Setpoint

yang

Diinginkan

(x,y)

Setpoint

Hasil

Sistem

(x,y)

Koreksi

Sudut Radius

Tendang

Bola

4.13 (446,225) (350,037) - (446,225) (446,225) -008,+005 257 Tidak

4.14 (446,226) (240,152) - (446,226) (446,226) -006,+021 257 Tidak

4.15 (431,298) (464,289) - (404,289) (404,289) -003,+021 229 Tidak

4.16 - (128,324) (590,243) (640,184) (640,184) -003,+018 550 Tidak

4.17 - (150,350) (590,243) (640,184) (640,184) +000,-022 564 Tidak

4.18 - (129,324) (590,243) (640,184) (640,184) - - Ya

4.19 (518,268) (129,324) - (518,268) (518,268) -003,+045 94 Tidak

Gambar 4.13 Hasil analisa pada mode bermain percobaan pertama

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 76: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

60

Gambar 4.14 Hasil analisa pada mode bermain percobaan kedua

Gambar 4.15 Hasil analisa pada mode bermain percobaan ket iga

Gambar 4.16 Hasil analisa pada mode bermain percobaan keempat

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 77: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

61

Gambar 4.17 Hasil analisa pada mode bermain percobaan kelima

Gambar 4.18 Hasil analisa pada mode bermain percobaan keenam

Gambar 4.19 Hasil analisa pada mode bermain percobaan ketujuh

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 78: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

62

Berdasarkan pada tabel 6.4 dan 6.5 yang terdapat di lampiran menunjukkan data dari

pergerakan robot dalam mode bermain ketika menuju posisi yang dinginkan sesuai dengan

setpoint yang diberikan. Berdasarkan data yang didapatkan maka sistem mampu

mengarahkan robot menuju setpoint yang dinginkan. Namun pada mode bermain memiliki

kelemahan yaitu adanya delay perhitungan yang disebabkan oleh banyaknya objek yang

dideteksi. Akibat dari delay tersebut adalah sistem menjadi kurang responsif terhadap

perubahan data yang dikirimkan oleh robot. untuk mengatasi hal tersebut maka sistem akan

mengirimkan perintah untuk mengatur robot mengirimkan data. Ketika sistem mengirimkan

perintah kirim maka artinya sistem telah selesai melakukan perhitungan sehingga data yang

masuk dari robot tidak akan menumpuk.

Berdasarkan pada tabel 6.4 yang terdapat di lampiran, dari data nomor satu sampai

dengan nomor 25 robot dalam kondisi mengejar bola sehingga sistem memberikan setpoint

sesuai dengan posisi bola. Ketika robot berhasil mendapatkan bola sistem masih

mengirimkan radius sebesar 36 satuan, hal tersebut disebabkan adanya jarak dari tanda robot

dengan bola. Dari data nomor 26 sampai dengan nomor 46 robot sudah mendapatkan bola

yang ditandai dengan adanya masukan dari sensor pada robot, maka robot akan mengirimkan

informasi yang membuat sistem mengganti setpoint sesuai dengan sisi gawang yang lebih

terbuka. Pada data nomor 47 sampai dengan nomor 51 robot telah berhasil menggiring bola

menuju gawang sehingga sistem akan mengirimkan perintah kepada robot untuk menendang

bola. Pada percobaan pertama mode bermain sistem telah berhasil mengejar bola,

menggiring bola tersebut menuju gawang, dan menendang bola ke arah gawang yang lebih

terbuka untuk mencetak angka dengan error sudut akhir yang dihasilkan adalah 3,33%.

Berdasarkan pada tabel 6.5 yang terdapat di lampiran, dari data nomor satu sampai

dengan nomor 24 robot dalam kondisi mengejar bola sehingga sistem memberikan setpoint

sesuai dengan posisi bola. Ketika robot berhasil mendapatkan bola sistem masih

mengirimkan radius sebesar 39 satuan, hal tersebut disebabkan adanya jarak dari tanda robot

dengan bola. Dari data nomor 25 sampai dengan nomor 40 robot sudah mendapatkan bola

yang ditandai dengan adanya masukan dari sensor pada robot, maka robot akan mengirimkan

informasi yang membuat sistem mengganti setpoint sesuai dengan sisi gawang yang lebih

terbuka. Pada data nomor 41 sampai dengan nomor 52 robot telah berhasil menggiring bola

menuju gawang sehingga sistem akan mengirimkan perintah kepada robot untuk menendang

bola. Pada percobaan kedua mode bermain sistem telah berhasil mengejar bola, menggiring

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 79: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

63

bola tersebut menuju gawang, dan menendang bola ke arah gawang yang lebih terbuka untuk

mencetak angka dengan error sudut akhir yang dihasilkan adalah 0%.

Berdasarkan pembahasan diatas serta tabel 4.8 maka mode bermain dari sistem sudah

sesuai dengan yang dinginkan perancangan pada bab III. Tingkat keberhasilan dari mode

bersiap cukup tinggi dengan rata-rata error sudut akhir dari setiap percobaan sebesar 1,67%.

Dengan error yang cukup kecil maka robot dapat menendang bola tepat ke arah sisi gawang

yang lebih terbuka sehingga dapat mencetak angka, jika error yang terdapat masih cukup

besar maka akan terjadi kemungkinan robot menjadi sulit untuk mencetak angka. Hal

tersebut dikarenakan robot masih belum mengarah ke gawang ataupun robot belum

mengarah ke sisi gawang yang lebih terbuka.

Tabel 4.8 Error sudut dari percobaan eksekusi mode bermain

Percobaan Error koreksi sudut

Percobaan 1 3,33%

Percobaan 2 0,00%

Rata-rata 1,67%

Ketika robot keluar dari area lapangan ataupun area yang ditangkap oleh Webcam

sistem akan mengalami error. Ketika robot keluar dari area Webcam maka sistem akan

mecari objek lain yang kode warnanya hampir sama, namun sering kali sistem hanya akan

mendeteksi noise dari Webcam maka posisi dari masing-masing objek akan menjadi acak.

Jika posisi objek menjadi acak maka jalannya robot akan menjadi tidak beraturan. Untuk

mengatasi hal tersebut sesuai dengan peraturan lomba maka user akan menekan tombol

berhenti dan memasukan kembali robot ke dalam lapangan.

Berdasarkan gambar 4.20 dan gambar 4.21 sistem masih mampu bekerja dengan baik

ketika pencahayaan ruang pengujian dalam keadaan terang hingga redup, sistem masih

mampu mendeteksi masing-masing objek dengan baik. Namun pada gambar 4.22 sistem

tidak akan bekerja dengan baik ketika pencahayaan pada ruang pengujian menjadi gelap, hal

tersebut dikarenakan Webcam tidak dapat menghasilkan gambar dengan kualitas yang baik

dalam pencahayaan ruangan yang sangat gelap. Gambar yang dihasilkan oleh Webcam akan

menjadi dominan hitam sehingga kode warna yang diberikan tidak lagi menjadi cocok. Jika

kode warna tidak cocok maka posisi dari masing-masing objek akan menjadi acak karena

Webcam terlalu banyak membaca noise. Jika posisi objek menjadi acak maka jalannya robot

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 80: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

64

akan menjadi tidak beraturan. Oleh karena hal tersebut sistem harus dijalankan dalam

ruangan yang memiliki pencahayaan yang cukup terang sehingga Webcam mampu

menghasilkan video dengan warna yang baik.

Gambar 4.20 Hasil analisa video ketika pencahayaan ruangan terang

Gambar 4.21 Hasil analisa video ketika pencahayaan ruangan redup

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 81: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

65

Gambar 4.21 Hasil analisa video ketika pencahayaan ruangan gelap

4.4. Pembahasan Perangkat Keras

Berdasarkan pada gambar 4.20 Coach computer pengontrol robot soccer beroda

berbasis Raspberry pi 3 akan dilengkapi dengan case khusus untuk Raspberry Pi 3 beserta

Heatsink sehingga coach computer tersebut awet digunakan dalam durasi yang lama. Untuk

catuan daya akan disediakan oleh PSU Adapter 5V 3A. Adapter tersebut digunakan sebagai

power supply Raspberry Pi 3, dengan keluarannya 5V 3A maka Raspberry Pi 3 tidak akan

kekurangan daya ketika ditambah dengan USB Webcam. Untuk mempermudah pembuatan

program utama maka ditambahkan monitor, keyboard, dan mouse. Coach computer juga

akan dilengkapi dengan USB Webcam sebagai penangkap video saat pertandingan sedang

berlangsung yang akan dianalisis oleh program utama sebagai inputannya.

Pada gambar 4.21 dilakukan perubahan desain tata letak kamera dan lapangan.

Webcam digantung pada ketinggian 3m dan dengan ukuran lapangan keseluruhan adalah

2,6m x 2,0m. Pada Webcam ditambahkan lensa tambahan agar memperlebar daerah yang

ditangkap oleh Webcam, pada gambar 4.23 menunjukkan bentuk fisik Webcam. Karena

resolusi dari Webcam adalah 640x480 maka nilai maksimum dari posisi x adalah 640 satuan

dan nilai maksimum dari posisi y adalah 480 satuan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 82: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

66

Gambar 4.22 Sistem coach computer lengkap dengan alat pembantunya

Keterangan gambar 4.22:

1. Raspberry Pi 3

2. Monitor

3. Mouse

4. Keyboard

Gambar 4.23 Lapangan dan tata letak kamera

Keterangan gambar 4.23:

1. Webcam

2. Lapangan

1

2

3 4

1

2

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 83: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

67

4.5. Pembahasan Perangkat Lunak

Perangkat lunak terdiri atas program inti, program pendeteksi objek berdasarkan

warna, program mode bersiap, program mode bermain, program mode berhenti, dan program

antarmuka. Program inti berisi pemanggilan modul, inisialisasi variabel, dan pengaturan

untuk komunikasi dengan robot. Pada program inti dilakukan pemanggilan program mode

bersiap, program mode bermain, dan program mode berhenti yang dibuat dalam bentuk

fungsi-fungsi. Program antarmuka dibuat untuk mempermudah pemilihan mode

pengontrolan robot.

import cv2

import numpy as np

import math

from Tkinter import *

from socket import *

vid = cv2.VideoCapture(0)

a = 0

p = 0

lower_gawang = np.array([25, 100, 100], dtype=np.uint8)

upper_gawang = np.array([30, 255, 255], dtype=np.uint8)

lower_robot_belakang = np.array([100, 100, 100], dtype=np.uint8)

upper_robot_belakang = np.array([109, 255, 255], dtype=np.uint8)

lower_robot_depan = np.array([0, 100, 100], dtype=np.uint8)

upper_robot_depan = np.array([9, 255, 255], dtype=np.uint8)

lower_lawan = np.array([170, 100, 100], dtype=np.uint8)

upper_lawan = np.array([175, 255, 255], dtype=np.uint8)

lower_bola = np.array([10, 100, 100], dtype=np.uint8)

upper_bola = np.array([15, 255, 255], dtype=np.uint8)

Gambar 4.24 Listing program pemanggilan modul serta inisialisasi variabe l

Pada gambar 4.24 menunjukkan Listing program untuk pemanggilan modul pada

python serta memberikan inisialisasi variabel yang akan digunakan. Modul pemrograman

yang dipanggil adalah cv2, numpy, math, Tkinter, dan socket. Modul cv2 digunakan untuk

melakukan pengolahan citra dari masukan video dari Webcam. Numpy dan math digunakan

untuk membantu perhitungan pengontrolan robot berdasarkan mode masing-masing. Tkinter

digunakan untuk membuat tampilan antarmuka pemilihan mode pengontrol robot. Socket

digunakan untuk melakukan komunikasi pengiriman perintah ke robot serta penerimaan

informasi dari robot.

Variabel vid adalah inisial untuk masukan video dari Webcam, diberikan angka ‘0’

artinya sistem mengambil masukan video dari kamera satu. Variabel a digunakan untuk

menentukan mode pengontrolan robot yaitu bersiap, bermain, dan berhenti. Variabel q

digunakan untuk menentukan arah serang dari robot. Variabel lower_gawang,

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 84: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

68

lower_robot_belakang, lower_robot_depan, lower_lawan, lower_bola, upper_gawang,

upper_robot_belakang, upper_robot_depan, upper_lawan, dan upper_bola digunakan

untuk menginisialisasi kode warna dari masing-masing dalam HSV.

host = "192.168.12.112" #ip address robot

host1 = ""

port = 13000 #port kirim perintah ke robot

port1 = 14000 #port terima informasi dari robot

buf = 1024 #jumlah maksimal karakter yang diterima

addr = (host, port)

addr1 = (host1, port1)

UDPSock = socket(AF_INET, SOCK_DGRAM)

UDPSock.bind(addr1)

Gambar 4.25 Listing program pengaturan komunikasi dengan robot

Pada gambar 4.25 menunjukkan Listing program untuk melakukan pengaturan

komunikasi dengan robot. Komunikasi dilakukan dua arah yaitu dari robot ke sistem dan

juga dari sistem ke robot. Untuk dapat melakukan komunikasi dua arah maka dipakai dua

port yang berbeda, satu port digunakan untuk mengirim perintah ke robot dan port lainnya

digunakan untuk menerima informasi dari robot. Variabel addr digunakan untuk alamat

tujuan dari perintah yang dikirim oleh sistem. Variabel addr1 digunakan untuk alamat asal

pengirim informasi ke sistem. Variabel UDPSock digunakan untuk menentukan jenis

komunikasi antara sistem dengan robot yaitu komunikasi dengan protokol Ipv4 dan jenis

socket yang digunakan adalah UDP.

root = Tk()

root.title("Pengontrol Robot Soccer Beroda")

frm1 = LabelFrame(root, text="Mode yang Dipilih")

frm1.pack()

frm2 = Frame(frm1, background="White")

frm2.pack()

frm3 = Frame(frm1)

frm3.pack(side = BOTTOM)

mode = IntVar()

btn1 = Button(frm2, text="Bersiap", command=Bersiap, padx=50, pady=50)

btn1.pack(side=LEFT)

btn2 = Button(frm2, text="Bermain", command=Bermain, padx=50, pady=50)

btn2.pack(side=LEFT)

btn3 = Button(frm2, text="Berhenti", command=Berhenti, padx=50, pady=50)

btn3.pack(side=LEFT)

btn4 = Radiobutton(frm3, text="Serang ke Kanan", variable=mode, value=1,

command=m1)

btn4.pack(side=BOTTOM)

btn5 = Radiobutton(frm3, text="Serang ke Kiri", variable=mode, value=2,

command=m2)

btn5.pack(side=BOTTOM)

txt = Entry(frm3)

txt1 = Entry(frm3)

Gambar 4.26 Listing program tampilan antarmuka

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 85: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

69

Pada gambar 4.26 menunjukkan listing program diatas adalah program untuk membuat

tampilan antarmuka sebagai pembantu pengguna untuk menentukan mode pengendalian

robot. Pembuatan antarmuka menggunakan modul Tkinter. Perintah root.title() digunakan

untuk memberikan judul pada antarmuka, perintah LabelFrame() digunakan untuk membuat

frame yang memiliki label, perintah Frame() digunakan untuk membuat frame yang akan

berisi tombol-tombol, perintah Button() dan RadioButtton() adalah perintah untuk membuat

tombol, dan perintah Entry() adalah perintah untuk membuat textbox yang digunakan untuk

menyimpan variabel modeb. Tampilan antarmuka berisi tiga tombol yang berfungsi untuk

memanggil macam-macam fungsi mengendalikan pergerakan robot serta dua RadioButton

untuk menentukan arah serangan robot.

def Bersiap():

global a, q

a = 1

q = 2

def Bermain():

global modeb, a, q

a = 2

q = 2

def Berhenti():

global a, modeb

a = 3

def m1():

global q

q = 0

UDPSock.sendto('9A', addr)

def m2():

global q

q = 1

UDPSock.sendto('9B', addr)

Gambar 4.27 Listing program fungsi untuk tombol pada antarmuka

Pada gambar 4.27 ketika salah satu Button dipilih maka salah satu fungsi dari bersiap,

bermain dan berhenti akan dipanggil, sehingga isi dari variabel a akan berubah. Isi dari

variabel a akan dipakai untuk menentukan mode pengendalian pergerakan robot. Ketika

salah satu RadioButton dipilih maka salah satu fungsi dari m1 dan m2 akan dipanggil,

sehingga isi dari variabel q akan berubah. Isi dari variabel q akan dipakai untuk menentukan

arah serangan robot.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 86: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

70

ret_val, frame = vid.read()

if q==0:

frame = cv2.flip(frame,2)

frame = cv2.flip(frame,2)

if q==1:

frame = cv2.flip(frame,2)

hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

lower = lower_bola

upper = upper_bola

track_objects()

format_data()

cv2.putText(blur,'Bola',(int(cx),int(cy)),cv2.FONT_HERSHEY_SIMPLEX, 1,

(0, 125, 255), 2)

cx_bola, cy_bola = cx, cy

lower = lower_robot_belakang

upper = upper_robot_belakang

track_objects()

format_data()

cv2.putText(blur,'Robot',(int(cx),int(cy)),cv2.FONT_HERSHEY_SIMPLEX, 1,

(255, 0, 0), 2)

cx_robot_belakang, cy_robot_belakang = cx, cy

lower = lower_robot_depan

upper = upper_robot_depan

track_objects()

format_data()

cv2.putText(blur,'Robot',(int(cx),int(cy)),cv2.FONT_HERSHEY_SIMPLEX, 1,

(0, 0, 255), 2)

cx_robot_depan, cy_robot_depan = cx, cy

cv2.imshow('Tampilan pada Lapangan', blur)

key = cv2.waitKey(1) & 0Xff

Gambar 4.28 Listing program tampilan antarmuka

Pada gambar 4.28 listing program diatas adalah program untuk melakukan pengolahan

citra dari masukan Webcam menggunakan library tambahan python itu OpenCV. Hasil

masukan dari Webcam dimasukan ke variabel frame lalu sistem akan mendeteksi arah serang

robot berdasarkan masukan dari pengguna, cara kerjanya adalah dengan menggunakan

fungsi flip pada library OpenCV. Setelah itu agar memudahkan pengolahan citra masukan

dari Webcam maka isi variabel frame dikonversi menjadi HSV sesuai dengan perancangan

pada bab III. Langkah selanjutnya adalah menentukan warna yang dideteksi sebagai objek

sesuai dengan variabel yang telah diberikan pada inisialisasi, batas bawah dan batas atas

diperlukan agar sistem tetap mampu mendeteksi suatu warna dalam berbagai macam

pencahayaan. Lalu sistem akan memanggil fungsi track_objects untuk menentukan posisi x

dan y dari objek tersebut. Selanjutnya sistem akan memanggil fungsi data_format untuk

membuat format data sesuai dengan perancangan pada bab III. Hasil dari fungsi data_format

berupa posisi x dan y dari objek yang dideteksi yang disimpan dalam variabel cx dan cy,

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 87: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

71

variabel tersebut akan diubah menjadi variabel lain sesuai dari objek yang dideteksi seperti

contoh variabel cx_robot_depan dan cy_robot_depan agar dapat diolah untuk mengontrol

pergerakan robot. Sistem akan memberikan keterangan pada tampilan untuk memudahkan

pengguna serta indikator bahwa sistem sudah berhasil mendeteksi masing-masing objek

berdasarkan warnanya menggunakan fungsi cv2.putText yang terdapat dalam library

OpenCV. Banyaknya objek yang dideteksi tergantung dari masing-masing mode yang

dipilih untuk mengontrol robot. Setelah semua proses telah selesai maka sistem akan

menampilkan hasilnya pada antarmuka menggunakan fungsi cv2.imshow yang terdapat

dalam library OpenCV.

def track_objects():

tresh = cv2.inRange(hsv, lower, upper)

image, contours, hierarcy = cv2.findContours(tresh, cv2.RETR_LIST,

cv2.CHAIN_APPROX_SIMPLE)

max_area = 0

best_cnt = 1

for cnt in contours:

area = cv2.contourArea(cnt)

if area > max_area:

max_area = area

best_cnt = cnt

M = cv2.moments(best_cnt)

cx,cy = int(M['m10']/M['m00']),int(M['m01']/M['m00'])

cv2.circle(blur, (cx,cy), 10, (0, 0, 255), -1)

Gambar 4.29 Listing program penentuan posisi dari objek

Pada gambar 4.29 listing program diatas adalah fungsi untuk melakukan penentuan

posisi dari x dan y dari masing-masing objek berdasarkan warnanya masing-masing. Fungsi

cv2.inrange digunakan untuk menetukan batasan nilai dari warna suatu objek, nilai warna

yang diinginkan akan disimpan di variabel tresh. Setelah dibatasi lalu sistem akan

mendapatkan suatu kontur berdasarkan batasan warna yang telah diberikan oleh variabel

tresh, lalu dengan menggunakan cv2.RETR_LIST maka hasilnya akan berupa daftar vektor

dari kontur yang terdeteksi, agar menghemat kerja sistem maka pendekatan kontur objek

maka digunakan cv2.CHAIN_APPROX_SIMPLE yang hanya akan mendeteksi pinggiran

dari kontur yang terdeteksi, hasilnya akan disimpan dalam variabel contours. Walaupun

sudah dikurangi namun masih ada noise dari Webcam maka untuk mengatasi hal tersebut

maka menggunakan instruksi for untuk melakukan seleksi dari isi variabel contours, isi

variabel contours yang paling besar adalah objek yang dinginkan. Setelah itu agar nilai

variabel contours yang telah diseleksi dapat diolah untuk menggerakan robot maka

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 88: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

72

digunakan fungsi cv2.moments. Untuk menentukan posisi x dan y berdasarkan titik tengah

objek tersebut maka digunakan persamaan 4.1[18].

𝐶𝑋 =𝑀10

𝑀00 ; 𝐶𝑌 =

𝑀01

𝑀00 (4.1)

Nilai x dan y berdasarkan titik tengah objek tersebut akan disimpan dalam variabel cx dan

cy. Lalu dibuat tanda dengan fungsi cv2.circle untuk memudahkan pengguna serta indikator

bahwa sistem sudah berhasil mendeteksi objek tersebut.

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)

Gambar 4.30 Listing program perubahan format data posisi

Pada gambar 4.30 listing program diatas adalah fungsi untuk melakukan perubahan

format data sesuai dengan perancangan pada bab III. Perubahan format data dilakukan agar

robot dapat mengerti perintah yang diberikan oleh sistem dalam mengatur pergerakan robot

itu sendiri. Hasilnya akan berupa variabel dengan type data string.

if int(cx_bola) > 315 :

set_posisi_x_robot = int(cx_bola) - 60

set_posisi_y_robot = int(cy_bola)

elif 300 > int(cx_bola) > 60 :

if int(cy_bola) < 100 :

set_posisi_x_robot = int(cx_bola) - 60

set_posisi_y_robot = int(cy_bola) + 60

elif 300 > int(cy_bola) > 100:

set_posisi_x_robot = int(cx_bola) - 60

set_posisi_y_robot = int(cy_bola)

elif int(cy_bola) > 300 :

set_posisi_x_robot = int(cx_bola) - 60

set_posisi_y_robot = int(cy_bola) - 60

elif int(cx_bola) < 60 :

if int(cy_bola) < 100 :

set_posisi_x_robot = int(cx_bola)

set_posisi_y_robot = 160

elif int(cy_bola) > 100 :

set_posisi_x_robot = int(cx_bola)

set_posisi_y_robot = 240

Gambar 4.31 Listing program penentuan setpoint pada mode bersiap

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 89: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

73

Pada gambar 4.31 listing program diatas adalah program untuk melakukan penentuan

setpoint pada mode bersiap sesuai dengan perancangan pada bab III. Pada mode bersiap

penentuan setpoint dilakukan dengan melihat posisi dari bola, penentuan setpoint tersebut

dilakukan dengan menggunakan if dan elif berdasarkan kondisi yang sudah dirancang pada

bab III.

##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) < 100 :

##Mode bertahan diaktifkan

set_posisi_x_robot = int(cx_lawan) - 60

set_posisi_y_robot = cy_lawan

elif int(radius1) > 100 :

##Mode Menyerang diaktifkan

set_posisi_x_robot = cx_bola

set_posisi_y_robot = cy_bola

Gambar 4.32 Listing program penentuan setpoint pada mode bermain_1

Pada gambar 4.32 listing program diatas adalah program untuk melakukan penentuan

setpoint pada mode bermain_1 sesuai dengan perancangan pada bab III. Pada mode

bermain_1 robot dikendalikan untuk mengejar bola, maka penentuan setpoint dilakukan

dengan melihat posisi dari bola, jika bola berada dalam penguasaan lawan maka robot akan

diperintahkan bertahan dan jika bola tidak berada dalam penguasaan lawan maka robot akan

diperintahkan untuk menyerang. Penentuan setpoint tersebut dilakukan dengan

menggunakan if dan elif berdasarkan kondisi yang sudah dirancang pada bab III.

set_posisi_x_robot = cx_kiper_lawan

if int(cy_kiper_lawan)<=240:

set_posisi_y_robot = int(cy_kiper_lawan)+60

elif int(cy_kiper_lawan)>240:

set_posisi_y_robot = int(cy_kiper_lawan)-60

Gambar 4.33 Listing program penentuan setpoint pada mode bermain_2

Pada gambar 4.33 listing program diatas adalah program untuk melakukan penentuan

setpoint pada mode bermain_2 sesuai dengan perancangan pada bab III. Pada mode

bermain_2 robot dikendalikan untuk menuju ke sisi gawang yang lebih terbuka, maka

penentuan setpoint dilakukan dengan melihat posisi dari kiper lawan. Jika posisi y kiper

lawan berada di atas 240 maka setpoint yang diberikan adalah sisi kiri dari kiper lawan dan

untuk kebalikannya jika posisi y berada di bawah 240 maka setpoint yang diberikan adalah

sisi kanan dari kiper lawan. Ketika robot sudah berada di dekat gawang maka sistem akan

memberikan perintah untuk menghentikan jalannya lalu langsung menendang bola.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 90: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

74

Penentuan mode tersebut dilakukan dengan menggunakan if berdasarkan kondisi yang

sudah dirancang pada bab III.

##metode penghindaran lawan

j1 = (int(cx_robot_depan)-int(cx_lawan))**2

j2 = (int(cy_robot_depan)-int(cy_lawan))**2

radius3 = math.sqrt(j1+j2)

if int(radius3) < 100 :

##aktifkan metode VFH

try:

F2=math.sqrt( (int(cx_robot_depan)+int(set_posisi_x_robot))**2

+ (int(cy_robot_depan)+int(set_posisi_y_robot))**2 )

F2=float(F2)

F1=math.sqrt( (int(cx_robot_depan)+int(cx_lawan))**2 +

(int(cy_robot_depan)+int(cy_lawan))**2 )

F1=float(F1)

a1=math.degrees(math.atan2( (int(cy_lawan) -

int(cy_robot_depan)) , (int(cx_lawan)-int(cx_robot_depan))) )

a2=math.degrees(math.atan2( (int(set_posisi_y_robot) -

int(cy_robot_depan)) , (int(set_posisi_x_robot)-int(cx_robot_depan))) )

if a1>0:

if a1<a2 :

t = a1 - a2

elif a2<a1:

t = a2 - a1

elif a1<0:

if a1>a2:

t = a1 - a2

elif a2>a1:

t = a1 - a2

t=float(t)

r = math.sqrt((F1)**2 + (F2)**2 +

(2*F1*F2*(math.cos(math.radians(t)))))

r=float(r)

selisih = math.sin(math.radians(180)-math.radians(t))

set_sudut = int(round(math.degrees(math.asin(F1*selisih/r))))

except ValueError:

pass

Gambar 4.34 Listing program untuk koreksi sudut saat menghindari lawan

Pada gambar 4.34 listing program diatas adalah program untuk melakukan penentuan

koreksi sudut untuk menghindari lawan pada mode bermain menggunakan metode Virtual

Force Field (VFF) sesuai dengan perancangan pada bab III. Sistem akan mendeteksi adanya

lawan dalam suatu lingkaran virtual yang berpusat pada titik tengah robot dengan radius 150

satuan menggunakan perintah if , nilai radius didapatkan dari jarak antara robot dengan

lawan menggunakan persamaan dasar pythagoras seperti yang ditunjukkan persamaan 4.2

serta gambar 4.35. Sesuai dengan dasar teori pada subbab 2.9. langkah pertama adalah

menghitung besar vektor antara robot dengan lawan, menghitung besar vektor antara robot

dengan target, menghitung besar sudut antara robot dengan lawan, menghitung sudut antara

robot dengan target, menghitung besar selisih sudutnya, menghitung besar resultan

vektornya dan terakhir menghitung besar sudut dari vektor resultan. Ketika robot telah

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 91: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

75

berhasil menghindari lawan perhitungan pada langkah menentukan resultan vektor akan

menghasilkan nilai imajiner maka dilakukan metode Try dan Except dalam menjalankan

perhitungan VFF, jika hasil perhitungan tidak menunjukkan ValueError maka perintah VFF

akan dilanjutkan untuk menentukan koreksi sudut, jika hasil perhitungan menunjukkan maka

perhitungan dihentikan dan koreksi sudut akan mengikuti koreksi sudut awal yaitu koreksi

sudut untuk langsung menuju target.

Gambar 4.35 Penentuan jarak antara robot dengan lawan atau target

𝑅 = √(𝐵𝑋 − 𝐹𝑋)2 + (𝐵𝑌 − 𝐹𝑌)2 (4.2)

Dimana:

𝑅 = Radius

𝐵𝑋 = Posisi X robot dan 𝐵𝑌 = Posisi Y robot

𝐹𝑋 = Posisi X lawan atau target dan 𝐹𝑌 = Posisi Y lawan atau target

s1 = int(cy_robot_depan)-int(cy_robot_belakang)

s2 = int(cx_robot_depan)-int(cx_robot_belakang)

s = math.degrees(math.atan2(s1, s2))

sudut=int(round(s))

n1 = int(set_posisi_y_robot)-int(cy_robot_depan)

n2 = int(set_posisi_x_robot)-int(cx_robot_depan)

n = math.degrees(math.atan2(n1, n2))

setpoint = int(round(n))

nr = int(round(math.sqrt(n1**2+n2**2)))

if nr < 50:

nr=0

Gambar 4.36 Listing program untuk pengontrolan gerak robot

Pada gambar 4.36 listing program diatas adalah program untuk melakukan

pengontrolan pergerakan robot. Setelah posisi x dan y dari setpoint ditentukan maka sistem

BX FX

FY

BY

Radius

X

Y

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 92: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

76

akan menghitung sudut robot saat itu dan juga menghitung sudut robot terhadap setpoint

menggunakan persamaan dari dasar teori subbab 2.8 persamaan 2.11. selanjutnya sistem

akan menghitung jarak dari robot dengan setpoint menggunakan persamaan 4.2. Nilai radius

akan dianggap sama dengan nol ketika radius bernilai di bawah 50 satuan agar robot dapat

berhenti tepat di posisi yang diinginkan sesuai dengan setpoint, ketika nilai radius

menghasilkan nilai dibawah nol maka dengan menggunakan if nilai radius akan dibuat sama

dengan nol agar tidak terjadi error pada robot. Nilai dari sudut sekarang akan disimpan

dalam variabel sudut, nilai dari sudut robot terhadap setpoint akan disimpan dalam variabel

setpoint dan nilai dari jarak robot terhadap lawan disimpan dalam variabel nr. Nilai dari

sudut robot saat itu, sudut robot terhadap setpoint dan radius akan digunakan untuk

mengatur pergerakan robot.

selisih = sudut - setpoint

if cx_robot_depan > 450 and 10 > math.fabs(selisih):

UDPSock.sendto('8000', addr)

UDPSock.sendto('61', addr)

UDPSock.sendto('60', addr)

print 'Tendang'

if cx_robot_depan > 500:

UDPSock.sendto('8000', addr)

UDPSock.sendto('61', addr)

UDPSock.sendto('60', addr)

print 'Tendang'

Gambar 4.37 Listing program untuk pengontrolan robot menendang bola

Pada gambar 4.37 listing program diatas adalah program untuk melakukan

pengontrolan robot untuk menendang bola. Ketika sudut robot telah sesuai dengan yang

diinginkan serta posisi robot telah dekat dengan gawang maka robot akan diperintah untuk

berhenti sejenak lalu menendang. Untuk membuat robot menendang bola maka dikirimkan

perintah dengan kode ‘61’ yang berfungsi untuk memberikan tegangan pada solenoid di

robot, lalu sistem akan memberikan perintah dengan kode ‘60’ yang berfungsi untuk

menghentikan tegangan pada solenoid di robot, agar driver solenoid pada robot tidak

mengalami kerusakan.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 93: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

77

if nr<10:

nr ='0'+'0'+str(nr)

elif nr<100:

nr ='0'+str(nr)

if int(sudut)>=100:

sudut = '+'+str(sudut)

elif 100>int(sudut)>=10:

sudut = '+'+'0'+str(sudut)

elif int(sudut)==0:

sudut = '+000'

elif 10>int(sudut)>0:

sudut = '+'+'00'+ str(sudut)

elif 0>int(sudut)>-10:

sudut1 = int(round(math.fabs(int(sudut))))

sudut = '-'+'00'+str(sudut1)

elif -10>=int(sudut)>-100:

sudut11 = int(round(math.fabs(int(sudut))))

sudut = '-'+'0'+str(sudut11)

if int(setpoint)>=100:

setpoint = '+'+str(setpoint)

elif 100>int(setpoint)>=10:

setpoint = '+'+'0'+str(setpoint)

elif int(setpoint)==0:

setpoint = '+000'

elif 10>int(setpoint)>0:

setpoint = '+'+'00'+ str(setpoint)

elif 0>int(setpoint)>-10:

sudut2 = int(round(math.fabs(int(setpoint))))

setpoint = '-'+'00'+str(sudut2)

elif -10>=int(setpoint)>-100:

sudut21 = int(round(math.fabs(int(setpoint))))

setpoint = '-'+'0'+str(sudut21)

Gambar 4.38 Listing program untuk perubahan format data sudut dan radius

Pada gambar 4.38 listing program diatas adalah program untuk melakukan perubahan

format data sesuai dengan perancangan pada bab III. Perubahan format data dilakukan agar

robot dapat mengerti perintah yang diberikan oleh sistem dalam mengatur pergerakan robot

itu sendiri. Hasilnya akan berupa variabel dengan type data string. Perubahan format data

dilakukan dengan menggunakan perintah if dan elif.

l1=str(cx_robot_belakang)+str(cy_robot_belakang)

data1 = '1'+l1

l2=str(cx_bola)+str(cy_bola)

data2 = '2'+l2

l6=str(set_posisi_x_robot)+str(set_posisi_y_robot)

data6 = '6'+l6

data7 = '7' + str(sudut) + str(setpoint)

l8=str(nr)

data8 = '8'+l8

print str(data1),", ",str(data2),", ",str(data6),", ",str(data7),",

",str(data8)

UDPSock.sendto(data7, addr)

UDPSock.sendto(data8, addr)

Gambar 4.39 Listing program untuk mengubah data menjadi string lalu dikirim

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 94: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

78

Pada gambar 4.39 listing program diatas adalah program untuk melakukan perubahan

bentuk data dan perintah menjadi data string serta menambah kode didepan masing-masing

data perintah sesuai dengan perancangan pada bab III. Perubahan bentuk dilakukan agar

robot dapat mengerti perintah yang diberikan oleh sistem dalam mengatur pergerakan robot

itu sendiri serta data yang didapat bisa diambil dalam bentuk .txt sehingga memudahkan

pengambilan data. Untuk pengambilan data dapat dilakukan dengan perintah f.write().

Setelah format perintah dirubah lalu dikirimkan ke robot menggunakan koneksi socket yang

telah dibuat, menggunakan perintah UDPSock.sendto().

berhenti_kirim= txt1.get()

(data,addr1) = UDPSock.recvfrom(buf)

if data[0]=='1':

txt.delete(0, END)

txt.insert(0, 1)

txt1.delete(0, END)

elif data[0]=='2' and berhenti_kirim != 'ya':

txt.delete(0, END)

txt.insert(0, 2)

modeb = txt.get()

if modeb=='1':

detect_1()

elif modeb=='2':

detect_2()

Gambar 4.40 Listing program untuk perpindahan mode bermain

Pada gambar 4.40 listing program diatas adalah program untuk melakukan penentuan

mode bermain yang dipilih berdasarkan informasi yang dikirimkan dari robot. Untuk

menerima informasi dari robot digunakan perintah UDPSock.recvfrom() data hasil informasi

dari robot disimpan pada variabel data. Data yang didapatkan akan digunakan untuk

menentukan mode bermain dengan menggunakan perintah if dan elif. Hasil dari penentuan

mode bermain akan disimpan dalam textbox yang tidak ditampilkan dalam antarmuka karena

hanya untuk menyimpan variabel modeb.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 95: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

79

BAB V

KESIMPULAN DAN SARAN

5.1. Kesimpulan

Dari hasil pengujian dan pengambilan data dari sistem pengontrol robot soccer beroda

berbasis Raspberry pi 3 sebagai prototipe ERSBI 2017, dapat diambil kesimpulan:

1. Dengan pencahayaan ruangan yang cukup terang sistem mampu menganalisa masukan

berupa video yang dihasilkan oleh Webcam untuk menghasilkan titik-titik koordinat

yang mengarahkan pergerakan robot berdasarkan berbagai mode menggunakan

pengolahan citra dengan library OpenCV.

2. Dengan pencahayaan ruangan yang cukup terang sistem mampu mengarahkan robot

untuk menuju setpoint yang dinginkan dan mampu menghindari lawan menggunakan

metode VFF dengan rata-rata error sebesar 1,16% untuk posisi x dan 2,73% untuk

posisi y pada mode bersiap. Sedangkan pada mode bermain dengan rata-rata error

sudut akhir sebesar 1,67%.

3. Sistem mampu mengirimkan perintah untuk menggerakan robot menggunakan socket

Python.

5.2. Saran

Saran untuk pengembang penelitian selanjutnya antara lain:

1. Membuat algoritma yang mengatur gerak robot, ketika robot telah keluar dari area

lapangan ataupun area Webcam.

2. Menggunakan Webcam dengan angle view yang lebih besar dan kualitas gambar yang

lebih baik.

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 96: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

80

DAFTAR PUSTAKA

[1] Tujuan Kontes Robot Indonesia, https://www.kontesrobotindonesia.org/tentang-kri/,

diakses 25 Oktober 2016

[2] ERSBI, https://www.kontesrobotindonesia.org/kri-2016/, diakses 25 Oktober 2016

[3] Raspberry Pi 3 Model B,http://raspberry.piaustralia.com.au/products/raspberry-pi-3-

model-b, diakses 01 Oktober 2016

[4] Pengertian dan fungsi Webcam, http://www.solusikompi.com/2014/08/pengertian-dan-

fungsi-Webcam.html, diakses 25 Oktober 2016

[5] Wentworth, Peter., et al. 2012, How to Think Like a Computer Scientist – Learning

Pyhton 3, 3th ed, Free Software Foundation,--.

[6] Noprianto., 2002, Python & Pemrograman Linux, ANDI, Yogyakarta.

[7] Grayson, John E. 2000, Python and Tkinter Programming, MANNING, Greenwich.

[8] Kadir, Abdul, Adhi Susanto, 2013, Teori dan Aplikasi Pengolahan Citra, ANDI,

Yogyakarta.

[9] Prof. Dr. Madenda, Sarifuddin, 2015, Pengolahan Citra & Video Digital, Erlangga,

Jakarta.

[10] Mordvintsev, Alexander, Abid K., 2016, Introduction of openCV,

http://docs.opencv.org/trunk/d0/de3/tutorial_py_intro.html, diakses 01 November 2016

[11] Mordvintsev, Alexander, Abid K., 2016, openCV-Python Tutorials,

http://docs.opencv.org/trunk/d6/d00/tutorial_py_root.html, diakses 01 November 2016

[12] Mordvintsev, Alexander, Abid K., 2016, Changing Colorspaces,

http://docs.opencv.org/trunk/df/d9d/tutorial_py_colorspaces.html, diakses 01

November 2016

[13] Giancoli, Douglas C., 2014, Fisika, 7th ed, jilid 1, Erlangga, Jakarta.

[14] J.C. Wolf , P. Robinson, J.M. Davies. Vektor Field Path Planning and Control of An

Autonomous Robot In a Dynamic Environment. url

:http://www.swrtec.de/swrtec/research/publications/VEKTOR_FIELD_PATH_PLAN

NING_AND_CONTROL_OF_AN_AUTONOMOUS_ROBOT_IN_A_DYNAMIC_E

NVIRONMENT.pdf, diakses 01 Oktober 2016

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 97: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

81

[15] Bastan, Muhammet., 2004, Visual Servoing of Mobile Rrobots Using Potential

Fields,

www.ibrarian.net%2Fnavon%2Fpaper%2FVISUAL_SERVOING_OF_MOBILE_RO

BOTS_USING_POTENTIAL_.pdf, diakses 01 Oktober 2016

[16] Pemrograman Socket dengan Python, http://ilmukomputer.org/wp-

content/uploads/2009/04/rikih-socket_python.pdf, diakses 28 Oktober 2016

[17] --, 2016, Panduan Ekshibisi Sepakbola Robot Beroda Indonesia ESRBI 2016,

http://kontesrobotindonesia.org/data-kontes/2016/PanduanERSBI2016.pdf, diakses 01

Oktober 2016

[18] Mordvintsev, Alexander, Abid K., 2016, Contour features,

http://docs.opencv.org/3.1.0/dd/d49/tutorial_py_contour_features.html , diakses 13

April 2017

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 98: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L1

LAMPIRAN

Datasheet Raspberry pi 3

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 99: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L2

Tabel Hasil Percobaan Setiap Mode Ketika Dieksekusi

Tabel 6.1 Data dari pengujian kedua pada mode bersiap percobaan pertama

No Posisi

Robot (x,y)

Posisi Bola

(x,y)

Setpoint yang

Diberikan

(x,y)

Koreksi

Sudut Radius Keterangan

1 (058,077) (526,408) (466,408) (-003,+040) 461 Posisi awal

2 (058,077) (526,408) (466,408) (-003,+040) 461

Robot dalam

perjalanan

menuju

posisi yang

diinginkan

3 (058,077) (527,408) (467,408) (-003,+040) 462

4 (060,077) (527,409) (467,409) (+000,+041) 461

5 (066,078) (527,409) (467,409) (+005,+041) 453

6 (076,080) (528,408) (468,408) (+020,+041) 439

7 (087,085) (526,408) (466,408) (+033,+041) 421

8 (101,094) (523,408) (463,408) (+049,+040) 400

9 (113,109) (527,407) (467,407) (+057,+039) 383

10 (123,126) (528,407) (468,407) (+065,+037) 365

11 (132,146) (523,408) (463,408) (+069,+036) 343

12 (140,168) (527,408) (467,408) (+070,+033) 327

13 (148,191) (526,408) (466,408) (+072,+031) 308

14 (155,214) (526,407) (466,407) (+066,+028) 286

15 (165,237) (526,408) (466,408) (+058,+026) 265

16 (177,259) (526,408) (466,408) (+051,+024) 242

17 (192,280) (526,408) (466,408) (+043,+023) 219

18 (211,298) (522,408) (462,408) (+038,+022) 190

19 (231,315) (527,407) (467,407) (+032,+020) 169

20 (253,330) (529,407) (469,407) (+026,+019) 145

21 (276,343) (529,408) (469,408) (+024,+018) 119

22 (300,354) (528,407) (468,407) (+020,+017) 093

23 (324,364) (528,407) (468,407) (+018,+016) 069

24 (349,373) (526,407) (466,407) (+011,-179) 010

25 (399,386) (523,409) (463,409) (+012,+025) 000

26 (418,392) (529,407) (469,407) (+010,+023) 000

27 (432,395) (527,408) (467,408) (+009,+042) 000

28 (449,398) (525,408) (465,408) (+009,+120) 000 Posisi akhir

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 100: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L3

Tabel 6.2 Data dari pengujian kedua pada mode bersiap percobaan kedua

No Posisi

Robot (x,y)

Posisi Bola

(x,y)

Setpoint yang

Diberikan (x,y)

Koreksi

Sudut Radius Keterangan

1 (383,064) (153,375) (093,315) (-003,+141) 351 Posisi awal

2 (383,065) (152,376) (092,316) (-005,+141) 352

Robot dalam

perjalanan

menuju

posisi yang

diinginkan

3 (383,065) (152,376) (092,316) (-005,+141) 352

4 (383,065) (149,376) (089,316) (-005,+141) 355

5 (383,065) (152,375) (092,315) (-005,+141) 353

6 (383,065) (156,376) (096,316) (-005,+141) 349

7 (385,064) (153,375) (093,315) (+002,+142) 352

8 (391,065) (152,376) (092,316) (+007,+142) 357

9 (399,066) (152,375) (092,315) (+020,+144) 360

10 (411,072) (153,375) (093,315) (+035,+146) 360

11 (423,083) (152,376) (092,316) (+051,+149) 358

12 (433,098) (156,376) (096,316) (+065,+152) 348

13 (440,116) (151,376) (091,316) (+081,+155) 342

14 (443,137) (150,375) (090,315) (+094,+157) 330

15 (440,158) (150,376) (090,316) (+106,+160) 314

16 (433,178) (152,375) (092,315) (+117,+162) 292

17 (421,198) (151,376) (091,316) (+128,+164) 272

18 (406,215) (152,375) (092,315) (+141,+165) 247

19 (388,231) (151,376) (091,316) (+153,+165) 225

20 (366,241) (151,376) (091,316) (+162,+165) 200

21 (342,248) (151,376) (091,316) (+171,+164) 177

22 (318,252) (152,376) (092,316) (+178,+162) 152

23 (294,252) (152,376) (092,316) (-178,+159) 129

24 (268,251) (152,376) (092,316) (-177,+155) 107

25 (243,249) (152,376) (092,316) (-178,+150) 085

26 (217,247) (152,375) (092,315) (+178,+144) 064

27 (192,247) (152,376) (092,316) (+173,+137) 045

28 (168,250) (152,376) (092,316) (+166,+129) 025

29 (146,254) (152,375) (092,315) (+158,+117) 005

30 (124,262) (151,375) (091,315) (+147,+102) 000

31 (107,272) (152,375) (092,315) (+144,+075) 000

32 (086,287) (152,376) (092,316) (+137,+036) 000 Posisi akhir

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 101: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L4

Tabel 6.3 Data dari pengujian kedua pada mode bersiap percobaan ketiga

No Posisi

Robot (x,y)

Posisi Bola

(x,y)

Setpoint yang

Diberikan

(x,y)

Koreksi

Sudut Radius Keterangan

1 (494,302) (099,017) (039,077) (+085,-152) 469 Posisi awal

2 (494,303) (092,019) (032,079) (+090,-152) 473

Robot dalam

perjalanan

menuju

posisi yang

diinginkan

3 (494,307) (104,013) (044,073) (+106,-150) 462

4 (492,313) (097,018) (037,078) (+128,-150) 458

5 (487,319) (091,023) (031,083) (+151,-150) 450

6 (475,324) (095,019) (035,079) (+176,-149) 432

7 (460,325) (101,016) (041,076) (-165,-148) 411

8 (444,320) (097,018) (037,078) (-148,-149) 393

9 (427,310) (100,016) (040,076) (-132,-150) 372

10 (414,294) (099,016) (039,076) (-122,-152) 357

11 (403,275) (093,023) (033,083) (-111,-156) 344

12 (395,255) (098,018) (038,078) (-108,-157) 326

13 (389,233) (103,014) (043,074) (-107,-159) 309

14 (383,211) (100,016) (040,076) (-112,-163) 294

15 (374,187) (108,009) (048,069) (-118,-164) 272

16 (363,165) (091,020) (031,080) (-127,-170) 265

17 (349,144) (096,020) (036,080) (-137,-172) 240

18 (331,127) (095,018) (035,078) (-146,-174) 218

19 (310,112) (094,018) (034,078) (-156,-176) 194

20 (287,101) (092,023) (032,083) (-164,-178) 170

21 (262,093) (099,016) (039,076) (-172,-176) 138

22 (237,089) (105,011) (045,071) (-175,-175) 108

23 (211,086) (110,011) (050,071) (+180,-173) 077

24 (185,086) (104,013) (044,073) (+180,-173) 058

25 (159,086) (098,018) (038,078) (+176,-174) 040

26 (136,087) (104,011) (044,071) (+176,-164) 014

27 (036,075) (094,019) (034,079) (-164,+029) 000 Posisi akhir

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 102: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L5

Tabel 6.4 Data pengujian kedua pada mode bermain percobaan pertama

No Posisi Robot

(x,y)

Posisi Bola (x,y)

Posisi Sisi Gawang

(x,y)

Posisi Lawan

(x,y)

Setpoint yang

Diinginkan (x,y)

Koreksi Sudut

Radius Keterangan

1 (130.400) (212.225) - (209.048) (212.225) (+111,-065) 193 Posisi Awal

2 (129.400) (214.227) - (210.048) (214.227) (+117,-064) 193

Robot sedang

mengejar bola

3 (130.401) (216.226) - (210.048) (216.226) (+115,-064) 195

4 (131.407) (212.222) - (211.047) (212.222) (+103,-066) 202

5 (129.412) (217.228) - (210.047) (217.228) (+104,-064) 204

6 (130.420) (222.226) - (210.047) (222.226) (+095,-065) 215

7 (136.428) (217.227) - (210.047) (217.227) (+077,-068) 217

8 (141.436) (220.226) - (210.047) (220.226) (+069,-069) 224

9 (152.441) (216.227) - (209.046) (216.227) (+048,-073) 223

10 (161.443) (216.227) - (210.046) (216.227) (+031,-076) 223

11 (172.441) (216.221) - (211.046) (216.221) (+013,-079) 224

12 (182.435) (212.225) - (210.047) (212.225) (-007,-082) 212

13 (189.426) (216.224) - (210.048) (216.224) (-030,-082) 204

14 (193.417) (213.217) - (210.048) (213.217) (-049,-084) 201

15 (195.405) (219.221) - (210.048) (219.221) (-065,-083) 186

16 (195.394) (219.227) - (211.046) (219.227) (-077,-082) 169

17 (195.383) (222.224) - (210.047) (222.224) (-085,-080) 161

18 (196.372) (218.224) - (210.047) (218.224) (-085,-082) 150

19 (197.362) (215.224) - (210.047) (215.224) (-085,-083) 139

20 (197.348) (217.222) - (210.047) (217.222) (-085,-081) 128

21 (198.332) (183.316) - (209.047) (183.316) (-086,-133) 22

22 (200.312) (189.295) - (210.047) (189.295) (-086,-123) 20

23 (203.292) (217.226) - (209.048) (217.226) (-084,-078) 67

24 (203.275) (218.217) - (210.048) (218.217) (-086,-075) 60

25 (204.260) (211.225) - (210.047) (211.225) (-088,-079) 36

26 (204.247) - (609.152) (209.047) (609.212) (-088,-005) 407

Robot

sedang menuju ke

gawang

27 (207.232) - (598.164) (209.048) (598.224) (-081,-001) 391

28 (209.219) - (599.159) (210.047) (599.219) (-084,+000) 390

29 (215.206) - (597.166) (210.047) (597.226) (-073,+003) 383

30 (223.197) - (602.150) (210.047) (602.210) (-063,+002) 379

31 (230.186) - (607.157) (209.048) (607.217) (-063,+005) 378

32 (234.179) - (606.145) (209.047) (606.205) (-062,+004) 373

33 (245.172) - (611.158) (210.047) (611.218) (-049,+007) 369

34 (255.170) - (600.161) (210.047) (600.221) (-036,+008) 349

35 (267.169) - (603.155) (209.047) (603.215) (-026,+008) 339

36 (278.172) - (602.158) (210.047) (602.218) (-011,+008) 327

37 (287.174) - (603.151) (210.047) (603.211) (-004,+007) 318

38 (297.179) - (603.158) (209.047) (603.218) (+007,+007) 308

39 (307.183) - (610.155) (210.047) (610.215) (+013,+006) 305

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 103: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L6

Tabel 6.4 (Lanjutan) Data pengujian kedua pada mode bermain percobaan pertama

No Posisi Robot (x,y)

Posisi Bola (x,y)

Posisi Sisi Gawang

(x,y)

Posisi Lawan (x,y)

Setpoint yang

Diinginkan (x,y)

Koreksi Sudut

Radius Keterangan

40 (317.186) - (610.157) (210.049) (610.217) (+015,+006) 295

Robot sedang

menuju ke gawang

41 (330.193) - (603.153) (210.047) (603.213) (+018,+004) 274

42 (344.198) - (607.157) (210.047) (607.217) (+019,+004) 264

43 (356.202) - (605.156) (210.047) (605.216) (+017,+003) 249

44 (369.205) - (601.156) (210.047) (601.216) (+015,+003) 232

45 (381.208) - (598.160) (210.047) (598.220) (+013,+003) 217

46 (391.211) - (596.165) (210.046) (596.225) (+013,+004) 205

47 (401.213) - (600.160) (210.047) (600.220) (+011,+002) 199

Robot menendang

bola

48 (412.215) - (603.165) (210.047) (603.225) (+011,+003) 191

49 (421.218) - (599.164) (210.046) (599.224) (+012,+002) 178

50 (424.218) - (598.152) (210.047) (598.212) (+011,-002) 174

51 (425.218) - (593.155) (210.047) (593.215) (+011,-001) 168 Posisi akhir

Tabel 6.5 Data pengujian kedua pada mode bermain percobaan kedua

No

Posisi

Robot

(x,y)

Posisi

Bola

(x,y)

posisi sisi

gawang

(x,y)

posisi

lawan

(x,y)

setpoint

yang

diinginkan

(x,y)

koreksi

sudut radius Keterangan

1 (128.408) (204.235) - (210.047) (204.235) (+067,-066) 189 Posisi awal

2 (126.411) (202.246) - (210.047) (202.246) (+072,-065) 182

Robot

sedang

mengejar

bola

3 (127.413) (200.236) - (210.047) (200.236) (+071,-068) 191

4 (126.415) (204.242) - (210.047) (204.242) (+077,-066) 190

5 (130.418) (203.243) - (211.047) (203.243) (+066,-067) 190

6 (140.414) (204.236) - (210.047) (204.236) (+036,-070) 189

7 (147.414) (204.237) - (210.047) (204.237) (+027,-072) 186

8 (156.410) (201.247) - (210.047) (201.247) (+005,-075) 169

9 (161.397) (202.244) - (210.047) (202.244) (-031,-075) 158

10 (164.390) (192.245) - (210.047) (192.245) (-045,-079) 148

11 (161.378) (194.247) - (210.047) (194.247) (-069,-076) 135

12 (158.367) (203.241) - (210.047) (203.241) (-085,-070) 134

13 (157.356) (206.241) - (211.047) (206.241) (-092,-067) 125

14 (154.344) (202.242) - (210.046) (202.242) (-097,-065) 113

15 (154.332) (202.244) - (210.047) (202.244) (-092,-061) 100

16 (144.310) (203.238) - (210.047) (203.238) (-110,-051) 93

17 (163.299) (203.242) - (210.047) (203.242) (-068,-055) 70

18 (154.287) (202.245) - (211.046) (202.245) (-088,-041) 64

19 (147.274) (204.239) - (210.047) (204.239) (-102,-032) 67

20 (158.266) (203.239) - (210.047) (203.239) (-081,-031) 52

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 104: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L7

Tabel 6.5 (Lanjutan) Data pengujian kedua pada mode bermain percobaan kedua

No

Posisi

Robot

(x,y)

Posisi

Bola

(x,y)

posisi sisi

gawang

(x,y)

posisi

lawan

(x,y)

setpoint

yang

diinginkan

(x,y)

koreksi

sudut radius Keterangan

21 (163.257) (202.241) - (210.047) (202.241) (-077,-022) 42 Robot

sedang

mengejar

bola

22 (160.244) (199.239) - (210.047) (199.239) (-086,-007) 39

23 (179.241) (221.233) - (210.047) (221.233) (-054,-011) 43

24 (188.237) (226.228) - (210.047) (226.228) (-047,-013) 39

25 (200.238) - (601.155) (210.046) (601.215) (-023,-003) 402

Robot

menuju ke

gawang

26 (215.236) - (601.163) (210.047) (601.223) (-016,-002) 386

27 (224.239) - (607.164) (210.047) (607.224) (-006,-002) 383

28 (236.242) - (603.153) (210.047) (603.213) (-002,-005) 368

29 (245.244) - (608.160) (210.046) (608.220) (+002,-004) 364

30 (261.247) - (605.158) (210.047) (605.218) (+004,-005) 345

31 (278.251) - (610.158) (210.047) (610.218) (+006,-006) 334

32 (294.254) - (597.160) (210.047) (597.220) (+006,-006) 305

33 (309.256) - (605.156) (210.047) (605.216) (+006,-008) 299

34 (322.258) - (611.153) (210.047) (611.213) (+002,-009) 292

35 (336.259) - (602.160) (210.046) (602.220) (-002,-008) 269

36 (347.260) - (598.154) (210.046) (598.214) (+002,-010) 255

37 (358.261) - (605.157) (210.047) (605.217) (+005,-010) 251

38 (371.261) - (608.158) (210.047) (608.218) (+000,-010) 241

39 (380.261) - (607.155) (210.047) (607.215) (+000,-011) 232

40 (391.260) - (599.154) (210.046) (599.214) (-002,-012) 213

41 (400.260) - (596.156) (210.047) (596.216) (-007,-013) 201

Robot

menendang bola

42 (409.258) - (615.157) (209.047) (615.217) (-009,-011) 210

43 (417.259) - (607.158) (210.047) (607.218) (-005,-012) 194

44 (424.256) - (599.151) (210.046) (599.211) (-010,-014) 181

45 (429.258) - (606.152) (210.047) (606.212) (-002,-015) 183

46 (427.257) - (608.158) (210.047) (608.218) (-008,-012) 185

47 (432.258) - (606.159) (210.047) (606.219) (-005,-013) 178

48 (434.257) - (610.153) (210.047) (610.213) (-008,-014) 181

49 (435.255) - (606.156) (210.047) (606.216) (-013,-013) 175

50 (445.255) - (607.156) (211.046) (607.216) (-008,-014) 167

51 (446.255) - (599.155) (210.047) (599.215) (-011,-015) 158

52 (454.254) - (594.161) (210.047) (594.221) (-013,-013) 144 Posisi akhir

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 105: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L8

Listing Program

# Pengontrol_Robot_Soccer_Beroda.py

#

# Copyright 2017 <Fendish Cakrawala Stiefanus-Teknik Elektro-Universitas Sanata Dharma>

#

#

#

import cv2

import numpy as np

import math

from Tkinter import *

from socket import *

vid = cv2.VideoCapture(0)

a = 0

p = 0

############################################ Pengaturan Komunikasi dengan Robot

############################################

#host = "172.23.14.170" #ubah dengan ip address si penerima

#host = "192.168.43.63" #ubah dengan ip address si penerima

host = "192.168.12.112"

#host = "192.168.1.43"

host1 = ""

port = 13000 #port yang digunakan harus sama

port1 = 14000

buf = 1024 #jumlah maksimal karakter yang diterima

addr = (host, port)

addr1 = (host1, port1)

UDPSock = socket(AF_INET, SOCK_DGRAM)

UDPSock.bind(addr1)

#################################################### Inisialisasi Warna

####################################################

lower_robot_belakang = np.array([110, 100, 100], dtype=np.uint8)

upper_robot_belakang = np.array([120, 255, 255], dtype=np.uint8)

lower_robot_depan = np.array([120, 100, 50], dtype=np.uint8)

upper_robot_depan = np.array([145, 255, 200], dtype=np.uint8)

lower_lawan = np.array([170, 100, 100], dtype=np.uint8)

upper_lawan = np.array([175, 255, 255], dtype=np.uint8)

lower_kiper_lawan = np.array([15, 100, 100], dtype=np.uint8)

upper_kiper_lawan = np.array([20, 255, 100], dtype=np.uint8)

lower_bola = np.array([0, 100, 100], dtype=np.uint8)

upper_bola = np.array([5, 255, 255], dtype=np.uint8)

######################################### Fungsi untuk Deteksi Objek Berdasarkan Warna

#####################################

def track_objects():

global hsv, lower, upper, cx, cy, frame

tresh = cv2.inRange(hsv, lower, upper)

image, contours, hierarcy = cv2.findContours(tresh, cv2.RETR_LIST,

cv2.CHAIN_APPROX_SIMPLE)

max_area = 0

best_cnt = 1

for cnt in contours:

area = cv2.contourArea(cnt)

if area > max_area:

max_area = area

best_cnt = cnt

M = cv2.moments(best_cnt)

cx,cy = int(M['m10']/M['m00']),int(M['m01']/M['m00'])

cv2.circle(frame, (cx,cy), 10, (0, 0, 255), -1)

############################################# Fungsi untuk Mengolah Format Data

############################################

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 106: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L9

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)

############################################ Fungsi untuk Menentukan Arah Serangan

#########################################

def m1():

global q

q = 0

def m2():

global q

q = 1

def m3():

global posisi_x, posisi_y

posisi_x = int(500)

posisi_y = int(100)

def m4():

global posisi_x, posisi_y

posisi_x = int(100)

posisi_y = int(400)

#########################################################################################

###################################

################################################ Fungsi untuk Mode Bersiap

#################################################

#########################################################################################

###################################

def Bersiap():

global a, q

a = 1

q = 2

while (a==1):

global hsv, frame, lower, upper, lower_bola,lower_robot_belakang, upper_bola,

upper_robot_belakang, cx, cy, sudut

ret_val, frame = vid.read()

if q==0:

frame = cv2.flip(frame,2)

frame = cv2.flip(frame,2)

UDPSock.sendto('9A', addr)

if q==1:

frame = cv2.flip(frame,2)

UDPSock.sendto('9B', addr)

#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

lower = lower_robot_belakang

upper = upper_robot_belakang

track_objects()

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 107: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L10

format_data()

cv2.putText(frame, 'Robot', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,

0, 0), 2)

cx_robot_belakang, cy_robot_belakang = cx, cy

lower = lower_robot_depan

upper = upper_robot_depan

track_objects()

format_data()

cv2.putText(frame, 'Robot', (int(cx),int(cy)), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,

0, 255), 2)

cx_robot_depan, cy_robot_depan = cx, cy

####################################### Mengolah Data serta Algoritma untuk Kontrol Robot

##################################

if int(cx_bola) >= 320 :

set_posisi_x_robot = int(cx_bola) - 60

set_posisi_y_robot = int(cy_bola)

elif 320 > int(cx_bola) > 60 :

if int(cy_bola) <= 100 :

set_posisi_x_robot = int(cx_bola) - 60

set_posisi_y_robot = int(cy_bola) + 60

elif 300 > int(cy_bola) > 100:

set_posisi_x_robot = int(cx_bola) - 60

set_posisi_y_robot = int(cy_bola)

elif int(cy_bola) >= 300 :

set_posisi_x_robot = int(cx_bola) - 60

set_posisi_y_robot = int(cy_bola) - 60

elif int(cx_bola) < 60 :

if int(cy_bola) <= 100 :

set_posisi_x_robot = int(cx_bola)

set_posisi_y_robot = 160

elif int(cy_bola) > 100 :

set_posisi_x_robot = int(cx_bola)

set_posisi_y_robot = 240

#set_posisi_y_robot = posisi_y

#set_posisi_x_robot = posisi_x

cv2.circle(frame, (int(set_posisi_x_robot),int(set_posisi_y_robot)), 10, (0, 125,

255), -1)

cv2.putText(frame, 'Target', (int(set_posisi_x_robot),int(set_posisi_y_robot)),

cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 125, 255), 2)

s1 = int(cy_robot_depan)-int(cy_robot_belakang)

s2 = int(cx_robot_depan)-int(cx_robot_belakang)

s = math.degrees(math.atan2(s1, s2))

sudut=int(round(s))

n1 = int(set_posisi_y_robot)-int(cy_robot_depan)

n2 = int(set_posisi_x_robot)-int(cx_robot_depan)

n = math.degrees(math.atan2(n1, n2))

setpoint = int(round(n))

nr = int(round(math.sqrt(n1**2+n2**2)))

if nr < 50:

nr=0

if nr<10:

nr ='0'+'0'+str(nr)

elif nr<100:

nr ='0'+str(nr)

if int(sudut)>=100:

sudut = '+'+str(sudut)

elif 100>int(sudut)>=10:

sudut = '+'+'0'+str(sudut)

elif int(sudut)==0:

sudut = '+000'

elif 10>int(sudut)>0:

sudut = '+'+'00'+ str(sudut)

elif 0>int(sudut)>-10:

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 108: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L11

sudut1 = int(round(math.fabs(int(sudut))))

sudut = '-'+'00'+str(sudut1)

elif -10>=int(sudut)>-100:

sudut11 = int(round(math.fabs(int(sudut))))

sudut = '-'+'0'+str(sudut11)

if int(setpoint)>=100:

setpoint = '+'+str(setpoint)

elif 100>int(setpoint)>=10:

setpoint = '+'+'0'+str(setpoint)

elif int(setpoint)==0:

setpoint = '+000'

elif 10>int(setpoint)>0:

setpoint = '+'+'00'+ str(setpoint)

elif 0>int(setpoint)>-10:

sudut2 = int(round(math.fabs(int(setpoint))))

setpoint = '-'+'00'+str(sudut2)

elif -10>=int(setpoint)>-100:

sudut21 = int(round(math.fabs(int(setpoint))))

setpoint = '-'+'0'+str(sudut21)

############################################# Mengirim Perintah ke Robot

###################################################

l1=str(cx_robot_belakang)+str(cy_robot_belakang)

data1 = '1'+l1

l2=str(cx_bola)+str(cy_bola)

data2 = '2'+l2

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 = '6'+l6

data7 = '7' + str(sudut) + str(setpoint)

l8=str(nr)

data8 = '8'+l8

print str(data1),", ",str(data2),", ",str(data6),", ",str(data7),", ",str(data8)

#value = (data1, data2, data6, data7, data8)

#mystring = str(value)

#f = open("bersiap_fix_fajar.txt", 'a')

#f.write(mystring)

#f.close()

#UDPSock.sendto(data7, addr)

#UDPSock.sendto(data8, addr)

cv2.imshow('Tampilan pada Lapangan', frame)

key = cv2.waitKey(1) & 0xFF

root.update()

#########################################################################################

###################################

################################################ Fungsi untuk Mode Bermain

#################################################

#########################################################################################

###################################

################################################ Fungsi Saat Mengejar Bola

#################################################

def detect_1():

global hsv, frame, lower, upper, cx_bola, cx_robot_belakang, cy_bola,

cy_robot_belakang, cx_robot_depan,cx_lawan, cy_robot_depan, cy_lawan, cx, cy

lower = lower_bola

upper = upper_bola

track_objects()

format_data()

cx_bola, cy_bola = cx, cy

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 109: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L12

lower = lower_robot_depan

upper = upper_robot_depan

track_objects()

format_data()

cv2.circle(frame, (int(cx),int(cy)), 125, (0, 0, 255))

cx_robot_depan, cy_robot_depan = cx, cy

lower = lower_robot_belakang

upper = upper_robot_belakang

track_objects()

format_data()

cx_robot_belakang, cy_robot_belakang = cx, cy

lower = lower_lawan

upper = upper_lawan

track_objects()

format_data()

cv2.circle(frame, (int(cx),int(cy)), 100, (245, 114, 255))

cx_lawan, cy_lawan = cx, cy

##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) < 100 :

##Mode bertahan diaktifkan

set_posisi_x_robot = int(cx_lawan) - 60

set_posisi_y_robot = cy_lawan

elif int(radius1) > 100 :

##Mode Menyerang diaktifkan

set_posisi_x_robot = cx_bola

set_posisi_y_robot = cy_bola

##menentukan sudut robot terhadap setpoint

n1 = int(set_posisi_y_robot)-int(cy_robot_depan)

n2 = int(set_posisi_x_robot)-int(cx_robot_depan)

n = math.degrees(math.atan2(n1, n2))

set_sudut = int(round(n))

##menentukan jarak robot terhadap setpoint

nr = int(round(math.sqrt(n1**2+n2**2)))

#if nr < 40:

#nr = 0

if nr<10:

nr ='0'+'0'+str(nr)

elif nr<100:

nr ='0'+str(nr)

##menentukan bola dalam penguasaan robot atau tidak

h1 = (int(cx_robot_depan)-int(cx_bola))**2

h2 = (int(cy_robot_depan)-int(cy_bola))**2

radius2 = math.sqrt(h1+h2)

##metode penghindaraan lawan

j1 = (int(cx_robot_depan)-int(cx_lawan))**2

j2 = (int(cy_robot_depan)-int(cy_lawan))**2

radius3 = math.sqrt(j1+j2)

if int(radius3) <= 125 :

##aktifkan metode VFH

try:

F2=math.sqrt( (int(cx_robot_depan)+int(set_posisi_x_robot))**2 +

(int(cy_robot_depan)+int(set_posisi_y_robot))**2 )

F2=float(F2)

F1=math.sqrt( (int(cx_robot_depan)+int(cx_lawan))**2 +

(int(cy_robot_depan)+int(cy_lawan))**2 )

F1=float(F1)

a1=math.degrees(math.atan2( (float(cy_lawan) - float(cy_robot_depan)) ,

(float(cx_lawan)-float(cx_robot_depan))) )

a2=math.degrees(math.atan2( (float(set_posisi_y_robot) -

float(cy_robot_depan)) , (float(set_posisi_x_robot)-float(cx_robot_depan))) )

if a1>0:

if a1<a2 :

t = a1 - a2

elif a2<a1:

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 110: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L13

t = a2 - a1

elif a1<0:

if a1>a2:

t = a1 - a2

elif a2>a1:

t = a1 - a2

tt = float(t)

r = math.sqrt((F1)**2 + (F2)**2 + (2*F1*F2*(math.cos(math.radians(tt)))))

r=float(r)

selisih=math.sin(math.radians(180)-math.radians(t))

set_sudut = int(round(math.degrees(math.asin(F1*selisih/r))))

except ValueError:

print 'value error'

pass

if int(set_sudut)>=100:

set_sudut = '+'+str(set_sudut)

elif 100>int(set_sudut)>=10:

set_sudut = '+'+'0'+str(set_sudut)

elif int(set_sudut)==0:

set_sudut = '+000'

elif 10>int(set_sudut)>0:

set_sudut = '+'+'00'+ str(set_sudut)

elif 0>int(set_sudut)>-10:

set_sudut2 = int(round(math.fabs(int(set_sudut))))

set_sudut = '-'+'00'+str(set_sudut2)

elif -10>=int(set_sudut)>-100:

set_sudut21 = int(round(math.fabs(int(set_sudut))))

set_sudut = '-'+'0'+str(set_sudut21)

##menentukan sudut robot sekarang

s1 = int(cy_robot_depan)-int(cy_robot_belakang)

s2 = int(cx_robot_depan)-int(cx_robot_belakang)

s = math.degrees(math.atan2(s1, s2))

sudut=int(round(s))

if int(sudut)>=100:

sudut = '+'+str(sudut)

elif 100>int(sudut)>=10:

sudut = '+'+'0'+str(sudut)

elif int(sudut)==0:

sudut = '+000'

elif 10>int(sudut)>0:

sudut = '+'+'00'+ str(sudut)

elif 0>int(sudut)>-10:

sudut1 = int(round(math.fabs(int(sudut))))

sudut = '-'+'00'+str(sudut1)

elif -10>=int(sudut)>-100:

sudut11 = int(round(math.fabs(int(sudut))))

sudut = '-'+'0'+str(sudut11)

l1=str(cx_robot_depan)+str(cy_robot_depan)

data1 = '1'+l1

l2=str(cx_bola)+str(cy_bola)

data2 = '2'+l2

l3=str(cx_lawan)+str(cy_lawan)

data3 = '3'+l3

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 = '6'+l6

data7 = '7' + str(sudut) + str(set_sudut)

l8=str(nr)

data8 = '8'+l8

print str(data1),", ",str(data2),", ",str(data3),", ",str(data6),", ",str(data7),",

",str(data8)

#value1 = (data1, data2, data3, data6, data7, data8)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 111: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L14

#mystring1 = str(value1)

#f1 = open("bermain_mode_fix_1_2.txt", 'a')

#f1.write(mystring1)

#f1.close()

UDPSock.sendto(data7, addr)

UDPSock.sendto(data8, addr)

UDPSock.sendto('51', addr)

################################################# Fungsi Saat Menuju Gawang

################################################

def detect_2():

global hsv, frame, lower, upper, cx_gawang, cx_robot_belakang, cy_gawang,

cy_robot_belakang, cx_robot_depan,cx_lawan, cy_robot_depan, cy_lawan, cx, cy

lower = lower_robot_depan

upper = upper_robot_depan

track_objects()

format_data()

cv2.circle(frame, (int(cx),int(cy)), 125, (0, 0, 255))

cx_robot_depan, cy_robot_depan = cx, cy

lower = lower_robot_belakang

upper = upper_robot_belakang

track_objects()

format_data()

cx_robot_belakang, cy_robot_belakang = cx, cy

lower = lower_lawan

upper = upper_lawan

track_objects()

format_data()

cv2.circle(frame, (int(cx),int(cy)), 100, (245, 114, 255))

cx_lawan, cy_lawan = cx, cy

lower = lower_kiper_lawan

upper = upper_kiper_lawan

track_objects()

format_data()

cx_kiper_lawan, cy_kiper_lawan = cx, cy

##Ganti Setpoint ke Gawang

set_posisi_x_robot = cx_kiper_lawan

if int(cy_kiper_lawan)<=240:

set_posisi_y_robot = int(cy_kiper_lawan)+60

elif int(cy_kiper_lawan)>240:

set_posisi_y_robot = int(cy_kiper_lawan)-60

cv2.circle(frame, (int(set_posisi_x_robot),int(set_posisi_y_robot)), 10, (0, 0,

255),-1)

##menentukan sudut robot terhadap setpoint

n1 = int(set_posisi_y_robot)-int(cy_robot_depan)

n2 = int(set_posisi_x_robot)-int(cx_robot_depan)

n = math.degrees(math.atan2(n1, n2))

set_sudut = int(round(n))

##menentukan jarak robot terhadap setpoint

nr = int(round(math.sqrt(n1**2+n2**2)))

#if nr<40:

#nr=0

if nr<10:

nr ='0'+'0'+str(nr)

elif nr<100:

nr ='0'+str(nr)

##metode penghindaraan lawan

j1 = (int(cx_robot_depan)-int(cx_lawan))**2

j2 = (int(cy_robot_depan)-int(cy_lawan))**2

radius3 = math.sqrt(j1+j2)

if int(radius3) < 125 :

##aktifkan metode VFH

try:

F2=math.sqrt( (int(cx_robot_depan)+int(set_posisi_x_robot))**2 +

(int(cy_robot_depan)+int(set_posisi_y_robot))**2 )

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 112: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L15

F2=float(F2)

F1=math.sqrt( (int(cx_robot_depan)+int(cx_lawan))**2 +

(int(cy_robot_depan)+int(cy_lawan))**2 )

F1=float(F1)

a1=math.degrees(math.atan2( (int(cy_lawan) - int(cy_robot_depan)) ,

(int(cx_lawan)-int(cx_robot_depan))) )

a2=math.degrees(math.atan2( (int(set_posisi_y_robot) - int(cy_robot_depan)) ,

(int(set_posisi_x_robot)-int(cx_robot_depan))) )

if a1>0:

if a1<a2 :

t = a1 - a2

elif a2<a1:

t = a2 - a1

elif a1<0:

if a1>a2:

t = a1 - a2

elif a2>a1:

t = a1 - a2

tt=float(t)

r = math.sqrt((F1)**2 + (F2)**2 + (2*F1*F2*(math.cos(math.radians(tt)))))

r=float(r)

selisih = math.sin(math.radians(180)-math.radians(t))

set_sudut = int(round(math.degrees(math.asin(F1*selisih/r))))

except ValueError:

pass

if int(set_sudut)>=100:

set_sudut = '+'+str(set_sudut)

elif 100>int(set_sudut)>=10:

set_sudut = '+'+'0'+str(set_sudut)

elif int(set_sudut)==0:

set_sudut = '+000'

elif 10>int(set_sudut)>0:

set_sudut = '+'+'00'+ str(set_sudut)

elif 0>int(set_sudut)>-10:

set_sudut2 = int(round(math.fabs(int(set_sudut))))

set_sudut = '-'+'00'+str(set_sudut2)

elif -10>=int(set_sudut)>-100:

set_sudut21 = int(round(math.fabs(int(set_sudut))))

set_sudut = '-'+'0'+str(set_sudut21)

##menentukan sudut robot sekarang

s1 = int(cy_robot_depan)-int(cy_robot_belakang)

s2 = int(cx_robot_depan)-int(cx_robot_belakang)

s = math.degrees(math.atan2(s1, s2))

sudut=int(round(s))

selisih = int(sudut) - int(set_sudut)

if int(cx_robot_depan) > int(450) and 10 > math.fabs(selisih) :

UDPSock.sendto('8000', addr)

UDPSock.sendto('61', addr)

UDPSock.sendto('60', addr)

print 'Tendang'

elif int(cx_robot_depan) > 500:

UDPSock.sendto('8000', addr)

UDPSock.sendto('61', addr)

UDPSock.sendto('60', addr)

print 'Tendang'

if int(sudut)>=100:

sudut = '+'+str(sudut)

elif 100>int(sudut)>=10:

sudut = '+'+'0'+str(sudut)

elif int(sudut)==0:

sudut = '+000'

elif 10>int(sudut)>0:

sudut = '+'+'00'+ str(sudut)

elif 0>int(sudut)>-10:

sudut1 = int(round(math.fabs(int(sudut))))

sudut = '-'+'00'+str(sudut1)

elif -10>=int(sudut)>-100:

sudut11 = int(round(math.fabs(int(sudut))))

sudut = '-'+'0'+str(sudut11)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 113: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L16

l1=str(cx_robot_depan)+str(cy_robot_depan)

data1 = '1'+l1

l3=str(cx_lawan)+str(cy_lawan)

data3 = '3'+l3

l5=str(cx_kiper_lawan)+str(cy_kiper_lawan)

data5 = '5'+l5

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 = '6'+l6

data7 = '7' + str(sudut) + str(set_sudut)

l8=str(nr)

data8 = '8'+l8

print str(data1),", ",str(data3),", ",str(data5),", ",str(data6),", ",str(data7),",

",str(data8)

#value2 = (data1, data3, data5, data6, data7, data8)

#mystring2 = str(value2)

#f2 = open("bermain_mode_fix_2_2.txt", 'a')

#f2.write(mystring2)

#f2.close()

UDPSock.sendto(data7, addr)

UDPSock.sendto(data8, addr)

UDPSock.sendto('51', addr)

################################### Fungsi Untuk Deteksi Objek dan Pemilihan Mode Bermain

##################################

def mulai():

global hsv, frame, lower, upper, cx_bola, cx_robot_belakang, cy_bola,

cy_robot_belakang, cx_robot_depan,cx_lawan, cy_robot_depan, cy_lawan, cy_gawang,

cy_gawang, cx, cy, modeb

ret, frame = vid.read()

if q==0:

frame = cv2.flip(frame,2)

frame = cv2.flip(frame,2)

UDPSock.sendto('9A', addr)

if q==1:

frame = cv2.flip(frame,2)

UDPSock.sendto('9B', addr)

#blur = cv2.GaussianBlur(frame, (5,5), 0)

hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

print modeb

if modeb=='1':

detect_1()

elif modeb=='2':

detect_2()

cv2.imshow('Tampilan pada Lapangan', frame)

key = cv2.waitKey(1) & 0xFF

############################################### Fungsi Terima Data dari Robot

##############################################

def terima():

(data,addr1) = UDPSock.recvfrom(buf)

if data[0]=='1':

txt.delete(0, END)

txt.insert(0, 1)

elif data[0]=='2':

txt.delete(0, END)

txt.insert(0, 2)

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

Page 114: PENGONTROL ROBOT SOCCER BERODA BERBASIS … · Selama pembuatan tugas akhir ini, penulis menyadari adanya bantuan dan dukungan dari berbagai pihak. Oleh karena itu, penulis mengucapkan

L17

#################################################### Fungsi Utama Bermain

##################################################

def Bermain():

global modeb, a, q

a = 2

q = 2

UDPSock.sendto('51', addr)

while (a==2):

UDPSock.sendto('50', addr)

terima()

modeb = txt.get()

mulai()

root.update()

#########################################################################################

###################################

################################################ Fungsi untuk Mode Berhenti

################################################

#########################################################################################

###################################

def Berhenti():

global a, modeb

a = 3

modeb = '0'

UDPSock.sendto('exit', addr)

################################################ Setting GUI dengan TKinter

################################################

root = Tk()

root.title("Pengontrol Robot Soccer Beroda")

frm1 = LabelFrame(root, text="Mode yang Dipilih")

frm1.pack()

frm2 = Frame(frm1, background="White")

frm2.pack()

frm3 = Frame(frm1)

frm3.pack(side = BOTTOM)

mode = IntVar()

btn1 = Button(frm2, text="Bersiap", command=Bersiap, padx=50, pady=50)

btn1.pack(side=LEFT)

btn2 = Button(frm2, text="Bermain", command=Bermain, padx=50, pady=50)

btn2.pack(side=LEFT)

btn3 = Button(frm2, text="Berhenti", command=Berhenti, padx=50, pady=50)

btn3.pack(side=LEFT)

btn4 = Radiobutton(frm3, text="Serang ke Kanan", variable=mode, value=1, command=m1)

btn4.pack(side=BOTTOM)

btn5 = Radiobutton(frm3, text="Serang ke Kiri", variable=mode, value=2, command=m2)

btn5.pack(side=BOTTOM)

#btn6 = Radiobutton(frm3, text="Serang ke ujung kanan", variable=mode, value=3,

command=m3)

#btn6.pack(side=BOTTOM)

#btn7 = Radiobutton(frm3, text="Serang ke ujung kiri", variable=mode, value=4,

command=m4)

#btn7.pack(side=BOTTOM)

txt = Entry(frm3)

mainloop()

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI