• Tidak ada hasil yang ditemukan

TA : Pencarian Rute Terpendek pada Citra Labirin Menggunakan Algoritma Dijkstra sebagai Pemandu Gerak Micromouse Robot.

N/A
N/A
Protected

Academic year: 2017

Membagikan "TA : Pencarian Rute Terpendek pada Citra Labirin Menggunakan Algoritma Dijkstra sebagai Pemandu Gerak Micromouse Robot."

Copied!
118
0
0

Teks penuh

(1)

GERAK MICROMOUSE ROBOT

TUGAS AKHIR

Disusun Oleh:

Nama : Dwijaya Santoso NIM : 08.41020.0051 Program : S1 (Strata Satu) Jurusan : Sistem Komputer

SEKOLAH TINGGI

MANAJEMEN INFORMATIKA & TEKNIK KOMPUTER SURABAYA

(2)

vii

Micromouse Robot memiliki tujuan untuk menyelesaikan lintasan labirin yaitu menemukan rute dari titik start menuju finish dengan melewati rute terpendek. Dalam pencarian rute terpendek Micromouse Robot harus melakukan scaning area pada lintasan labirin secara langsung untuk menentukan bobot-bobot sebagai input algoritma pencari rute terpendek.

Dengan membuat aplikasi pada komputer yang terhubung dengan webcam, pengambilan citra dilakukan pada lintasan labirin kemudian diolah oleh aplikasi pada komputer hingga mendapatkan citra labirin dengan lintasan berwarna putih dan dinding berwarna hitam. Pada citra labirin hasil pengolahan dilakukan pencarian nodes, nodes yang didapat menjadi input algoritma Dijkstra untuk mencari rute terpendek dari titik start menuju titik finish yang hasilnya ditampilkan di aplikasi pada komputer tersebut. Nodes yang didapat juga dikirim ke Micromouse Robot, nodes yang terima menjadi input algoritma Dijkstra yang juga terdapat pada Micromouse Robot dan hasilnya pengolahannya merupakan penunjuk gerak robot tersebut.

(3)

x

ABSTRAKSI ... vii

KATA PENGANTAR ... viii

DAFTAR ISI ... x

DAFTAR TABEL ... xiii

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang Masalah ... 1

1.2 Perumusan Masalah ... 2

1.3 Pembatasan Masalah ... 3

1.4 Tujuan ... 3

1.5 Kontribusi ... 4

1.6 Sistematika Penulisan ... 5

BAB II LANDASAN TEORI ... 7

2.1 Penelitian Micromouse Robot oleh Rusmini Setiawardhana dan M. Iqbal Nugrah (2011) ... 7

2.2 Penelitian Micromouse Robot oleh Anita Nur Syafidtri (2010) ... 8

2.3 Algoritma Dijkstra ... 9

2.4 Pengolahan Citra ... 13

2.2.1 Kecerahan Gambar ... 13

2.2.2 Konversi Citra True Color ke Grayscale ... 13

2.2.3 Thresholding... 14

2.5 Mobile Robot ... 15

2.3.1 Power Management ... 16

2.3.2 Motor dan Gearboxes... 17

(4)

2.4.1 Analog to Digital Converter (ADC) ... 22

2.4.2 Komunikasi Universal Syncronous Asyncronous Receiver / Transmitter (USART) ... 25

2.7 Sensor Reflektansi Infra Red (IR) ... 28

BAB III METODE PENELITIAN ... 31

3.1 Perancangan Perangkat Keras ... 32

3.1.1 Perancangan Sensor Reflektansi IR ... 32

3.1.2 Perancangan Minimum System Pengendali Micromouse Robot ... 34

3.2 Perancangan Perangkat Lunak ... 38

3.2.1 Struktur Data ... 38

3.2.2 Perancangan Perangkat Lunak pada PC ... 40

A.Perbaikan Citra ... 42

B.Pencarian Node ... 44

C.Pengiriman Data Graf ke Mikrokontroler ... 51

3.2.3 Penerapan Algoritma Dijkstra ... 53

3.2.4 Perancangan Perangkat Lunak pada Mikrokontroler ATMega644P ... 58

A. Komunikasi Data dengan PC ... 60

B.Komunikasi Data dengan ATMega328P. ... 61

C.Penerimaan Data Graf dari PC ... 61

D. Pembacaan Data Sensor Reflektansi IR ... 63

3.2.5 Perancangan Perangkat Lunak pada ATMega328P ... 64

A.Komunikasi Data dengan ATMega644P ... 64

B.Penerimaan Data Vertex dari ATMega644P ... 65

BAB IV PENGUJIAN SISTEM... 67

4.1 Pengujian Sensor Reflektansi IR ... 67

(5)

4.1.2 Alat yang Digunakan ... 67

4.1.3 Prosedur Pengujian ... 67

4.1.4 Hasil Pengujian ... 68

4.2 Pengujian Aplikasi pada PC sebagai Pencari Node... 69

4.2.1 Tujuan ... 69

4.2.2 Alat yang Digunakan ... 69

4.2.3 Prosedur Pengujian ... 69

4.2.4 Hasil Pengujian ... 72

4.3 Pengujian Paket Data Rute Terpendek ... 82

4.3.1 Tujuan ... 82

4.3.2 Alat yang Digunakan ... 82

4.3.3 Prosedur Pengujian ... 83

4.3.4 Hasil Pengujian ... 87

4.4 Pengujian Pergerakan Micromouse Robot ... 97

4.4.1 Tujuan ... 97

4.4.2 Alat yang Digunakan ... 97

4.4.3 Prosedur Pengujian ... 97

4.4.4 Hasil Pengujian ... 100

BAB V PENUTUP ... 106

5.1 Kesimpulan ... 106

5.2 Saran ... 107

DAFTAR PUSTAKA ... 108

(6)

xiii

Tabel 2.1 Parameter motor pada 3π. ... 18

Tabel 2.2 Register ADCSRA. ... 23

Tabel 2.3 Konfigurasi clock ADC. ... 23

Tabel 2.4 Register ADMUX. ... 24

Tabel 2.5 Register SFIOR. ... 25

Tabel 2.6 Rumus perhitungan UBRR. ... 26

Tabel 2.7 Register UCSRA... 26

Tabel 2.8 Register UCSRB. ... 26

Tabel 2.9 Penentuan ukuran karakter komunikasi USART. ... 27

Tabel 2.10 Register UCSRC. ... 27

Tabel 3.1 Output algoritma pendeteksian dinding sisi depan titik pencarian terhadap arah hadap. ... 45

Tabel 3.2 Output algoritma pendeteksian dinding sisi kiri dan kanan titik pencarian terhadap arah hadap. ... 48

Tabel 3.3 Pendeteksian tikungan atau simpangan. ... 48

Tabel 3.4 Parameter komunikasi data dengan PC menggunakan protokol UART. ... 60

Tabel 3.5 Parameter komunikasi data dengan ATMega328P menggunakan protokol UART. ... 61

Tabel 3.6 Parameter ADC. ... 64

Tabel 3.7 Parameter komunikasi data dengan PC menggunakan protokol UART. ... 65

Tabel 4.1 Hasil pengukuran tegangan masing-masing sensor reflektansi IR.. ... 68

Tabel 4.2 Hasil pengujian aplikasi dan penghitungan node secara manual pada labirin. ... 72

(7)

Tabel 4.4 Kesesuaian rute hasil pengolahan aplikasi pada PC dengan pengolahan pada Micromouse Robot. ... 89 Tabel 4.5 Kesesuaian rute hasil pengolahan aplikasi pada PC dengan

pengolahan pada Micromouse Robot. ... 90 Tabel 4.6 Kesesuaian rute hasil pengolahan aplikasi pada PC dengan

pengolahan pada Micromouse Robot. ... 91 Tabel 4.7 Kesesuaian rute hasil pengolahan aplikasi pada PC dengan

pengolahan pada Micromouse Robot. ... 92 Tabel 4.8 Kesesuaian rute hasil pengolahan aplikasi pada PC dengan

pengolahan pada Micromouse Robot. ... 93 Tabel 4.9 Kesesuaian rute hasil pengolahan aplikasi pada PC dengan

pengolahan pada Micromouse Robot. ... 94 Tabel 4.10 Kesesuaian rute hasil pengolahan aplikasi pada PC dengan

pengolahan pada Micromouse Robot. ... 95 Tabel 4.11 Kesesuaian rute hasil pengolahan aplikasi pada PC dengan

(8)

xv

Gambar 2.1 Langkah-langkah solusi pada algoritma Dijkstra. ... 11

Gambar 2.2 Pololu 3π robot. ... 15

Gambar 2.3 Power managementpada 3π. ... 16

Gambar 2.4 Karakteristik motor 3π... 17

Gambar 2.5 Rangkaian elektronika 3π. ... 19

Gambar 2.6 Susunan kaki microcontroller ATMega644P. ... 21

Gambar 2.7 Prinsip dasar sensor reflektansi IR. ... 29

Gambar 2.8 Rangkaian dasar sensor reflektansi IR. ... 29

Gambar 3.1 Blok diagram keseluruhan sistem. ... 31

Gambar 3.2 Rangkaian sensor reflektansi. ... 33

Gambar 3.3 Susunan sensor pada Micromouse Robot. ... 34

Gambar 3.4 Rangkaian minimum system tambahan. ... 34

Gambar 3.5 Pin pada mikrokontroler ATMega644P yang terhubung dengan downloader. ... 36

Gambar 3.6 Interfacing LCD dan tombol ke mikrokontroler. ... 36

