• Tidak ada hasil yang ditemukan

T1 612010003 BAB III

N/A
N/A
Protected

Academic year: 2017

Membagikan "T1 612010003 BAB III"

Copied!
29
0
0

Teks penuh

(1)

10

BAB III

PERANCANGAN

Pada bab ini akan dijelaskan perancangan perangkat keras serta perangkat lunak

algoritma pergerakan dan komunikasi robot.

3.1.Gambaran Sistem

Sistem instruksi pergerakan pada robot dibagi menjadi 3 bagian utama, yaitu

smartphoneandroid sebagai main processor yang menentukan gerakan robot yang akan

dilakukan, mikrokontroler ATmega324 sebagai kontrol utama yang mengatur

kesinambungan antara prosesor utama dengan controller servo robot kondo KHR-3HV

(RCB-4) dan pemroses data komunikasi yang menggunakan mikrokontroler ATmega8

dengan modul bluetooth sebagai media komunikasinya. Berikut adalah diagram blok

dari sistem keseluruhan.

(2)

11

Penjelasan blok diagram sistem pada gambar 3.1. adalah sebagai berikut :

1. Bagian Prosesor Utama

Prosesor Utama yang digunakan dalam robot adalah sebuah smartphone

android dengan kamera yang dilepas dan diletakan pada servo pan - tilt. Dalam

smartphone ini algoritma pergerakan robot ditanamkan. Tugas utama dari

perangkat ini memproses gambar kamera yang diletakan di kepala robot

sebagai mata dan mengunci bola[8]. Kemudian menentukan pergerakan robot

berdasarkan posisi bola terhadap robot dan mengirimkan perintah berupa paket

data ke kontrol utama melalui koneksi bluetooth.

2. Bagian Kontrol Utama

Kontrol utama robot menggunakan mikrokontroler ATmega324 yang

bertugas mengolah perintah berupa paket data dari smartphone melalui

komunikasi serial bluetooth. Ada 3 macam perintah yang dikirim dari

smartphone yaitu perintah untuk menggerakan robot, perintah untuk

menggerakan servo kepala, dan perintah untuk berkomunikasi pada robot

teman.

Ketika perintah yang diterima mikrokontroler ATmega324 berupa

perintah motion, maka mikrokontroler akan mengirimkan paket data sesuai

dengan motion yang diinginkan ke kontroler servo RCB-4. Jika mikrokontroler

ATmega324 menerima perintah untuk menggerakan servo kepala, maka nilai

OCR1A/B akan berubah sesuai dengan sudut yang diinginkan. Sedangkan jika

perintah yang diterima mikrokontroler ATmega324 adalah perintah untuk

berkomunikasi pada robot teman, maka mikrokontroler ATmega324 akan

mengirimkan data ke mikrokontroler ATmega8 melalui pin I/O.

3. Bagian Komunikasi Robot

Pemroses data komunikasi menggunakan mikrokontroler ATmega8 yang

bertugas mengirimkan data ke robot teman dan menerima data dari robot teman

melalui bluetooth yang kemudian dikembalikan ke mikrokontroler ATmega324

(3)

12 3.2.Perancangan Perangkat Keras

Bagian perangkat keras terdiri dari board mikrokontroler ATmega324 dan board

mikrokontroler ATmega8.

3.2.1.Board Mikrokontroler ATmega324

Dalam mikrokontrol ini digunakan Tx0/Rx0untuk berkomunikasi dengan modul

bluetooth yang terkoneksi dengan smartphone android, sedangkan Tx/Rx1 digunakan

untuk mengirim perintah pada servo kontroler RCB-4. Kemudian timer 16bit digunakan

untuk menghasilkan Pulse Width Modulation (PWM) yang digunakan untuk mengontrol

servo pan dan tilt kepala robot.

Agar dapat bergerak dengan resolusi 10, nilai lebar pulsa harus dikonversi terlebih dahulu. Nilai lebar pulsa adalah nilai yang tersimpan dalam register OCR1,

kemudian dicari nilai OCR1 dimana servo bergerak sampai batas maksimalnya yaitu 00 sampai 1800 untuk servo pan dan 00 sampai 900 untuk servo tilt. Jika dimisalkan sudut pan yang diinginkan adalah sudut_pan dan sudut tilt yang diinginkan adalah sudut_tilt,

nilai OCR1 saat 00 adalah MIN dan nilai OCR1 saat sudut maksimal adalah MAX, maka untuk memperoleh resolusi pergerakan servo pan sebesar 10 digunakan perhitungan sebagai berikut:

�1 = � + � ∗ � _���

180

Sedangkan untuk memperoleh resolusi pergerakan servo pan sebesar 10 digunakan perhitungan sebagai berikut:

�1 = � + � ∗ � _ ��

