bab iii perancangan -...
TRANSCRIPT
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.
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.
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.
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.
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.
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
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
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
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
}
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.
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.
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
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
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
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
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
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
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.
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.
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)
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
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.
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
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
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.
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;
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
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.
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.