Gambar 3.7 Wizard window untuk mengatur LCD. ... 37

Gambar 3.8 Ilustrasi vertex dan edge. ... 38

Gambar 3.9 Ilustrasi hubungan antar vertex. ... 39

Gambar 3.10 (a) Bentuk node suatu persimpangan pada lintasan (b) Ilustrasi bentuk struktur data graf. ... 40

Gambar 3.11 Flowchart aplikasi pada PC. ... 41

Gambar 3.12 Flowchart proses pencarian node. ... 44

Gambar 3.13 Flowchart algoritma Dijkstra... 54

(9)

Gambar 4.1 Tampilan program pengolahan citra labirin dan pencarian node .. 70

Gambar 4.2 Menu pemilihan webcam yang digunakan untuk pengambilan citra labirin. ... 70

Gambar 4.3 Setting icon. ... 70

Gambar 4.4 Tampilan pengaturan pengolahan citra. ... 71

Gambar 4.5 Tombol Scan untuk mengambilan citra dan memulai proses pencarian node. ... 71

Gambar 4.6 Citra labirin bentuk ke-1. ... 73

Gambar 4.7 Citra labirin bentuk ke-1 yang sudah ditandai secara manual. ... 73

Gambar 4.8 Node yang dapat dideteksi pada citra labirin bentuk ke-1 menggunakan aplikasi pada PC. ... 74

Gambar 4.9 Citra labirin bentuk ke-2. ... 75

Gambar 4.10 Citra labirin bentuk ke-2 yang sudah ditandai secara manual. ... 75

Gambar 4.11 Node yang dapat dideteksi pada citra labirin bentuk ke-2 menggunakan aplikasi pada PC. ... 76

Gambar 4.12 Citra labirin bentuk ke-3. ... 77

Gambar 4.13 Citra labirin bentuk ke-3 yang sudah ditandai secara manual. ... 77

Gambar 4.14 Node yang dapat dideteksi pada citra labirin bentuk ke-3 menggunakan aplikasi pada PC. ... 78

Gambar 4.15 Citra labirin bentuk ke-4. ... 79

Gambar 4.16 Citra labirin bentuk ke-4 yang sudah ditandai secara manual. ... 79

Gambar 4.17 Labirin bentuk ke-4 yang terdapat lebar jalur lebih dari 1 cell. ... 80

Gambar 4.18 Citra labirin bentuk ke-5. ... 81

Gambar 4.19 Citra labirin bentuk ke-5 yang sudah ditandai secara manual. ... 81

Gambar 4.20 Node yang dapat dideteksi pada citra labirin bentuk ke-5 menggunakan aplikasi pada PC. ... 82

Gambar 4.21 Tombol Start. ... 84

Gambar 4.22 Pemilihan node sebagai titik start. ... 84

(10)

Gambar 4.24 Pemilihan node sebagai titik finish. ... 85

Gambar 4.25 Tombol download. ... 86

Gambar 4.26 Nilai-nilai arah rute terpendek. ... 86

Gambar 4.27 Rute ke-1 pada labirin bentuk ke-1. ... 88

Gambar 4.28 Rute ke-2 pada labirin bentuk ke-1. ... 89

Gambar 4.29 Rute ke-3 pada labirin bentuk ke-1. ... 90

Gambar 4.30 Rute ke-1 pada labirin bentuk ke-2. ... 91

Gambar 4.31 Rute ke-2 pada labirin bentuk ke-2. ... 92

Gambar 4.32 Rute ke-3 pada labirin bentuk ke-2. ... 93

Gambar 4.33 Rute ke-1 pada labirin bentuk ke-3. ... 94

Gambar 4.34 Rute ke-2 pada labirin bentuk ke-3. ... 95

Gambar 4.35 Rute ke-3 pada labirin bentuk ke-3. ... 96

Gambar 4.36 Tombol Start ... 98

Gambar 4.37 Pemilihan node sebagai titik start ... 98

Gambar 4.38 Tombol finish ... 99

Gambar 4.39 Pemilihan node sebagai titik finish ... 99

Gambar 4.40 Tombol download ... 100

Gambar 4.41 Rute ke-1 ... 101

Gambar 4.42 Rute ke-2 ... 101

Gambar 4.43 Rute ke-3 ... 102

Gambar 4.44 Rute ke-4 ... 102

(11)

1 1.1 Latar Belakang Masalah

Salah satu robot yang menarik dan banyak dikembangkan yaitu Micromouse robot. Micromouse robot merupakan salah satu mobile robot yang memiliki tujuan untuk menyelesaikan lintasan berupa labirin, sehingga robot dapat menemukan tempat yang dituju melalui rute dengan jarak yang terpendek. Penelitian terhadap Micromouse Robot untuk mencari jalur terpendek pada lintasan labirin telah dilakukan Rusmini Setiawardhana dan M. Iqbal Nugrah dengan menggunakan algoritma backtracking. Pada penelitian Anita Nur Syafidtri, Micromouse Robot untuk mencari jalur terpendek dari titik start ke finish pada lintasan labirin menggunakan algoritma Depth-First Search.

Pada penelitian yang telah dilakukan tersebut dalam menyelesaikan solusi jalur terpendek dari titik start ke finish, Micromouse Robot harus melakukan scanning area secara langsung untuk mendapatkan data-data bobot sebagai input algoritma pencari jalur terpendek dengan cara melalui semua jalan di dalam lintasan labirin. Pada proses tersebut tentunya memerlukan waktu yang relatif lama tergantung besar area labirin.

(12)

Modifikasi dan pengembangan selanjutnya pada Micromouse Robot dilakukan terhadap penelitian yang telah dilakukan tersebut dengan mengambil citra dari area labirin, melakukan pengolahan citra tersebut pada Personal Computer (PC) sehingga data-data bobot yang diperlukan untuk penyelesaian rute terpendek dapat diketahui, dan mengirim data-data tersebut ke Micromouse Robot. Setelah data pengolahan citra oleh komputer diterima, diharapkan Micromouse Robot mengetahui jalur terpendek dari titik start ke finish tanpa melakukan scanning area pada lintasan labirin seperti yang dilakukan pada penelitian Rusmini Setiawardhana, M.Iqbal Nugrah, dan Anita Nur Syafidtri.

1.2 Perumusan Masalah

Dari latar belakang yang telah diuraikan, dapat dirumuskan permasalahan sebagai berikut:

1. Bagaimana merancang dan membuat struktur data yang digunakan pada algoritma Dijkstra.

2. Bagaimana merancang dan membuat aplikasi pengolahan citra lintasan labirin pada PC dengan menerapkan algoritma Dijkstra untuk menyelesaikan masalah pencarian rute terpendek dari start menuju finish dan mengirim rute tersebut ke Micromouse Robot.

(13)

1.3 Pembatasan Masalah

Dalam perancangan dan pembuatan perangkat terdapat beberapa pembatasan masalah, antara lain :

1. Labirin terdiri dari 10×10 cells dan setiap cell berdimensi 160×160 milimeter (mm) yang dibatasi dengan dinding. Tinggi dinding labirin berdimensi 50 mm dan tebal dinding 10 mm. Dinding luar membungkus seluruh labirin. 2. Bagian jalur labirin berwarna hitam dan bagian dinding labirin berwarna

putih.

3. Tidak melakukan perubahan atau memberi penghalang pada jalur di labirin ketika Micromouse Robot sedang melakukan perjalanan menuju finish.

4. Simpangan dan tikungan menggunakan percabangan 90° dan 180°.

5. Dinding tepian labirin pada citra sejajar dengan camera window, posisi kamera berada pada titik tengah di atas labirin, dan tegak lurus terhadap labirin saat pengambilan citra dilakukan.

6. Menggunakan Pololu 3π sebagai Micromouse Robot.

1.4 Tujuan

Tujuan dari perancangan dan pembuatan perangkat ini adalah sebagai berikut :

1. Merancang dan membuat struktur data yang digunakan pada algoritma Dijkstra.

(14)

masalah pencarian rute terpendek dari start menuju finish dan mengirim rute tersebut ke Micromouse Robot.

3. Merancang dan membuat minimum system tambahan sebagai pengendali Micromouse Robot.

1.5 Kontribusi

Penelitian tentang Micromouse Robot dalam menyelesaikan lintasan labirin telah banyak dilakukan dan semakin berkembang dengan banyak diselenggarakannya kontes-kontes Micromouse Robot tersebut. Beberapa algoritma yang digunakan untuk menyelesaikan lintasan labirin diantaranya algoritma backtracking yang penelitiannya telah dilakukan oleh Rusmini Setiawardhana dan M. Iqbal Nugrah, serta algoritma Depth-First Search yang penelitiannya telah dilakukan oleh Anita Nur Syafidtri.

(15)

1.6 Sistematika Penulisan

Penulisan Tugas Akhir ini, secara garis besar dapat dikelompokkan dalam dua bagian, yaitu bagian software dan bagian hardware. Penulisannya dilakukan secara urut dengan membahas bagian hardware-nya terlebih dahulu, kemudian dilanjutkan dengan bagian software-nya. Selengkapnya dapat dilihat pada penjelasan berikut:

BAB I : PENDAHULUAN

Pada bab ini, dijelaskan mengenai latar belakang dari topik tugas akhir yang diambil, kemudian dirumuskan menjadi suatu permasalahan yang akan diselesaikan dalam tugas akhir ini, batasan-batasan masalah yang akan diteliti, dan tujuan dari penelitian tugas akhir ini.

BAB II : LANDASAN TEORI

Pada bab ini, dijelaskan teori-teori digunakan sebagai dasar analisa permasalahan. Teori-teori yang digunakan antara lain penelitian Miromouse Robot oleh Rusmini Setiawardhana dan M. Iqbal Nugrah (2011), penelitian Micromouse Robot oleh Anita Nur Syafidtri (2010), algoritma Dijkstra, pengolahan citra, mobile robot, mikrokontroler ATMega644P, dan sensor reflektansi IR.

BAB III : METODE PENELITIAN

(16)

software meliputi perancangan struktur data, perancangan aplikasi pada PC, penerapan algoritma Dijkstra, dan perancangan perancangan perangkat lunak pada mikrokontroler yang digunakan.

BAB IV : PENGUJIAN DAN EVALUASI SISTEM

Dalam bab ini, membahas mengenai pengujian terhadap bagian-bagian sistem yang dibangun (bagian-bagian software dan hardware). Pengujian yang dilakukan meliputi pengujian sensor reflektansi IR, pengujian pencarian nodes oleh aplikasi pada PC, pengujian paket data rute terpendek, dan pengujian pergerakan Micromouse Robot. BAB V : PENUTUP

(17)

7

2.1 Penelitian Micromouse Robot oleh Rusmini Setiawardhana dan M. Iqbal Nugrah (2011)

Robot Micromouse adalah robot cerdas yang dapat bergerak bebas di dalam sebuah labirin (maze) tanpa menyentuh objek sekitarnya, robot mengetahui ke arah mana harus bergerak, berapa derajat harus berputar jika menemui jalan buntu pada area labirin. Robot Micromouse ini termasuk kedalam jenis Robot Mobile yaitu Autonomous Mobile Robot dimana pengendalian gerakan dari robot yang berdasarkan program kemudi yang diberikan sehingga seolah-olah robot tersebutbergerak sendiri. Arah pergerakan MobileRobot iniditentukan ketika ada respon terhadap objek di depan, kanan dan kiri. Robot yang dibuat menggunakan mikrokontroler ATMEGA 8535 sebagai pengendali, sensor inframerah GP2D12 untuk mendeteksi adanya tembok atau tidak adanya tembok dan driver motor untuk menggerakkan motor sebagai aktuator. Robot ini menggunakan algoritma backtracking untuk mencari jalan terpendek dalam sebuah labirin ke tempat yang dituju. (Setiawardhana, 2011).

2.1.1 Prinsip Kerja Search Mode

(18)

robot akan lebih memilih jalan lurus. Dan bila robot tidak menemukan juga jalan lurus maka robot akan belok kiri. (Setiawardhana, 2011).

2.1.2 Prinsip Kerja Mode Kembali (Return Mode)

Return mode adalah proses robot berjalan kembali dari finish menuju start dengan jalur terpendeknya. Pada return mode, robot diharapkan sudah berjalan dengan kecepatan yang lebih dibandingkan dengan search mode. Ketika return mode dijalankan, apakah robot bisa mencapai start dengan jalur terpendek? Jika proses ini belum berhasil, maka terjadi kesalahan pada proses pemetaan. Dengan demikian, proses akan diulang pada search mode dan dievaluasi sampai tidak terjadi kesalahan. Prinsip dasar algoritma backtracking ini yaitu robot akan mengutamakan belok kanan apabila menemukan persimpangan dibanding lurus atau belok kiri. Bila tidak ada belok kanan maka robot cenderung untuk jalan lurus. (Setiawardhana, 2011).

2.2 Penelitian Micromouse Robot oleh Anita Nur Syafidtri (2010)

Robot Micromouse adalah robot cerdas yang dapat bergerak bebas di dalam

sebuah labirin (maze) tanpa menyentuh objek sekitarnya, robot mengetahui ke arah

mana harus bergerak, berapa derajat harus berputar jika menemui jalan buntu pada

area labirin. Robot Micromouse ini termasuk ke dalam jenis Robot Mobile yaitu

Autonomous Mobile Robot. Autonomous. Mobile Robot adalah pengendalian gerakan

dari robot yang berdasarkan program kemudi yang diberikan sehingga seolah -olah

robot tersebut bergerak sendiri. Robot ini dibangun atau dibuat dengan menggunakan

mikrokontroler ATMEGA 128 sebagai pengendali, tiga buah sensor inframerah

(19)

dua buah driver motor yaitu SPC Stepper Motor dan dua buah stepper motor yang

sumber tegangannya berasal dari satu buah baterai Lithium Polymer. Robot

Micromouse memiliki dua mode yaitu mode eksplorasi dan mode hafalan. Mode

eksplorasi robot akan melalui semua jalan yang ada pada labirin sedangkan mode

hafalan robot akan bergerak sesuai dengan data yang tersimpan pada Electrically

Erasable Programmable Read-Only Memory (EEPROM) mikrokontroler yang

diperoleh dari mode eksplorasi. Robot ini menggunakan algoritma Depth-First

Search untuk mencari jalan keluar dalam suatu labirin. Bahasa pemograman yang

digunakan adalah bahasa C. Hasil pengujian, menunjukkan bahwa robot dapat

menemui jalan keluarnya sendiri dengan beragam konfigurasi labirin, dengan asumsi

titik mulai dan titik akhir tetap. (Syafidtri, 2010).

2.3 Algoritma Dijkstra

Algoritma Dijkstra ditemukan oleh Edsger W. Dijkstra yang merupakan salah satu varian bentuk algoritma popular dalam pemecahan persoalan yang terkait dengan masalah optimisasi dan bersifat sederhana. Algoritma ini menyelesaikan masalah mencari sebuah lintasan terpendek (sebuah lintasan yang mempunyai panjang minimum) dari vertex a ke vertex z dalam graph berbobot, bobot tersebut adalah bilangan positif jadi tidak dapat dilalui oleh node negatif, namun jika terjadi demikian, maka penyelesaian yang diberikan adalah infinity. (Lubis, 2009).

Misalkan sebuah graf berbobot dengan n buah simpul dinyatakan dengan matriks ketetanggan M = [mij], yang dalam hal ini memenuhi :

(20)

[mij] = ∞, jika tidak ada sisi dari simpul i ke simpul j.

Selain matriks M, juga akan digunakan tabel S = [si], yang dalam hal ini berlaku : [si] = 1, jika dan hanya jika simpul i termasuk ke dalam lintasan terpendek.

[si] = 0, jika dan hanya jika simpul i tidak termasuk ke dalam lintasan terpendek dan keluarannya adalah sebuah tabel D = [di], yang dalam hal ini menyatakan : [di] = panjang lintasan dari simpul awal sumber a ke simpul akhir tujuan i.

Dengan simpul awal adalah a, dan dengan jarak dari simpul i diartikan sebagai jarak antara simpul a dan i, maka algoritma Djikstra akan menginisialisasikan nilai jarak awal dan memperbaikinya tahap demi tahap.

Langkah-langkah algoritma Dijkstra dapat ditunjukkan sebagai berikut : 1. Inisialisasi suatu nilai jarak untuk setiap simpul dengan nilai nol untuk simpul

awal dan nilai tak hingga untuk setiap simpul sisanya.

2. Seluruh simpul ditandai sebagai belum dikunjungi dan simpul a ditentukan sebagai simpul saat ini.

3. Untuk simpul saat ini, diperhitungkan seluruh tetangga langsung yang belum dikunjungi dan jarak tentative dikalkulasikan dari simpul a. Jika jarak yang didapatkan lebih kecil daripada jarak yang sudah dicatat sebelumnya, maka jarak yang minimum akan disimpan.

4. Jika telah selesai dengan pengecekan terhadap semua tetangga terdekat dari simpul saat ini, simpul ditandai sebagai sudah dikunjungi.

(21)

6. Jika seluruh simpul sudah selesai dikunjungi, maka selesai, dan selain dari itu simpul dipilih dengan jarak minimum dari simpul a untuk ditetapkan sebagai simpul saat ini dan berulang seperti pada langkah c.

Langkah-langkah solusi pada algoritma Dijkstra dapat ditunjukkan seperti pada gambar 2.1.

(a) (b)

(c) (d)

(e) (f)

(g) (h)

(22)

Pseudo code algoritma Dijkstra dapat ditunjukkan sebagai berikut:

function Dijkstra(Graph, source): for each vertex v in Graph:

// Initializations dist[v] := infinity ;

// Unknown distance function from source to v

previous[v] := undefined ;

// Previous node in optimal path from source

end for ;

dist[source] := 0 ;

// Distance from source to source Q := the set of all nodes in Graph ;

// All nodes in the graph are unoptimized - thus are in Q while Q is not empty:

// The main loop u := vertex in Q with smallest dist[] ; if dist[u] = infinity: break ;

// all remaining vertices are inaccessible from source fi ;

remove u from Q ;

for each neighbor v of u:

// where v has not yet been removed from Q.

alt := dist[u] + dist_between(u, v) ; if alt < dist[v]: // Relax (u,v,a) dist[v] := alt ; previous[v] := u ; fi ;

end for ; end while ; return dist[] ; end Dijkstra.

(Handaka, 2010).

(23)

jarak terpendek dari seluruh node, tidak hanya untuk node dari asal dan tujuan tertentu saja. (Lubis, 2009).

2.4 Pengolahan Citra

2.2.1 Kecerahan Gambar

Pengubahan kecerahan gambar bertujuan untuk membuat citra menjadi lebih terang atau lebih gelap. Kecerahan gambar dapat diperbaiki dengan menambah atau mengurangi setiap pixel pada citra dengan sebuah nilai konstan. Secara matematis operasi ini dapat ditunjukkan seperti pada persamaan 2.1.

, ′ = , + (2.1)

Jika b positif, kecerahan gambar bertambah, sebaliknya jika b negatif kecerahan gambar berkurang. (Munir, 2004)

Algoritma pengubahan kecerahan gambar dapat ditunjukkan sebagai berikut:

void ImageBrightness(citra Image, int N, int M, int b)

/* Mengubah kecerahan citra image yang berukuran N x M dengan penambahan intensitas sebesar b.

*/

{ int i, j, n;

for(i=0;i<=N-1;i++)

for(j=0;j<=M-1;j++) Image[i][j]+=b; }

(Munir, 2004).

2.2.2 Konversi Citra True Color ke Grayscale

(24)

operasi-operasi pengolahan citra selanjutnya. Rumus yang digunakan untuk konversi ini dapat ditunjukkan seperti pada persamaan 2.2 (Basuki, 2005) :

�� =�+�+�

3 (2.2)

Mata manusia memiliki 3 jenis sensor kerucut pada retina yang mendeteksi rentang warna yang berbeda pada spektrum cahaya yang tampak. Sensitifitas mata manusia terhadap warna berbeda-beda, seperti mata lebih sensitif pada warna hijau, kemudian warna merah, dan terakhir warna biru. Oleh karena itu, konversi true color ke grayscale lebih tepat dengan cara memberi bobot yang berbeda pada setiap elemen warna, alih-alih untuk meratakannya secara langsung. Dari modifikasi rumus di atas maka didapatkan seperti yang ditunjukkan pada persamaan 2.3 (Basuki, 2005).

�� = .�+ .�+ .� (2.3)

Bobot-bobot wr, wg, dan wb merupakan bobot untuk elemen warna merah, hijau, dan biru. National Television System Committee (NTSC) mendefinisikan bobot untuk konversi citra true color ke grayscale ini adalah sebagai berikut: wr = 0.299, wg = 0.587, dan wb = 0.144.

2.2.3 Thresholding

Contoh operasi titik berdasarkan intensitas adalah operasi pengambangan (thresholding). Pada operasi pengambangan, nilai intensitas pixel dipetakan ke salah satu dari dua nilai, α atau α , berdasarkan nilai ambang (threshold) T dapat ditunjukkan seperti pada persamaan 2.4.

, ′ = α , f x, y <

(25)

Jika α = 0 dan α = 1, maka operasi pengambangan mentransformasikan citra

hitam-putih ke citra biner. Dengan kata lain, nilai intensitas pixel semula dipetakan ke dua nilai saja: hitam dan putih. Nilai ambang yang dipakai dapat berlaku untuk keseluruhan pixel atau untuk wilayah tertentu saja (berdasarkan penyebaran nilai intensitas pada wilayah tersebut).

(Munir, 2004).

2.5 Mobile Robot

Mobile robot yang digunakan yaitu robot komersil Pololu 3π. Pololu 3π adalah sebuah robot berukuran kecil, memiliki performa tinggi, didukung oleh 4 buah baterai AAA sebagai catu daya dan memiliki power system yang unik yang dapat menggerakkan motor dengan tegangan 9.25 Volt teregulasi. 3π mampu mencapai kecepatan hingga 100 cm/s (centimeter per second) saat bergerak dengan tegangan baterai yang tidak berubah, hal ini mengakibatkan kinerja yang

konsisten. 3π robot seperti yang ditunjukkan pada gambar 2.2.

(26)

3π berbasis mikrokontroler ATMega328 yang memiliki fitur memori program sebesar 32 KB, Random Accerss Memory (RAM) sebesar 2 KB, dan EEPROM sebesar 1 KB.

2.3.1 Power Management

Skematik power management pada 3π dapat ditunjukkan seperti pada gambar 2.3.

Gambar 2.3 Power management pada 3π.

Tegangan 4 buah baterai AAA dapat bervariasi antara 3.5 – 5.5 Volt (V) dan bahkan 6 V jika alkaline yang digunakan. Berarti tidak memungkinkan untuk

meregulasi tegangan menjadi naik atau turun menjadi 5 V. Tetapi tidak pada 3π,

(27)

2.3.2 Motor dan Gearboxes

Motor merupakan sebuah mesin yang mengubah energi listrik menjadi energi gerak. Ada banyak berbagai jenis motor, tetapi yang paling banyak digunakan untuk robot dengan biaya rendah yaitu brushed DC motor yang

merupakan jenis motor pada 3π.

Tiap motor memiliki kecepatan maksimal jika tidak ada gaya yang diterapkan dan torsi maksimal jika motor benar-benar berhenti, karekteristik motor tersebut dapat ditunjukkan pada grafik seperti pada gambar 2.4.

Gambar 2.4 Karakteristik motor 3π.

(28)

Tabel 2.1 Parameter motor pada 3π.

Parameter Nilai Gear Ratio 30:1 Free-running speed 700 rpm Free-running current 60 mA

Stall torque 6 oz·in Stall current 540 mA

Dua roda 3π masing-masing memiliki radius 0.67 inci, yang berarti bahwa gaya

maksimum yang dapat dihasilkan dengan dua motor saat berkendara ke depan adalah 2 × 6/0.67 = 18 oz. 3π beratnya sekitar 7 ons dengan baterai, sehingga motor cukup kuat untuk mengangkat 3π mendaki lereng vertikal atau mempercepatnya pada 2 kali percepatan gravitasi. Kinerja aktual dibatasi oleh gesekan ban, di lereng yang cukup curam roda akan tergelincir sebelum berhenti. Hal ini terjadi pada kemiringan sekitar 30° - 40°.

(29)

Gambar 2.5 Rangkaian elektronika 3π.

(30)

2.6 Mikrokontroler ATMEGA644P-TQFP44

ATMega644P merupakan mikrokontroler 8-bit Alf and Vegard's Risc processor (AVR) dengan arsitektur Reduced Instruction Set Computing (RISC). Dengan mengeksekusi instruksi dalam satu clock tunggal, ATMega644P mencapai throughput mendekati 1 Milions Instruction Per Second (MIPS) per Mega Hertz (MHz) memungkinkan perancang sistem untuk mengoptimalkan konsumsi daya dibandingkan kecepatan proses.

Inti AVR mengkombinasikan rich instruction set dengan 32 general purpose working registers. Semua 32 register secara langsung terhubung ke Arithmetic Logic Unit (ALU), memungkinkan dua register independen diakses untuk diakses dalam satu instruksi yang dieksekusi dalam satu siklus clock. Kelebihan dari arsitektur tersebut yaitu kode yang dihasilkan menjadi lebih efisien sementara mencapai throughtput hingga sepuluh kali lebih cepat daripada mikrokontroler Complex Instruction Set Computing (CISC) konvensional.

Di dalam mikrokontroler ATMega644P sudah terdiri dari: 1. Central Processor Unit (CPU) yang terdiri dari 32 buah register. 2. 131 instruksi yang umumnya hanya membutuhkan 1 siklus clock. 3. 32 saluran Input/Output (I/O) yang dapat diprogram.

4. Analog to Digital Converter (ADC) 10 bit sebanyak 8 channel. 5. Dua buah 8 bit dan sebuah 16 bit Timer/Counter.

6. Watchdog timer dengan osilator internal. 7. Tegangan operasi 1.8 V – 5.5 V.

8. Internal SRAM sebesar 4 Kilo Byte (KB).

(31)

10. EEPROM sebesar 2 KB yang dapat diprogram saat operasi. 11. Unit interupsi internal dan external.

12. Master/Slave SPI Serial Interface. 13. Antarmuka komparator analog.

14. 6 channelPulse Width Modulation (PWM). 15. Hampir mencapai 20 MIPS pada Kristal 20 MHz. 16. 2 port USART programmable untuk komunikasi serial.

[image:31.595.87.507.323.596.2]

Susunan kaki standar 44 pin TQFP microcontroller AVR ATMega644P dapat ditunjukkan seperti pada gambar 2.6.

Gambar 2.6 Susunan kaki microcontroller ATMega644P. Berikut penjelasan umum susunan kaki ATmega644P:

1. VCC merupakan pin masukan positif catu daya. Pada ATMega644P memerlukan catu daya sebesar 1,8 V – 5,5 V.

(32)

3. Port A (PA0..PA7) merupakan pin I/O dua arah dan pin fungsi khusus yaitu sebagai input ADC dan pin changeinterrupt.

4. Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu Timer/Counter, analog comparator, SPI, dan pin changeinterrupt.

5. Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI (Two Wire Interface), analog comparator, Timer Osilator, dan pin changeinterrupt.

6. Port D (PDO..PD7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu analogcomparator, external interrupt dan serial communication.

7. RESET merupakan pin yang digunakan untuk me-resetmicrocontroller. 8. XTAL1 dan XTAL2 sebagai I/O clock eksternal. Suatu microcontroller

membutuhkan sumber detak (clock) agar dapat mengeksekusi instruksi yang ada di memori. Semakin tinggi nilai kristalnya, maka semakin cepat pemrosesan instruksi microcontroller tersebut.

9. AVCC sebagai tegangan input untuk ADC.

10. AREF sebagai tegangan referensi eksternal untuk ADC. (Atmel, 2010)

2.4.1 Analog to Digital Converter (ADC)

(33)

A. ADC Control and Status Register A (ADCSRA)

[image:33.595.95.513.178.547.2]

Bit-bit konfigurasi pada register ADCSRA dapat ditunjukkan seperti pada tabel 2.2.

Tabel 2.2 Register ADCSRA.

Bit 7 6 5 4 3 2 1 0

Name ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W

Initial Value 0 0 0 0 0 0 0 0

Keterangan:

- ADEN : 1 = ADC enable, 0 = ADC disable.

- ADSC : 1 = mulai konversi, 0 = konversi belum terjadi.

- ADATE : 1 = auto trigger diaktifkan, trigger berasal dari sinyal yang dipilih (set pada register SFIOR bit ADTS). ADC akan start konversi pada edge positif sinyal trigger.

- ADIF : diset ke 1, jika konversi ADC selesai dan data register ter-update. Namun, ADC Conversion Complete Interrupt dieksekusi jika bit ADIE dan bit-I dalam register SREG di-set.

- ADIE : di-set jika bit-I dalam SREG di-set.

- ADPS[2..0] : Bit pengatur clock ADC, faktor pembagi 0..7 yang dapat ditunjukkan seperti pada tabel 2.3.

Tabel 2.3 Konfigurasi clock ADC. ADPS[2..0] Besar clock ADC

[image:33.595.230.395.620.737.2]
(34)

B. ADC Muliplexer (ADMUX)

[image:34.595.98.504.159.528.2]

Bit-bit konfigurasi pada register ADMUX dapat ditunjukkan seperti pada tabel 2.4.

Tabel 2.4 Register ADMUX.

Bit 7 6 5 4 3 2 1 0

Name ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W

Initial Value 0 0 0 0 0 0 0 0

Keterangan:

- REFS 0,1 : Pemilihan tegangan referensi ADC 00 : VRef = AREF.

01 : VRef = AVCC dengan kapasitor eksternal pada AREF. 10 : VRef = reserved.

11 : VRef = internal 2,56 volt dengan kapasitor pada AREF.

- ADLAR : untuk setting format data hasil konversi ADC, default = 0. ADLAR = 0, hasil konversi bit ke-0 hingga 7 berada pada register ADCL dan bit ke-8 hingga 9 berada pada register ADCH.

ADLAR = 1, hasil konversi bit ke-0 hingga 1 berada pada register ADCL dan bit ke-2 hingga 9 berada pada register ADCH.

- MUX[0..4] : pemilihan channel ADC yang digunakan, 0 = channel1, 1 = channel2, dan seterusnya.

C. Special Function IO Register (SFIOR)

(35)

Tabel 2.5 Register SFIOR.

Bit 7 6 5 4 3 2 1 0

Name ADTS2 ADTS1 ADTS0 ADHSM ACME PUD PSR2 PSR10 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W

Initial Value 0 0 0 0 0 0 0 0

Keterangan:

- ADTS[0..2] : Pemilihan trigger (pengatur picu) untuk konversi ADC, bit-bit ini akan berfungsi jika bit ADATE pada register ADCSRA bernilai 1. Konfigurasi bit ADTS[0..2] dapat ditunjukkan seperti pada tabel

- ADHSM : 1, ADC high speed mode enabled.

Untuk operasi ADC, bit ACME, PUD, PSR2, dan PSR10 tidak diaktifkan. (Andrianto, 2008).

2.4.2 Komunikasi Universal Syncronous Asyncronous Receiver / Transmitter (USART)

Register yang perlu ditentukan nilainya yaitu sebagai berikut:

A. USART Baud Rate Register (UBRR)

(36)

Tabel 2.6 Rumus perhitungan UBRR.

Mode operasi Rumus nilai UBRR Mode asinkron kecepatan normal (U2X=0)

���= �

16 × −1

Mode asinkron kecepatan ganda (U2X=1)

���= �

8 × −1

Sinkron

���= �

2 × −1

U2X adalah bit pada register UCSRA, yang berfungsi untuk menggandakan transfer rate menjadi dua kalinya. Hanya berlaku untuk mode asinkron, untuk mode sinkron bit ini di-set 0.

B. USART Control and Status Register A (UCSRA)

[image:36.595.93.510.320.531.2]

Susunan bit-bit pada register UCSRA dapat ditunjukkan seperti pada tabel 2.7.

Tabel 2.7 Register UCSRA.

Bit 7 6 5 4 3 2 1 0

Name ADTS2 ADTS1 ADTS0 ADHSM ACME PUD PSR2 PSR10 Read/Write R/W R/W R/W R/W R/W R/W R/W R/W

Initial Value 0 0 0 0 0 0 0 0

C. USART Control and Status Register B (UCSRB)

UCSRB merupakan register 8 bit pengatur aktivasi penerima pengirim USART, komposisinya dapat ditunjukkan seperti pada tabel 2.8.

Tabel 2.8 Register UCSRB.

Bit 7 6 5 4 3 2 1 0

Name RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8 Read/Write R/W R/W R/W R/W R/W R/W R R/W

(37)

Keterangan:

- RXCIE : bit pengatur aktivasi interupsi penerimaan data serial. - TXCIE : bit pengatur aktivasi interupsi pengiriman data serial.

- UDRIE : bit pengatur aktivasi interupsi, yang berhubungan dengan kondisi bit UDRE pada UCSRA.

- RXEN : bit pengatur aktivasi penerimaan serial. - TXEN : bit pengatur aktivasi pengiriman serial.

[image:37.595.92.509.116.534.2]

- UCSZ2 bersama-sama dengan bit UCSZ1 dan UCSZ0 di register UCSZ0 menentukan ukuran karakter serial yang dikirimkan yang dapat ditunjukkan seperti pada tabel 2.9.

Tabel 2.9 Penentuan ukuran karakter komunikasi USART. UCSZ[2..0] Ukuran karakter dalam bit

000 5

001 6

010 7

011 8

100-110 Tidak dipergunakan

111 9

D. USART Control and Status Register C (UCSRC)

UCSRC merupakan register 8 bit yang digunakan untuk mengatur mode dan kecepatan komunikasi serial yang dilakukan, komposisinya dapat ditunjukkan seperti pada tabel 2.10.

Tabel 2.10 Register UCSRC.

Bit 7 6 5 4 3 2 1 0

Name URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL Read/Write R/W R/W R/W R/W R/W R/W R R/W

(38)

Keterangan:

- URSEL : merupakan bit pemilih akses antara UCSRC dan UBRR.

- UMSEL : merupakan bit pemilih mode komunikasi serial antara sinkron dan asinkron.

- UPM[1..0] : merupakan bit pengatur paritas.

- USBS : merupakan bit pemilih ukuran bit stop.

- UCSZ1 dan UCSZ0 : merupakan bit pengatur jumlah karakter serial.

- UCPOL : merupakan bit pengatur hubungan antara perubahan data keluaran dan data masukan serial dengan clock sinkronisasi. Hanya berlaku untuk mode sinkron, untuk mode asinkron bit ini di-set 0.

(Andrianto, 2008).

2.7 Sensor Reflektansi Infra Red (IR)

Sensor reflektansi IR merupakan sebuah perangkat yang didalamnya berisi sebuah fototransistor (sensitif terhadap cahaya IR) dan emitor IR. Jumlah cahaya yang dipantulkan dari emitor IR ke phototransistor menghasilkan pengukuran reflektansi permukaan, misalnya untuk menentukan apakah permukaan berwarna hitam atau putih. Fototransistor memiliki sensitifitas puncak pada panjang gelombang IR, juga sensitif terhadap cahaya tampak. Untuk alasan tersebut, perangkat harus dilindungi dari pencahayaan sekitarnya sebanyak mungkin untuk memperoleh hasil yang dapat diandalkan.

(39)

mendeteksi pada pola tergambar di permukaan atau segmen pada roda yang digunakan untuk mengkondekan rotasi pada poros.

[image:39.595.92.506.251.641.2]

Prinsip dasar dari sensor reflektansi IR yaitu mengirim cahaya IR melalui IR-LED, yang kemudian tercermin oleh setiap objek di depan sensor dan kemudian mengambil cahaya tercermin yang dapat ditunjukkan seperti pada gambar 2.7 (Ikalogic, 2011).

Gambar 2.7 Prinsip dasar sensor reflektansi IR.

Rangkaian dasar sensor reflektansi IR dapat ditunjukkan seperti pada gambar 2.8.

Gambar 2.8 Rangkaian dasar sensor reflektansi IR.

(40)

kolektor – emiter. Karena transistor merupakan elemen aktif yang memiliki penguatan arus, fototransistor lebih sensitif daripada fotoresistor sederhana. Elemen yang memancarkan cahaya yaitu IR-Light Emitting Diode (LED) menggunakan sebuah resistor untuk membatasi arus yang mengalir melalui perangkat dan biasanya IR – LED selalu dalam keadaan on.

(41)

31

Untuk pengumpulan data yang diperlukan dalam melaksanakan tugas akhir, ada beberapa cara yang telah dilakukan, antara lain:

1. Studi kepustakaan

Studi kepustakaan dengan memahami buku referensi, data yang diperlukan untuk menunjang pembuatan alat, baik pada perangkat keras maupun perangkat lunak.

2. Penelitian laboratorium

Dilakukan dengan mengadakan percobaan, pengujian modul-modul serta mengintegrasikan modul tersebut dengan perangkat lunak untuk mengendalikan sistem agar menjadi satu kesatuan yang utuh dan diperoleh hasil yang seoptimal mungkin.

[image:41.595.94.511.308.732.2]

Keseluruhan sistem pada penelitian ini sesuai dengan blok diagram pada gambar 3.1. Personal Computer Camera ATMega328p ATMega644p Motor Driver Motor 1 Motor 2 Sensor Dinding 1 Sensor Dinding 2 Sensor Dinding 3 Sensor Dinding 4 Sensor Dinding 5 UART0

Perangkat Pencari Nodes Micromouse Robot

UART1

(42)

Pada perangkat pencari nodes citra labirin terdapat webcam yang terhubung dengan PC untuk pengambilan citra, citra yang didapat diolah di PC dan mengirim hasilnya ke Micromouse Robot menggunakan protokol UART. Pada Micromouse Robot terdapat 5 buah sensor dinding yang keseluruhannya terhubung dengan ATMega644P sebagai master dan pengolah data sensor. Hasil pengolahan oleh ATMega644P berupa error posisi robot dikirim ke ATMega328P yang juga terhubung dengan menggunakan protokol UART. Pada ATMega328P mempunyai tugas mengatur putaran motor pada roda kiri dan kanan sesuai dengan nilai error yang diterima. Driver motor yang terhubung dengan ATMega328P berfungsi sebagai penguat arus untuk menggerakkan motor roda kiri dan kanan.

3.1 Perancangan Perangkat Keras

3.1.1 Perancangan Sensor Reflektansi IR

(43)

Gambar 3.2 Rangkaian sensor reflektansi.

Pada IR – LED terhubung dengan resistor dengan nilai sebesar 560 Ω sehingga arus yang melalui IR – LED dapat diketahui seperti perhitungan berikut:

� �� = 5

560� = 8,93

Prinsip kerja dari penerapan rangkaian seperti pada gambar 3.2 yaitu saat sensor mencapai jarak terdekat dengan dinding maka intensitas cahaya pantulan akan semakin besar sehingga nilai output rangkaian tersebut akan semakin besar, begitu juga sebaliknya. Dari rangkaian sensor tersebut nilai output yang diharapkan mendekati 0 V saat mencapai jarak terjauh antara sensor dengan dinding dan mendekati 5 V saat mencapai jarak terdekat antara sensor dengan dinding.

(44)

Sensor-0 Sensor-1

Sensor-2

Sensor-3 Sensor-4

Gambar 3.3 Susunan sensor pada Micromouse Robot.

3.1.2 Perancangan Minimum System Pengendali Micromouse Robot

Pada dasarnya 3π didesain sebagai penjejak garis, untuk mengatasi

masalah pada lintasan labirin yang berupa dinding diperlukan sensor tambahan yaitu sensor dinding. Antara sensor dinding dengan mikrokontroler pada 3π tidak

dapat dihubungkan karena keterbatasan I/O sehingga memerlukan minimum system tambahan untuk menangani, mengolah sensor dinding dan mengirim hasilnya ke mikrokontroler pada 3π. Disamping itu minimum system tambahan

berfungsi untuk menerima data hasil pengolahan citra dari PC. Rangkaian minimum system tambahan dapat ditunjukkan seperti pada gambar 3.4.

(45)

Pada pin VCC terhubung dengan tegangan antara 4.5 – 5.5 V dan pin GND terhubung dengan tegangan 0 V, kedua tegangan tersebut merupakan tegangan teregulasi dari 3π. Pin XTAL1 dan XTAL2 dihubungkan dengan

komponen kristal dengan nilai sebesar 11,0592MHz, pemilihan berdasarkan datasheet ATMega644p dengan nilai maksimal clock sebesar 20MHz.

Pin RESET berfungsi untuk masukan reset program secara otomatis atau manual. Pada ATMega644p reset bekerja jika terhubung dengan 0V (aktif low). Pada saat pertama kali minimum system dihidupkan maka rangkaian reset akan bekerja secara otomatis, setelah itu rangkaian reset harus diaktifkan secara manual. Cara kerja otomatis rangkaian tersebut yaitu saat pertama kali dihidupkan arus yang mengalir mengisi kapasitor sehingga arus pada pin RESET menjadi berkurang jika arus kurang maka pada pin RESET menjadi ~0V (low) dan berlahan-lahan akan menjadi high. Begitupun pada cara kerja manual, saat tombol reset ditekan maka arus akan mengalir ke ground sehingga pin RESET menjadi 0V(low), saat tombol reset dilepas maka kapasitor yang yang telah melepas arus akan terisi kembali dan secara berlahan-lahan pin RESET menjadi high.

(46)

Gambar 3.5 Pin pada mikrokontroler ATMega644P yang terhubung dengan downloader.

[image:46.595.95.505.314.559.2]

Agar mempermudah pembacaan data dan melakukan pengaturan pada Micromouse Robot maka digunakan display berupa LCD 2×8 dan 4 buah tombol dengan rangkaian seperti pada gambar 3.6.

Gambar 3.6 Interfacing LCD dan tombol ke mikrokontroler.

(47)

Gambar 3.7 Wizard window untuk mengatur LCD.

Setelah melakukan pengaturan LCD pada wizard Code Vision AVR 2.03.4, maka LCD dapat diakses dengan penulisan program seperti berikut:

lcd_init(8); //inisialisasi LCD 8x2

lcd_gotoxy(0,0); //menempatkan kursor pada kolom 0, //baris 0

lcd_putsf(“HALLO…”); //menampilkan string HALLO…

lcd_gotoxy(0,1); //menempatkan kursor pada kolom 0, //baris 1

Keempat tombol terhubung dengan PB0, PB1, PB2, dan PB3 pada ATMega644P yang difungsikan sebagai input digital dengan pull-up internal. Untuk mengatur fungsi PB0 hingga PB3 sebagai input digital dengan pull-up internal dapat ditunjukkan pada penulisan program seperti berikut:

(48)

3.2 Perancangan Perangkat Lunak

3.2.1 Struktur Data

Dalam pemrograman untuk menyelesaikan permasalahan pencarian rute dengan jarak terpendek pada lintasan labirin dapat menggunakan struktur data yang bersifat statis maupun dinamis. Penggunaan struktur data yang bersifat dinamis mempunyai kelebihan dapat menyesuaikan penggunaan tempat pada media penyimpanan sesuai dengan kebutuhan dibandingkan dengan struktur data yang bersifat statis. Dalam algoritma Dijkstra struktur data yang digunakan dalam pengolahan berbentuk graf, dimana sebuah titik (vertex) diwakili oleh sebuah set of data dan sebuah jarak dari sebuah vertex satu ke sebuah vertex yang lain(edge) diwakili sebuah data yang ilustrasi keduanya dapat ditunjukkan seperti pada gambar 3.8.

X Y

PREVIOUS WEIGHT

BRANCH

VERTEX EDGE

Gambar 3.8 Ilustrasi vertex dan edge.

(49)

terhubung kepadanya yang dapat diilustrasikan seperti yang ditunjukkan pada gambar 3.9.

X Y

PREVIOUS WEIGHT

BRANCH VERTEX A

EDGE A X

Y

PREVIOUS WEIGHT

BRANCH

P

VERTEX B

P V B P E P

EDGE B

P P V A P E P

LIST OF NEIGHBOR VERTEX A

LIST OF NEIGHBOR VERTEX B

Gambar 3.9 Ilustrasi hubungan antar vertex.

Pada vertex A memiliki daftar vertex yang terhubung terhadapnya di dalam list of neighbor vertex A. PVB merupakan sebuah pointer yang menunjuk pada vertex B dan PE merupakan sebuah pointer yang menunjuk pada edge B. Begitu juga pada vertex B memiliki daftar vertex yang terhubung terhadapnya di dalam list of neighbor vertex B. PVA merupakan sebuah pointer yang menunjuk pada vertex B dan PE merupakan sebuah pointer yang menunjuk pada edge A.

(50)

P V

P E P E

P E X Y PREVIOUS WEIGHT BRANCH VERTEX A X Y PREVIOUS WEIGHT BRANCH P VERTEX B

P V P E P

LIST OF NEIGHBOR VERTEX A

B A C 100 50 75 X Y PREVIOUS WEIGHT BRANCH VERTEX C

P P V P

P P V P E P

LIST OF NEIGHBOR VERTEX B P P V P E P

P P V P

LIST OF NEIGHBOR VERTEX C

P P 100 50 PREV NEXT PREV NEXT PREV NEXT 75 (a) (b)

Gambar 3.10 (a) Bentuk node suatu persimpangan pada lintasan (b) Ilustrasi bentuk struktur data graf.

Gambar 3.10 (b) merupakan bentuk perwujudan bentuk struktur data dari node suatu persimpangan seperti yang ditunjukkan pada gambar 3.10 (a).

3.2.2 Perancangan Perangkat Lunak pada PC

(51)

START

Inisialisasi

Konversi citra true color ke grayscale. Thresholding. Pencarian node pada citra labirin.

Pengambilan citra labirin

Tampilkan citra labirin beserta nodes

yang ditemukan pada layar komputer

Kirim data nodes ke Micromouse Robot? Reset aplikasi?

Kirim data node ke Micromouse Robot Keluar aplikasi? Y T T Y T STOP

Gambar 3.11 Flowchart aplikasi pada PC.

(52)

referensi berikutnya adalah data yang dikeluarkan dari antrian data. Jika vertex keluaran dari antrian data tersebut sudah pernah dilalui maka antrian data akan mengeluarkan kembali data berikutnya. Proses scanning akan selesai jika pada antrian data tidak terdapat lagi data, dan melanjutkan ke proses penyelesaian masalah rute dengan jarak terpendek menggunakan algoritma Dijkstra. Data-data solusi jarak terpendek kemudian dikirimkan ke microcontroller pada Micromouse Robot.

A. Perbaikan Citra

Pengambilan citra dilakukan dengan menggunakan media webcam, untuk mendapatkan penyebaran cahaya yang merata pada citra hasil pengambilan maka saat pengambilan citra diberi sumber cahaya tambahan. Pengambilan citra menggunakan Borland Delphi 2010 dengan media webcam dapat ditunjukkan pada penulisan program seperti berikut:

WCam.GetBitmap(FormMain.Img.Picture.Bitmap,nil,0);

Setelah citra sudah didapatkan maka dilakukan perbaikan citra yang bertujuan memudahkan dalam proses pencarian node. Perbaikan citra itu sendiri secara berurutan yaitu dengan perbaikan kecerahan, mengkonversi citra true color ke bentuk grayscale, dan kemudian mengkonversi kebentuk citra biner. Perbaikan kecerahan pada setiap pixel dapat ditunjukkan pada penulisan program seperti berikut:

P:=PCardinal(Cardinal(Line)+X*4); PixColor:=P^;

R:=Integer((PixColor div $10000)and $FF)+Ptr.Brightness; if R>$FF then

R:=$FF

else if R<0 then R:=0;

(53)

if G>$FF then G:=$FF

else if G<0 then G:=0;

B:=Integer(PixColor and $FF)+Ptr.Brightness; if B>$FF then

B:=$FF

else if B<0 then B:=0;

PixColor:=(Cardinal(R)*$10000+Cardinal(G)*$100+Cardinal(B))and $FFFFFF;

Konversi citra true color ke bentuk citra grayscale pada setiap pixel dapat ditunjukkan pada penulisan program seperti berikut:

P:=PCardinal(Cardinal(Line)+X*4); Gray:=0;

Gray:=Gray+(P^div $10000 and $FF)*3 div 10; Gray:=Gray+(P^div $100 and $FF)*59 div 100; Gray:=Gray+(P^and $FF)*11 div 100;

P^:=Gray*$10000+Gray*$100+Gray;

Sedangkan konversi kebentuk citra biner pada setiap pixel dapat ditunjukkan pada penulisan program seperti berikut:

if Integer(Gray and $FF)>(Ptr.Threshold) then begin

if InvertEn=False then PixColor:=$FFFFFF else PixColor:=0; end else begin

if InvertEn=False then PixColor:=0

else

PixColor:=$FFFFFF; end;

(54)

B. Pencarian Node

Flowchart dari proses pencarian node pada citra labirin dapat ditunjukkan seperti pada gambar 3.12.

START

Set titik start sebagai default vertex. Buat node baru pada default vertex.

Insialisasi.

Apakah di depan ada dinding?

Maju sesuai arah gerak.

Apakah sisi kanan atau kiri terhadap arah gerak terdapat dinding?

N N

Buat node baru. Masukan node baru ke daftar

tetangga default vertex. Simpan jarak tempuh. Masukan node baru ke daftar antrian.

Ubah arah gerak awal. Apakah

tikungan? Y

Ubah arah gerak sesuai tikungan.

Apakah sudah terdapat node? N

Masukan node baru ke daftar tetangga default

vertex. Simpan jarak tempuh. Ubah arah gerak awal.

Y N

Y Apakah keempat arah gerak awal terhadap default vertex

sudah diperiksa?

N Masukan default vertex

beserta daftar tetangga ke struktur data graf. Default vertex berikutnya merupakan keluaran dari

daftar antrian.

Apakah default vertex ada data?

Y Y

STOP N

N

[image:54.595.95.503.162.734.2]
(55)

Pencarian node awalnya dengan menentukan koordinat titik start sebagai titik pencarian awal dan menentukan nilai arah hadap proses pencarian. Arah hadap tersebut yang dimaksud yaitu 0 untuk utara, 1 untuk ke barat, 2 untuk ke selatan, dan 3 untuk ke timur pada citra yang diolah seperti arah mata angin pada peta secara umum. Dari titik awal, proses pencarian akan dilakukan pada empat arah hadap tersebut. Setelah menentukan arah hadap selanjutnya dilakukan pendeteksian adanya dinding pada sisi depan titik pencarian terhadap arah hadap. Pendeteksian dinding sisi depan titik pencarian terhadap arah hadap dapat ditunjukkan pada penulisan program seperti berikut:

Re:=False; L:=Lbr;

for I:=0 to L do begin

P:=PCardinal(Integer(ImgBase)-((_Data.Y+YCek[_Data.Arah,2]*I)*LineSize)+ ((_Data.X+XCek[_Data.Arah,2]*I)*4));

if P^=0 then {0 = hitam} begin

Re:=True; Break; end; end;

Result:=Re;

Lbr merupakan lebar lintasan dalam satuan pixel. Re merupakan output dari algoritma pendeteksian dinding sisi depan titik pencarian terhadap arah hadap yang dapat ditunjukkan seperti pada tabel 3.1.

Tabel 3.1 Output algoritma pendeteksian dinding sisi depan titik pencarian terhadap arah hadap.

Output Re Keterangan sisi depan False Tidak ada dinding

True Ada dinding

(56)

tidak terdeteksi adanya dinding maka proses pencarian ke titik berikutnya akan dilanjutkan.

Untuk mendapatkan koordinat titik pencarian berikutnya dalam proses pencarian dapat dilakukan dengan menggunakan operasi penambahan antara titik pencarian saat ini dengan suatu nilai konstanta di dalam sebuah array dengan menggunakan index arah hadap yang dapat ditunjukkan pada penulisan program seperti berikut:

_Data.X:=_Data.X+XMove[_Data.Arah]; _Data.Y:=_Data.Y+YMove[_Data.Arah];

_Data.X dan _Data.Y merupakan koordinat atau titik pencarian pada citra. _Data.Length merupakan panjang jalur dalam satuan pixel yang sudah ditempuh, ditambahkan dengan 1 jika ada perubahan titik pencarian. _Data.Arah merupakan arah hadap. XMove dan Ymove merupakan suatu constan array yang dapat ditunjukkan pada pendeklarasian variabel seperti berikut:

const XMove: array [0..3] of Shortint=(0,-1,0,1); const YMove: array [0..3] of Shortint=(-1,0,1,0);

Jarak merupakan komponen terpenting yang diolah pada penerapan algoritma Dijkstra. Aplikasi yang dibuat, jarak dihitung menggunakan operasi pixel pada citra labirin. Setiap iterasi pada proses perpindahan titik pencarian, maka jarak yang disimpan akan ditambah dengan 1, seperti yang ditunjukkan pada penulisan program seperti berikut:

Inc(NData.Length);

Jarak antara suatu node dengan node yang lain terhitung dan disimpan jika telah ditemukan node yang terhubung dengan base node seperti yang ditunjukkan pada penulisan program sebagai berikut:

(57)

Dalam proses pencarian, adanya tikungan atau persimpangan akan dideteksi pada setiap perubahan titik pencarian. Adanya tikungan dapat dideteksi jika salah satu di sisi kanan atau kiri titik pencarian terhadap arah hadap tidak mendeteksi adanya dinding dan di sisi depan titik pencarian mendeteksi adanya dinding. Adanya persimpangan dapat dideteksi jika lebih dari satu sisi titik pencarian terhadap arah hadap yang tidak mendeteksi adanya dinding. Pendeteksian dinding dapat dilakukan dengan melakukan komparasi hasil pembacaan warna pada titik koordinat pada citra, jika mendeteksi warna hitam maka titik tersebut merupakan dinding. Algoritma pendeteksian dinding sisi kiri dan kanan titik pencarian terhadap arah hadap dapat ditunjukkan pada penulisan program seperti berikut:

L = Lbr; A:=1; F:=0;

for I:=0 to 1 do begin

for J:=0 to L do begin

P:=PCardinal(Integer(ImgBase)-((_Data.Y+YCek[_Data.Arah,I]*J)*LineSize)+ ((_Data.X+XCek[_Data.Arah,I]*J)*4));

{mendeteksi dinding}

if P^and $FFFFFF=0 then {0 = hitam} begin

F:=F or A; Break; end; end; A:=A*2; end; Result:=F;

XCek dan YCek merupakan suatu constan array yang didalam dapat ditunjukkan pada pendeklarasian variabel seperti berikut:

const XCek: array [0..3,0..2] of Shortint = ((-1,1,0), (0,0,-1), (1,-1,0), (0,0,1));

(58)
[image:58.595.96.518.309.620.2]

F merupakan output dari algoritma pendeteksian dinding sisi kiri dan kanan titik pencarian terhadap arah hadap yang dapat ditunjukkan seperti pada tabel 3.2.

Tabel 3.2 Output algoritma pendeteksian dinding sisi kiri dan kanan titik pencarian terhadap arah hadap.

Output F Keterangan sisi kiri Keterangan sisi kanan 0 Tidak ada dinding Tidak ada dinding 1 Tidak ada dinding Ada dinding 2 Ada dinding Tidak ada dinding 3 Ada dinding Ada dinding

Dari hasil pendeteksian dinding sisi depan, kiri, dan kanan titik pencarian terhadap arah hadap dapat diketahui adanya tikungan atau simpangan yang dapat ditunjukkan seperti pada tabel 3.3.

Tabel 3.3 Pendeteksian tikungan atau simpangan.

Re F Sisi depan Sisi kiri Sisi kanan Keterangan False 0 Tidak ada

dinding Tidak ada dinding Tidak ada dinding Simpang empat False 1 Tidak ada

dinding

Tidak ada dinding

Ada dinding Simpang tiga False 2 Tidak ada

dinding

Ada dinding Tidak ada dinding

Simpang tiga False 3 Tidak ada

dinding

Ada dinding Ada dinding Jalur lurus True 0 Ada dinding Tidak ada

dinding

Tidak ada dinding

Simpang tiga True 1 Ada dinding Tidak ada

dinding

Ada dinding Tikungan ke kanan True 2 Ada dinding Ada dinding Tidak ada

dinding

Tikungan ke kiri True 3 Ada dinding Ada dinding Ada dinding Jalan buntu

Terdeteksinya tikungan ke kiri atau kanan dalam pencarian node maka arah hadap harus diubah sesuai dengan arah tikungan yang terdeteksi. Algoritma perubahan arah hadap proses pencarian node dapat ditunjukkan pada penulisan program seperti berikut:

(59)

NData.Arah:=(NData.Arah+1)mod 4 else if FBranch=1 then

begin

if NData.Arah=0 then NData.Arah:=4; Dec(NData.Arah); end;

Algoritma tersebut dijalankan jika mendeteksi adanya dinding pada sisi depan. Nilai pada FBranch berasal dari output algoritma pendeteksian dinding sisi kiri dan kanan.

Dalam proses pencarian node, jika terdeteksi adanya persimpangan atau jalan buntu yang merupakan sebuah node maka selanjutnya akan ditentukan posisi dari titik tersebut. Posisi tersebut berada di tengah-tengah simpangan yang diperoleh dengan operasi penambahan titik pencarian saat ini dengan setengah kali lebar jalur yang dapat ditunjukkan seperti pada penulisan program sebagai berikut:

NData.X:=NData.X+XMove[NData.Arah]*(L div 2); NData.Y:=NData.Y+YMove[NData.Arah]*(L div 2); NData.Length:=NData.Length+(L div 2);

Ndata.X dan Ndata.Y merupakan posisi koordinat X dan Y titik pencarian yang kemudian bergeser ke sisi depan arah hadap sejauh L yang merupakan lebar lintasan dibagi dua. Pergeseran posisi titik pencarian saat ini diikuti dengan perubahan jarak melalui operasi penambahan jarak saat ini dengan lebar lintasan dibagi dua.

Dalam proses pencarian node, jika terdeteksi adanya persimpangan atau jalan buntu yang merupakan sebuah node maka akan dimasukkan ke dalam daftar tetangga titik awal pencarian yang dapat ditunjukkan pada penulisan program seperti berikut:

if Matrix[NData.X,NData.Y]=nil then begin

(60)

Inc(NData.ID^); New(Edge); Edge^:=NData.Length; ArTmp:=NData.Arah; NData.Arah:=ArDef; NData.List.DataIn(@NnodeCreate(@Matrix[NData.X,NData.Y]^, @Edge^,@NData^)^); NData.Arah:=ArTmp; end else begin ArTmp:=NData.Arah; NData.Arah:=ArDef; NNodeCek(@NData^); NData.Arah:=ArTmp; end;

Jika node tersebut merupakan node baru yang berarti simpangan atau jalan buntu yang belum pernah menjadi titik awal maka node tersebut akan dimasukkan dalam struktur data antrian. Untuk menandai sebuah node pernah menjadi titik awal atau belum dapat ditunjukkan pada penulisan program seperti berikut:

Data.MPtr.NeighborList:=@Data.List^; Data.MPtr.Status:=True; Graph.DataIn(@Data.MPtr^); I:=0; repeat InfoNOde:=Data.List.DataPointer[I]; if InfoNode<>nil then

begin

if InfoNode.Vertex.Status=False then Queue.DataIn(@InfoNode.Vertex^); end;

Inc(I);

until (InfoNode=nil);

Sebuah titik yang saat ini menjadi titik awal pada statusnya akan dibuat menjadi true dan dimasukkan pada struktur data Graph. Pada node tetangga titik awal yang memiliki status false akan dimasukkan pada struktur data antrian.

Jika keempat arah dari titik awal sudah dilakukan pencarian node, untuk titik awal berikutnya merupakan output dari antrian yang dapat ditunjukkan pada penulisan program seperti berikut:

repeat

(61)

if Data.MPtr<>nil then begin

if Data.MPtr.Status=False then Break; end

else Break;

until (True=False);

Setelah didapatkan titik awal berikutnya dari antrian maka titik tersebut akan diperika kembali statusnya. Jika titik awal tersebut memiliki status false maka proses pencarian node akan dilakukan kembali pada keempat arah dari titik hadap. Proses pencarian node akan berhenti secara keseluruhan jika tidak ditemukan lagi data titik pada antrian.

C. Pengiriman Data Graf ke Mikrokontroler

Pengiriman data graf ke mikrokontroler dilakukan dengan mengirim karakter FF heksadesimal untuk pertama kali seperti yang ditunjukkan pada penulisan program seperti berikut:

FormMain.Comport.Write($FF,1);

Mikrokontroler akan menerima dan mengirim karakter FF heksadesimal pada PC jika siap melakukan proses penerimaan data yaitu jumlah node yang terdeteksi pada citra yang dapat ditunjukkan pada penulisan program seperti berikut:

FormMain.Comport.Write(Graph.Count,1);

Setelah menerima dan siap untuk data berikutnya maka mikrokontroler mengirim karakter FF heksadesimal.

Data berikutnya yang dikirim ke mikrokontroler yaitu data vertex dan edge yang dapat ditunjukkan pada penulisan program seperti berikut:

for I:=0 to Graph.Count-1 do begin

Vtx:=@Graph.DataPointer[I]^; f_uart := false;

(62)

begin

F:=False;

for K:=0 to Vtx.NeighborList.Count-1 do begin

N:=@Vtx.Neighbor[K]^; if N.Arah=Shortint(J) then begin

F:=True;

SerialData := byte(N.Edge^ div 256); FormMain.Comport.Write(SerialData,1); SerialData := byte(N.Edge^ and $FF); FormMain.Comport.Write(SerialData,1); Break;

end; end;

if f = false then begin

SerialData := $FF;

FormMain.Comport.Write(SerialData,1); FormMain.Comport.Write(SerialData,1); end;

end;

while f_uart = false do; f_uart := false;

for J:=0 to 3 do begin

F:=False;

for K:=0 to Vtx.NeighborList.Count-1 do begin

N:=@Vtx.Neighbor[K]^; if N.Arah=Shortint(J) then begin

F:=True;

SerialData := byte(N.Vertex.ID); Break;

end; end;

if f = false then begin

SerialData := $FF; end;

FormMain.Comport.Write(SerialData,1); end;

while f_uart = false do; end;

(63)

menunggu karakter FF heksadesimal dari mikrokontroler setiap kali selesai mengirimkan satu set data edge dan vertex sebesar 12 Byte dan mengirim data edge dan vertex berikutnya jika sudah menerima karakter tersebut.

Pengiriman data berikutnya yaitu data start node, finish node, dan arah hadap pada posisi start dan diakhiri dengan menerima karakter FF heksadesimal dari mikrokontroler yang dapat ditunjukkan pada penulisan program seperti berikut:

f_uart := false;

Vtx := @matrix[xStart,yStart]^; SerialData := vtx.ID;

FormMain.Comport.Write(SerialData,1); Vtx := @matrix[xFinish,yFinish]^; SerialData := vtx.ID;

FormMain.Comport.Write(SerialData,1); Vtx := @matrix[xFinish,yFinish]^;

Vtx:=@matrix[xStart, yStart]^;

for K := 0 to Vtx.NeighborList.Count- 1 do begin

N:=@Vtx.Neighbor[K]^;

if @N.Vertex.Previous^ = @Vtx^ then begin

FormMain.Comport.Write(byte(N.Arah),1); while f_uart = false do;

break; end; end;

3.2.3 Penerapan Algoritma Dijkstra

(64)

START

Set pada setiap vertex nilai: Total jarak = -1. Previous vertex = nil.

Status = false.

Set vertex start menjadi vertex dikunjungi. Set TotalJarak pada vertex dikunjungi

menjadi 0.

Apakah semua vertex tetangga dari vertex dikunjungi sudah diperiksa?

Nilai total jarak vertex tetangga ke-x= total jarak pada vertex dikunjungi + jarak dari vertex dikunjungi ke vertex tetangga

ke-x.

Previous vertex tetangga ke-x = vertex dikunjungi.

Simpan vertex tetangga ke-x ke antrian. Apakah status vertex

tetangga ke-x = false?

Apakah TotalJarak vertex

ke-x = -1

Apakah Total jarak vertex dikunjungi + Jarak dari vertex dikunjungi ke vertex tetangga ke-x <

TotalJarak vertex tetangga ke-x. N Y N N N Y

Nilai total jarak vertex tetangga ke-x= total jarak pada vertex dikunjungi + jarak dari vertex dikunjungi ke vertex tetangga

ke-x.

Previous vertex tetangga ke-x = vertex dikunjungi.

Y Set status vertex dikunjungi = true.

Set vertex dikunjungi = vertex dengan nilai total jarak terkecil dari vertex-vertex yang tersimpan pada

antrian.

Apakah tidak ada data pada antrian?

Y N

START Y

Gambar 3.13 Flowchart algoritma Dijkstra.

Penerapan algoritma Dijkstra dimulai dengan proses inisialisasi, pada PC dapat ditunjukkan pada penulisan program seperti berikut:

{Inisialisasi}

for A:=0 to Graph.Count-1 do begin

[image:64.595.93.503.79.604.2]
(65)

Gambar

Gambar 2.6 Susunan kaki microcontroller ATMega644P.
Tabel 2.3 Konfigurasi clock ADC.
Tabel 2.4 Register ADMUX.
tabel 2.7.
+7

Referensi

Dokumen terkait