90

Board ini juga digunakan untuk mengirimkan data komunikasi yang dikirimkan

melalui pin interrupt dan pin I/O ke board komunikasi yang kemudian diteruskan

dengan modul bluetooth ke robot lainya. Konfigurasi jalur data melalui I/O yang dibuat

akan dijelaskan pada bagian algoritma komunikasi robot. Berikut adalah skema dari

(4)

13

Gambar 3.2. Skema Board ATmega324.

3.2.2.Board Mikrokontroler ATmega8

Board mikrokontroler ATmega8 ini digunakan untuk menangani tugas

komunikasi data antar robot. Terdapat 2 macam komunikasi data yang terjadi pada

mikrokontroler ini yaitu data dari smartphone yang dikirim melalui board

mikrokontroler ATmega324 dan data yang akan dikirimkan ke robot lain menggunakan

modul bluetooth. Sistem yang dibuat untuk menangani kedua komunikasi data tersebut

akan dijelaskan pada bagian algoritma komunikasi robot. Berikut adalah skema dari

board mikrokontroler ATmega8.

(5)

14 3.3.Bagian Perangkat Lunak

Bagian perangkat lunak berisi algoritma pergerakan robot ketika bermain bola

dalam bentuk flowchart keseluruhan dan flowchart per-prosedur dan algoritma robot

berkomunikasi. Pada bagian ini akan dibandingkan algoritma baru yang dibuat dengan

algoritma robot saat R2C masih mengikuti KRSBI 2013.

3.3.1.Algoritma Keseluruhan

Algoritma keseluruhan robot adalah algoritma yang berisi semua pergerakan

robot ketika bermain dilapangan dan merespons segala kondisi bola, gawang, posisi

robot di lapangan, dan lainya. Pada dasarnya urutan pergerakan robot ketika bermain di

lapangan adalah sebagai berikut:

1. Tracking bola : melihat bola dan menggerakan servo pan dan tilt robot sampai

bola terlihat di tengah-tengah pandangan kamera.

2. Analisis posisi bola terhadap robot : menganalisis posisi bola berdasarkan

sudut servo pan dan tilt robot setelah melakukan tracking bola.

3. Mendekati bola : melakukan gerakan berjalan maju dan putar ditempat untuk

mendekati bola berdasarkan posisi bola terhadap robot.

4. Cek orientasi : membandingkan arah orientasi robot dengan arah orientasi

menyerang (arah gawang lawan) dan merubah arah orientasi jika tidak sesuai.

5. Cek gawang : mencari gawang lawan dan menyearahkan arah orientasi robot

untuk mengarahkan tendangan ke gawang lawan.

6. Posisikan diri menendang bola : memposisikan diri hingga bola berada tepat di

depan kaki kanan atau kiri, sehingga robot dapat menendang bola dengan baik.

(6)

15

Berikut adalah perbandingan flowchart algoritma yang baru dan yang lama.

Gambar 3.4. Flowchart Algoritma Keseluruhan yang Lama

Pada algoritma robot R2C yang lama bagian proses mendekati bola masih sering

stuck pada posisi bola tertentu dan masih menggunakan metode counter. Pada bagian

memposisikan diri untuk menendang bola, robot masih memerlukan waktu sangat lama

karena melakukan pergerakan yang tidak menghasilkan perpindahahan (geser kanan Analisis Posisi

Bola Terhadap Robot

(7)

16

kemudian geser kiri berulang-ulang). Pada bagian mengarahkan diri ke gawang, robot

sangat bergantung terhadap sudut servo dan kompas. Padahal sudut servo kepala kadang

tidak pas dengan gawang, dan kompas sangat rentan terhadap gangguan.

Gambar 3.5. Flowchart Algoritma Keseluruhan yang Baru

Pada dasarnya algoritma inti yang digunakan robot hampir sama. Namun pada

algoritma yang baru, semua proses di setiap blok flowchart pada gambar 3.5 dilakukan Analisis Posisi

Bola Terhadap Robot

(8)

17

optimalisasi bahkan ada beberapa proses yang diganti seperti algoritma saat akan

memposisikan bola untuk ditendang. Misalnya pada algoritma yang lama, robot akan

memutari bola sampai orientasi (sudut kompas) sesuai. Sedangkan algoritma yang baru

robot memutar sampai searah dengan gawang.

3.3.2.Algoritma Tracking dan Analisis Posisi Bola

Bagian pencitraan robot masih sama dengan yang lama, namun pada bagian

menentukan perubahan sudut servo kepala ketika robot melakukan tracking bola sudah

dioptimalkan dengan memperbaiki kontrol overshoot servo. Berikut ini adalah

flowchart dari bagaimana robot melakukan tracking bola.

Gambar 3.6. Flowchart Algoritma Tracking Bola.

Flowchart algoritma lama dengan yang baru adalah sama, karena algoritma

dasar yang digunakan sama dan perbedaannya terletak pada coding yang

diimplementasikan khususnya pada bagian menghitung selisih koordinat bola dengan

daerah toleransi. Untuk lebih jelasnya berikut adalah gambar vision kamera robot dan

daerah toleransi yang dimaksud. Resolusi gambar yang digunakan adalah 480x320

piksel. Sedangkan daerah toleransi adalah 30x20 piksel di tengah dan kotak bergaris

tebal adalah batas daerah toleransi.

koordinat kartesian bola berada di daerah

toleransi?

pan dan tilt sesuai hasil perhitungan

(9)

18

Gambar 3.7. Vision Robot dan Daerah Toleransi.

Bola dinyatakan terkunci atau sudah didapatkan ketika koordinat bola sudah

berada di dalam daerah toleransi. Jika koordinat bola berada di luar batas toleransi,

maka servo kepala robot akan bergerak sedemikian hingga koordinat bola dapat berada

di dalam batas toleransi. Pergerakan servo tersebut dikendalikan dengan algoritma

tracking bola yang akan dibandingkan menggunakan pseudo code. Berikut ini adalah

pseudo code algoritma yang lama.

if(pusat bola < batas toleransi – 100 piksel) {

sudut pan + 10 }

else if(pusat bola < batas toleransi - 50 piksel) {

sudut pan + 8 }

else if(pusat bola < batas toleransi - 20 piksel) {

sudut pan + 3 }

else if(pusat bola < batas toleransi - 10 piksel) {

sudut pan + 1 }

if(pusat bola > batas toleransi + 100 piksel) {

sudut pan - 10 }

else if(pusat bola > batas toleransi + 50 piksel) {

sudut pan - 8 }

