PERANCANGAN SISTEM KOORDINASI ROBOT SEPAK BOLA …
Transcript of PERANCANGAN SISTEM KOORDINASI ROBOT SEPAK BOLA …
TUGAS AKHIR
PERANCANGAN SISTEM KOORDINASI
ROBOT SEPAK BOLA BERODA
Disusun oleh:
Michael Chandra Buana Nugroho Wijanarko
NIM: 175114018
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2021
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ii
FINAL PROJECT
DESIGN OF WHEELED SOCCER ROBOT
COORDINATION SYSTEM
Arranged by:
Michael Chandra Buana Nugroho Wijanarko
NIM: 175114018
DEPARTMENT OF ELECTRICAL ENGINEERING
FACULTY SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2021
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP
MOTTO:
“Sempiternal energy, inevitable entropy; at least,
”
- Andra Winarko -
Skripsi ini kupersembahkan kepada
kebajikan dan kebijaksanaan,
orang tuaku,
dan semua orang yang peduli.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
viii
INTISARI
Perkembangan teknologi robot dari tahun ke tahun selalu berkembang. Di Indonesia,
Kementerian Riset Teknologi dan Pendidikan Tinggi Republik Indonesia setiap tahunnya
mengadakan Kontes Robot Indonesia (KRI). Dalam KRI terdapat divisi Kontes Robot Sepak
Bola Beroda (KRSBI-B). Hal ini dapat dimanfaatkan dalam pengembangan robot sepak bola
beroda. Pada penelitian ini ditekankan pada perancangan sistem koordinasi robot sepak bola
beroda.
Sistem koordinasi yang dimaksud meliputi komunikasi, navigasi, dan komunikasi. Mini
komputer Raspberry Pi 3 digunakan sebagai klien untuk berkomunikasi secara wireless
dengan base station dan secara kabel dengan mikrokontroler. Mikrokontroler yang
digunakan yaitu Arduino Due sebagai pengendali motor DC 3 omniweheels. Sensor rotary
encoder digunakan untuk mengetahui perpindahan robot. Sensor kompas untuk mengetahui
heading robot. Format data yang dikirimkan berbentuk JSON. Pergerakan robot
menggunakan kinematika 3 omniwheels.
Sistem koodinasi robot sepak bola beroda berhasil diimplementasikan dan diuji. Sistem
komunikasi memiliki keberhasilan 100%. Sistem kontrol navigasi robot dapat bekerja
dengan baik melalui base station. Sistem visualisasi memiliki keberhasilan 83,37%.
Perputaran robot memiliki keberhasilan 74,58%. Perpindahan robot memiliki keberhasilan
8%. Penentuan lokasi diri robot dalam sumbu x, y, dan sudut dapat bekerja sesuai dengan
sensor rotary encoder dan sensor kompas dengan galat 1,5 cm pada sumbu x, 1,5 cm pada
sumbu y, serta 21,41 derajat pada perputaran clockwise dan 15,05 derajat pada perputaran
counter clockwise.
Kata kunci: Rasberry Pi, koordinasi, robot sepak bola beroda, omniwheels, visualisasi,
navigasi, kinematika
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
ABSTRACT The development of robot technology from year to year is getting more sophisticated.
In Indonesia, the Ministry of Research, Technology, and Higher Education of the Republic
of Indonesia annually holds the Indonesian Robot Contest (KRI). In the KRI there is a
Wheeled Football Robot Contest (KRSBI-B) division. This can be utilized in the
development of a wheeled soccer robot. In this research is emphasized on the design of the
wheeled soccer robot coordination system.
The coordination coordination includes communication, navigation, and
communication. Raspberry Pi 3 mini computer is used as a client to communicate robot
wirelessly with a base station and wired communication with the microcontroller. Arduino
Due microcontroller is used as a DC motor 3 omniwheels’ controller, as well as a rotary
encoder sensor receiver to determine the displacement of the robot and a compass sensor to
determine the robot's heading. The data sent is in JSON format. Then, the movement using
3 omniwheels kinematics.
The wheeled soccer robot coordination system has been successfully implemented and
tested. The communication system has 100% success. Robot navigation control system can
work well via base station. The visualization system has 83.37% success. Robot turnaround
has 74.58% success. Robot displacement has 8% success. Self-location of the robot in the x,
y, and angle axis can work according to the rotary encoder sensor and compass sensor with
an error of 1.5 cm on the x-axis, 1.5 cm on the y-axis, and 21.41 degrees on the clockwise
and 15.05 degree counter clockwise rotation.
Keyword: Raspberry Pi, navigation, wheeled soccer robot, omniwheels, visualization,
navigation, kinematic
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
DAFTAR ISI
LEMBAR PERSETUJUAN ................................................................................................. iii
LEMBAR PENGESAHAN .................................................................................................. iv
PERNYATAAN KEASLIAN KARYA ................................................................................ v
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP ..................................................... vi
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK
KEPENTINGAN AKADEMIS ........................................................................................... vii
INTISARI ........................................................................................................................... viii
ABSTRACT ......................................................................................................................... ix
KATA PENGANTAR ........................................................................................................... x
DAFTAR ISI ........................................................................................................................ xi
DAFTAR GAMBAR .......................................................................................................... xiv
DAFTAR TABEL .............................................................................................................. xvi
BAB I PENDAHULUAN ..................................................................................................... 1
1.1 Latar Belakang ........................................................................................................ 1
1.2 Tujuan dan Manfaat ................................................................................................ 2
1.3 Batasan Masalah ..................................................................................................... 2
1.4 Metodologi Penelitian ............................................................................................. 2
BAB II DASAR TEORI ........................................................................................................ 5
2.1 Python ..................................................................................................................... 5
2.2 Raspberry Pi 3 Model B .......................................................................................... 5
2.3 Webcam ................................................................................................................... 6
2.4 OpenCV .................................................................................................................. 7
2.5 Preprocessing image ............................................................................................... 7
2.6 Ekstraksi Ciri .......................................................................................................... 8
2.6.1 Ruang Warna HSV .............................................................................................. 8
2.7 Kinematika tiga omniwheel .................................................................................... 9
2.8 Odometri ............................................................................................................... 10
2.9 Sensor kompas ...................................................................................................... 11
2.10 Arduino Mega 2560 .......................................................................................... 11
2.11 Kontrol PID ....................................................................................................... 12
2.12 Trigonometri...................................................................................................... 13
2.13 Line-line intersection......................................................................................... 14
2.14 Node.js............................................................................................................... 15
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xii
2.14.1 JavaScript .......................................................................................................... 16
2.14.2 HTML................................................................................................................ 16
2.14.3 CSS .................................................................................................................... 17
2.15 JSON ................................................................................................................. 17
2.16 WebSockets ....................................................................................................... 18
2.17 Socket.IO ........................................................................................................... 19
BAB III PERANCANGAN PENELITIAN ........................................................................ 20
3.1 Diagram blok sistem ............................................................................................. 20
3.2 Perancangan Perangkat Keras ............................................................................... 21
3.2.1 Perancangan Robot Sepak Bola Beroda ............................................................ 21
3.2.2 Interkoneksi Sistem Rangkaian .............................................................................. 22
3.2.3 Perancangan Lapangan ........................................................................................... 22
3.2.4 Perancangan Dummy Robot dan bola ..................................................................... 23
3.3 Perancangan Perangkat Lunak .............................................................................. 24
3.3.1 Kontrol PID ....................................................................................................... 24
3.3.1.1 Subrutin pembacaan kompas ............................................................................... 25
3.3.1.2 Penentuan lokasi diri robot .................................................................................. 26
3.3.2 Penentuan lokasi dummy robot dan bola ................................................................ 28
3.3.2.1 Subrutin preprocessing image ............................................................................. 30
3.3.2.2 Subrutin ekstraksi ciri .......................................................................................... 31
3.3.3 Perancangan komunikasi base station dengan robot ........................................ 32
3.3.4 Perancangan pengiriman data............................................................................ 33
3.3.5 Perancangan visualisasi ..................................................................................... 34
BAB IV HASIL DAN PEMBAHASAN ............................................................................. 36
4.1. Perubahan perancangan ............................................................................................ 36
4.1.1 Perubahan Komponen Hardware ........................................................................... 37
4.1.2 Perubahan Diagram blok sistem dan interkoneksi sistem rangkaian ..................... 37
4.1.3 Perubahan Data Komunikasi .................................................................................. 38
4.1.4 Perubahan Kontrol Navigasi Robot ........................................................................ 40
4.1.5 Perubahan Subrutin Penentuan Lokasi Diri Robot ................................................ 44
4.2. Hasil Perancangan Hardware ................................................................................... 45
4.2.1 Hasil Perancangan Robot ....................................................................................... 45
4.2.2 Sistem Kelistrikan .................................................................................................. 48
4.3. Hasil Perancangan Software ..................................................................................... 49
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiii
4.3.1 Hasil GUI visualisasi dan kontrol navigasi pada base station................................ 49
4.4 Hasil Pengujian Sistem .............................................................................................. 50
4.4.1 Hasil Pengujian Komunikasi Base Station - Robot ................................................ 50
4.4.2 Hasil Pengujian Perancangan Komunikasi Socketio .............................................. 51
4.4.3 Hasil Pengujian Perancangan Komunikasi Serial .................................................. 52
4.4.4 Hasil Pengujian Perancangan Perpindahan Robot.................................................. 52
4.4.5 Hasil Pengujian Perancangan Perputaran Robot .................................................... 54
4.4.6 Hasil Pengujian Kontrol Navigasi dan Penentuan Lokasi Diri Robot.................... 57
4.4.6.1 Sumbu X Dan Y .................................................................................................. 57
4.4.6.2 Sumbu Sudut ....................................................................................................... 60
4.5 Hasil Implementasi Motor ......................................................................................... 62
4.6 Hasil Implementasi Rotary Encoder ......................................................................... 63
4.7 Hasil Implementasi Kompas ...................................................................................... 64
4.8 Pengujian Nilai Akurasi Perpindahan Dan Perputaran.............................................. 65
BAB V KESIMPULAN DAN SARAN .............................................................................. 67
5.1 Kesimpulan ................................................................................................................ 67
5.2 Saran .......................................................................................................................... 67
DAFTAR PUSTAKA .......................................................................................................... 68
Lampiran .............................................................................................................................. 70
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xiv
DAFTAR GAMBAR
Gambar 1.1 Diagram Blok..................................................................................................... 3
Gambar 2.1 Board Raspberry Pi 3 Model B .......................................................................... 5
Gambar 2.2 Webcam Logitech C70 ...................................................................................... 7
Gambar 2.3 Representasi kinematika tiga omniwheels ......................................................... 9
Gambar 2.4 Diagram blok kontroler PID pada feedback loop ............................................ 12
Gambar 2.5 Trigonometri Segitiga Siku-Siku ..................................................................... 14
Gambar 2.6 Perpotongan dua garis linear ........................................................................... 14
Gambar 2.7 Arsitektur Node.js ............................................................................................ 16
Gambar 2.8 Pengaplikasian CSS pada HTML .................................................................... 17
Gambar 2.9 Struktur penulisan JSON ................................................................................. 17
Gambar 2.10 Koneksi WebSockets ..................................................................................... 18
Gambar 3.1 Diagram Blok Sistem ...................................................................................... 20
Gambar 3.2 Rancangan Robot Sepak Bola Beroda ............................................................. 21
Gambar 3.3 Interkoneksi Sistem Rangkaian ....................................................................... 22
Gambar 3.4 Perancangan lapangan ..................................................................................... 23
Gambar 3.5 Perancangan dummy robot ............................................................................... 23
Gambar 3.6 Bola ukuran 4 ................................................................................................... 24
Gambar 3.7 Diagram alir kontrol PID pada Arduino .......................................................... 24
Gambar 3.8 Diagram alir subtrutin pembacaaan kompas.................................................... 25
Gambar 3.9 Ilustrasi posisi awal robot ................................................................................ 26
Gambar 3.10 Subrutin penentuan lokasi diri robot pada base station ................................. 27
Gambar 3.11 Ilustrasi penentuan lokasi dummy robot dan bola.......................................... 28
Gambar 3.12 Diagram alir penentuan lokasi dummy robot dan bola pada Rasberry Pi 1 ... 29
Gambar 3.13 Diagram alir penentuan lokasi dummy robot dan bola pada base station ..... 30
Gambar 3.14 Diagram alir subrutin preprocessing image .................................................. 31
Gambar 3.15 Diagram alir subrutin ekstraksi ciri ............................................................... 31
Gambar 3.16 Langkah komunikasi base station dengan robot ............................................ 32
Gambar 3.18 Perancangan visualisasi ................................................................................. 35
Gambar 4.1 Perubahan diagram blok umum ....................................................................... 36
Gambar 4.2 Perubahan diagram blok sistem ....................................................................... 37
Gambar 4.3 Perubahan interkoneksi sistem rangkaian ........................................................ 38
Gambar 4.4 Diagram alir kontrol navigasi robot pada Raspberry Pi .................................. 40
Gambar 4.5 Diagram alir program pada Arduino................................................................ 41
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xv
Gambar 4.6 Diagram alir subrutin kontrol perpindahan Robot ........................................... 42
Gambar 4.7 Diagram alir subrutin kontrol perputaran robot ............................................... 43
Gambar 4.8 Diagram alir subrutin pembacaan rotary encoder ........................................... 44
Gambar 4.9 Subrutin penentuan lokasi diri robot pada Raspberry Pi ................................. 44
Gambar 4.10 Subrutin penentuan lokasi diri robot pada base station ................................. 45
Gambar 4.11 Hasil perancangan robot ................................................................................ 46
Gambar 4.12 Hasil perancangan hardware bagian atas ...................................................... 46
Gambar 4.13 Hasil perancangan hardware bagian belakang .............................................. 47
Gambar 4.14 Hasil perancangan hardware bagian bawah .................................................. 47
Gambar 4.15 Sistem pembagian daya ................................................................................. 48
Gambar 4.16 Hasil GUI visualisasi dan kontrol pada base station ..................................... 49
Gambar 4.17 Ilustrasi pengambilan data komunikasi ......................................................... 50
Gambar 4.18 Hasil komunikasi base station – robot .......................................................... 51
Gambar 4.19 Komunikasi socketio pada Raspberry Pi ....................................................... 51
Gambar 4.20 Komunikasi serial Arduino – Raspberry Pi ................................................... 52
Gambar 4.21 Pengukuran perpindahan visualisasi robot .................................................... 52
Gambar 4.22 Pengukuran perpindahan nyata robot ............................................................ 52
Gambar 4.23 Pengukuran perputaran visualisasi robot ....................................................... 54
Gambar 4.24 Pengukuran perputaran nyata robot ............................................................... 55
Gambar 4.25 Cara mengukur perputaran nyata robot ......................................................... 55
Gambar 4.26 Pengukuran posisi x dan y visualisasi robot .................................................. 57
Gambar 4.27 Pengukuran posisi x dan y nyata robot .......................................................... 58
Gambar 4.28 Pengukuran posisi visualisasi robot sumbu sudut ......................................... 60
Gambar 4.29 Pengukuran posisi nyata robot bidang sudut ................................................. 60
Gambar 4.30 Potongan progam pengendali motor pada Arduino ....................................... 62
Gambar 4.31 Potongan progam rotary encoder pada Arduino ........................................... 63
Gambar 4.32 Potongan progam pembacaan kompas pada Arduino .................................... 64
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xvi
DAFTAR TABEL
Tabel 2.1 Spesifikasi Raspbrry Pi 3 B ................................................................................... 6
Tabel 2.2 Spesifikasi USB Logitech C270 ............................................................................ 7
Tabel 2.3 Spesifikasi Arduino Mega 2560 .......................................................................... 12
Tabel 2.4 Pengaruh parameter kontrol PID ......................................................................... 13
Tabel 3.1 Daftar Socket ID yang digunakan ....................................................................... 32
Tabel 3.2 Daftar data yang diterima base station dari robot ............................................... 33
Tabel 3.3 Daftar data yang dikirim base station ke robot ................................................... 34
Tabel 4.1 Daftar Perubahan Socket ID yang digunakan .................................................... 38
Tabel 4.2 Daftar perubahan data yang diterima base station dari robot.............................. 39
Tabel 4.3 Daftar perubahan data yang dikirim base station ke robot .................................. 39
Tabel 4.4 Daftar data yang diterima Raspberry Pi dari Arduino ......................................... 39
Tabel 4.5 Daftar data yang dikirim Raspberry Pi ke Arduino ............................................. 40
Tabel 4.6 Keterangan perancangan hardware ..................................................................... 47
Tabel 4.7 Keterangan GUI visualisasi dan kontrol pada base station ................................. 49
Tabel 4.8 Keterangan ilustrasi pengambilan data komunikasi ............................................ 50
Tabel 4.9 Hasil Pengujian Perpindahan Robot .................................................................... 53
Tabel 4.10 Hasil Pengujian Perputaran Robot..................................................................... 56
Tabel 4.11 Sudut Arah Percobaan Pada Penentuan Lokasi Diri Robot (θ) ......................... 58
Tabel 4.12 Hasil Pengujian Penentuan Lokasi Diri Robot (x,y) ......................................... 59
Tabel 4.13 Hasil Pengujian Penentuan Lokasi Diri Robot (θ) ............................................ 61
Tabel 4.14 Kecepatan motor terhadap PWM ...................................................................... 63
Tabel 4.15 Nilai resolusi rotary encoder ............................................................................. 64
Tabel 4.16 Nilai pengujian kompas secara manual ............................................................. 64
Tabel 4.17 Nilai akurasi perpindahan .................................................................................. 65
Tabel 4.18 Nilai akurasi perputaran .................................................................................... 65
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1
BAB I
PENDAHULUAN
1.1 Latar Belakang
Kontes Robot Sepak Bola Indonesia Beroda (KRSBI-B) adalah salah satu cabang
Kontes Robot Indonesia (KRI) dengan mengusung peraturan RoboCup Middle Size League
yang disesuaikan. KRI diadakan setiap tahunnya oleh Kementerian Riset Teknologi dan
Pendidikan Tinggi Republik Indonesia. Tempat lomba selalu berbeda setiap tahunnya
menggunakan sistem undian [1]. Pada awal tahun 2020, pandemi Covid-19 melanda dunia
yang membuat aktivitas manusia harus dibatasi, seperti menggunakan masker, menjaga
jarak, dan tidak berkerumun dalam jumlah besar [2][3]. Meskipun demikian, KRI tetap
dilaksanakan dengan sistem daring, sehingga dalam pertandingan KRSBI-B, peserta tidak
perlu berkumpul di tempat yang sama. Jumlah robot yang dilombakan berjumlah dua robot
striker dengan ukuran lapangan 6 m x 4.5 m. Sistem permainan adalah melakukan operan
dan mencetak gol sebanyak-banyaknya dalam waktu yang sudah ditentukan dengan
rintangan tiga buah dummy robot yang ditaruh secara acak sesuai undian [5].
Pada tahun 2020, Stefanus melakukan penelitian berjudul “Visualisasi Posisi Robot
Dan Bola Serta Strategi Bermain Pada Robot Sepakbola” [6]. Juga, Nickolaus melakukan
penelitian berjudul “Penggerak dan Pengolah Posisi Robot Striker Pada Robot Sepak Bola
Beroda” [7]. Pada penelitian [6] digunakan peraturan KRI 2019 akan tetapi tanpa pengolahan
posisi seperti pada penelitian [7]. Pada tugas akhir ini, penelitian [6] akan dikembangkan
dengan menggunakan peraturan KRI Daring 2020 dan penentuan posisi tanpa strategi
permainan.
Layaknya manusia, robot harus dapat berkomunikasi dengan robot lainnya yaitu dapat
mengetahui posisi lawan, kawan, bola, dan gawang agar dapat menentukan keputusan
permainan. Oleh sebab itu, pada tugas akhir ini akan dirancang sistem koordinasi robot sepak
bola beroda yang dapat berkomunikasi dengan robot lainnya, dibuatnya visualisasi untuk
memudahkan melihat, posisi diri robot, robot kawan, dummy robot, bola, dan gawang, serta
memudahkan untuk mengendalikan robot.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
1.2 Tujuan dan Manfaat
Tujuan dari penelitian ini adalah menghasilkan algoritma robot sepak bola beroda
yang dapat saling berkomunikasi antara robot dengan base station secara dua arah,
menghasilkan algoritma robot sepak bola beroda yang dapat mengolah data rotary encoder
dan kompas untuk mengetahui koordinat posisi dan heading robot, menghasilkan algoritma
robot sepak bola beroda yang dapat mengolah data citra untuk mengetahui posisi dummy
robot, dan bola serta menghasilkan program visualisasi posisi robot dan bola terhadap
lapangan sehingga pergerakan robot dapat dipantau dengan acuan peraturan KRI Daring
2020.
Manfaat dari penelitian ini adalah mengembangkan Klub Robotika dan diri sendiri
dalam bidang robot sepak bola beroda khususnya bidang navigasi, komunikasi, dan
penggunaan visualisasi dalam robot, serta sebagai tugas akhir yang merupakan syarat khusus
kelulusan.
1.3 Batasan Masalah
Supaya penulisan tugas akhir ini bisa mengarah pada tujuan dan untuk menghindari
terlalu kompleksnya permasalahan yang muncul, maka perlu adanya batasan-batasan
masalah yang ditentukan. Adapun batasan masalah adalah:
1. Komunikasi antarrobot dilakukan melalui komputer server secara nirkabel.
2. Visualisasi posisi robot serta memperkirakan posisi dummy robot dan bola.
3. Robot dapat dikendalikan melalui base station.
4. Konfigurasi lokasi robot didefinisikan oleh nilai 𝑥, 𝑦, dan 𝜃 pada koordinat kartesian.
Pergerakan pada arah 𝑧, sudut roll dan sudut pitch diabaikan.
5. Konfigurasi lokasi dummy robot dan bola didefinisikan oleh nilai 𝑥, 𝑦 pada koordinat
kartesian.
6. Pengujian dilakukan pada lapangan KRSBI-B dengan ukuran 4,5 x 6 m2,
menggunakan tiga buah dummy robot dan bola ukuran 4, serta mengikuti peraturan
KRI Daring 2020.
1.4 Metodologi Penelitian
Dalam proses perancangan tugas akhir, metode penelitian yang akan digunakan agar
mencapai tujuan yakni sebagai berikut:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
1. Studi pustaka
Tahap awal dalam penelitian ini adalah pencarian referensi di internet, buku, maupun
jurnal yang berkaitan dengan pembuatan tugas akhir ini serta mempelajari cara kerja tentang
perangkat yang akan digunakan. Literatur yang dipelajari meliputi Python, Raspberry Pi 3
Model B, webcam, OpenCV, preprocessing image dan ekstraksi ciri, ruang warna HSV,
kinematika tiga omniwheels, odometri, sensor kompas, Arduino Mega 2560, kontrol PID,
trigonometri, line-line intersection, Node.js, JavaScript, HTML, CSS, JSON, WebSockets,
serta Socket.IO.
2. Perancangan sistem
kameraomnidireksional
RasPi 1
RasPi 2
Arduino
penendang
kamera depan
sensor jarak
gripper
rotary encoder
omniwheel
kompas
servervisualisasi
ROBOT
BASE STATION BASIS KOMUNIKASI
BASIS ATAS
BASIS TENGAH
BASIS BAWAH
BASIS BAWAH Chandra
Hendrik
Hendrik
Chandra
Chandra
Gambar 1.1 Diagram Blok
Tahap kedua bertujuan untuk menentukan rancangan yang digunakan dalam sistem
pengendalian robot untuk menyelesaikan masalah yang ada pada penelitian sebelumnya.
Gambar 1.1. merupakan diagram blok perancangan yang dikerjakan oleh dua orang dengan
dibagi dalam empat basis: basis komunikasi, basis atas, basis tengah, dan basis bawah. Pada
penelitian milik Hendrik berfokus pada basis tengah dan basis bawah terutama bagian
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
pergerakan, penendang, dan algoritma gerak dasar permainan. Pada penelitian ini berfokus
pada basis atas yang meliputi kamera omnidireksional, basis bawah pengolahan kompas,
data rotary encoder, dan mikrokontroler Arduino, serta basis komunikasi yang meliputi base
station server dan visualisasi.
3. Pembuatan Alat
Tahap ketiga dilakukan pembuatan alat berupa perangkat keras dan perangkat lunak.
Pada perangkat keras berupa kontroler PID. Pada perangkat lunak berupa base station yang
meliputi sistem komunikasi dan sistem navigasi.
4. Pengambilan Data
Tahap keempat, proses pengambilan data dilakukan dengan mencatat hasil prediksi
posisi dummy robot dan bola dengan cara meletakan di beberapa posisi pada lapangan,
mencatat respon penentuan posisi diri robot dengan cara menggeser dan memutar robot, serta
mengambil data respon pergerakan robot yang dikendalikan dari base station. Data-data
akan dibandingkan dengan data visualisasi pada base station.
5. Analisis dan Kesimpulan
Tahap akhir, dilakukan analisis untuk menyimpulkan perbandingan antara hasil
percobaan dengan hasil perancangan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
BAB II
DASAR TEORI
Bab ini menjelaskan tentang perangkat utama yang digunakan pada penelitian
Perancangan Sistem Koordinasi Robot Sepak Bola Beroda. Perangkat-perangkat dan
algoritma yang digunakan antara lain Python, Raspberry Pi 3 Model B, webcam, OpenCV,
Preprocessing image dan ekstraksi ciri, ruang warna HSV, kinematika tiga omniwheels,
odometri, sensor kompas, Arduino Mega 2560, kontrol PID, trigonometri, line-line
intersection, Node.js, JavaScript, HTML, CSS, JSON, WebSockets, serta Socket.IO.
2.1 Python
Python adalah bahasa pemrograman aras tinggi yang dapat diinterpretasikan,
interaktif, dan juga orientasi objek. Bahasa pemrogramana Python relatif mudah dan simpel.
Python memiliki berbagai macam pustaka yang dapat digunakan untuk machine learning,
pemrosesan citra, membuat grafik antarmuka pengguna, dsb. Python dapat dioperasikan di
berbagai macam variasi sistem operasi termasuk Linux, macOS, dan Windows [8]. Pada
penelitian ini, Python digunakan dalam pengolahan data pada Raspberry Pi.
2.2 Raspberry Pi 3 Model B
Gambar 2.1 Board Raspberry Pi 3 Model B [9]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
6
Raspberry Pi 3 Model B merupakan single board computer dengan ukuran yang
sangat compact seperti ditunjukan pada Gambar 2.1. Raspberry Pi 3 Model 3 dioperasikan
menggunakan sistem operasi Linux berbasis Python yang memiliki grafik antarmuka
pengguna, sehingga dapat digunakan seperti komputer pribadi. Raspberry Pi 3 Model B
memiliki pin I/O serta mampu menghasilkan/menerima tegangan 5 volt yang dapat
digunakan untuk sensor-sensor maupun driver komponen [9].
Tabel 2.1 Spesifikasi Raspbrry Pi 3 B [9]
Processor Broadcom BCM2837B0, Cortex-A53
64-bit SoC @ 1.4GH
Memory 1GB LPDDR2 SDRAM
Connectivity
- 2.4GHz and 5GHz IEEE 802.11.b/g/n/ac wireless
LAN, Bluetooth 4.2, BLE
- Gigabit Ethernet over USB 2.0 (maximum throughput
300Mbps)
- 4 × USB 2.0 ports
Access Extended 40-pin GPIO header
Video & sound
- 1 × full size HDMI
- MIPI DSI display port
- MIPI CSI camera port
- 4 pole stereo output and composite video port
SD card support H.264, MPEG-4 decode (1080p30); H.264 encode
(1080p30); OpenGL ES 1.1, 2.0 graphics
Input power 5V/2.5A DC via micro USB connector
5V DC via GPIO header
Berdasarkan Tabel 2.1, Raspberry Pi 3 Model B dipilih karena dapat digunakan
untuk pemrosesan citra menggunakan bahasa pemrograman Python. Raspberry Pi Model B
dapat dikomunikasikan secara nirkabel menggunakan jaringan Wi-Fi serta memiliki GUI
yang dapat dapat dipantau secara nirkabel. Hal ini memudahkan dalam pengubahan data
tanpa harus menggunakan monitor, keyboard, dan mouse yang disambung terlebih dahulu.
Pada penelitian ini, Raspberry Pi 3 Model B digunakan sebagai komputer untuk memproses
data robot.
2.3 Webcam
Webcam adalah perangkat keras yang dapat digunakan untuk streaming gambar atau
video secara real-time yang terkoneksi dengan komputer maupun jaringan komputer yang
ditunjukan pada Gambar 2.2.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
Tabel 2.2 Spesifikasi USB Logitech C270 [10]
Resolusi 720p/30fps
Jenis fokus Fokus tetap
Resolusi Optikal 1280 x 960 1.2 MP
Mikrofon Build-in, Noise Suppresion
Tipe USB High Speed USB 2.0
Focal length 4.0 mm
Berdasarkan Tabel 2.2, Webcam Logitech C270 dipilih karena memiliki kualitas
yang baik, noiseless, dan tone warna tidak jauh berbeda dengan warna yang asli [10]. Pada
penelitian ini, Webcam Logitech C270 digunakan pada robot untuk tracking dummy robot
dan bola.
Gambar 2.2 Webcam Logitech C70 [10]
2.4 OpenCV
OpenCV adalah sebuah library open source computer vision dan machine learning
yang di dalamnya memuat struktur data serta algoritma yang diperlukan untuk melakukan
pengolahan citra secara real-time. OpenCV dapat digunakan dalam berbagai bahasa
pemrograman C++, Python, Java, dan MATLAB. Juga, OpenCV dapat digunakan untuk
object recognition, object identity, object classification, feature extraction secara diskrit
maupun kontinyu [11]. Pada penelitian ini, OpenCV digunakan untuk mengolah citra yang
ditangkap dengan webcam pada robot.
2.5 Preprocessing image
Sebelum memproses citra digital, diperlukan langkah preprocessing image. Ukuran
dan kualitas citra jika telalu besar akan membuat proses menjadi lama. Juga, di setiap citra
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
digital pasti memiliki noise yang dapat mengurangi kualitas pengolahan [12][13]. Dengan
menggunakan pustaka OpenCV dapat membantu dalam preprocessing image [14].
cv2.resize(img, dimensi, interpolation) dapat digunakan sebagai pengubah ukuran gambar
dengan parameter img sebagai obyek gambar, dimensi sebagai dimensi (tinggi dan lebar)
yang diinginkan, serta interpolation sebagai mode interpolasi yang diinginkan.
cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) dapat digunakan sebagai segmentasi warna
HSV dengan parameter frame sebagai obyek gambar. cv2.GaussianBlur(image, (kernel), ite)
dapat digunakan sebagai pengurang noise dengan parameter image sebagai obyek gambar,
kernel sebagai kuantitas besarnya matriks untuk blur yang bernilai ganjil, dan ite sebagai
angka iterasi blur. Oleh karena itu, pada penelitian ini diperlukan preprocessing image.
2.6 Ekstraksi Ciri
Ekstraksi ciri berfungsi untuk membedakan objek dari background supaya objek
dapat terdeteksi serta mengurangi jumlah dataset yang ada dengan membuat ekstraksi baru
dari yang sudah ada [15]. Dengan menggunakan pustaka OpenCV dapat membantu dalam
ekstrasi ciri [14]. cv2.inRange(frame, lower_value, upper_value) dapat digunakan untuk
masking citra sesuai warna yang diinginkan dengna parameter frame sebagai obyek gambar,
lower_value sebagai batas bawah warna, dan upper_value sebagai batas atas warna.
cv2.findContours(src, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) dapat
digunakan untuk mencari contour dengan parameter src sebagai obyek gambar, lalu citra
sudah dapat dibedakan dan dipisahkan dalam sebuah array. Oleh karena itu, pada penelitian
ini diperlukan ekstraksi ciri
2.6.1 Ruang Warna HSV
Ruang warna HSV (Hue, Saturation, Value) merupakan model warna yang ditunjukan
pada Gambar 2.3. Hue (H) merupakan representasi spektrum warna cahaya tampak,
saturation (S) merupakan tingkat kepekatan warna, dan value (V) merupakan tingkat
kecerahan warna. Ruang HSV digunakan karena dalam segmentasi warna lebih mudah
daripada ruang warna RGB. Untuk mendapatkan nilai HSV diperlukan konversi nilai RGB
menggunakan persamaan berikut:
[𝑅′𝐺′𝐵′
] = [
𝑅/255𝐺/255𝐵/255
]
(2.1)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
[𝐶𝑚𝑎𝑥𝐶𝑚𝑖𝑛∆
] = [max (𝑅′, 𝐺′, 𝐵′)
min(𝑅′, 𝐺′, 𝐵′)𝐶𝑚𝑎𝑥 − 𝐶𝑚𝑖𝑛
]
(2.2)
Setelah mendapatkan nilai Cmax, Cmin, dan ∆, nilai-nilai tersebut akan dijadikan
aturan dalam perhitungan setiap nilai pada hue, saturation, dan value [16]. Oleh karena itu
nilai HSV dapat didefinisikan dalam persamaan berikut:
𝐻 =
{
0
60𝐺′ − 𝐵′
∆
60𝐵′ − 𝑅′
∆+ 2
60𝑅′ − 𝐺′
∆+ 4
, 𝑗𝑖𝑘𝑎 ∆ = 0
, 𝑗𝑖𝑘𝑎 𝐶𝑚𝑎𝑥 = 𝑅′
, 𝑗𝑖𝑘𝑎 𝐶𝑚𝑎𝑥 = 𝐺′
, 𝑗𝑖𝑘𝑎 𝐶𝑚𝑎𝑥 = 𝐵′}
(2.3)
𝑆 = {
0 , 𝑗𝑖𝑘𝑎 ∆= 0∆
𝐶𝑚𝑎𝑥, 𝑗𝑖𝑘𝑎 𝐶𝑚𝑎𝑥 ≠ 0
}
(2.4)
V = Cmax (2.5)
2.7 Kinematika tiga omniwheel
y
x
L
L
L
-Vy-Vy
V1
V2
V3
Vx
-Vx
-Vx
Vθ
θ
Gambar 2.3 Representasi kinematika tiga omniwheels
Pada penelitian ini, model pergerakan robot sepak bola beroda menggunakan
pendekatan kinematika dengan tiga omniwheel. Kinematika berfungsi untuk mengetahui
arah pergerakan suatu robot. Pada Gambar 2.3 ditunjukan ilustrasi representasi kinematika
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
robot dengan tiga roda. Posisi robot disimbolkan sebagai 𝑥 dan 𝑦 dalam bidang kartesian
dan 𝜃 sebagai sudut orientasi robot terhadap sumbu x referensi [17]. Kecepatan roda
𝑉𝑖(1, 2, 3) didapatkan dari perkalian kecepatan sudut 𝜔 dengan jari-jari omniwheel 𝑟,
sehingga kecepatan robot menggunakan kinematika maju dapat didefinisikan dalam
persamaan 2.6.
[
𝑉𝑥𝑉𝑦𝑉𝜃
] = [cos 𝜃 −cos 𝜃 0−sin 𝜃 −sin 𝜃 11/𝐿 1/𝐿 1/𝐿
] [𝑉1𝑉2𝑉3
] (2.6)
Di mana 𝑉𝑥 dan 𝑉𝑦 adalah kecepatan ortogonal terhadap kecepatan 𝑉𝑖(1, 2, 3) serta
𝑉𝜃 adalah kecepatan tangensial robot. Menggunakan jarak Euclidean, didapatkan persamaan
2.7 dan didapatkan persamaan arah yang dilambangkan dengan 𝜓 pada persamaan 2.8.
𝑉 = √𝑉𝑥2 + 𝑉𝑦2
(2.7)
𝜓 = 𝑡𝑎𝑛−1 (𝑦
𝑥) (2.8)
Setelah mengetahui persamaan 2.6 dan 2.7 maka didapatkan inverse kinematika
pada persamaan 2.9 [18].
[𝑉1𝑉2𝑉3
] =
[
−1
3−1
√3𝐿/3
−1
3cos 𝜃 +
1
√3sin 𝜃 𝐿/3
2
3cos 𝜃 0 𝐿/3]
[cos𝜓sin𝜓𝑉𝜃
] (2.9)
2.8 Odometri
Odometri adalah penggunaan data dari pergerakan aktuator posisi secara real-time.
Odometri biasa digunakan di bidang robotika yang berguna untuk memperkirakan posisi
relatif terhadap posisi awal [19]. Pada penelitian ini, odometri digunakan untuk mengetahui
posisi diri robot. Metode ini sangat dipengaruhi dengan error yang terjadi selama proses
berlangsung, seperti ketidakterbacanya data, slip roda, dan saat medan yang ditempuh tidak
datar. Posisi relatif dapat dihitung dengan menggunakan persamaan 2.10.
𝑘𝑒𝑙𝑖𝑙𝑖𝑛𝑔_𝑟𝑜𝑑𝑎 = 2𝜋𝑟 (2.10)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
𝑝𝑢𝑙𝑠𝑎_𝑝𝑒𝑟_𝑚𝑚 = 𝑟𝑒𝑠𝑜𝑙𝑢𝑠𝑖 𝑒𝑛𝑐𝑜𝑑𝑒𝑟 / 𝑘𝑒𝑙𝑖𝑙𝑖𝑛𝑔 𝑟𝑜𝑑𝑎 (2.11)
Dari persamaan 2.6 dan persamaan 2.11 hasil nilai 𝑉𝑥 , 𝑉𝑦 , dan 𝑉𝜃 serta
𝑝𝑢𝑙𝑠𝑎_𝑝𝑒𝑟_𝑚𝑚 dapat digunakan untuk menentukan perkiraan perpindahan posisi relatif
dengan mengganti kecepatan setiap roda dengan jarak yang ditempuh, sehingga dapat
didefinisikan dalam persamaan 2.12.
[𝑋𝑝𝑜𝑠𝑌𝑝𝑜𝑠𝜃
] = [𝑐𝑜𝑠(𝑉𝜃) −𝑠𝑖𝑛(𝑉𝜃) 0𝑠𝑖𝑛(𝑉𝜃) 𝑐𝑜𝑠(𝑉𝜃) 00 0 1
] [
𝑉𝑥𝑉𝑦𝑉𝜃
]
(2.12)
2.9 Sensor kompas
Sensor kompas HMC5883L merupakan 3-axis digital magnetometer yang dirancang
untuk mendeteksi medan magnet lemah. HMC5883L menggunakan sensor magneto-
resistive HMC118X yang memiliki resolusi 5 mili-Gauss. Sensor ini biasa digunakan
sebagai petunjuk arah mata angin digital. HMC5883L menggunakan protokol I2C untuk
komunikasi dan berperan sebagai slave device. Sensor ini sensitif apabila didekatkan dengan
baterai, motor, permukaan logam, atau medan magnet, hasil yang disebabkan akan kurang
dari aktual dan harus ditempatkan di tempat yang datar. Sensor ini dapat digunakan
digunakan dalam sistem navigasi di kendaraan untuk mendeteksi arah [20]. Pada penelitian
ini, kompas digunakan untuk mengetahui heading robot.
2.10 Arduino Mega 2560
Arduino Mega 2560 adalah mikrokontroler open source yang berbasis Atmega2560.
Board ini memiliki pin I/O sejumlah 52 buah, 15 di antaranya adalah PWM, 16 pin analog
input, 4 pin UART, 16 MHz osilator kristal, koneksi USB, power jack, ICSP header, dan
tombol reset. Pada Arduino Mega 2560 digunakan bahasa pemrograman C++ dengan
beberapa metode spesial dan fungsi. Untuk compile program digunakan Arduino IDE, file
berbentuk ‘sketch’ dalam bahasa C++ diproses menjadi bahasa mesin [21]. Berdasarkan
Tabel 2.3, Arduino Mega 2560 dipilih karena pin I/O cukup banyak dan dapat dihubungkan
ke sensor kompas dan rotary encoder. Untuk dapat berkomunikasi dengan komputer,
Arduino dapat menggunakan protokol komunikasi serial dengan menggunakan port USB-
serial.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
Tabel 2.3 Spesifikasi Arduino Mega 2560 [21]
Microcontroller ATmega2560
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limit) 6-20V
Digital I/O Pins 54
Analog Input Pins 16
DC Current per I/O Pin 20 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 256 KB of which 8 KB used by bootloader
SRAM 8 KB
EEPROM 4 KB
Clock Speed 16 MHz
Data yang dikirimkan hanya satu per bit dalam setiap waktunya tergantung baud rate.
Baud rate adalah laju data per detik. Dengan begitu, data dapat dikirim ke komputer
penerima. Arduino juga memiliki banyak modul library yang dapat digunakan seperti modul
kompas, modul fuzzy logic, dan modul kontrol PID. Pada penelitian ini, Arduino digunakan
sebagai kontroler PID.
2.11 Kontrol PID
I
P
D
+ +-
Feedback
Error
Input/Setpoint
Output/Process Value
Proses
Gambar 2.4 Diagram blok kontroler PID pada feedback loop
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
Kontrol proportional-integral-derivative (kontrol PID) merupakan metode
pengendali dalam suatu sistem kalang tertutup. Kontrol PID secara kontinu menghitung nilai
error yang diperoleh dari setpoint dikurangi process value. Dengan kontrol PID, setiap
looping akan meminimalisir error yang terjadi, sehingga berguna untuk menstabilkan suatu
sistem [22]. Pada Gambar 2.4 ditunjukan parameter pada sistem yaitu setpoint (input), error
(e(t)), process value(output), 𝐾𝑝, 𝐾𝑖, 𝑑𝑎𝑛 𝐾𝑑. Untuk menghitung nilai output, digunakan
persamaan 2.13.
𝑜𝑢𝑡𝑝𝑢𝑡 = 𝐾𝑝𝑒(𝑡) + 𝐾𝑖∫𝑒(𝑡)𝑑𝑡
𝑡
𝑜
+ 𝐾𝑑𝑑𝑒(𝑡)
𝑑𝑡
(2.13)
Tabel 2.4 Pengaruh parameter kontrol PID [21]
Parameter Rise-time Overshoot Settling time Steady state error
𝐾𝑝 Berkurang Bertambah Sedikit berubah Berkurang
𝐾𝑖 Berkurang Bertambah Bertambah Hilang
𝐾𝑑 Sedikit berubah Berkurang Berkurang Tidak berubah
Berdasarkan Tabel 2.4, kontrol PID dipilih karena dapat menstabilkan suatu sistem
tergantung dengan nilai parameternya. Penentuan nilai parameter dapat ditentukan dengan
metode trial and error, yaitu dengan mengatur nilai parameter saat percobaan.
Juga, kontrol PID menggunakan kalang tertutup untuk menjaga nilai output secara
aktual dari proses yang mendekati nilai setpoint. Pada penelitian ini, kontrol PID digunakan
dalam penentuan lokasi diri robot untuk kontrol posisi relatif robot: 𝑥, 𝑦, dan 𝜃.
2.12 Trigonometri
Trigonometri merupakan metode perhitungan hubungan antara sisi dan sudut pada
segitiga [23]. Pada Gambar 2.5 ditunjukan sebuah segitiga siku-siku yang memiliki tiga sisi:
hypotenus (h), adjacent 𝜃 (a), dan opposite 𝜃 (o). Fungsi dasar trigonometri didefinisikan
pada persamaan 2.14.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
θ
h
a
o
Gambar 2.5 Trigonometri Segitiga Siku-Siku
sin 𝜃 =𝑜
ℎ, cos 𝜃 =
𝑎
ℎ, tan 𝜃 =
𝑜
𝑎 (2.14)
Pada penelitian ini, trigonometri digunakan dalam perhitungan penentuan lokasi
dummy robot dan bola.
2.13 Line-line intersection
(x1,y1)
(x3,y3)
(x4,y4)
(x2,y2)
(x,y)
G2
G1
P
Gambar 2.6 Perpotongan dua garis linear
Pada bidang Euclidean, koordinat titik potong dapat ditentukan dari perpotongan dua
garis [24]. Untuk dapat melakukan perhitungan harus memiliki empat koordinat pada garis
yang berpotongan. Koordinat suatu titik perpotongan P(x,y) pada garis G1 dan G2 dalam
Gambar 2.6 dapat didefinisikan apabila diketahui nilai x1, y1 dan x3, y3 pada garis G1 serta
nilai x2, y2, dan x4, y4. Mengacu pada [24], persamaan perpotongan dua garis dapat
didefinisikan dalam persamaan 2.15.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
𝑃𝑥, 𝑃𝑦 =
||𝑥1 𝑦1𝑥2 𝑦2
| |𝑥1 1𝑥2 1
|
|𝑥3 𝑦3𝑥4 𝑦4
| |𝑥3 1𝑥4 1
||
||𝑥1 1𝑥2 1
| |𝑦1 1𝑦2 1
|
|𝑥3 1𝑥4 1
| |𝑦3 1𝑦4 1
||
,
||𝑥1 𝑦1𝑥2 𝑦2
| |𝑥1 1𝑥2 1
|
|𝑥3 𝑦3𝑥4 𝑦4
| |𝑥3 1𝑥4 1
||
||𝑥1 1𝑥2 1
| |𝑦1 1𝑦2 1
|
|𝑥3 1𝑥4 1
| |𝑦3 1𝑦4 1
||
(2.15)
Setelah dihitung determinannya, persamaan dapat didefinisikan dalam persamaan
2.16 dan persamaan 2.17.
𝑃𝑥 =
(𝑥1𝑦2 − 𝑥2𝑦1)(𝑥3 − 𝑥4) − (𝑥1 − 𝑥2)(𝑥3𝑦4 − 𝑥4𝑦3)
(𝑥1 − 𝑥2)(𝑦3 − 𝑦4) − (𝑦1 − 𝑦2)(𝑥3 − 𝑥4)
𝑃𝑦 =(𝑥1𝑦2 − 𝑥2𝑦1)(𝑦3 − 𝑦4) − (𝑦1 − 𝑦2)(𝑥3𝑦4 − 𝑥4𝑦3)
(𝑥1 − 𝑥2)(𝑦3 − 𝑦4) − (𝑦1 − 𝑦2)(𝑥3 − 𝑥4)
(2.16)
(2.17)
Pada penelitian ini, line-line intersection digunakan dalam perhitungan penentuan
lokasi dummy robot dan bola.
2.14 Node.js
Node.js adalah open source runtime environtment yang berjalan di sistem operasi
untuk mengeksekusi kode JavaScript yang dibangun dengan V8 JavaScript Engine. Node.js
tidak bergantung dengan browser karena sudah berjalan di sistem operasi. Node.js bersifat
asinkron, non-blocking, dan single threaded. Karena itu, Node.js cocok digunakan untuk
membuat aplikasi yang memerlukan real-time respon. Node.js dapat digunakan di berbagai
sistem operasi seperti Linux, Windows, dan macOS [25].
Pada Gambar 2.7 ditunjukan arsitektur Node.js. Klien mengirimkan request ke web
server, request dapat berupa data nonblok atau blok. Node.js menerima request dan
menambahkan request tersebut ke event queue. Lalu, request akan melewati event loops satu
per satu dan dicek apakah request memerlukan sumber eksternal. Apabila tidak memerlukan
sumber eksternal, event loops akan mengolah data dan mengirim balik ke klien.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
Request
Klien
Server Node.js
Computation
Database
File System
EventLoops
Event Queue
Thread Pool
External Sources
Gambar 2.7 Arsitektur Node.js
Single thread pada thread pools bertugas untuk melengkapi sebagian blocking
request dengan mengakses sumber eksternal. Setelah data sudah selesai diolah, event loops
bertugas untuk mengirimkan response kembali ke klien [26]. Pada penelitian ini, Node.js
digunakan sebagai web server pada base station.
2.14.1 JavaScript
JavaScript adalah bahasa pemrograman yang berbasis prototype, single threaded,
mendukung orientasi objek, dan functional programming. Biasa digunakan untuk halaman
web, juga digunakan pada environment bukan browser, seperti Node.js, Apache CouchDB,
dan Adobe Acrobat. JavaScript mampu bekerja secara asinkron dengan menggunakan fitur
event listener dan callback guna menghindari blocking proses [27]. Pada penelitian ini,
JavaScript digunakan dalam basis komunikasi pada base station.
2.14.2 HTML
Hypertext Markup Language (HTML) adalah standar bahasa pemrograman
pembuatan web. Hypertext merujuk ke link penghubung web dengan web lainnya. HTML
menggunakan markup yang terdapat element seperti tag <head>, <body>, dsb. Tag ini
berguna untuk digunakan sesuai kegunaan masing-masing. HTML dapat digunakan
sebagai visualisasi yang terhubung ke program JavaSript dan elemennya dapat diatur
menggunakan CSS [28]. Pada penelitian ini, HTML digunakan dalam visualisasi robot,
dummy robot, dan bola.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
2.14.3 CSS
CSS (Cascading Style Sheets) adalah aturan yang mengontrol tampilan web pada
browser. Hal yang dapat dikontrol menggunakan CSS adalah style elemen di dalam HTML.
CSS menggunakan bahasa inggris sederhana berbasis sintaks yang dilengkapi dengan
sekumpulan aturan. CSS tidak hanya dapat mengontrol style elemen pada HMTL saja, tetapi
dapat juga digunakan dalam bahasa SVG atau XML [29].
Gambar 2.8 Pengaplikasian CSS pada HTML
CSS dapat ditulis menggunakan tiga cara, yaitu External CSS, Internal CSS, Inline
CSS. Pada Gambar 2.8 adalah contoh penggunaan Internal CSS, aturan ditulis di dalam tag
<style>. External CSS digunakan dengan menggunakan file berekstensi “.css” dan dikaitkan
pada HTML. Sementara Inline CSS dituliskan di dalam atribut pada tag elemen yang ingin
diberi aturan CSS [30].
2.15 JSON
JavaScript Object Notation (JSON) merupakan format pertukaran data berbasis teks
yang strukturnya mendukung manusia dan komputer dalam pembuatannya. JSON tidak
bergantung pada bahasa pemrograman apapun. Oleh karena itu JSON sangat ideal dijadikan
bahasa pertukaran data. Tipe data yang dapat disimpan antara lain objek, array, string,
number, dan boolean [31].
Gambar 2.9 Struktur penulisan JSON
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
Struktur penulisan JSON dapat dilihat pada Gambar 2.9. Pada JavaScript, JSON
dapat dibuat dengan mengonversi objek menggunakan fungsi JSON.parse(). Pada Python
JSON dibaca sebagai dictionary. Dengan berbagai kemampuan JSON yang dapat digunakan
dalam berbagai bahasa pemrograman, maka pada penelitian ini JSON dipilih dalam
pertukaran data.
2.16 WebSockets
WebSockets merupakan protokol komunikasi yang menyediakan komunikasi full
duplex latensi rendah antara klien dan server melalui koneksi Transmission Control
Protocol/Internet Protocol (TCP/IP). Dalam protokol HTTP dengan klien yang hanya bisa
mengirimkan request dan servernya hanya mengirim balik response ke klien. Sebaliknya,
dengan menggunakan protokol WebSockets saat klien dan server dikoneksikan, maka
keduanya dapat saling mengirim data tanpa membuka koneksi baru hingga koneksi diputus
[33]. Juga, WebSockets dapat digunakan di hampir semua browser [34]
Gambar 2.10 Koneksi WebSockets [32]
Pada Gambar 2.10 ditunjukan langkah koneksi WebSockets. Dimulai dari proses
handshake antara klien dan server. Handshake adalah proses otomatis yang terjadi saat klien
dan server memulai sambungan untuk komunikasi sesuai dengan protokol yang digunakan.
Sesudah klien dan server terkoneksi dalam satu jaringan TCP/IP, maka koneksi terbuka.
Selama salah satu sisi tidak menutup kanal, klien dan server bisa mengirim maupun
menerima data secara dua arah. Pada penelitian ini WebSockets digunakan dalam protokol
komunikasi antara robot dan base station.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
2.17 Socket.IO
Socket.IO merupakan open source real-time engine yang dibangun pada Node.js.
Socket.IO dapat digunakan di setiap platform, browser, atau device. Komunikasi yang
dihasilkan yaitu real time, bidirectional, dan berbasis event. Karena menggunakan
komunikasi berbasis event, untuk mendapatkan data terbaru tidak memerlukan request.
Akan tetapi, yang perlu dilakukan dengan melakukan listen pada suatu topik selama
WebSockets tetap aktif [35]. Selain itu, Socket.IO dapat digunakan dalam framework yang
menggunakan bahasa pemrograman Python [36]. Pada penelitian ini, Socket.IO digunakan
dalam komunikasi robot dan base station.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
BAB III
PERANCANGAN PENELITIAN
Pada bab ini akan dijelaskan mengenai perancangan sistem koordinasi dari robot
sepak bola beroda. Bagian yang akan dibahas yaitu diagram blok sistem, perancangan
perangkat keras, dan perancangan perangkat lunak. Pada perancangan perangkat keras akan
dibahas mengenai rancangan robot sepak bola beroda, interkoneksi rangkaian, lapangan, dan
bola. Pada perancangan perangkat lunak akan dibahas mengenai basis atas, basis bawah, dan
basis komunikasi. Di basis atas akan dibahas mengenai penentukan posisi dummy robot dan
bola. Di basis bawah akan dibahas mengenai penentuan lokasi diri robot. Kemudian, di basis
komunikasi akan dibahas mengenai komunikasi robot sepak bola beroda dan visualisasi
posisi robot, dummy robot, dan bola di dalam base station.
3.1 Diagram blok sistem
Gambar 3.1 Diagram Blok Sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
Pada Gambar 3.1 ditunjukan diagram blok sistem yang berisi bagan robot dan base
station. Komponen-komponen pada bagan robot meliputi kompas dan tiga rotary encoder
yang terhubung ke Arduino yang terhubung ke Raspberry Pi 2, serta kamera omnidireksional
yang terhubung ke Raspberry Pi 1. Pada base station terdapat Node.js sebaga server dan
browser sebagai visualisasi. Pada Arduino dilakukan proses kontrol PID lalu data dikirimkan
dengan komunikasi serial ke Raspberry Pi 2 yang kemudian data dikirim dengan
WebSockets ke base station. Pada Raspberry Pi 1 dilakukan proses pengolahan citra
menggunakan OpenCV untuk menentukan lokasi dummy robot dan bola, lalu data
dikirimkan ke base station. Pada base station data-data akan diolah supaya dapat
divisualisasikan.
3.2 Perancangan Perangkat Keras
3.2.1 Perancangan Robot Sepak Bola Beroda
Gambar 3.2 Rancangan Robot Sepak Bola Beroda
Pada penelitian ini, robot yang digunakan adalah robot sepak bola beroda yang sudah
dibuat oleh Tim Kelompok Sepak Bola Beroda Universitas Sanata Dharma seperti yang
ditunjukan pada Gambar 3.2 dan dibagi dalam tiga basis: basis atas, basis tengah, dan basis
bawah untuk mempermudah pembagian sistem. Basis atas dan basis bawah adalah basis
yang akan digunakan dalam penelitian ini.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
3.2.2 Interkoneksi Sistem Rangkaian
Base Station
Arduino
Raspberry Pi1
Raspberry Pi2
rotary encoder
rotary encoder
rotary encoder
kompas
serial
kameraomnidireksional
USB websocket
we
bsock
et
Gambar 3.3 Interkoneksi Sistem Rangkaian
Pada Gambar 3.3 diilustrasikan interkoneksi sistem rangkaian. Komponen-
komponen masukan pada sistem antara lain sensor kompas, tiga rotary encoder, dan kamera
omnidireksional. Kompas dikoneksikan menggunakan protokol I2C ke Arduino yang
memerlukan dua pin (SPL dan SDL) dan membutuhkan sumber tegangan 3.3 V dan ground
pada Arduino, Rotary encoder dikoneksikan ke Arduino dan membutuhkan dua pin untuk
Output A dan B pada masing-nasing rotary encoder. Kamera omnidireksional dikoneksikan
ke Raspberry Pi 1 menggunakan port USB. Arduino dikoneksikan dengan protokol
komunikasi serial yang terhubung dengan Raspberry Pi 2 menggunakan port USB to serial.
Masing-masing Raspberry dikoneksikan menggunakan protokol WebSockets yang
terhubung dengan base station.
3.2.3 Perancangan Lapangan
Berdasarkan peraturan KRI Daring 2020 [5], karakteristik lapangan yang digunakan
ditunjukan pada Gambar 3.4. Lapangan berbentuk setengah lapangan bola (6 x 4,5 m2),
menggunakan satu gawang yang di bawahnya diletakan satu obstacle dan 8 titik peletakan
dua obstacle.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
Gambar 3.4 Perancangan lapangan
3.2.4 Perancangan Dummy Robot dan bola
26 cm 26 cm
37 cm 37 cm22 cm
66 cm
tipe I tipe II
Gambar 3.5 Perancangan dummy robot
Dummy robot merupakan benda yang digunakan sebagai obstacle pengganti robot
lawan. Sifat robot ini diam, hanya diletakan pada titik yang sudah dirancang di lapangan.
Pada penelitian ini, dummy robot dibedakan menjadi dua tipe: tipe I sebagai obstacle
defender dan tipe II sebagai obstacle goalkeeper. Berdasarkan peraturan KRI Daring 2020
[5], dummy robot berbentuk kotak, tipe I memiliki ukuran minimum 26 cm x 37 cm x 22 cm
dan berat minimum 10 kg, sedangkan tipe II memiliki ukuran minimum 26 cm x 37 cm x 60
cm dan berat minimum 30 kg. Oleh sebab itu, dalam penelitian ini dummy robot tipe I dibuat
menggunakan dus air mineral botol 600 ml x 24 buah yang diberi pemberat, sedangkan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
dummy robot tipe II dibuat dengan tiga tumpukan dus yang sama dengan diberi pemberat di
bagian bawah. Ilustrasi rancangan bisa dilihat di Gambar 3.5.
Jumlah dummy robot yaitu tiga buah, dua bertipe I diletakkan di bagian titik-titik
peletakan obstacle, satu bertipe I diletakkan di bawah mistar gawang. Untuk menghindari
kesalahan baca robot, dummy robot dirancang bewarna kuning. Meskipun dalam
perancangannya dibuat berbeda, pada visualisasinya dummy robot tipe I dan tipe II tetap
disamakan dalam pengenalannya untuk mengurangi algoritma.
Gambar 3.6 Bola ukuran 4
Juga, pada penelitian ini digunakan bola ukuran 4 berwarna jingga yang ditunjukan
pada Gambar 3.6.
3.3 Perancangan Perangkat Lunak
3.3.1 Kontrol PID
START
STOP
masukan dari feedbacksensor kompas dan
rotary encoder
Perhitungan PID
Data dikirim ke RasPi 2
B
A
Apakah adaperintah stop?
A
Delay
B
F
T
masukan setpoint x, y,
dari RasPi 2θ
Gambar 3.7 Diagram alir kontrol PID pada Arduino
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25
Langkah-langkah kontrol PID pada Arduino diilustrasikan dalam Gambar 3.7.
Dimulai dari masukan setpoint 𝑥, 𝑦, dan 𝜃 sebagai referensi dari Raspberry Pi 2
menggunakan protokol komunikasi serial. Kemudian delay interval waktu untuk
meminimalisir perhitungan yang bertumpuk. Apabila ada perintah stop, maka proses akan
berhenti. Akan tetapi bila tidak ada perintah stop, maka lanjut ke poin A. Pada poin A
dilanjut dengan masukan dari feedback sensor kompas menggunakan protokol I2C dan
sensor rotary encoder yang kemudian dihitung nilai error-nya.
Lalu, dalam perhitungan PID, mengacu pada dasar teori kontrol PID, menurut
persamaan 2.10 dibutuhkan nilai 𝐾𝑝, 𝐾𝑑, dan 𝐾𝑖 untuk menentukan nilai output/process
value-nya. Nilai tersebut akan ditentukan saat percobaan berlangsung menggunakan metode
trial and error. Setelah itu data dikirim ke Raspberry Pi 2 menggunakan protokol
komunikasi serial. Proses dilanjutkan kembali ke poin B.
3.3.1.1 Subrutin pembacaan kompas
START
Konversi radianke derajat
Koreksi sudut
Menghitungsudut deklinasi
RETURN
Apakah adaperintah stop?
B
B
A
A
F
T
keluaransudut heading kompass
Perhitunganheading kompas
Pembacaan datakompas
Inisialisasi alamat registerkompas pada 0x1E,
mode operasi, frekuensi pengukuran, dan jumlah laju sampel
Gambar 3.8 Diagram alir subtrutin pembacaaan kompas
Pada Gambar 3.8, ditunjukan diagram alir pembacaan kompas. Dimulai dengan
menginisialisasi alamat register kompas pada 0x1E dan menentukan mode operasi,
frekuensi, serta jumlah laju sampel yang diinginkan. Lalu, pembacaan data kompas
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
parameter yang didapatkan adalah nilai pitch, yaw, dan roll (x, y, z). Untuk menghitung
heading kompas diperlukan perhitungan menggunakan persamaan 3.1 dalam bentuk radian.
ℎ𝑒𝑎𝑑𝑖𝑛𝑔 = atan (
𝑌𝑎𝑥𝑖𝑠
𝑋𝑎𝑥𝑖𝑠) (3.1)
Setelah mendapatkan nilai heading, diperlukan nilai sudut deklinasi untuk ditambah
dengan nilai heading menggunakan persamaan 3.2.
𝑠𝑢𝑑𝑢𝑡𝐷𝑒𝑘𝑙𝑖𝑛𝑎𝑠𝑖 =deg+(
𝑚𝑖𝑛𝑢𝑡𝑒𝑠60 )
180/𝜋 (3.2)
ℎ𝑒𝑎𝑑𝑖𝑛𝑔 = ℎ𝑒𝑎𝑑𝑖𝑛𝑔 + 𝑠𝑢𝑑𝑢𝑡 𝑑𝑒𝑘𝑙𝑖𝑛𝑎𝑠𝑖 (3.3)
Variabel deg dan minutes didapatkan dari nilai deklinasi magnet suatu daerah.
Setelah itu, dilakukan perhitungan koreksi sudut. Apabila nilai heading kurang dari nol,
maka nilai heading ditambah 2𝜋. Apabila nilai heading lebih dari 2𝜋, maka nilai heading
dikurangi 2𝜋. Lalu, nilai heading yang sebelumnya dalam bentuk radian, dikonversi ke
dalam bentuk derajat. Keluaran nilai heading didapatkan dalam bentuk derajat. Disebabkan
oleh pembacaan dilakukan secara kontinu, alir akan berhenti saat mikrokontroler berhenti.
3.3.1.2 Penentuan lokasi diri robot
x
y
robot1 robot2
0,0
Gambar 3.9 Ilustrasi posisi awal robot
Gambar 3.9 adalah ilustrasi posisi awal robot pada bidang x, y yang disesuaikan
dengan titik x = 0 dan y = 0 pada visualisasinya. Posisi awal robot 1 adalah x = 25 dan y =
225, sedangkan robot 2 adalah x = 575 dan y = 225. Pada penelitian ini omniwheel yang
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
digunakan memiliki diameter 100 mm. Mengacu pada dasar teori kinematika tiga
omniwheels, menurut persamaan 2.6 ditentukan nilai 𝜃 = 60° dengan begitu didapatkan
persamaan 3.4.
[
𝑉𝑥𝑉𝑦𝑉𝜃
] = [0.5 −50 0
−0.866 0.866 11/𝐿 1/𝐿 1/𝐿
] [𝑉1𝑉2𝑉3
]
(3.4)
Gambar 3.10 menunjukan subrutin penentuan lokasi diri robot pada base station.
Data rotary encoder yang diterima oleh base station dalam interval waktu akan dikonversi
menjadi data x, y, dan 𝜃. Untuk mendapatkan nilai 𝑥, 𝑦, dan 𝜃 digunakan persamaan 3.4 dan
persamaan 2.12 pada dasar teori odometri. Karena nilai posisi bergantung dengan persamaan
3.4, selain nilai 𝜃 akan ditentukan saat percobaan dilakukan. Pada penentuan posisi robot 2,
posisi awal adalah berhadapan dengan robot 1. Dengan begitu, pada konversinya pada
bagian 𝜃 akan dikoreksi dengan ditambah 180°. Setelah itu, data dapat divisualisasikan.
START
RETURN
Base station menerimadata rotary encoder
Data dikonversi menjadix, y, dan θ
Data divisualisasikan
Gambar 3.10 Subrutin penentuan lokasi diri robot pada base station
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
3.3.2 Penentuan lokasi dummy robot dan bola
Pada penelitian ini, penentuan lokasi dummy robot dan bola menggunakan webcam
yang dipantulkan ke cermin cembung dan menjadi kamera omnidireksional. Warna dummy
robot ditentukan berwarna kuning, sedangkan bola berwarna jingga. Dengan begitu pada
database robot tersimpan kode warna yang akan dideteksi.
(x1,y1)
(x3,y3)
(x4,y4)
(x2,y2)
(x,y)
G2
G1
robot1
robot2
Gambar 3.11 Ilustrasi penentuan lokasi dummy robot dan bola
Berdasarkan pada dasar teori trigonometri dan line-line intersection, mengacu pada
persamaan 2.14 serta persamaan 2.16 dan 2.17 diperlukan empat koordinat x dan y supaya
perhitungan dapat dilakukan. Pada Gambar 3.11 ditunjukan ilustrasi penentuan lokasi
dummy robot dan bola. Nilai x1,y1 dan x3, y3 didapatkan dari posisi diri robot, kemudian
untuk mendapatkan nilai x2,y2 dan x4, y4 yaitu dengan menambahkan konstanta > 0 yang
dikalikan dengan proyeksi sudut menggunakan perhitungan trigonometri. Dengan begitu
didapatkan persamaan 3.5 dan persamaan 3.6.
𝑥2, 𝑦2 = 𝑥1 + 𝑘. cos(𝜃) , 𝑦1 − 𝑘. sin (𝜃)
𝑥4, 𝑦4 = 𝑥3 + 𝑘. cos(𝜃) , 𝑦3 − 𝑘. sin (𝜃)
(3.5)
(3.6)
Apabila pembagi dalam persamaan 2.16 atau 2.17 adalah nol, maka tidak ada titik
perpotongan dikarenakan sejajar.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
Gambar 3.12 Diagram alir penentuan lokasi dummy robot dan bola pada Rasberry Pi 1
Langkah-langkah pengolahan citra kamera omnidireksional diilustrasikan pada
Gambar 3.12. Pada awalnya base station akan mengirimkan perintah ke robot untuk tracking
kamera. Kemudian delay pada interval waktu yang ditentukan untuk mengurangi proses
yang sangat banyak. Juga, pengambilan data kamera omnidireksional dilakukan serentak
pada robot. Selanjutnya, apabila ada perintah stop, proses akan selesai. Akan tetapi jika
tidak, citra akan diproses ke poin A.
Pada poin A, data citra yang diambil melalui kamera omnidireksional akan melalui
tahap preprocessing image dan ekstraksi ciri menggunakan modul OpenCV. Selanjutnya,
apabila pada proses ekstraksi ciri, warna tidak terdaftar pada database maka akan kembali
ke poin B. Jika terdaftar, hasil ekstraksi ciri akan diolah dengan perhitungan trigonometri
dan didapatkan hasil berupa nilai sudut. Selanjutnya, data sudut dikirimkan ke base station
untuk dilakukan proses perhitungan line-line intersection lalu kembali lagi ke poin B.
Langkah-langkah penentuan lokasi dummy robot dan bola pada base station
diilustrasikan pada Gambar 3.13. Data sudut yang didapatkan dari dua robot didapatkan.
BSTOP
START
citra yang diambil darisensor kamera atas robot
Ekstraksi Ciri
Apakah warnaterdaftar di database?
PreprocessingImage data sudut dikirm
ke base station
Perhitungan trigonometriuntuk menghitung sudutterhadap heading robot
Base station mengirimperintah tracking kamera
B
A
Apakah adaperintah stop?
A
Delay
B
F
F
T
T
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
Setelah itu, mengacu persamaan 2.13. dan 2.14 akan didapatkan perkiraan koordinat. Data
koordinat akan diolah sebagai penentuan lokasi yang akan divisualisasikan.
START
STOP
Base station menerimadata dari dua robot
Apakah adaperintah stop?
Perhitunganline-line intersection
Data divisualisasikan
F
T
Gambar 3.13 Diagram alir penentuan lokasi dummy robot dan bola pada base
station
3.3.2.1 Subrutin preprocessing image
Pada Gambar 3.14, data citra diubah ukurannya dan disesuaikan dengan kebutuhan.
Selanjutnya dilakukan segmentasi HSV untuk memilah citra supaya dapat diidentifikasi
sesuai warna yang diinginkan. Kemudian yang terakhir adalah menghilangkan noise pada
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
citra supaya kualitas pengolahan citra lebih baik. Pada akhirnya citra yang sudah melalui
tahapan preprocessing dapat diolah.
START
RETURN
Input citra
Hasil preprocessing
Pembacaan citra
Mengubah ukuran citra
Menghilangkan noisepada citra
Segmentasi HSV
A
A
Gambar 3.14 Diagram alir subrutin preprocessing image
3.3.2.2 Subrutin ekstraksi ciri
START
RETURN
Hasil preprocessing
Hasil ekstraksi ciri
Masking berdasarkanwarna
Mencari contour
Gambar 3.15 Diagram alir subrutin ekstraksi ciri
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
Pada Gambar 3.15, hasil preprocessing dibuat mask untuk memfilter berdasarkan
warna yang diinginkan. Setelah itu dicari contour untuk memperoleh deretan objek yang
memiliki contour. Hasil contour adalah hasil ekstraksi ciri dan dapat diolah secara lanjut.
3.3.3 Perancangan komunikasi base station dengan robot
Permintaan koneksi WebSocket
Mengirim pesan
Mengirim ID BaseStation
Mengirim perintah kontrol
Mengirim data sensor
Permintaan koneksi WebSocket
Mengirim pesan
Mengirim ID robot
Mengirim perintah kontrol
Mengirim data sensor
Browser(Klien)
Node.js(Server)
RasPi(Klien)
kendalihardware
Tambah ke daftar koneksi
Gambar 3.16 Langkah komunikasi base station dengan robot
Komunikasi antara robot dan base station menggunakan wireless fidelity (Wi-Fi)
yang tersambung dengan pada jaringan yang sama. Hal ini diilustrasikan pada Gambar 3.16.
Node.js berperan sebagai server, sedangkan Raspberry Pi dan browser berperan sebagai
klien. Saat server dinyalakan dan merespon koneksi WebSockets pada klien, klien akan
mengirim nomor identitas. Identitas setiap klien ditunjukan pada Tabel 3.1. Identitas akan
ditambahkan ke daftar koneksi.
Tabel 3.1 Daftar Socket ID yang digunakan
Nama Socket ID Label Raspberry
Robot 1 Robot1A 1
Robot1B 2
Robot 2 Robot2A 1
Robot2B 2
Base station BaseStation
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
Kemudian, base station dan robot dapat berkomunikasi. Sever berperan sebagai
forwarder data supaya base station dapat mengirimkan perintah kontrol ke robot, sebaliknya
robot dapat mengirimkan data sensor ke base station.
3.3.4 Perancangan pengiriman data
Gambar 3.17 Contoh format pengiriman data
Dalam pengiriman data, data yang dikirimkan melalui protokol komunikasi
WebSocket berbentuk JSON. Juga, data yang dikirimkan hanya data real-time, sehingga
tidak pasti semua field dikirimkan. Tabel 3.2 merupakan daftar data yang diterima base
station dari robot. Contoh format pengiriman data menggunakan library Socket.IO yang
ditunjukan pada Gambar 3.17. Pada, setiap event ”data”, akan dikirimkan sebuah JSON yang
berisi seperti contoh data pada Tabel 3.2 dan Tabel 3.3. Lalu, akan diterima oleh server dan
ditambahkan ke database event “data” pada server.
Tabel 3.2 Daftar data yang diterima base station dari robot
Field Deskripsi Range data yang
dikirimkan Contoh data
moved Perubahan posisi x, y robot x: 0 s.d. 600,
y: 0 s.d 500 {‘moved’:[50,-50]}
rotated Perubahan sudut heading
robot dalam degree 𝜃: 0 𝑠. 𝑑. 359 {‘rotated’: 90}
BallFound Sudut deteksi bola 𝜃: 0 𝑠. 𝑑. 359 {‘BallFound’:15}
RobotNearby Posisi deteksi dummy robot x: 0 s.d. 600,
y: 0 s.d 500
{‘RobotNearby’:[25,
9]}
BallCaptured Kondisi tangkapan bola pada
gripper True atau false {‘BallCaptured’:true}
proV Nilai process value 𝑥, 𝑦, 𝜃
x: 0 s.d. 600,
y: 0 s.d 500,
𝜃: 0 𝑠. 𝑑. 359
{‘proV’:[60, 40, 90]}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
Data pada tabel 3.2 yang berbentuk JSON akan dikirimkan Raspberry Pi ke base
station. Base station akan mengonversi JSON menjadi tipe data objek, sehingga data dapat
diolah menggunakan JavaScript dalam pengolahan visualisasi.
Tabel 3.3 Daftar data yang dikirim base station ke robot
Field Deskripsi Range data yang
dikirimkan Contoh data
move Robot bergerak sebanyak x, y x: 0 s.d. 600,
y: 0 s.d 500 {‘move’:[50,-50]}
rotate Robot berputar sebanyak 𝜃
degree 𝜃: 0 𝑠. 𝑑. 359 {‘rotate’: 90}
kick Menendang sekarang True atau false {‘kick’:true}
stop Perintah penghentian aksi
tertentu move, rotate, kick {‘stop’:’move’}
CaptureBall Kondisi tangkapan bola pada
gripper True atau false {‘CaptureBall’:true}
setP Nilai setpoint 𝑥, 𝑦, 𝜃
x: 0 s.d. 600,
y: 0 s.d 500,
𝜃: 0 𝑠. 𝑑. 359
{‘setP’:[60, 40, 90]}
Tabel 3.3 merupakan daftar data yang dikirim base station ke robot. Data pada tabel
3.3 yang berbentuk JSON akan dikirimkan base station ke Raspberry Pi. Python akan
mengonversi JSON dan meneruskan ke hardware, sehingga data dapat diolah untuk
mengendalikan aktuator pada robot. Data setP yang sudah dideserialisasi Python akan
teruskan ke Arduino menggunakn protokol komunikasi serial.
Perintah stop berfungsi untuk menghentikan aksi tertentu yang sedang berjalan. Hal
ini berguna apabila terjadi perubahan kondisi, sehingga perintah baru dapat segera diberikan
dari base station ke robot.
3.3.5 Perancangan visualisasi
Secara garis besar, perancangan visualisasi akan dibuat dalam 1 halaman web
browser yang tidak memerlukan scroll. Seperti yang ditunjukan pada Gambar 3.18, isi dari
visualisasi ini antara lain:
1. Lapangan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
2. Robot 1 yang berwarna cyan
3. Robot 2 yang berwarna magenta
4. Tiga buah dummy robot yang berwarna kuning
5. Bola yang berwarna jingga
2 3
Gambar 3.18 Perancangan visualisasi
Pada lapangan, akan dibuat seperti pada Gambar 3.4, akan tetapi memiliki dimensi
600 x 450 piksel. Oleh sebab itu, elemen yang lain ukurannya akan disesuaikan mengikuti
dimensi tersebut. Pada Robot 1 dan Robot 2 secara garis besar akan dibuat dalam bentuk
yang sama tetapi memiliki ciri khas warna yang berbeda. Pada tiga buah dummy robot akan
dibuat berbentuk persegi panjang dengan warna kuning. Pada bola, akan dibuat berbentuk
lingkaran berwarna jingga. Apabila dalam praktiknya tidak dihasilkan bentuk dan warna
yang padu, akan disesuaikan kembali.
Setiap kotak grid pada lapangan merepresentasikan jarak 25 cm. Pada kotak nomor
2 akan diberikan keterangan mengenai posisi 𝑥 dan 𝑦 setiap robot, perputaran heading robot,
serta keterangan koneksivitas server, robot, dan base station. Lalu pada kotak nomor 3 akan
diberikan keterangan mengenai posisi dummy robot dan bola dalam bidang x dan y. Apabila
dalam praktiknya tidak dihasilkan layouting yang cocok, maka akan disesuaikan kembali.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
BAB IV
HASIL DAN PEMBAHASAN
Pada bab ini akan dibahas mengenai hasil dari perancangan yang telah dibuat di bab
3, perubahan perancangan, hasil perancangan hardware, hasil perancangan software, lalu
analisis hasil pengujian. Hasil pengujian digunakan untuk mengetahui kinerja sensor –
sensor dan aktuator serta kinerja algoritma yang digunakan pada penelitian ini. Data yang
diperoleh dari hasil pengujian akan dianalisis dengan tujuan sebagai catatan evaluasi robot
sepak bola beroda supaya dapat dikembangkan lagi ke depannya.
4.1. Perubahan perancangan
kameraomnidireksional
RasPi 2
Arduino
penendang
sensor jarak
gripper
rotary encoder
omniwheelkompas
servervisualisasi
ROBOT
BASE STATION BASIS KOMUNIKASI
BASIS TENGAH
BASIS BAWAH
Chandra
Hendrik
Chandra
Gambar 4.1 Perubahan diagram blok umum
Pada penelitian ini digunakan hanya 1 robot untuk diuji. Untuk menyesuaikan sistem
dengan Peraturan KRI 2021 divisi KRSBI Beroda, tim memutuskan untuk mengubah sistem
keseluruhan dan mereduksi beberapa komponen yang ada. Gambar 4.1 merupakan
perubahan diagram blok umum yang mengacu pada Gambar 1.1. Dengan demikian, 3
omniwheels dan sensor rotary encoder (yang sebelumnya adalah pengerjaan Hendrikus)
masuk dalam penelitian ini. Lalu, perancangan penentuan lokasi dummy robot dan bola tidak
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
dipakai karena dalam Peraturan KRI 2021 divisi KRSBI Beroda, posisi dummy robot akan
diundi penempatannya, serta pencarian bola sudah ada dalam penelitian Hendrikus. Oleh
sebab itu, kamera omnidireksional dalam penelitian ini tidak dipakai, sehingga dapat
digunakan dalam penelitian Hendrikus. Juga, kontrol PID tidak dipakai dalam penelitian ini
untuk menyederhanakan sistem dan supaya penelitian ini lebih fokus ke perancangan
visualisasi penentuan posisi diri robot, kontrol navigasi, dan komunikasi.
4.1.1 Perubahan Komponen Hardware
Pada penelitian ini terjadi perubahan jenis mikrokontroler Arduino dan sensor
kompas menjadi Arduino Due dan sensor kompas GY-26. Hal ini disebabkan oleh Arduino
Mega 2560 pada pin-pinya hanya beberapa yang bisa menjadi Pin Interupt yang membuat
kebutuhan pin kurang dan kecepatan proses sebesar 16 MHz, sedangkan pada Arduino Due
pada semua pin digital dapat dijadikan Pin Interupt dan kecepatan proses 84MHz yang
artinya Arduino Due cukup dan lebih cepat. Lalu, juga ditambahkan driver motor IBT-2,
motor DC 24V dengan sensor rotary encoder, dan 3 omniwheels diameter 10 cm.
4.1.2 Perubahan Diagram blok sistem dan interkoneksi sistem rangkaian
Browser
Raspberry Pi 3
Arduino Due
Modul nirkabel
Driver IBT2 BTS7960
MotorDC
3
3
3
RotaryEncoder
Kompas
Digital
socketIO
ROBOT
BASE STATION
Visualisasidan
Kontrol
Node.js
Gambar 4.2 Perubahan diagram blok sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
Pada Gambar 4.2 ditunjukan perubahan diagram blok sistem yang telah direalisasikan.
Dibandingkan dengan Gambar 3.1, perubahan yang ada yaitu penambahan driver motor dan
Motor DC, penggantian Arduino, dan penggunaan hanya 1 Raspberry Pi pada robot. Lalu,
pada Gambar 4.3 ditunjukan perubahan interkoneksi sistem rangkaian. Dibandingkan
dengan Gambar 3.3 perubahan adalah penambahan driver motor dan motor DC, sedangkan
pada koneksi kompas menggunakan protokol serial.
Base Station
Arduino
Raspberry Pi
rotaryencoder
rotaryencoder
rotaryencoder
kompas
serial
websocketDriverMotor
MotorDC
DriverMotor
MotorDC
DriverMotor
MotorDC
Gambar 4.3 Perubahan interkoneksi sistem rangkaian
4.1.3 Perubahan Data Komunikasi
4.1.3.1 Data Komunikasi Socketio
Tabel 4.1 Daftar Perubahan Socket ID yang digunakan
Nama Socket ID
Robot 1 Robot1B
Base station BaseStation
Pada Tabel 4.1 ditunjukan perubahan daftar Socket ID yang digunakan, perubahan
mengacu pada Tabel 3.1 dan perubahannya yaitu pada pengurangan jumlah robot dan pada
kolom Socket ID hanya menggunakan 1 Socket ID. Hal ini disebabkan karena pada robot
hanya menggunakan satu Raspberry Pi. Lalu, daftar data yang dirancang disesuaikan dengan
fokus penelitian ini, yaitu pada pergerakan dan perputaran. Daftar perubahan data yang
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
39
diterima base station dari robot ditunjukan pada Tabel 4.2, perubahan mengacu pada Tabel
3.2. Perubahan isi yaitu Field yang diterima hanya data moved dan data rotated.
Tabel 4.2 Daftar perubahan data yang diterima base station dari robot
Field Deskripsi Range data yang
dikirimkan Contoh data
moved Perubahan posisi x, y robot
dalam cm
x: 0 s.d. 600,
y: 0 s.d 500 {‘moved’:[50,-50]}
rotated Perubahan sudut heading
robot dalam degree 𝜃: 0 𝑠. 𝑑. 359 {‘rotated’: 90}
Daftar perubahan data yang dikirim base station ke robot ditunjukan pada Tabel 4.3,
perubahan mengacu pada Tabel 3.3. Perubahan isi yaitu Field yang diterima hanya data
move, data rotate, dan data stop, serta pada deskripsi rotate diganti menjadi robot berputar
menuju 𝜃 derajat yang sebelumnya adalah berputar sejauh 𝜃 derajat. Juga, data yang
dikirimkan Raspberry Pi hanya dikirimkan apabila terjadi perubahan untuk mengurangi
beban data.
Tabel 4.3 Daftar perubahan data yang dikirim base station ke robot
Field Deskripsi Range data yang
dikirimkan Contoh data
move Robot bergerak menuju x, y cm x: 0 s.d. 600,
y: 0 s.d 500 {‘move’:[50,-50]}
rotate Robot berputar menuju 𝜃
derajat 𝜃: 0 𝑠. 𝑑. 359 {‘rotate’: 90}
stop Perintah penghentian aksi
tertentu move, rotate {‘stop’:’move’}
4.1.3.2 Data Komunikasi Serial
Tabel 4.4 Daftar data yang diterima Raspberry Pi dari Arduino
Data Deskripsi
Range data
yang
dikirimkan
Contoh data
Kompas Nilai sudut yang dideteksi
sensor kompas 0 s.d. 359 {‘sudut’:[50,-50]}
Rotary
encoder
Nilai rotary encoder per
interval waktu dengan
urutan roda kiri, roda kanan,
lalu roda belakang
bilangan integer {‘perpindahan’:[−74, 79, 0]}
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
Protokol komunikasi antara Arduino dengan Raspberry Pi yaitu menggunakan
protokol komunikasi serial. Lalu, format komunikasi menggunakan format JSON yang
dikirimkan. Daftar data yang diterima Raspberry Pi dari Arduino ditunjukan pada Tabel 4.4.
Data diterima secara paket dan Arduino hanya mengirimkan data apabila terjadi perubahan
nilai pada pemrosesan sensor.
Tabel 4.5 Daftar data yang dikirim Raspberry Pi ke Arduino
Data Deskripsi Range data yang
dikirimkan Contoh data
Arah
pergerakan
robot
Nilai arah pergerakan yang
dihasilkan dari arctan (y/x) 0 s.d. 359 {‘atan’:371}
Kecepatan
gerak robot
Nilai PWM untuk robot
bergerak −255 s. d 255 {‘speed’:104}
Sudut robot Nilai sudut tujuan perputaran
robot 0 s.d. 359 {‘wt’:186}
Lalu, daftar data yang dikirim Raspberry Pi ke Arduino ditunjukan pada Tabel 4.5.
Pengiriman data arah pergerakan robot dan kecepatan gerak robot dikirim dalam satu paket
bersamaan, sedangkan data sudut robot dikirimkan secara terpisah. Data serial dikirimkan
saat diinginkan, dan penerimaan data serial diterima setiap interval waktu.
4.1.4 Perubahan Kontrol Navigasi Robot
START
masukan dari Arduinonilai kompas danrotary encoder
B
XY
XYmasukan setpoint
x, y atau θdari Base station
data setpoimtθdan
data nilai kompas
PerhitunganPosisi Relatif
Forward Kinematika
STOP
Apakah adaperintah stop?
Apakah adaperintah
berputar?
B
F
F
T
T
RotasiRobot
PerpindahanRobot
delay
θ
θ
Data x,y setpoint dan
data x,y rotary encoder
Gambar 4.4 Diagram alir kontrol navigasi robot pada Raspberry Pi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
Pada penelitian ini, kontrol navigasi dikontrol melalui base station. Diagram alir
kontrol navigasi robot pada Raspberry Pi ditunjukan pada Gambar 4.4, langkah -langkahnya
dimulai dari masukan data x, y, atau 𝜃 (setpoint)yang dikirimkan base station lalu di
konversi menjadi nilai relatif robot serta masukan data rotary encoder dan kompas yang
dikirimkan Arduino dikonversi menggunakan forward kinematika menjadi nilai x,y dan
dikonversi menjadi nilai relatif. Apabila perintah berputar adalah benar, maka data 𝜃 dari
setpoint dan data nilai kompas menjadi masukan subrutin rotasi robot. Apabila bernilai salah,
maka data x,y, dari setpoint dan x,y dari rotary encoder menjadi masukan subrutin
perpindahan robot. Apabila ada perintah stop, sistem akan berhenti, jika salah maka akan
delay supaya data asinkron yang lain bisa berjalan lalu menuju ke titik B.
Sebab kontrol PID tidak jadi digunakan dalam penelitian ini, untuk mengontrol
perpindahan dan perputaran robot, pada penelitian ini digunakan subtrutin perpindahan robot
dan subrutin rotasi robot. Dengan begitu subrutin kontrol PID pada Gambar 3.7 tidak
digunakan.
START
data kompas dan rotary encoder
dikirim ke Raspberry Pi
B
B
A
A
masukan data sudut arah,
kecepatan gerak,atau kecepatan putar
dari Raspberry
keluarankecepatan
3 omniwheels
F
STOP
Apakah adaperintah stop?
T
pembacaanrotary encoder
pembacaan kompas
Inverse Kinematika
Gambar 4.5 Diagram alir program pada Arduino
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
Lalu untuk pergerakan robot meliputi aktuator motor juga pembacaan nilai kompas dan
nilai rotary encoder diatur pada mikrokontroler Arduino. Diagram alir program pada
Arduino ditunjukan pada Gambar 4.5. Dimulai dari masukan data dari Raspberry Pi, data
tersebut kemudian akan dikonversi menjadi nilai perputaran setiap roda menggunakan
inverse kinematika pada persamaan 2.8. Lalu menuju ke titik A, proses subrutin pembacaan
kompas kemudian proses subtrutin pembacaan rotary encoder. Data kompas dan rotary
encoder dikirimkan ke Raspberry Pi, dan apabila ada perintah stop adalah benar maka akan
stop, apabila tidak maka akan menuju ke titik B.
4.1.4.1 Subrutin perpindahan robot
START
RETURN
kecepatan = negatif,nilai kecepatan dan arah
dikirim ke Arduino
kecepatan = positif,nilai kecepatan dan arah
dikirim ke Arduino
kecepatan = nol,nilai kecepatan dan arah
dikirim ke Arduino
jarak > batas + akurasi jarak < batas - akurasi
F F
T T
jarak = (dari rotary encoder)
batas = (dari setpoint)
arah (dari setpoint)
Gambar 4.6 Diagram alir subrutin kontrol perpindahan Robot
Diagram alir subrutin kontrol perpindahan robot ditunjukan pada Gambar 4.6. Data
masukan x,y dari setpoint dan x,y rotary encoder dikonversikan menjadi nilai jarak dan nilai
batas menggunakan persamaan 2.7. Juga, data x,y dari setpoint dikonversikan menjadi nilai
arah menggunakan persamaan 2.8. Lalu, apabila jarak lebih dari jumlah batas ditambah
akurasi bernilai benar maka kecepatan bernilai negatif, kemudian data arah dan kecepatan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
negatif dikirimkan ke Arduino dan return. Apabila jarak kurang dari jumlah batas dikurang
akurasi bernilai benar maka kecepatan bernilai positif, kemudian data arah dan kecepatan
positif dikirimkan ke Arduino dan return. Selanjutnya, apabila tidak keduanya maka
kecepatan bernilai nol, kemudian data arah dan kecepatan nol dikirimkan ke Arduino dan
return.
4.1.4.2 Subrutin perputaran robot
START
RETURN
Putar counter clockwisedikirim ke Arduino
Putar clockwisedikirim ke Arduino
Berhenti berputardikirim ke Arduino
error > 180
error <= akurasidan
error >= - akurasi
B
B
F
F
F
F
T
T
TT
target < 0
error < 0
target += 360
error +=360
error = target - sudut baca kompas
Gambar 4.7 Diagram alir subrutin kontrol perputaran robot
Diagram alir subrutin kontrol perpindahan robot ditunjukan pada Gambar 4.7. Data
masukan 𝜃 dari setpoint adalah sebagai target dan nilai kompas menjadi sudut baca kompas.
Apabila target bernilai negatif, maka akan ditambahkan nilai 360. Lalu, nilai error dihitung
dengan nilai target dikurangi nilai sudut baca kompas. Selanjutnya, apabila nilai error
bernilai negatif, maka akan ditambahkan nilai 360. Kemudian, apabila nilai error kurang dari
sama dengan akurasi dan lebih dari sama dengan nilai negatif akurasi, data berhenti berputar
akan dikirim ke Arduino dan return. Apabila bernilai salah, maka akan ada kondisi error
kurang dari 180. Apabila kondisi error kurang dari 180 adalah benar, maka data putar counter
clockwise akan dikirim ke Arduino dan return. Apabila kondisi error kurang dari 180 adalah
salah, maka data putar clockwise akan dikirim ke Arduino dan return.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
4.1.4.3 Subrutin pembacaan rotary encoder
Diagram alir subrutin pembacaan kompas ditunjukan pada Gambar 4.8. Dimulai,
apabila kondisi channel A sama dengan channel B bernilai benar, maka nilai pembacaan
dikurang 1, apabila bernilai salah nilai pembacaan ditambah 1. Lalu, nilai rotary encoder
sama dengan pembacaan dan pembacaan sama dengan nol kemudian retrun,
RETURN
START
F
T
A == B
pembacaan -= 1
pembacaan+= 1
nilai rotary encoder = pembacaanpembacaan = 0
Gambar 4.8 Diagram alir subrutin pembacaan rotary encoder
4.1.5 Perubahan Subrutin Penentuan Lokasi Diri Robot
START
masukan dari Arduinonilai kompas dan
rotary encoder
data x, y, dan nilai kompas
dikirim ke Base Station
A
A
Perhitungan KinematikaForward
PerhitunganPosisi Relatif
RETURN
Gambar 4.9 Subrutin penentuan lokasi diri robot pada Raspberry Pi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
Gambar 4.9 merupakan subrutin penentuan lokasi diri robot pada Rasberry Pi,
subrutin ini ditambahkan pada penelitian ini karena ada perubahan alur perhitungan pada
subbab 3.3.1.2. Dimulai dari masukan Arduino, data nilai kompas dan nilai rotary encoder
lalu dikonversi menggunakan forward kinematika dan dihitung posisi relatifnya, kemudian
data dikirim ke base station dan return.
START
Masukan dari Raspberry Pi
x,y, dan nilai kompas
Data divisualisasikan
RETURN
y = -y
Gambar 4.10 Subrutin penentuan lokasi diri robot pada base station
Lalu dilanjutkan subrutin penenutan lokasi diri robot pada base station seperti yang
ditunjukan pada Gambar 4.10 yang mengacu pada Gambar 3.10. Data dari Raspberry Pi yang
diterima adalah x,y, dan nilai kompas. Setelah itu, nilai y dinegasikan. Kemudian, data
divisualisasikan dan return.
4.2. Hasil Perancangan Hardware
4.2.1 Hasil Perancangan Robot
Gambar 4.11 merupakan hasil perancangan robot. Gambar 4.12 s.d. Gambar 4.14
merupakan hasil perancangan hardware robot. Dalam perancangan ini, ada tiga bagian untuk
peletakan komponen, yaitu bagian atas, belakang, dan bawah. Pada bagian atas adalah
komponen mikrokontroler Arduino, Raspberry Pi, dan sensor kompas, serta sumber
tegangan 12V,5V, dan 3,3V. Pada bagian belakang ada driver IBT dan sumber tegangan
24V. Pada bagian bawah jari-jari yang dibentuk 3 omniwheels sebesar 21 cm. Lalu, untuk
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
keterangan pada Gambar 4.11 s.d. Gambar 4.14 perancangan hardware ditunjukan pada
Tabel 4.6.
Gambar 4.11 Hasil perancangan robot
Gambar 4.12 Hasil perancangan hardware bagian atas
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
Gambar 4.13 Hasil perancangan hardware bagian belakang
Gambar 4.14 Hasil perancangan hardware bagian bawah
Tabel 4.6 Keterangan perancangan hardware
No Simbol Keterangan
1 s Penghubung Serial antara
Raspberry Pi dan Arduino
2 v Kabel power Raspberry Pi
3 R Raspberry Pi 3
4 A Arduino Due
5 C Kompas GY-26
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
Tabel 4.6 (lanjutan) Keterangan perancangan hardware
6 B Buck Converter 5V to 3.3 V
7 BU Buck Converter to USB 5V 2A
8 12V Sumber tegangan 12V
9 5V Sumber tegangan 5V
10 3.3 Sumber tegangan 3V
11 N Titik Ground
10 IBT Driver Motor IBT
12 24V Sumber tegangan 24V
13 V1 Motor Kiri
14 V2 Motor Kanan
15 V3 Motor Belakang
4.2.2 Sistem Kelistrikan
Baterai 24V
Baterai 12V
Step Down 5V
Step Down 3.3V
Driver IBT
SensorRotary Encoder
SensorKompas
Arduino DueRaspberry Pi
Motor DC
Gambar 4.15 Sistem pembagian daya
Sistem pembagian daya ditunjukan pada Gambar 4.15. Ada dua sumber daya utama,
yaitu baterai 12 volt dan baterai 24 volt. Baterai 12 volt digunakan untuk menghidupkan step
down 5 volt yang akan digunakan untuk menghidupkan Raspberry Pi, mikrokontroler driver
IBT, dan step down 3 volt. Step down 3 volt digunakan untuk daya 3 buah sensor rotary
encoder. Raspberry Pi digunakan sebagai sumber daya Arduino Due dan Arduino Due
digunakan sebagai sumber daya sensor kompas. Lalu, baterai 24 volt digunakan untuk
sumber tegangan input 24 volt pada driver IBT yang kemudian digunakan untuk memberi
tegangan pada motor.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
4.3. Hasil Perancangan Software
4.3.1 Hasil GUI visualisasi dan kontrol navigasi pada base station
Gambar 4.16 Hasil GUI visualisasi dan kontrol pada base station
Pada Gambar 4.16 ditunjukan hasil perancangan software visualisasi dan kontrol pada
base station. Base station berbasis web yang dapat dijalankan pada browser, pada penelitian
ini digunakan browser Microsoft Edge. Bagian-bagian dari tampilan base station ditunjukan
pada Tabel 4.7.
Tabel 4.7 Keterangan GUI visualisasi dan kontrol pada base station
No Keterangan
1 Visualisasi Robot
2 Kontrol Navigasi Robot
3 Keterangan Koneksi dan Logger
Pada bagian Visualisasi Robot, ditunjukan robot cyan dan robot magenta, lapangan,
dummy robot, dan bola. Robot di dalam visualisasi akan bergerak dan berputar apabila base
station menerima data ‘moved’ dan ‘rotated’. Pada bagian Kontrol Navigasi Robot,
ditunjukan label x, y, dan 𝜃 yang merepresentasikan lokasi dan heading robot. Di sebelah
kanan label, terdapat textbox untuk masukan kontrol dan tombol-tombol. Pada penelitian ini
tombol yang dipakai yaitu ‘Move’, ‘Rotate’, dan ‘Stop’. Tombol ‘Move’ berfungsi untuk
mengirimkan data ‘move’, ‘Rotate’ berfungsi untuk mengirimkan data ‘rotate’, dan ‘Stop’
berfungsi untuk mengirimkan data ‘stop’. Data-data tersebut dikirimkan ke Robot melalui
protokol socketio. Pada bagian Keterangan Koneksi dan Logger ditampilkan status koneksi
Server, Robot1, dan Robot2 serta penampilan data logger.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
4.4 Hasil Pengujian Sistem
Pada penelitian ini, sistem-sistem utama yang diuji meliputi pengujian perancangan
komunikasi base station-robot komunikasi socketio, komunikasi serial, perpindahan robot,
perputaran robot, kontrol navigasi dan penentuan posisi robot pada bidang x,y, dan sudut.
Nilai galat didapatkan dengan menggunakan persamaan 4.1.
𝑔𝑎𝑙𝑎𝑡 = |𝑎𝑘𝑡𝑢𝑎𝑙 − 𝑖𝑑𝑒𝑎𝑙| (4.1)
Nilai kesalahan didapatkan dengan menggunakan persamaan 4.2.
𝑘𝑒𝑠𝑎𝑙𝑎ℎ𝑎𝑛 =𝑔𝑎𝑙𝑎𝑡
𝑖𝑑𝑒𝑎𝑙∗ 100% (4.2)
4.4.1 Hasil Pengujian Komunikasi Base Station - Robot
pos1
pos2pos3
PC
Gambar 4.17 Ilustrasi pengambilan data komunikasi
Untuk melihat jarak terjauh base station dengan robot dapat berkomunikasi, dilakukan
pengujian pengiriman data dengan variasi jarak base station.
Tabel 4.8 Keterangan ilustrasi pengambilan data komunikasi
No Simbol Keterangan
1 PC Base station
2 Pos1 Posisi 1 robot
3 Pos2 Posisi 2 robot
4 Pos3 Posisi 3 robot
Pada Tabel 4.8 ditunjukan keterangan keberhasilan konektivitas, Ilustrasi posisi-posisi
robot dan base station ditunjukan pada Gambar 4.17. Pada Gambar 4.17 ditunjukan “PC”
sebagai base station yang diletakan pada luar pojok kanan atas lapangan posisi pertama robot
diletakan di tengah lapangan dengan jarak 4,5 m, posisi kedua robot diletakan di pojok kanan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
bawah lapangan dengan jarak 6,36 m, dan posisi ketiga robot diletakan di pojok kanan bawah
lapangan dengan jarak 12,72 m.
Gambar 4.18 Hasil komunikasi base station – robot
Tabel 4.9 Keterangan keberhasilan koneksivitas
No Simbol Jarak (m) Keberhasilan
2 Pos1 4,5 Berhasil
3 Pos2 6,36 Berhasil
4 Pos3 12,72 Berhasil
Pada Gambar 4.18 ditunjukan hasil komunikasi antara base station dengan robot.
Dari percobaan yang telah dilakukan, didapatkan bahwa robot dapat berkomunikasi dengan
base station dengan tingkat keberhasilan 100% pada semua jarak yang diuji, seperti yang
ditunjukan pada Tabel 4.9. Hal ini berpengaruh terhadap kestabilan konektivitas robot
dengan base station di seluruh cakupan lapangan .
4.4.2 Hasil Pengujian Perancangan Komunikasi Socketio
Gambar 4.19 Komunikasi socketio pada Raspberry Pi
Pada penelitian ini, data JSON dikirimkan ke base station dari Raspberry Pi apabila ada
perubahan data dari data penerima komunikasi serial, supaya pada data yang diterima base
station tidak crowded. Pada Gambar 4.19 ditunjukan hasil debug komunikasi socketio pada
Raspberry Pi secara dua arah. Komunikasi data-data yang terdapat pada Tabel 4.2 dan Tabel
4.3 berhasil dikirim dan diterima oleh base station dan Raspberry Pi. Dengan berhasilnya
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
komunikasi socketio, dapat dilakukan pengiriman data perintah untuk kontrol navigasi robot
dan penerimaan data untuk visualisasi posisi robot.
4.4.3 Hasil Pengujian Perancangan Komunikasi Serial
Gambar 4.20 merupakan hasil debug komunikasi dua arah antara Arduino dan
Raspberry Pi. Data yang dari Arduino dikirimkan apabila ada perubahan nilai pada sensor,
jadi tidak ada penumpukan data yang tidak diperlukan. Komunikasi data-data yang terdapat
pada Tabel 4.4 dan Tabel 4.5 berhasil dikirim dan diterima oleh Raspberry Pi dan Arduino.
Dengan berhasilnya komunikasi serial, dapat dilakukan pengiriman data perintah untuk
pergerakan robot dan penerimaan data dari sensor kompas dan sensor rotary encoder.
Gambar 4.20 Komunikasi serial Arduino – Raspberry Pi
4.4.4 Hasil Pengujian Perancangan Perpindahan Robot
Gambar 4.21 Pengukuran perpindahan visualisasi robot
Gambar 4.22 Pengukuran perpindahan nyata robot
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
Pada pengujian perpindahan robot, dilakukan pengujian dengan delapan variabel
masukan dengan pengulangan lima kali setiap variabelnya. Pengujian dilakukan pada
lapangan yang dirancangan menggunakan karpet, robot dikontrol melalui base station untuk
bergerak dengan perpindahan yang dinginkan. Pengujian perpindahan Visualisasi diukur
dengan melihat data rotary encoder yang telah dikonversi dalam nilai x dan y menggunakan
forward kinematika lalu dihitung jarakmya menggunakan persamaan 2.7 seperti yang
ditunjukan pada Gambar 4.21. Pengujian perpindahan nyata diukur menggunakan meteran
seperti yang ditunjukan pada Gambar 4.22.
Tabel 4.9 Hasil Pengujian Perpindahan Robot
No Nilai yang
diinginkan
Perpindahan Robot Kesalahan
Visualisasi
(cm)
Nyata
(cm) Visualisasi Nyata
1 25 24 23.8 4.00% 4.80%
25 23.8 23.7 4.80% 5.20%
25 23.7 23.4 5.20% 6.40%
25 23.6 23.3 5.60% 6.80%
25 23.8 23.3 4.80% 6.80%
2 50 49.2 49.8 1.60% 0.40%
50 49.2 49.7 1.60% 0.60%
50 46 46 8.00% 8.00%
50 49.5 49.8 1.00% 0.40%
50 46 46 8.00% 8.00%
3 75 71.7 71.5 4.40% 4.67%
75 72.2 71.5 3.73% 4.67%
75 71.4 71 4.80% 5.33%
75 72.4 72 3.47% 4.00%
75 72.5 72 3.33% 4.00%
4 100 96.4 95 3.60% 5.00%
100 99.7 98.5 0.30% 1.50%
100 96.1 95.2 3.90% 4.80%
100 96.4 95.4 3.60% 4.60%
100 96.2 96 3.80% 4.00%
5 125 122.3 121.5 2.16% 2.80%
125 123.6 123 1.12% 1.60%
125 123 122 1.60% 2.40%
125 122.8 121.5 1.76% 2.80%
125 123 122 1.60% 2.40%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
Tabel 4.9 (lanjutan) Hasil Pengujian Perpindahan Robot
6 150 146.6 145 2.27% 3.33%
150 146.3 144.5 2.47% 3.67%
150 146.3 144.1 2.47% 3.93%
150 146.4 144.5 2.40% 3.67%
150 146.3 144.8 2.47% 3.47%
7 175 174 171.3 0.57% 2.11%
175 173.8 171.6 0.69% 1.94%
175 173.4 171 0.91% 2.29%
175 172.1 174.7 1.66% 0.17%
175 173.2 170 1.03% 2.86%
8 200 196 193.5 2.00% 3.25%
200 197.1 194.2 1.45% 2.90%
200 197.8 195 1.10% 2.50%
200 197.3 194 1.35% 3.00%
200 196.7 193.5 1.65% 3.25%
Pada Tabel 4.9 ditunjukan hasil pengujian perpindahan robot. Dari data yang
didapatkan, kesalahan pada setiap peningkatan jarak semakin menurun. Kesalahan pada
perpindahan visualisasi yaitu 8%. Kesalahan perpindahan nyata yaitu 8% dari posisi
aktualnya pada setiap perpindahan yang ditempuh. Hal ini disebabkan oleh pengaruh slip
roda, sampling data pembacaan pada rotary encoder, dan akurasi perpindahan. Kesalahan
pada perpindahan berpengaruh terhadap ketepatan robot berpindah menuju lokasi yang
diinginkan dan perbedaan antara perbedaan nilai pada visualisasi dan pada kondisi nyata.
4.4.5 Hasil Pengujian Perancangan Perputaran Robot
Pengujian dilakukan dengan memutar robot melalui base station dengan nilai
perubahan sudut yang diinginkan. Pengujian perputaran visualisasi diukur dengan melihat
data kompas yang diterima di GUI seperti yang ditunjukan pada Gambar 4.23. Pengujian
perputaran nyata diukur menggunakan meteran seperti yang ditunjukan pada Gambar 4.24,
yang diukur adalah perpindahan posisi roda.
Gambar 4.23 Pengukuran perputaran visualisasi robot
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
Gambar 4.24 Pengukuran perputaran nyata robot
Gambar 4.25 Cara mengukur perputaran nyata robot
Nilai sudut aktual didapatkan dengan persamaan 4.4. menggunakan perhitungan
trigonometri dan sudut pada segitiga seperti yang ditunjukan pada Gambar 4.25. R adalah
jari-jari lingkaran yang dibentuk 3 omniwheels, d sebagai jarak antara titik awal dan titik
akhir.
𝑠𝑢𝑑𝑢𝑡𝑘𝑎𝑘𝑖 = [cos−1 (
𝑗𝑎𝑟𝑎𝑘
2𝑟) ,
𝑗𝑎𝑟𝑎𝑘
2≤ 𝑟
cos−1 (2𝑟
𝑗𝑎𝑟𝑎𝑘) ,
𝑗𝑎𝑟𝑎𝑘
2> 𝑟
] ; r = 21 (4.3)
𝑠𝑢𝑑𝑢𝑡 = [180 − 2 ∗ 𝑠𝑢𝑑𝑢𝑡𝑘𝑎𝑘𝑖 , 2 ∗ 𝑠𝑢𝑑𝑢𝑡𝑘𝑎𝑘𝑖 ≤ 180
2 ∗ 𝑠𝑢𝑑𝑢𝑡𝑘𝑎𝑘𝑖 , 2 ∗ 𝑠𝑢𝑑𝑢𝑡𝑘𝑎𝑘𝑖 > 180] (4.4)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
Tabel 4.10 Hasil Pengujian Perputaran Robot
No Nilai yang
diinginkan
Perputaran Robot Kesalahan
Visualisasi
(derajat)
Nyata
(derajat) Visualisasi Nyata
1 30 25 34.63 16.67% 15.43%
30 28 27.55 6.67% 8.17%
30 30 27.55 0.00% 8.17%
30 26 24.75 13.33% 17.51%
30 25 24.75 16.67% 17.51%
2 45 43 50.75 4.44% 12.79%
45 40 36.06 11.11% 19.86%
45 40 36.06 11.11% 19.86%
45 43 41.85 4.44% 7.00%
45 44 50.75 2.22% 12.79%
3 60 56 68.05 6.67% 13.41%
60 56 51.66 6.67% 13.90%
60 56 53.79 6.67% 10.34%
60 55 66.41 8.33% 10.68%
60 56 66.41 6.67% 10.68%
4 90 86 112.89 4.44% 25.43%
90 86 103.57 4.44% 15.08%
90 88 91.17 2.22% 1.30%
90 88 91.17 2.22% 1.30%
90 85 110.46 5.56% 22.73%
5 120 119 133.57 0.83% 11.31%
120 115 117.99 4.17% 1.67%
120 117 120.70 2.50% 0.58%
120 116 99.26 3.33% 17.28%
120 115 117.99 4.17% 1.67%
6 135 130 129.58 3.70% 4.01%
135 130 140.26 3.70% 3.90%
135 133 136.43 1.48% 1.06%
135 134 115.39 0.74% 14.52%
135 130 144.49 3.70% 7.03%
7 150 147 149.28 2.00% 0.48%
150 149 166.30 0.67% 10.86%
150 149 159.05 0.67% 6.03%
150 147 147.29 2.00% 1.81%
150 148 142.75 1.33% 4.84%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
Tabel 4.10 (lanjutan) Hasil Pengujian Perputaran Robot
8 180 165 166.30 8.33% 7.61%
180 183 162.30 1.67% 9.83%
180 179 168.81 0.56% 6.22%
180 185 162.30 2.78% 9.83%
180 177 180.00 1.67% 0.00%
Pada Tabel 4.10 ditunjukan hasil pengujian perputaran robot. Pada pengujiannya
dilakukan pengujian dengan delapan variabel masukan dengan pengulangan lima kali setiap
variabelnya. Dari data yang didapatkan, kesalahan pada setiap peningkatan jarak semakin
menurun. Kesalahan perputaran visualisasi yaitu 16,67%, sedangkan kesalahan perputaran
nyata yaitu 25,43%. Hal ini kemungkinan disebabkan oleh sampling data pembacaan
kompas saat robot berputar dan nilai akurasi perputaran. Kesalahan perputaran
mempengaruhi posisi heading robot dan menyebabkan perbedaan posisi heading robot pada
visualisasi dan pada kondisi nyata.
4.4.6 Hasil Pengujian Kontrol Navigasi dan Penentuan Lokasi Diri Robot
4.4.6.1 Sumbu X Dan Y
Gambar 4.26 Pengukuran posisi x dan y visualisasi robot
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
Gambar 4.27 Pengukuran posisi x dan y nyata robot
Pengujian dilakukan dengan mengontrol posisi akhir robot dan robot berpindah
sesuai arah dan jarak yang diinginkan. Pengujian posisi x dan y visualisasi diukur dengan
melihat nilai x dan y pada GUI seperti yang ditunjukan pada Gambar 4.26. Pengujian posisi
x dan y Nyata diukur menggunakan meteran seperti ditunjukan pada Gambar 4.27.
Representasi sudut yang dibentuk oleh perpindahan x dan y ditunjukan pada Tabel 4.11.
Tabel 4.11 Sudut Arah Percobaan Pada Penentuan Lokasi Diri Robot (𝜃)
No. Percobaan Sudut yang dibentuk (derajat)
1 0
2 180
3 90
4 270
5 60
6 135
7 330
8 200
Pada Tabel 4.12 ditunjukan hasil pengujian penentuan lokasi diri robot pada bidang
x dan y. Pada pengujiannya dilakukan pengujian dengan delapan variabel masukan dengan
pengulangan lima kali setiap variabelnya. Dari data yang didapatkan, kesalahan pada
visualisasi sumbu x yaitu 6% dan sumbu y 9%.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
Tabel 4.12 Hasil Pengujian Penentuan Lokasi Diri Robot (x,y)
No
Posisi
Sebelum
Posisi yang
diinginkan
Posisi akhir Kesalahan Galat
Visualisasi
(cm)
Nyata
(cm) Visualisasi
Nyata
(cm)
X Y X Y X Y X Y X Y X Y
1 300 245 300 145 300 149 304.5 146.7 0.00% 2.76% 4.5 1.7
300 245 300 145 300 149 305 147 0.00% 2.76% 5 2
300 245 300 145 300 154 305.2 148 0.00% 6.21% 5.2 3
300 245 300 145 300 150 305 146.7 0.00% 3.45% 5 1.7
300 245 300 145 300 158 306 147.7 0.00% 8.97% 6 2.7
2 300 145 300 245 300 245 302.8 245.5 0.00% 0.00% 2.8 0.5
300 145 300 245 300 241 301.5 243.2 0.00% 1.63% 1.5 1.8
300 145 300 245 300 238 305.5 241.3 0.00% 2.86% 5.5 3.7
300 145 300 245 300 241 305.3 243.6 0.00% 1.63% 5.3 1.4
300 145 300 245 300 237 301.5 242 0.00% 3.27% 1.5 3
3 300 145 200 145 201 145 196.5 152.5 0.50% 0.00% 3.5 7.5
300 145 200 145 204 145 198.4 156.5 2.00% 0.00% 1.6 11.5
300 145 200 145 204 145 193.6 156 2.00% 0.00% 6.4 11
300 145 200 145 204 145 198 155.5 2.00% 0.00% 2 10.5
300 145 200 145 204 145 198 152.2 2.00% 0.00% 2 7.2
4 500 245 400 245 403 245 392.6 252.5 0.75% 0.00% 7.4 7.5
500 245 400 245 395 245 398 251.5 1.25% 0.00% 2 6.5
500 245 400 245 395 245 397.3 252 1.25% 0.00% 2.7 7
500 245 400 245 395 245 398 246.5 1.25% 0.00% 2 1.5
500 245 400 245 395 245 397.8 248.8 1.25% 0.00% 2.2 3.8
5 300 245 387 195 387 195 303 151.5 0.00% 0.00% 84 43.5
300 245 387 195 387 198 300 152.5 0.00% 1.54% 87 42.5
300 245 387 195 381 198 300 154.2 1.55% 1.54% 87 40.8
300 245 387 195 378 200 302 153 2.33% 2.56% 85 42
300 245 387 195 381 198 300 153.7 1.55% 1.54% 87 41.3
6 300 245 372 315 360 320 360 324 3.23% 1.59% 12 9
300 245 372 315 360 320 361 322 3.23% 1.59% 11 7
300 245 372 315 358 318 361.5 318 3.76% 0.95% 10.5 3
300 245 372 315 360 320 363 322 3.23% 1.59% 9 7
300 245 372 315 360 320 361 321 3.23% 1.59% 11 6
7 300 245 213 201 213 195 200 242 0.00% 2.99% 13 41
300 245 213 201 219 198 205.5 240 2.82% 1.49% 7.5 39
300 245 213 201 226 201 206 244 6.10% 0.00% 7 43
300 245 213 201 226 201 206 243.5 6.10% 0.00% 7 42.5
300 245 213 201 220 198 206 245 3.29% 1.49% 7 44
8 300 245 264 345 269 343 285.5 345 1.89% 0.58% 21.5 0
300 245 264 345 270 340 282.5 342.5 2.27% 1.45% 18.5 2.5
300 245 264 345 271 339 285.5 342 2.65% 1.74% 21.5 3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
60
Tabel 4.12 (lanjutan) Hasil Pengujian Penentuan Lokasi Diri Robot (x,y)
300 245 264 345 270 342 282.5 343.5 2.27% 0.87% 18.5 1.5
300 245 264 345 270 339 283 343 2.27% 1.74% 19 2
Dalam data no 5, 7, dan 8, arah pergerakan robot yang diinginkan yaitu 60°, 330°,
dan 200° terlihat galat yang diperoleh lebih tinggi daripada percobaan yang lainnya yaitu
pada sumbu x sebesar 87 cm dan sumbu y 43,5 cm. Akan tetapi pada arah yang bernilai
sudut 8 arah mata angin: 0°, 45°,90°, 135°, 180°, 225°, 270°, dan 335° memiliki galat sudut
nyata pada sumbu x yaitu 1,5 cm dan sumbu y yaitu 1,5 cm.
Nilai galat ini disebabkan oleh keterbatasan perhitungan trigonometri pada
mikrokontroler dan perputaran roda. Nilai galat ini berpengaruhi terhadap arah pergerakan
robot dan terhadap visualisasi yang menyebabkan perbedaan posisi pada visualisasi dan pada
kondisi nyata.
4.4.6.2 Sumbu Sudut
Gambar 4.28 Pengukuran posisi visualisasi robot sumbu sudut
Gambar 4.29 Pengukuran posisi nyata robot bidang sudut
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
Pada pengujian posisi sudut robot dilakukan pengujian dengan delapan variabel
masukan dengan pengulangan lima kali setiap variabelnya. Pengujian dilakukan dengan
mengontrol posisi sudut akhir robot dan robot berputar sesuai sudut yang. Pengujian posisi
sudut visualisasi diukur dengan melihat data 𝜃 pada GUI seperti yang ditunjukan pada
Gambar 4.28. Pengujian sudut nyata diukur menggunakan meteran yang diukur adalah jarak
perpindahan perputaran roda terhadap titik acuan seperti yang ditunjukan pada Gambar 4.29,
lalu dikonversi menjadi sudut menggunakan persamaan 4.4. Yang dihitung adalah galat
sudut yang diinginkan terhadap posisi nyata.
Tabel 4.13 Hasil Pengujian Penentuan Lokasi Diri Robot (𝜃)
No
Sudut
yang
diinginkan
Sudut akhir Galat Arah
Putar Visualisasi
(derajat)
Nyata
(derajat)
Visualisasi
(derajat)
Nyata
(derajat)
1 0 4 8.19 4 8.19 CCW
0 5 8.19 5 8.19 CCW
0 4 2.73 4 2.73 CCW
0 0 2.73 0 2.73 CCW
0 2 21.96 2 21.96 CW
2 45 44 58.67 1 13.67 CW
45 48 45.00 3 0.00 CCW
45 49 45.00 4 0.00 CCW
45 42 61.43 3 16.43 CW
45 43 57.30 2 12.30 CW
3 90 85 94.09 5 4.09 CCW
90 86 90.00 4 0.00 CCW
90 92 103.67 2 13.67 CW
90 93 102.30 3 12.30 CW
90 86 100.93 4 10.93 CW
4 135 133 135.00 2 0.00 CCW
135 135 135.00 0 0.00 CCW
135 139 156.41 4 21.41 CW
135 138 155.57 3 20.57 CW
135 139 150.05 4 15.05 CW
5 180 185 201.96 5 21.96 CW
180 175 189.56 5 9.56 CCW
180 177 192.30 3 12.30 CCW
180 185 206.15 5 26.15 CW
180 184 201.96 4 21.96 CW
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
Tabel 4.13 (lanjutan) Hasil Pengujian Penentuan Lokasi Diri Robot (θ)
6 225 228 241.43 3 16.43 CW
225 220 234.56 5 9.56 CCW
225 225 230.46 0 5.46 CCW
225 227 237.30 2 12.30 CW
225 230 240.05 5 15.05 CW
7 270 273 280.93 3 10.93 CW
270 271 281.48 1 11.48 CW
270 267 285.05 3 15.05 CW
270 267 278.19 3 8.19 CCW
270 265 270.00 5 0.00 CCW
8 315 318 317.73 3 2.73 CCW
315 319 323.19 4 8.19 CCW
315 318 323.19 3 8.19 CCW
315 310 324.56 5 9.56 CW
315 312 323.19 3 8.19 CCW
Pada Tabel 4.13 ditunjukan hasil pengujian penentuan lokasi diri robot pada bidang
sudut. Dari data yang diperoleh, galat sudut visualisasi yaitu sebesar 5 derajat. Pada sudut
nyata sudut yang diperoleh bervariasi dan didapatkan galat 21,41 derajat, galat ini terjadi
saat robot berputar clockwise, sedangkan pada perputaran counter clockwise 15,05 derajat.
Hal ini disebabkan oleh sampling data pada pembacaan kompas saat robot berputar. Nilai
galat ini, berpengaruh terhadap posisi heading robot dan menyebabkan posisi sudut heading
robot tidak sesuai yang diinginkan dan pada pergerakannya di visualisasi berbeda dengan
arah di kondisi nyata.
4.5 Hasil Implementasi Motor
Gambar 4.30 Potongan progam pengendali motor pada Arduino
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
Gambar 4.30 merupakan potongan program pengendali motor pada Arduino, fungsi
tersebut berguna untuk membatasi kecepatan putar motor dan arah putar motor. Pada
penelitian ini PWM menggunakan frekuensi 1000 Hz dengan resolusi 8 bit. Jadi nilai
maksimal adalah ± 255 PWM. Lalu, pada Tabel 4.14 ditunjukan data RPM motor kiri,
motor kanan, dan motor belakang terhadap masukan PWM.
Tabel 4.14 Kecepatan motor terhadap PWM
No PWM Kecepatan Putar Motor (RPM)
Motor Kiri Motor Kanan Motor Belakang
1 50 13.8 13.8 14.1
2 60 16.6 16.6 16.9
3 70 19.4 19.4 19.9
4 80 23.1 23.2 23.8
5 90 26 26.1 26.8
6 100 28.8 28.8 29.5
7 110 32.5 32.8 33.3
8 120 35.3 35.6 36.2
Dari data yang diperoleh, motor belakang memiliki galat kurang lebih 0,7 rpm. Hal
ini berpengaruh terhadap gerakan robot terutama tidak bisa bergerak secara lurus pada arah
yang diinginkan.
4.6 Hasil Implementasi Rotary Encoder
Gambar 4.31 Potongan progam rotary encoder pada Arduino
Gambar 4.31 merupakan potongan program pembacaan rotary encoder pada Arduino,
fungsi tersebut akan aktif saat terjadi interupsi, setiap interupsi merepresentasikan pulsa
yang dihasilkan kanal dari sensor rotary encoder. Lalu, nilai akan dikumulasikan dalam
sebuah variabel. Pada penelitian ini, resolusi sensor rotary encoder per perputaran pada
setiap roda ditunjukan pada Tabel 4.15.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
Tabel 4.15 Nilai resolusi rotary encoder
No Rotary Encoder Resolusi Encoder (pulsa/rotasi)
1 Roda Kiri 1450
2 Roda Kanan 1478
3 Roda Belakang 1440
Nilai resolusi digunakan untuk menentukan banyaknya perpindahan setiap pulsa.
Lalu, nilai rotary encoder digunakan untuk menghitung perpindahan robot menggunakan
odometry untuk kontrol kapan robot harus berhenti dan untuk visualisasi posisi robot.
4.7 Hasil Implementasi Kompas
Gambar 4.32 Potongan progam pembacaan kompas pada Arduino
Pada Gambar 4.32, ditunjukan potongan program pembacaan kompas pada Arduino.
Pembacaan kompas dilakukan dengan cara mengirim data 0x31 melalui komunikasi serial
ke kompas. Lalu, kompas mengirimkan bit-bit data. Data yang digunakan adalah bit ke 3 s.d.
bit ke 4. Kemudian bit – bit tersebut dijumlahkan. Dengan begitu sudut dari pembacaan
sensor kompas didapatkan.
Tabel 4.16 Nilai pengujian kompas secara manual
No Sudut
(derajat)
Hasil Pengukuran
(derajat)
Galat
(derajat)
1 0 0 0
2 45 43 2
3 90 86 4
4 135 132 3
5 180 180 0
6 225 224 0
7 270 271 1
8 315 318 3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
Sebelum digunakan, kompas harus ditempatkan ke posisi yang sudah ditentukan, lalu
dilakukan kalibrasi. Sebab kerangka besi dan medan magnet komponen elektronis
mempengaruhi pembacaan kompas. Kalibrasi dilakukan dengan komunikasi serial
mengirimkan data 0xC0 ke kompas, lalu memutar robot dengan pelan sekitar 1 menit per
putaran. Lalu untuk menghentikan kalibrasi, data 0xC1 dikirimkan ke kompas. Pada Tabel
4.16 ditunjukan hasil nilai perolehan pengujuan kompas dengan diputar secara manual
dengan diputar ke arah sudut yang diinginkan. Didapatkan galat sebesar 4 derajat. Hal ini
berpengaruh terhadap batas perputaran robot. Kompas dapat digunakan sebagai heading
robot pada visualisasi.
4.8 Pengujian Nilai Akurasi Perpindahan Dan Perputaran Dalam penentuan perpindahan dan perputaran robot, kecepatan pergerakan robot
mempengaruhi pembacaan sensor rotary encoder dan sensor kompas.
Tabel 4.17 Nilai akurasi perpindahan
No Kecepatan
(PWM)
Step rata-rata
(pulsa/0,1detik)
Step rata-rata
(cm/0,1 detik)
1 30 80 pulse 0.2 cm
2 50 120 pulse 3 cm
3 70 180 pulse 5 cm
4 90 230 pulse 6 cm
5 100 225 pulse 7 cm
Pada Tabel 4.17, ditunjukan nilai akurasi perpindahan terhadap nilai kecepatan robot.
Nilai didapatkan dari menggerakan robot dengan kecepatan yang ditentukan, lalu nilai dari
sensor rotary encoder didapatkan. Dari data tersebut, semakin besar kecepatan robot
semakin tinggi nilai sampling pembacaan sensor rotary encoder.
Tabel 4.18 Nilai akurasi perputaran
No Kecepatan
(PWM)
Step rata-rata
(cm/0,1 detik)
1 30 2
2 50 4
3 70 5
4 90 8
Kemudian, pada Tabel 4.18, ditunjukan nilai akurasi perputaran terhadap nilai
kecepatan robot. Nilai didapatkan dari menggerakan robot dengan kecepatan putar yang
ditentukan, lalu nilai dari sensor kompas didapatkan. Dari data tersebut, semakin besar
kecepatan putar robot semakin tinggi nilai sampling pembacaan sensor kompas.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
Pada penelitian ini, untuk untuk menghindari osilasi digunakan akurasi ±4 cm untuk
perpindahan robot dengan kecepatan 65 PWM untuk kecepatan gerak robot, sedangkan
akurasi ±5 derajat untuk perputaran robot dengan kecepatan 50 PWM untuk kecepatan putar
robot. Juga, nilai-nilai tersebut digunakan untuk mendapatkan galat yang tidak terlalu besar
dan pergerakan tidak terlalu lambat.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Sistem yang dirancang berhasil diimplementasikan dan diuji. Dari hasil pengujian
serta pengambilan data dari robot serta base station, dapat disimpulkan sebagai berikut:
1. Komunikasi pengiriman dan penerimaan data antara robot dan base station berhasil
dilakukan dengan keberhasilan 100% pada posisi cakupan lapangan.
2. Robot dapat bergerak menuju perpindahan dengan keberhasilan 92%. Hal ini
dipengaruhi oleh nilai pembacaan rotary encoder dan perputaran roda.
3. Robot dapat berputar menuju perputaran yang diinginkan dengan keberhasilan
76,43%. Hal ini kemungkinan dipengaruhi oleh nilai pembacaan kompasdan
perputaran roda.
4. Robot dapat bergerak menuju arah dengan koordinat yang ditentukan dengan galat
pada sudut 8 arah mata angin pada sumbu x yaitu 1,5 cm dan sumbu y yaitu 1,5 cm.
Selain pada sudut tersebut, didapatkan galat pada sumbu x yaitu 87 cm dan sumbu y
yaitu 43,5 cm. Hal ini disebabkan oleh keterbatasan perhitungan trigonometri pada
mikrokontroler.
5. Robot dapat berputar menuju sudut yang ditentukan dengan galat 21,41 derajat saat
clock wise dan counter clock wise galat 15,05 derajat. Hal ini kemungkinan
dipengaruhi oleh pembacaan sensor kompas dan perputaran roda.
6. Kontrol navigasi dan visualisasi penentuan posisi diri robot berhasil dilakukan
melalui base station. Visualisasi memiliki keberhasilan 83,33%. Hal ini dipengaruhi
oleh pembacaan nilai sensor kompas dan nilai rotary encoder.
7. Sensor kompas dapat digunakan sebagai penentuan heading robot.
8. Sensor rotary encoder dapat digunakan sebagai penentuan lokasi diri robot.
5.2 Saran
Berdasarkan hasil penelitian ini, saran untuk pengembangan penelitian selanjutnya,
antara lain:
1. Pemakaian roda kecil dalam pembacaan rotary encoder, supaya mendapatkan
resolusi pembacaan yang lebih teliti.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
DAFTAR PUSTAKA
[1] Kemdikbud, 2018, BUKU PANDUAN KONTES ROBOT SEPAKBOLA INDONESIA
BERODA (KRSBI Beroda) 2019, Jakarta.
[2] WHO, 2020, Timeline: WHO's COVID-19 response,
https://www.who.int/emergencies/diseases/novel-coronavirus-2019/interactive-
timeline, diakses 7 November 2020.
[3] WHO, 2020, Coronavirus disease (COVID-19) advice for the public,
https://www.who.int/emergencies/diseases/novel-coronavirus-2019/advice-for-
public, diakses 7 November 2020.
[4] Kemdikbud, 2019, Kontes Robot Sepak Bola Indonesia Beroda (KRSBI) Beroda,
Petunjuk Pelaksanaan Kontes Robot Indonesia (KRI) Tahun 2019, Jakarta.
[5] Kemdikbud, 2020, Kontes Robot Sepak Bola Indonesia Beroda (KRSBI) Beroda
Daring 2020, Petunjuk Pelaksanaan Kontes Robot Indonesia (KRI) Tahun 2020,
Jakarta.
[6] Gusnadika, S.A.C., 2020, Visualisasi Posisi Robot Dan Bola Serta Strategi Bermain
Pada Robot Sepakbola, Tugas Akhir, Jurusan Teknik Elektro, FST, Universitas
Sanata Dharma, Yogyakarta.
[7] Bagaskara, N.S., 2020, Penggerak Dan Pengolah Posisi Robot Striker Pada Robot
Sepakbola, Tugas Akhir, Jurusan Teknik Elektro, FST, Universitas Sanata Dharma,
Yogyakarta.
[8] Holden, S., 2018, The Python Wiki, https://wiki.python.org/moin/FrontPage, diakses
30 November 2020.
[9] Raspberry Pi Foundation, 2020, Raspberry Pi 3 Model B,
https://www.raspberrypi.org/products/raspberry-pi-3-model-b, diakses 30
November 2020.
[10] Logitech, 2020, C270, https://www.logitech.com/id-id/product/hd-webcam-c270,
diakses 1 Desember 2020.
[11] OpenCV team, 2020, About, https://opencv.org/about/, diakses 1 Desember 2020.
[12] Canuma, P., 2018, Image Pre-processing, https://towardsdatascience.com/image-
pre-processing-c1aec0be3edf, diakses 9 Februari 2021.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
[13] Boyat, A.K., Joshi, B.K., 2015, Noise Models In Digital Image Processing, Signal
& Image Processing : An International Journal (SIPIJ) Vol.6, No.2, April 2015.
[14] OpenCV team, 2021. OpenCV modules, https://docs.opencv.org/master/, diakses 9
Februari 2021.
[15] Ippolito, P.P., 2019, Feature Extraction Techniques,
https://towardsdatascience.com/feature-extraction-techniques-d619b56e31be,
diakses 9 Februari 2021.
[16] Binatha, C, 2016, Hue Saturation Value (HSV) Color Space for Content based Image
Retrieval, IJERT Vol. 5 Issue 04 April 2016.
[17] Oliveira, H.P., Sousa, A.J., Moreira, A.P., Costa, P.J., Modeling and Assesing of
Omni-directional Robotswith Three and Four Wheels, IEEE International
Conference on Robotics and Automation 1:521 – 527 vol.1, Portugal, 2003.
[18] Inthiam, J., Deelerpaiboon, C., 2014, Self-Localization and Navigation of Holonomic
Mobile Robot using Omni-Directional Wheel Odometry, TENCON 2014 - 2014
IEEE Region 10 Conference.
[19] Rakhman, E., Basjaruddin, N.C., Susanto, V.E.P., 2019, Robot Mobile Otonom
Menggunakan Metode Odometry, Techné Jurnal Ilmiah Elektroteknika Vol. 18 No.
02 Oktober 2019 Hal 105 – 116.
[20] ----, ----, Datasheet 3-Axis Digital Compass IC HMC5883L, Honeywell.
[21] ----, ----, Datasheet ATMega 2560, Atmel.
[22] Goodwin, G.C., Graebe, S.F., Salgado, M.E., 2000, Control System Design, Prentice
Hall.
[23] Weisstein, Eric W., 2020, Trigonometry,
https://mathworld.wolfram.com/Trigonometry.html, diakses 30 November 2020.
[24] Weisstein, Eric W., 2020, Line-Line Intersection,
https://mathworld.wolfram.com/Line-LineIntersection.html, diakses 30 November
2020.
[25] OpenJS Foundation, 2021, Introduction to Node.js, https://nodejs.dev/learn, diakses
13 Februari 2021.
[26] OpenJS Foundation, 2021, Node.js Documentation, https://nodejs.org/en/docs/,
diakses 13 Februari 2021.
[27] Mozilla Foundation, 2020, JavaScript, https://developer.mozilla.org/en-
US/docs/Web/JavaScript, diakses 30 November 2020.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
[28] Mozilla Foundation, 2020, HTML,
https://developer.mozilla.org/id/docs/Web/HTML, diakses 30 November 2020.
[29] Mozilla Foundation, 2020, CSS, https://developer.mozilla.org/en-
US/docs/Glossary/CSS, diakses 30 November 2020.
[30] Refsnes Data, 2020, CSS Tutorial, https://www.w3schools.com/css, diakses 30
November 2020.
[31] ----, ---- , Introducing JSON, https://www.json.org/json-en.html, diakses 15 Februari
2021.
[32] PubNub Inc., 2021, WebSocketss vs Rest API: Understanding the Difference,
https://www.pubnub.com/blog/WebSocketss-vs-rest-api-understanding-the-
difference/, diakses 15 Februari 2021.
[33] Mozilla Foundation, 2020, WebSockets, https://developer.mozilla.org/en
US/docs/Web/API/WebSockets, diakses 30 November 2020.
[34] caniuse, 2021, Web Sockets, https://caniuse.com/#feat=WebSocketss, diakses 14
Februari 2020.
[35] socket.io, 2021, Introduction, https://socket.io/docs/v3, diakses 15 Februari 2021.
[36] Grinberg, M., 2018, python-socketio, https://python-
socketio.readthedocs.io/en/latest/, diakses 15 Februari 2020.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-1
Lampiran
Bagian program yang digunakan dalam Base Station untuk kontrol robot
sf.component('kontrol-lapangan', {
template: 'vw-halaman/vw-bagian/komponen/kontrol-lapangan/kontrol-lapangan.html'
}, (My, include, $item) => {
console.log($item);
let Lapangan = $item.lapangan;
let Tim = My.Tim = Lapangan.Tim;
My.Bola = Lapangan.bola;
My.whichDummy = 1;
My.DummyControl = [
{id: 3, x: 150, y: 160, occupy: 0},
{id: 8, x: 300, y: 160, occupy: 0},
{id: 6, x: 450, y: 160, occupy: 0},
{id: 2, x: 150, y: 260, occupy: 0},
{id: 7, x: 300, y: 260, occupy: 0},
{id: 5, x: 450, y: 260, occupy: 0},
{id: 1, x: 150, y: 360, occupy: 0},
{id: '', x: 0, y: 0, occupy: 0},
{id: 4, x: 450, y: 360, occupy: 0},
];
My.chooseDummy = function(item){
if(item.id === '') return; // ignore
// Reset
My.DummyControl.forEach(v => {
if(v.occupy === My.whichDummy){
v.occupy = 0;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-2
// Remove the obstacle data
Logic.pathObstacle(v.x, v.y, false);
}
});
// Mark it as active
item.occupy = My.whichDummy;
// Apply the position
Lapangan.Lawan[My.whichDummy].x = item.x;
Lapangan.Lawan[My.whichDummy].y = item.y;
// Update the obstacle data
// Jika tidak diupdate nanti path findingnya ngira disini bisa dilewati
Logic.pathObstacle(item.x, item.y, true);
}
// Kalo modif ini nanti direfresh lagi
My.Tombol = {
Kick(robot) {
robot.tendang();
robot.log("Tendang");
},
Grip(robot) {
robot.gripper();
robot.log("Gripper Nyala");
},
Pass(robot) {
robot.log("Mengoper bola");
Strategy.Action.OperBola();
},
Catch(robot) {
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-3
Strategy.Action.TangkapBola(robot, function(){
robot.log("Ball Captured");
});
},
Move(robot) {
let { prepare } = robot;
robot.moveTo(prepare.x, prepare.y);
},
Rotate(robot) {
let { prepare } = robot;
robot.rotate(prepare.rotasi);
},
Stop(robot) {
robot.stop('move');
robot.stop('rotate');
robot.stop('kick');
robot.log("Stop all");
},
Reset(robot) {
robot.log("Reset");
if (robot.id === 'Robot1') {
robot.x = 300;
robot.y = 245;
}
else if (robot.id === 'Robot2') {
robot.x = 0;
robot.y = 0;
}
},
Visualize(robot) {
robot.log("Visualisasi Klik ");
robot.visualize();
},
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-4
};
[Tim.Robot1, Tim.Robot2].forEach(val => {
val.prepare = {
x: 300, y: 225, rotasi: 0,
action: My.Tombol
}
});
});
Program yang digunakan dalam Raspberry Pi untuk pengiriman - penerimaan data serial,
kontrol perpindahan-perputaran robot, dan pengiriman data ke base station
import aioserial
import asyncio
import json
import time
import math
from config import AmbilData, Socket, Print
from custom.kinematika import kinematika_maju, relative
from custom.movement import perpindahan, perputaran
butuhData = False
stop = True
pindah = [0, 0]
rotar = [0, 0, 0]
kanan = 0
maju = 0
batasGerak = 0
batasRotasi = 0
cepat_putar = 0
gerak = ""
port = "/dev/ttyACM0"
port1 = "/dev/ttyACM1"
portWINDOWS = "COM12"
portWindows = "COM14"
dataSebelumnya = {'perpindahan': [0, 0, 0], 'sudut': 0}
dataDariArduino = {'perpindahan': [0, 0, 0], 'sudut': 0}
ambilDataRotasi = False
async def sendRotateToArduino(val, catat):
kirim = dict([("wt", val)])
kirim = json.dumps(kirim)+"\n"
await ser.write_async(kirim.encode())
if catat == True:
# data Untuk skripsi
Print.toArduino(kirim)
await asyncio.sleep(0.1)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-5
async def sendMoveToArduino(x, y, spd, catat):
sudut = round(math.degrees(math.atan2(y, x)))
if sudut < 0:
sudut += 360
kirim = dict([('atan', sudut), ("speed", spd)])
kirim = json.dumps(kirim)+"\n"
await ser.write_async(kirim.encode())
if catat == True:
# data Untuk skripsi
Print.toArduino(kirim)
await asyncio.sleep(0.1)
async def main_loop():
global dataDariArduino, dataSebelumnya
global butuhData
global ser
global pindah
global ambilDataRotasi
try:
ser = aioserial.AioSerial(portWINDOWS, 9600)
except:
try:
ser = aioserial.AioSerial(portWindows, 9600)
except:
try:
ser = aioserial.AioSerial(port, 9600)
except:
ser = aioserial.AioSerial(port1, 9600)
time.sleep(0.1)
while True:
try:
await asyncio.sleep(0.1)
if ser.isOpen():
terima = await ser.readline_async()
if str(terima, 'utf-8').rstrip() != "noChange":
dataDariArduino = json.loads(terima)
# Data skripsi
# Print.fromArduino(dataDariArduino)
else:
dataDariArduino = dataSebelumnya
if butuhData == True:
kirimServer = kinematika_maju(dataDariArduino["perpindahan"])
# print("geraknya apa == ", gerak)
pindah[0] += kirimServer[0]
pindah[1] += kirimServer[1]
rotar[0] += dataDariArduino["perpindahan"][0]
rotar[1] += dataDariArduino["perpindahan"][1]
rotar[2] += dataDariArduino["perpindahan"][2]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-6
if dataDariArduino['sudut'] != 0:
kompas = 359 - (dataDariArduino['sudut'])
else:
kompas = 0
robot_kanan, robot_maju = relative(
kanan, maju, kompas)
# dataDariArduino
Print.fromArduino(dataDariArduino)
# print(f"R-ENC {rotar}, MOVE {pindah}, COMPASS {kompas}")
if gerak == "move":
await perpindahan(pindah[0], pindah[1],
robot_kanan, robot_maju, kanan, maju, 0.65)
if dataDariArduino != dataSebelumnya:
await Socket.emit('data', {'moved': kirimServer[0:2]})
if gerak == "rotate":
await perputaran(kompas, batasRotasi, 50)
if dataDariArduino != dataSebelumnya:
await Socket.emit('data', {'rotated': kompas})
# await Socket.emit('data', {'rotated': 0})
dataSebelumnya = dataDariArduino
# Data skripsi
# Print.toServer(
# {'moved': kirimServer[0:2], 'rotated': dataDariArduino["sudut"]})
except Exception as e:
await asyncio.sleep(0.1)
print(e)
Socket.start_background_task(main_loop)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-7
Program yang digunakan dalam mikrokontroler Arduino
#include <ArduinoJson.h>
// PIN MOTOR PWM
// di hardware sebaliknya L-R R-L
#define kiri_RPWM 7
#define kiri_LPWM 6
#define kanan_RPWM 11
#define kanan_LPWM 10
#define blk_RPWM 9
#define blk_LPWM 8
//PIN MOTOR ENABLE
#define kiri_L_EN 26
#define kiri_R_EN 27
#define kanan_L_EN 22
#define kanan_R_EN 23
#define blk_L_EN 25
#define blk_R_EN 24
//Define direction
#define CW 1
#define CCW 0
//Setup Rotary Encoder
volatile int motor1Count = 0; //KIRI
int encoder1A = 37;
int encoder1B = 36;
volatile int motor2Count = 0; //KANAN
int encoder2A = 35;
int encoder2B = 34;
volatile int motor3Count = 0; //BELAKANG
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-8
int encoder3A = 33;
int encoder3B = 32;
int currentPwm1 = 100;
int currentPwm2 = 100;
int currentPwm3 = 100;
// Konstanta kinematika
const float cos_p120 = -0.5;
const float cos_m120 = -0.5;
const float sin_p120 = 0.8660;
const float sin_m120 = -0.8660;
// kinematika roda
int kanan, kiri, blk;
int arah_x, arah_y, arah_putar;
//speedFactor
//kiri Input1 = (float)motor1Count / 25.f + 104 / 25.f;
//kanan Input2 = (float)motor2Count / 25.22 + 114.39 / 25.22.f ;
//blk Input3 = (float)motor3Count / 24.163 + 91.7 / 24.163
//JSON Parser
float satan = 0;
float speed = 0;
float wt = 0;
StaticJsonDocument<200> doc;
StaticJsonDocument<200> dataTerima;
StaticJsonDocument<200> dataKirim;
String json;
char data[] =
"{\"perpindahan\":[0,0,0],\"sudut\":0}";
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-9
int x = 0, y = 0;
// Data sebelum
int pindah1 = 0, pindah2 = 0, pindah3 = 0, berputar = 0;
//Set Sampling time
int interval = 1000;
long t0, t1;
// Variable Kompass GY-26
char valorbyte[8];
int graus = 0, theta = 0;
int contador = 0;
byte valor = 1;
// Kalibrasi Kompas
float kali[] = {0, 0};
//^^^ GLOBAL VARIABLE ^^^//
void setup()
{
// put your setup code here, to run once:
Serial.begin(9600);
Serial1.begin(9600);
Serial2.begin(9600);
// Setup Motor
pinMode(kiri_L_EN, OUTPUT);
pinMode(kiri_R_EN, OUTPUT);
pinMode(kiri_LPWM, OUTPUT);
pinMode(kiri_RPWM, OUTPUT);
pinMode(kanan_L_EN, OUTPUT);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-10
pinMode(kanan_R_EN, OUTPUT);
pinMode(kanan_LPWM, OUTPUT);
pinMode(kanan_RPWM, OUTPUT);
pinMode(blk_L_EN, OUTPUT);
pinMode(blk_R_EN, OUTPUT);
pinMode(blk_LPWM, OUTPUT);
pinMode(blk_RPWM, OUTPUT);
pinMode(encoder1A, INPUT);
pinMode(encoder1B, INPUT);
pinMode(encoder2A, INPUT);
pinMode(encoder2B, INPUT);
pinMode(encoder3A, INPUT);
pinMode(encoder3B, INPUT);
//Set Callback
attachInterrupt(digitalPinToInterrupt(encoder1A), motor1interuptA, CHANGE);
attachInterrupt(digitalPinToInterrupt(encoder1B), motor1interuptB, CHANGE);
attachInterrupt(digitalPinToInterrupt(encoder2A), motor2interuptA, CHANGE);
attachInterrupt(digitalPinToInterrupt(encoder2B), motor2interuptB, CHANGE);
attachInterrupt(digitalPinToInterrupt(encoder3A), motor3interuptA, CHANGE);
attachInterrupt(digitalPinToInterrupt(encoder3B), motor3interuptB, CHANGE);
Serial.println("Serial READY");
//time pertama
t0 = millis();
interval = 200;
}
/////////////////////////////////////////////////////////////////////////////////////////////LOOOOOOOP/////////////
void loop()
{
terima(); //data terima dari raspberry
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-11
gerak(satan, speed, wt); //kontrol pergerakan motor sesuai arahr
leitura(); //baca kompas, disimpan di variable
tukang_kirim(0); // kirim data setiap 0.25 detik, rotary enc dan kompas
}
//////CALLBACK FUNCTION//////////////////////////
////interupts
////
void motor1interuptA()
{
if (digitalRead(encoder1A) == digitalRead(encoder1B))
{
motor1Count--;
}
else
{
motor1Count++;
}
}
void motor1interuptB()
{
if (digitalRead(encoder1A) == digitalRead(encoder1B))
{
motor1Count++;
}
else
{
motor1Count--;
}
}
void motor2interuptA()
{
if (digitalRead(encoder2A) == digitalRead(encoder2B))
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-12
{
motor2Count--;
}
else
{
motor2Count++;
}
}
void motor2interuptB()
{
if (digitalRead(encoder2A) == digitalRead(encoder2B))
{
motor2Count++;
}
else
{
motor2Count--;
}
}
void motor3interuptA()
{
if (digitalRead(encoder3A) == digitalRead(encoder3B))
{
motor3Count--;
}
else
{
motor3Count++;
}
}
void motor3interuptB()
{
if (digitalRead(encoder3A) == digitalRead(encoder3B))
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-13
{
motor3Count++;
}
else
{
motor3Count--;
}
}
//////KINEMATIKA/////////////////////////////////
void inv_kinematika(long int degrees)
{
int cosatan = anglookuptable(degrees, 1);
int sinatan = anglookuptable(degrees, 0);
kiri = -0.33 * cosatan - 0.58 * sinatan;
kanan = -0.33 * cosatan + 0.58 * sinatan;
blk = 0.66 * cosatan;
}
void gerak(long int degrees, float speed, float wt)
{
inv_kinematika(degrees);
roda_kiri(round(kiri * speed + wt / 3));
roda_kanan(round(kanan * speed + wt / 3));
roda_blk(round(blk * speed + wt / 3));
}
/////////////////////////////// PWM RODA
void roda_kiri(int power1)
{
if (power1 >= -255 & power1 <= 255 & power1 != 0)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
L-14
{
digitalWrite(kiri_R_EN, 1);
digitalWrite(kiri_L_EN, 1);
if (power1 < 0) //CCW
{
analogWrite(kiri_RPWM, 0);
analogWrite(kiri_LPWM, -power1);
}
else if (power1 > 0) //CW
{
analogWrite(kiri_LPWM, 0);
analogWrite(kiri_RPWM, power1);
}
}
else if (power1 == 0)
{
digitalWrite(kiri_R_EN, 0);
digitalWrite(kiri_L_EN, 0);
analogWrite(kiri_RPWM, 0);
analogWrite(kiri_LPWM, 0);
}
}
void roda_kanan(int power2)
{
if (power2 >= -255 & power2 <= 255 & power2 != 0)
{
digitalWrite(kanan_L_EN, 1);
digitalWrite(kanan_R_EN, 1);
if (power2 < 0) //CCW
{
analogWrite(kanan_RPWM, 0);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI