bab iii perancangan -...

29
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 smartphone android 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. Gambar 3.1. Blok Diagram Sistem Keseluruhan.

Upload: nguyendan

Post on 15-Mar-2019

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

smartphone android 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.

Gambar 3.1. Blok Diagram Sistem Keseluruhan.

Page 2: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

dengan menggunakan pin I/O.

Page 3: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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/Rx0 untuk 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 0

0 sampai 90

0 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

board mikrokontroler ATmega324.

Page 4: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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.

Gambar 3.3. Skema Board ATmega8.

Page 5: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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.

7. Tendang bola : melakukan gerakan menendang bola.

Page 6: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

Nilai Pan dan Tilt ketika

bola terkunci

Apakah

jarak bola jauh

atau dekat?

Dekati Bola

Cek Orientasi

Robot

Jauh Dekat

Apakah

memenuhi toleransi sudut

< 60 dan > -60 ?

Cek Posisi

Gawang

Memutari Bola

sampai orientasi

sesuai

YES NO

Tendang Bola

Apakah

memenuhi toleransi sudut

> -20 dan < 20 ?

Posisikan bola

untuk ditendang

Memutari bola

sampai orientasi

sesuai

YES NO

Page 7: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

Nilai Pan dan Tilt ketika

bola terkunci

Apakah

jarak bola jauh

atau dekat?

Dekati Bola

Cek Orientasi

Robot

Jauh Dekat

Apakah

memenuhi toleransi sudut

< 40 dan > -40 ?

Cek Posisi

Gawang

Memutari Bola

sampai orientasi

sesuai

YES NO

Tendang Bola

Apakah

robot searah dengan

gawang?

Posisikan bola

untuk ditendang

Memutari sampai

robot searah

dengan gawang

YES NO

Page 8: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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 di layar (x,y)

Start

filter warna bola

dan hitung COG

bola

apakah koordinat

bola berada di daerah

toleransi?

YEShitung selisih

koordinat bola

dengan daerah

toleransi

NO

ubah sudut servo

pan dan tilt sesuai

hasil perhitungan

nilai perubahan

sudut servo

Page 9: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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)

{

sudut pan - 3

}

Page 10: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

{

if(pusat bola < batas toleransi)

{

perhitungan

// fungsi perbedaan pixel pusat bola dengan pusat

// toleransi terhadap sudut pan saat ini

}

else if(pusat bola > batas toleransi)

{

perhitungan

// fungsi perbedaan pixel pusat bola dengan pusat

// toleransi terhadap sudut pan saat ini

}

else

perubahan sudut = 0;

}

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

{

if(pusat bola < batas toleransi)

{

perhitungan

// fungsi perbedaan pixel pusat bola dengan pusat

// toleransi terhadap sudut pan saat ini

}

else if(pusat bola > batas toleransi)

{

perhitungan

// fungsi perbedaan pixel pusat bola dengan pusat

// toleransi terhadap sudut pan saat ini

}

else

perubahan sudut = 0;

}

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

±10 derajat.

Page 11: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

kemudian digunakan untuk memperkirakan posisi bola terhadap robot.

Page 12: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

arah robot ?

panggil motion

putarpanggil motion

maju

apakah

nilai tilt<65 (bola

masih jauh)?

YES

NO

YES

start

end

NOcek

kembali

cek

kembali

Apakah

robot sudah berhenti

bergerak?

NO

set

counter

YES

Apakah

robot sudah berhenti

bergerak?

NO

set

counter

YES

Page 13: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

cek

kembali

Page 14: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

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

Page 15: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

ambil nilai kompas

(arah robot)

apakah arah

robot sesuai dengan

tolerasi +-40

derajat?

NO

end

hitung batas robot

untuk melakukan

motion geser

putar

YES

apakah

memenuhi

syarat untuk melakukan

motion geser

putar?

cek posisi bola

Panggil motion

geser memutar

YES

ambil nilai kompas

(arah robot) Panggil motion

geser

NO

apakah

bola masih

terlihat?

YES

endNO

Page 16: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

track posisi

gawang

end

Simpan sudut

simpangan

Update sudut

kompas

cari gawang

sampai terlihat

Apakah

gawang

dekat?

jumlahkan sudut

acuan ke gawang

dengan sudut pan

YESNO

Apakah

gawang terlihat di

sebelah kiri?

Apakah

gawang terlihat di

sebelah kanan?

lihat sebelah kirilihat sebelah

kanan

NONO

YES YES

apakah ada

gawang?

apakah ada

gawang?

Beri penanda siap

menendang

YESYES

A

A

Cek Orientasi

Page 17: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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.

start

cek posisi gawang

Posisi gawang

apakah di depan?

end

hitung batas robot

untuk melakukan

motion putar

memenuhi syarat

untuk melakukan motin

geser putar?

cek posisi bola

Panggil motion putar

pelan

sampai robot

mengarah ke gawang

YES

Panggil motion

geser

NO

YES

NO

Apakah gawang

ada di samping?

YESNO

beri penanda siap

menendang

gawang

tidak

terlihat

apakah bola

masih ada?

YES

endNO

Page 18: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

tengah-tengah layar. Berikut adalah gambar robot yang sudah berputar ke arah gawang.

Page 19: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

ketika robot sampai pada bola, bola sudah pas di kaki robot yang diinginkan.

Page 20: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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)

Tilt (derajat)

Page 21: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

Batas Kiri_2

Page 22: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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;

}

else if (bola berada di sebelah kanan kaki robot)

{

robot melakukan motion geser kanan sedang;

}

if (bola berada sangat dekat di sebelah kiri kaki robot)

{

robot melakukan motion geser kiri kecil;

}

else if (bola berada di sebelah kiri kaki robot)

{

robot melakukan motion geser kiri sedang;

}

if (bola sangat dekat di depan robot)

{

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.

Berikut adalah flowchart algoritma menendang bola.

Page 23: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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 motiontendang kanan

start

apakah sudah cek kompas?

end

YES

NO

panggil motion tendang kanan

cek kompas

cek gawangapakah

acuan menendang kaki kanan?

YES

panggil motion tendang kiri

NO

Page 24: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

END

START

Page 25: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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,

mula-mula pin clock dinyalakan selama 400us, kemudian di matikan selama 100us.

Page 26: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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)

{

char status,data;

status=UCSRA;

data=UDR;

if(data==stop)

{

if(flag==0)PORTD.4=1;

}

else if(data==move)

{

PORTD.4=0;

}

...

// 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

}

else if(receive==1)

{

delay_us(70);

temp=data_in;

dat+=temp<<count;

count++;

}

}

void main()

{

...

move=4;

stop=3;

receive=0;

dat=0;

count=0;

Page 27: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

36

temp=0;

while(1)

{

...

if(count>=4)

{

if(dat==stop)

{

flag=1;

putchar(stop);

}

else if(dat==move)

{

putchar(move);

flag=0;

}

dat=0;

count=0;

temp=0;

receive=0;

}

...

}

}

Pada program diatas, setiap ada sebuah pulsa dari pin clock dari Atmega324,

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

penerima perintah dari robot lain. Ketika ada perintah yang masuk melalui serial modul

Page 28: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

melaksanakan pengiriman data komunikasi terjadi di tengah-tengah proses tersebut.

Page 29: BAB III PERANCANGAN - repository.uksw.edurepository.uksw.edu/bitstream/123456789/9726/4/T1_612010003_BAB III... · Jika koordinat bola berada di luar batas toleransi, maka servo kepala

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

mikrokontroler ATmega324 dengan RCB-4.