else if(pusat bola > batas toleransi + 20 piksel) {

(10)

19

else if(pusat bola > batas toleransi + 10 piksel){ sudut pan - 1

}

Berikut ini adalah pseudo code algoritma yang baru.

if(sudut tilt besar) //jika bola dekat {

else if(sudut tilt kecil) //jika bola jauh {

Optimalisasi dilakukan pada proses menghasilkan nilai perubahan sudut servo.

Pada algoritma yang lama, perubahan sudut servo hanya memiliki 4 buah nilai yang

dihasilkan dari 4 buah perbandingan selisih koordinat pusat bola dengan daerah

toleransi. Selisih terbesar yang dibandingkan adalah 100 piksel dengan nilai perubahan

sudut servo ±10 derajat. Sehingga meskipun selisih koordinat bola dengan daerah

toleransi lebih besar dari 100 piksel, perubahan sudut servo yang bisa dihasilkan tetap

(11)

20

Pada algoritma yang baru, nilai perubahan sudut servo dihasilkan dengan

memasukan selisih koordinat bola dengan daerah toleransi ke dalam sebuah persamaan.

Persamaan tersebut didapat dari melakukan sampling nilai-nilai perubahan sudut servo

terhadap selisih koordinat bola dengan daerah toleransi yang kemudian dari data

tersebut dibuat grafik. Persamaan garis dari grafik tersebut kemudian digunakan untuk

menghitung perubahan sudut servo. Contoh grafik tersebut adalah sebagai berikut.

Gambar 3.8. Grafik Selisih Koordinat Bola dengan Batas Toleransi terhadap Perubahan

Sudut Servo.

Pada gambar 3.8, sumbu Y (d_Servo) adalah nilai perubahan sudut servo dan

sumbu X (d_K_Bola) adalah selisih koordinat bola dengan daerah toleransi. Sedangkan

persamaan tersebut adalah persamaan dari trendline grafik yang secara otomatis dibuat

dari program Microsoft Excel. Persamaan tersebut dapat berubah-ubah sesuai dengan

hasil sampling yang dilakukan. Sesuai dengan grafik tersebut, nilai perubahan sudut

servo kepala dapat berubah-ubah dengan nilai lebih banyak, hasilnya servo dapat

bergerak lebih halus dan cepat ketika merespon perpindahan bola.

Setelah proses tracking bola dilakukan, maka akan didapatkan nilai sudut pan

dan tilt servo ketika robot sudah mendapatkan bola. Sudut pan dan tilt tersebut

(12)

21 3.3.3.Algoritma Mendekati Bola

Optimalisasi kecepatan robot mendekati bola dilakukan dengan mengganti

metode pemanggilan motion yang sebelumnya menggunakan counter menjadi tanpa

menggunakan counter. Counter yang dimaksud adalah jumlah robot melakukan motion.

Misalnya dikirimkan perintah melakukan motion jalan maju dengan counter sebanyak 3,

maka robot akan melakukan motion jalan maju sebanyak 3 langkah. Robot dapat

bergerak dengan motion lain setelah counter tersebut selesai dilakukan. Berikut adalah

perbandingan flowchart algoritma lama dengan counter dengan algoritma yang baru

(tanpa counter).

Gambar 3.9.a. Flowchart Algoritma Lama Mendekati Bola Nilai Pan dan Tilt ketika

bola terkunci

apakah nilai pan >25 atau <-25 derajat dari

(13)

22

Gambar 3.9.b. Flowchart Algoritma Baru Mendekati Bola

Pada algoritma yang lama, pergerakan robot menjadi kurang peka terhadap

perpindahan bola. Misalnya ketika counter belum selesai dilakukan ternyata bola

berpindah, maka robot akan tetap melakukan motion sampai selesai baru kemudian

melakukan motion lain. Sedangkan pada algoritma yang baru, pemanggilan motion

tidak menggunakan counter. Sehingga dapat langsung merespon apabila terjadi

perpindahan bola yang membutuhkan pergantian motion.

3.3.4.Algoritma Cek Orientasi Robot

Cek orientasi robot perlu dilakukan untuk mengetahui posisi robot apakah

cenderung menghadap gawang sendiri atau cenderung menghadap gawang lawan.

Karena warna gawang sendiri dan lawan sama, maka robot dapat melakukan tendangan

ke gawang sendiri. Oleh karena itu sebelum melihat gawang, robot harus melakukan cek

orientasi agar gawang yang terlihat adalah gawang lawan.

Nilai Pan dan Tilt ketika bola terkunci

apakah nilai pan >25 atau <-25 derajat dari

arah robot ?

panggil motion putar

panggil motion maju

apakah nilai tilt<65 (bola

masih jauh)?

YES NO

YES

start

end NO cek

kembali

(14)

23

Pada proses robot melakukan cek orientasi, sudut toleransi diperkecil menjadi

±400 terhadap garis tegak lurus lapangan supaya kemungkinan robot dapat menangkap lokasi gawang di segala posisi menjadi lebih besar. Karena simpangan maksimal servo

pan kepala robot adalah ±800 maka diharapkan robot dapat melihat gawang pada posisi pinggir lapangan dengan toleransi sudut tersebut. Sehingga kemungkinan robot tidak

mendapatkan gawang dan menendang ke arah yang tidak seharusnya dapat diperkecil.

Pada bagian cek orentasi robot juga terdapat proses dimana robot bergerak

memutari bola. Pada bagian ini dilakukan sampling nilai sudut pan dengan cara

mencatat beberapa posisi bola dengan robot dimana ketika robot melakukan motion

geser memutar, robot tidak menyampar bola. Data tersebut kemudian diolah menjadi

grafik yang menghasilkan persamaan garis untuk menentukan batas kapan robot harus

melakukan motion geser memutar dan kapan robot harus bergeser dahulu sebelum

melakukan geser memutar. Berikut adalah grafik beserta persamaan garis yang dibuat

berdasarkan sampling.

Gambar 3.10. Grafik Sudut Tilt Terhadap Batas Putar (Y)

Pada gambar 3.10, sumbu Y adalah nilai batas robot melakukan motion geser

putar dan sumbu X adalah nilai sudut tilt. Jika sudut pan sudah ≥ batas, maka robot

dapat melakukan motion geser putar tanpa menyampar bola. Nilai sudut tilt dimulai dari

70 karena prosedur cek orientasi ini hanya dipanggil oleh main function setelah jarak

bola cukup dekat dengan robot atau sudut tilt sudah ≥ 700. Sedangkan persamaan tersebut adalah persamaan dari trendline grafik yang secara otomatis dibuat dari

(15)

24

sampling yang dilakukan. Sesuai dengan grafik tersebut, batas melakukan motion geser

putar dapat berubah-ubah sesuai dengan sudut tilt yang merepresentasikan jarak antara

bola dengan robot. Sehingga robot dapat memutari bola dengan baik dalam segala posisi

yang mungkin.

Berikut adalah flowchart dari algoritma cek orientasi, pada dasarnya algoritma

lama dan baru memiliki flowchart yang sama. Perbedaan hanya terletak pada toleransi

sudut dan batas robot melakukan motion geser memutar.

Gambar 3.11. Flowchart Algoritma Cek Orientasi

start

(arah robot) Panggil motion

(16)

25 3.3.5.Algoritma Cek Posisi Gawang

Pada bagian ini, dilakukan perubahan total algoritma robot dalam

memperkirakan posisi gawang. Pada algoritma robot yang lama, robot membutuhkan

sudut antara arah robot dengan titik pusat gawang yang diambil dari sudut pan kepala

robot. Dan kemudian robot bergerak memutar dengan menggunakan motion geser

memutar sampai arah robot sesuai dengan arah gawang, proses ini menggunakan

kompas dari smartphone yang sangat rentan gangguan dan memiliki toleransi yang

cukup besar. Berikut adalah flowchart algoritma yang lama.

Gambar 3.12.a. Flowchart Algoritma Cek Gawang yang Lama

start

(17)

26

Sedangkan algoritma yang baru adalah seperti flowchart berikut.

Gambar 3.12.b. Flowchart Algoritma Cek Gawang yang Baru

Pada algoritma yang lama, robot membutuhkan proses tracking gawang. Proses

ini seperti proses ketika melakukan tracking bola namun yang menjadi objek adalah

gawang. Karena proses tracking membutuhkan titik berat gawang berada di tengah

layar, maka dibutuhkan waktu yang cukup lama untuk menggerakan servo kepala

hingga memperoleh titik tengah gawang. Sedangkan algoritma robot yang baru hanya

membutuhkan posisi gawang apakah berada di depan, kanan, atau kiri robot. Untuk itu

robot hanya perlu melihat ke depan, kanan atau kiri tanpa melakukan tracking gawang.

(18)

27

Berikut ini adalah ilustrasi ketika robot melihat ke depan dan memperkirakan

posisi gawang.

Gambar 3.13. Robot Melihat Gawang

Pada gambar 3.13, robot disimbolkan dengan lingkaran dan tanda panah adalah

arah orientasi robot. Garis putus-putus pada gambar adalah jarak pandang kamera robot,

sedangkan bagian gawang yang diberi warna gelap adalah bagian gawang yang terlihat

oleh kamera. Kamera akan menangkap gambar seperti gambar berikut ini.

Gambar 3.14. Gawang di Kamera Robot

Dari gambar 3.14 kemudian gawang diperkirakan berada di sebelah kiri robot

dengan cara membandingkan piksel gawang yang terlihat dengan garis tengah gambar.

Jika gawang yang tergeteksi cenderung berada di sebelah kiri garis tengah gambar,

maka robot akan memutuskan bahwa gawang berada di sebelah kiri robot dan akan

berputar ke kiri sampai penglihatan robot penuh dengan gawang atau gawang berada di

(19)

28

Gambar 3.15. Robot Mengarahkan Diri Menghadap Gawang

Robot akan berputar sambil melihat gawang dan ketika sudah searah dengan

gawang robot akan berhenti dan melanjutkan proses berikutnya dalam main program.

Pada algoritma yang baru ini, pergerakan robot diubah menjadi tidak memutari bola

namun hanya berputar ditempat sehingga waktu yang dibutuhkan lebih cepat. Selain itu

algoritma yang baru tidak menggunakan kompas untuk acuan arah gawang, namun

menggunakan kamera yang melihat gawang secara realtime sehingga lebih akurat dan

dapat diandalkan.

3.3.6.Algoritma Memposisikan Diri Menendang Bola

Dalam bagian ini, algoritma baru menggunakan bantuan rute pergerakan robot

yang sesuai dengan kaki kanan dan kaki kiri robot. Rute ini di buat dengan melakukan

sampling posisi robot terhadap bola yang di representasikan dalam besaran sudut servo

pan dan tilt kepala robot.

Dengan bantuan rute ini, diharapkan robot dapat bergerak memposisikan diri

menendang bola dengan lebih akurat dan mampu melakukan tendangan menggunakan

kaki kanan maupun kaki kiri. Robot R2C tahun 2013 hanya bisa menggunakan kaki

kanan untuk menendang. Sehingga meskipun bola sudah pas di kaki kiri robot harus

bergeser agar bola berada di kaki kanan. Berikut adalah grafik dari rute yang dibuat agar

(20)

29

Gambar 3.16. Rute Pergerakan Robot

Grafik tersebut adalah batas-batas robot melakukan pergerakan, sehingga kaki

robot yang menjadi acuan menendang akan selalu berada di dalam batas-batas tersebut.

Sumbu X adalah sudut tilt yang merepresentasikan jarak bola tegak lurus (vertikal)

terhadap robot (semakin besar maka jarak bola dengan robot semakin dekat) dan sumbu

Y adalah sudut pan yang merepresentasikan posisi horizontal bola terhadap robot (titik

0 adalah posisi robot menengok ke kanan 900).

Grafik rute pada gambar 3.16 tidak simetris terhadap garis tengah pada nilai

sumbu Y (sudut pan) 900 (sudut pan ketika kepala robot lurus ke depan) karena peletakan mekanik kepala robot dan kamera tidak persis ditengah robot, sehingga nilai

yang didapatkan saat melakukan sampling juga tidak simetris. Persamaan garis pada

grafik kemudian digunakan untuk menentukan pergerakan robot. Rute ini dilakukan

setelah robot cukup dekat dengan bola (nilai tilt 700). Rute pergerakan, robot dan posisi bola dapat digambarkan sebagai berikut.

0 20 40 60 80 100 120 140

65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90

Route

batas kiri

batas kanan

batas kanan2

batas kiri2

mid

Pan (derajat)

(21)

30

Gambar 3.17. Rute Pergerakan terhadap Robot dan Bola

Ketika bola cenderung berada di sebelah kiri robot, maka robot akan

menggunakan batas kanan_2 dan batas kiri_2 sebagai rute pergerakan robot.

Sebaliknya, jika bola cenderung berada di sebelah kanan robot, maka akan digunakan

batas kanan dan batas kiri sebagai rute pergerakannya. Implementasi dari grafik rute

tersebut untuk menghitung batas pergerakan dan penentuan acuan kaki menendang

dapat dijelaskan pada pseudo code berikut ini.

HitungBatasPergerakan() {

if (bola dekat) {

if (bola cenderung di sebelah kanan) {

acuan pergerakan = kaki kanan; }

else if (bola cenderung di sebelah kiri) {

acuan pergerakan = kaki kiri; }

if (acuan pergerakan = kaki kanan) {

persamaan garis rute kaki kanan; }

else if (acuan pergerakan = kaki kiri) {

persamaan garis rute kaki kiri; }

} else

batas pergerakan = default ; }

Batas Kanan

Batas Kiri

Batas Kanan_2

(22)

31

Berikut adalah pseudo code dari implementasi perhitungan batas pergerakan

robot dalam pengambilan keputusan melakukan motion.

if (bola dekat) {

HitungBatasPergerakan();

if (bola berada sangat dekat di sebelah kanan kaki robot) {

robot melakukan motion geser kanan kecil; }

robot melakukan motion maju kecil; }

else if (bola dekat di depan robot) {

robot melakukan motion maju sedang; }

}

Dengan algoritma yang baru, robot dapat memposisikan diri untuk menendang

bola dengan lebih akurat karena menggunakan batas – batas pergerakan yang dihitung

dari hasil sampling di berbagai posisi bola dan efisien karena dapat menyesuaikan kaki

yang digunakan untuk menendang terhadap posisi bola.

3.3.7.Algoritma Menendang Bola

Pada algoritma yang baru, ditambahkan beberapa proteksi sebelum robot

menendang bola. Sebelum robot melakukan shooting, dipastikan robot telah melakukan

proses cek orientasi robot dan sudah melakukan cek posisi gawang. Sehingga

kemungkinan robot menendang ke arah yang tidak seharusnya dapat dihilangkan.

(23)

32

Gambar 3.18.a. Flowchart Algoritma Menendang Bola yang Lama

Gambar 3.18.b Flowchart Algoritma Menendang Bola yang Baru

Pada algoritma yang lama, robot hanya bisa menggunakan motion tendang

kanan. Sedangkan pada algoritma yang baru, karena robot sudah mampu memposisikan

diri untuk melakukan tendang kanan dan tendang kiri maka dapat digunakan kedua

motion tendang tersebut.

start

end panggil motion tendang kanan

start

apakah sudah cek kompas?

end YES

NO

panggil motion tendang kanan

cek kompas

cek gawang apakah

acuan menendang kaki kanan?

YES

panggil motion tendang kiri

(24)

33 3.3.8.Algoritma Komunikasi Robot

Pada komunikasi antar robot, digunakan bluetooth sebagai media komunikasi

data nirkabel. Bluetooth ini memiliki interface serial UART yang sudah berlevel

tegangan TTL sehingga dapat langsung digunakan dengan mikrokontroler ATmega8.

Algoritma dari komunikasi robot ini sederhana, ketika robot sudah dekat dengan bola

maka robot akan menginstruksikan robot lain untuk berhenti sampai robot

menginstruksikan untuk kembali bergerak. Berikut adalah flowchart algoritma

komunikasi robot.

Gambar 3.19. Flowchart Algoritma Komunikasi Robot

Pada bagian pengiriman data, data dikirimkan melalui pin I/O karena kanal

UART mikrokontroler ATmega324 sudah terpakai semua. Jalur data dibuat dengan 3

buah pin I/O dari ATmega324 sebagai clock, data, dan penanda (flag) robot berhenti

dari mikrokontroler ATmega8. Data yang akan dikirimkan hanya ada 2 macam yaitu

data untuk menginstruksikan robot lain berhenti dan data untuk menginstruksikan robot

lain bergerak kembali.

Oleh karena itu, jalur data hanya didesain untuk mengirimkan data berukuran 4

bit saja. Sehingga dapat memiliki 16 macam perintah yang berbeda meskipun hanya ada

Sudut tIlt kepala setelah mengunci bola

apakah > 70 derajat?

Instruksikan Robot Teman untuk

Berhenti

Instruksikan Robot Teman untuk

Bergerak

YES NO

Kirim Instruksi melalui bluetooth

(25)

34

2 macam perintah yang digunakan. Hal ini bertujuan untuk mempermudah jika suatu

saat algoritma komunikasi ini akan ditambahkan perintah-perintah yang lain. Berikut

adalah timing diagram dari jalur data Atmega324 (pengirim) dengan Atmega8

(penerima) ketika mengirimkan data berupa angka 13 (binernya 1101).

Gambar 3.20. Timing Diagram Jalur Data Atmega324 dengan Atmega8

Pada gambar 3.20, pin clock dihubungkan dengan pin eksternal interrupt

ATmega8 sedangkan pin data dihubungkan dengan pin I/O ATmega8. Data dikirimkan

dan diterima per-bit sesuai dengan clock yang diberikan, kemudian data diubah menjadi

desimal kembali di mikrokontroler ATmega8 dan dikirimkan melalui bluetooth. Berikut

adalah listing program pada ATmega324 yang digunakan untuk mengirim data ke

Atmega8.

1. dat=0;

2. shift=0x01;

3. clk=1;

4. delay_us(400); 5. clk=0;

6. delay_us(100); 7. for(i=0;i<4;i++)

8. {

9. clk=1;

10. delay_us(50);

11. dat=(val&shift)>>i; 12. shift<<=1;

13. delay_us(100);

14. dat=0;

15. clk=0;

16. delay_us(50);

17. }

Pada listing program diatas, dat adalah pin data, clk adalah pin clock, val

adalah variabel berisi data berukuran 8bit yang akan dikirimkan, shift adalah variabel

bantu untuk mengambil nilai per-bit dari variabel val. Cara kerja dari program tersebut,

(26)

35

Proses ini bertujuan untuk memberikan penanda bahwa data akan dikirim (mengirim

start bit). Kemudian proses pengiriman 4 bit data berlangsung pada baris ke 7. Operasi

dat=(val&shift)>>i; shift<<=1; pada baris ke 11 dan 12 berfungsi untuk

mengambil nilai biner bit ke-i variabel val yang diulang sebanyak 4 kali dari nilai i=0

hingga i=3. Sehingga data yang dikirimkan adalah 4 bit data dari variabel val.

Program pada ATmega8 yang digunakan untuk menerima data dari ATmega324

adalah sebagai berikut.

// USART Receiver interrupt service routine interrupt [USART_RXC] void usart_rx_isr(void) {

// External Interrupt 0 service routine interrupt [EXT_INT0] void ext_int0_isr(void) {

if(receive==0) {

delay_us(250);

if(PIND.2==1)receive=1;

// PIND.2 adalah pin yang tersambung pada // pin data Atmega324

(27)

36

maka rutin eksternal interrupt dari Atmega8 akan terpanggil. Ketika start bit diterima,

maka nilai variabel receive akan menjadi 1, variabel ini berfungsi untuk menandai

apakah start bit sudah di terima atau belum. Setelah start bit diterima, ketika ada clock

yang masuk akan diikuti dengan munculnya data. Oleh karena itu, isi dari rutin interrupt

setelah menerima start bit adalah program untuk mengkonversi data biner menjadi

desimal.

Setelah ke 4 bit data diterima, maka nilai variabel dat sudah berisi data yang

dikirimkan dari Atmega 324 dalam basis desimal. Jika nilai variabel dat adalah nilai

stop (integer 3), maka Atmega8 akan mengirimkan data stop tersebut melalui serial

menuju modul bluetooth yang kemudian dikirimkan menuju robot lain. Sedangkan jika

nilai variabel dat adalah nilai move (integer 4), maka Atmega8 akan mengirimkan

data move. Nilai stop dan move adalah nilai penanda yang sudah ditentukan untuk

menandai perintah apa yang akan dikirimkan ke robot lain. Setelah itu data variabel

-variabel yang digunakan direset untuk mempersiapkan data yang akan masuk

berikutnya.

Selain sebagai penerima, mikrokontrol ATmega8 juga digunakan sebagai

(28)

37

bluetooth, maka program akan masuk ke rutin serial interrupt. Jika data yang diterima

adalah stop, maka PORTD.4 (pin penanda) akan dinyalakan (bernilai High) untuk

menandai robot untuk berhenti. Sedangkan jika Sinyal penanda ini data yang diterima

adalah move, maka PORTD.4 akan dimatikan (bernilai Low) untuk memberikan

perintah kepada robot untuk bergerak kembali.

Variabel flag berfungsi sebagai penanda bahwa robot sudah dekat dengan bola

dan menjadi robot yang akan menendang bola. Jika nilai flag sudah 1 maka robot tidak

akan memproses perintah dari robot lain untuk berhenti (PORTD.4 tidak bisa High).

Pada mikrokontrol ATmega324, jika kondisi pin penanda dari ATmega8 tersebut Low

maka robot akan diperintahkan untuk standby (berhenti bergerak). Kemudian menunggu

sampai kondisi pin penanda dari ATmega8 tersebut High, baru kemudian robot dapat

melakukan perintah untuk melakukan motion kembali.

Sistem komunikasi ini sudah pernah diuji secara langsung dengan menggunakan

2 buah robot sekaligus saat R2C mengikuti KRSBI 2014. Namun saat itu sistem

komunikasi robot tidak berjalan dengan lancar, bahkan malah menimbulkan error pada

pemanggilan motion yang menyebabkan robot bergerak dengan tidak semestinya.

Kemudian dilakukan debugging dan ditemukan kesalahan pada pembagian task yang

menyebabkan terjadinya error tersebut. Berikut adalah task diagram dimana terdapat

gangguan pada pemanggilan motion.

Gambar 3.21.a. Task Diagram Sistem yang Lama

Dalam task diagram tersebut terlihat bahwa interrupt komunikasi antar robot

dapat mengganggu proses komunikasi ATmega324 dengan RCB4 jika interrupt untuk

(29)

38

Oleh karena itu interrupt tidak boleh menganggu program mikrokontroler sehingga

dibuat prioritas yang lebih tinggi untuk proses komunikasi ATmega324 dengan RCB4.

Sehingga ketika ATmega324 sedang berkomunikasi dengan RCB4, interrupt dapat

tetap terjadi namun task komunikasi tidak dijalankan sesudah proses tersebut selesai.

Setelah diperbaiki, task diagram menjadi seperti gambar berikut.

Gambar 3.21.b. Task Diagram Sistem yang Baru

Perbaikan dari sistem komunikasi tersebut dilakukan dengan memberikan

prioritas tertinggi pada task komunikasi data ATmega324 dengan RCB4, sehingga tidak

dapat terganggu oleh task pada interrupt komunikasi. Prioritas diberikan dengan

menggunakan 2 buah variabel penanda (sebut saja flag_RCB4 dan flag_com).

Jika komunikasi ATmega324 dengan RCB4 akan dimulai maka flag_ RCB4

akan diberi nilai 1. Kemudian pada awal program rutin interrupt komunikasi, flag_com

diberi nilai 1 untuk menandai bahwa ada interrupt komunikasi terjadi. Namun task

komunikasi tidak akan dijalankan jika flag_ RCB4 sudah bernilai 1. Setelah komunikasi

ATmega324 dengan RCB4 selesai, jika nilai flag_com adalah 1 maka akan dijalankan

task komunikasi yang pada interrupt komunikasi tidak dijalankan.

Dengan cara pemberian prioritas pada setiap tasi, task pada interrupt komunikasi

antar robot dapat berjalan dengan baik tanpa mengganggu komunikasi antara

Gambar

Gambar 3.1. Blok Diagram Sistem Keseluruhan.
Gambar 3.3. Skema Board ATmega8.
Gambar 3.4. Flowchart Algoritma Keseluruhan yang Lama
Gambar 3.5. Flowchart Algoritma Keseluruhan yang Baru
+7

Referensi

Garis besar

Dokumen terkait

Data primer didapat langsung dari hasil wawancara dan observasi.

Metode Penelitian yang digunakan oleh peneliti adalah metode penelitian kualitatif dengan menggunakan analisis framing “ Zhongdang Pan dan Gerald M. peneliti memilih

Sistem yang direalisasikan dalam skripsi ini adalah sebuah sistem yang digunakan untuk mempertahankan keseimbangan robot agar dapat berjalan dengan stabil saat

Pengujian Algoritma kedua berfokus pada proses robot setelah berhasil mengangkat baby cradle dengan lengan penjepit dan melakukan pencarian target tanda. secondary

cerita iklan sehingga ketika melihat televisi dan tidak sengaja melihat iklan M-150. ditonton dulu sampai paham walaupun harus beberapa

Sesuai Gambar 3.3, aktifitas guest yang dapat dilakukan setelah membuka sistem adalah melihat berita tentang PMI di wilayah Jateng, melihat profil masing-masing

Perancangan tersebut meliputi perancangan mekanik robot, board utama mikrokontroler ATmega8, driver motor utama, driver motor lengan packbot dan untai yang lainnya

Mikrokontroler akan mengirimkan perintah agar robot melakukan gerakan yang tidak berulang dalam bentuk paket data ke RCB-4 atau servo