• Tidak ada hasil yang ditemukan

TUTORIAL PERANCANGAN SISTEM EMBEDDED BERBASIS STATECHART:STUDI KASUS PADA LINE FOLLOWER MOBILE ROBOT

N/A
N/A
Protected

Academic year: 2021

Membagikan "TUTORIAL PERANCANGAN SISTEM EMBEDDED BERBASIS STATECHART:STUDI KASUS PADA LINE FOLLOWER MOBILE ROBOT"

Copied!
11
0
0

Teks penuh

(1)

FOLLOWER MOBILE ROBOT

(Embedded Systems Design Principles: From Drawing to Coding, rev 0, mei 2009)

Oleh : Iwan Setiawan

Automatic Control Lab, Electrical Engineering of UNDIP

http://iwan.blog.undip.ac.id

setiaone.iwan@gmail.com

(2)

Kata Pengantar Saat ini, tutorial yang membahas robot mobile penjejak garis banyak kita jumpai dalam buku, paper atau pun dari berbagai sumber di internet. Tetapi jika anda cermati, algoritma atau strategi kontrol robot mobile yang dibahas umumnya disajikan dalam bentuk kode program secara langsung. Mungkin saja algoritmanya relative canggih, tetapi apakah anda akan cepat paham dengan algoritma tersebut?, Penulis tidak yakin anda akan cepat menangkap ide yang ingin diungkap oleh si penyusun algoritma. Hal ini dikarenakan kode program-walaupun ditulis dalam bahasa tingkat tinggi (seperti C, Basic, atau Pascal) bagi manusia tetap merupakan bahasa yang tidak alamiah, tidak manusiawi! (untuk lebih jelasnya silahkan anda baca Design of Embedded Control System Using Statechart: One Picture is Worth a Thousand of Words !)

Tulisan ini pada dasarnya tidak semata-mata membahas robot mobile (apalagi mengulang materi robot mobile yang mudah anda jumpai di internet). Robot mobile penjejak garis yang diusung dalam tulisan ini hanyalah merupakan studi kasus yang penulis gunakan untuk mengilustrasikan betapa sederhana, sistematis, mudah dipahami dan menyenangkannya perancangan sistem

embedded dengan menggunakan Statechart.

Dalam tulisan ini akan dijelaskan langkah perancangan dari mulai Thinking, Drawing sampai Coding yang nantinya dapat juga digunakan dalam perancangan sistem kontrol yang lebih luas. Semoga bermanfaat.

(3)

Problem Robot Mobile Penjejak Garis

Sebelum melakukan proses perancangan perangkat lunak pengontrolan lewat diagram Statechart, kita terlebuh dulu harus paham dengan tujuan serta spesifikasi sistem yang akan dirancang. Berikut adalah tujuan serta spesifikasi yang dijadikan studi kasus dalam tulisan ini:

¾ Tujuan Perancangan:

Robot mobile yang nanti dibangun akan mampu menjejak garis hitam pada bidang warna putih (atau sebaliknya: garis putih pada bidang warna hitam). Dalam hal ini, garis digunakan oleh robot sebagai panduan atau landmark dalam bernavigasi (jika anda ingin mengetahui permasalahan navigasi secara umum silahkan baca artikel: Navigation Problem: Where Am I, Where Am I going, How do I get There di alamat url: http://iwan.blog.undip.ac.id)

¾ Spesifikasi Perangkat keras robot:

• Agar robot mobile memiliki kemampuan bermanuver tinggi dan dapat dikontrol relative mudah, sistem kemudi yang digunakan dalam studi kasus ini adalah jenis diferensial : Robot memiliki dua roda utama yang digerakan oleh sistem penggerak (motor DC) tersendiri dan satu buah kastor sebagai roda penyeimbang.

• Untuk dapat mendeteksi garis (membedakan warna), dalam studi kasus ini digunakan photosensor yang bekerja berdasarkan prinsip pemantulan cahaya: bidang warna gelap cenderung memantulkan cahaya relative sedikit dibandingkan bidang warna cerah. Agar pergerakan robot mobile relative halus, jumlah photosensor yang digunakan sebanyak 8 buah: 4 buah photosensor digunakan untuk mengetahui status posisi robot samping kiri relative terhadap garis, dan 4 buah photosensor sisanya digunakan untuk mengetahui status posisi robot samping kanan relative terhadap garis.

Dalam studi kasus ini, informasi garis yang dijejak oleh robot akan bernilai 1 sedangkan informasi bidang (misal lantai) akan bernilai 0 (lihat Gambar 1)--Hal tersebut dapat dilakukan baik lewat rekayasa rangkaian sensor maupun lewat software (operasi pembalikan bit).

Gambar 1. Informasi garis yang diperoleh robot lewat photosensor

• Untuk kepentingan perancangan perangkat lunak, empat buah photosensor sebelah kiri dan empat buah sensor sebelah kanan robot dikoneksikan pada PORT microcontroller yang berbeda. Didalam perangkat lunak, informasi kedua status sisi robot tersebut

(4)

disimpan dalam dua buah variabel bertipe integer tak bertanda, misal variabel left digunakan untuk menyimpan 4 buah informasi photosensor sebelah kiri robot dan variabel right digunakan untuk menyimpan 4 buah informasi photosensor sebelah kanan robot. Gambar 2 dan 3 berikut berturut-turut memperlihatkan contoh interkoneksi serta hubungan status photosensor dengan kedua nilai variabel left dan right

Gambar 2. Interkoneksi Sensor

(5)

Perancangan software pengontrolan Sederhana

Berdasarkan spesifikasi diatas, sekarang kita pada dasarnya sudah dapat merancang sistem pengontrolan robot mobile penjejak garis. Algoritma dapat dibangun berdasarkan informasi posisi robot saat ini relative terhadap garis yang dijejaknya. Untuk lebih jelasnya anda perhatikan beberapa kemungkinan posisi robot mobile terhadap garis seperti nampak pada gambar 4 dibawah:

Gambar 4. Beberapa posisi robot mobil pada garis

Maka berdasarkan gambar 4 diatas, algoritma pengontrolan dapat mengambil bentuk seperti berikut ini: if (left==right) { //mobot go straight } if (left<right) {

//mobot turn left }

if (left>right) {

//mobot turn right }

Permasalahan yang muncul dengan strategi kontrol diatas adalah jika satu saat robot kehilangan jejak garis (misal karena belokannya terlalu tajam atau karena robot bergerak terlalu cepat), apakah robot harus bergerak ke arah kiri atau arah kanan ?--lihat ilustrasinya pada gambar 5 berikut:

(6)

Gambar 5. Robot berada di luar garis

(7)

Perancangan software pengontrolan Berbasis StateChart ¾ Thinking

Ketika satu saat robot berada di luar garis (dalam hal ini diindikasikan oleh pembacaan kedua variabel left dan right yang bernilai 0), maka agar robot bergerak kearah yang benar, robot tersebut harus memiliki ”memori”. Untuk setiap saat, robot harus mengetahui ”sedang dimanakah saya?, apakah saya sedang di track yang benar, apakah saya terlalu kiri dari garis?, apakah saya berada diluar garis sebelah kiri?, apakah saya berada di luar garis sebelah kanan?”. Untuk lebih jelasnya anda perhatikan gambar 6.

Jika robot mengetahui posisinya saat ini, maka pengontrolan pada dasarnya dapat dilakukan secara sederhana, berikut adalah contoh robot berpikir dengan logika yang benar: Jika saya berada di tengah garis maka saya akan bergerak lurus, jika saya sekarang di sebelah kiri garis maka saya akan bergerak kearah kanan, jika saya ada disebelah kiri garis tiba-tiba garisnya menghilang maka saya akan berbelok tajam kearah kanan, dan seterusnya, dan seterusnya. ¾ Drawing (and Thinking)

Gambar 7. Diagram statechart pada robot mobile penjejak garis

Setelah anda menetahui dan paham dengan berbagai kemungkinan posisi robot serta apa yang harus dilakukan oleh robot jika ada pada suatu keadaan tertentu, maka anda sekarang sudah dapat melakukan proses drawing. Dalam hal ini kemungkinan-kemungkinan posisi robot (state) anda gambarkan dalam bentuk kotak dengan ujung agak bundar (atau dapat juga digambar sebagai bulatan), transisi dari satu keadaan ke keadaan lain anda gambar kan sebagai tanda panah, dimana kondisi penyebab transisi tersebut anda tulis diatas tanda panah, sedangkan pengontrolan

(8)

robotnya itu sendiri misal robot belok kanan, robot lurus dan seterusnya pada dasarnya adalah bentuk activity, dalam hal ini anda tulis didalam state (lingkaran)

Gambar 7 memperlihatkan representasi logika pengontrolan robot dalam bentuk Statechart yang digunakan dalam studi kasus ini secara relative lengkap. Walaupun anda mungkin sebelumnya belum mengenal Statechart, tetapi diagram pada gambar 7 nampaknya sangat intuitive dan mudah dipahami sehingga penulis yakin anda akan cepat paham dengan apa yang dikehendaki oleh gambar tersebut.

¾ Coding

Setelah diagram Statechart diperoleh, maka langkah selanjutnya adalah coding. Untuk kasus ini ada dua buah fungsi yang perlu kita realisasisan dari statechart tersebut :

1. Fungsi transisi state : fungsi ini merepresentasikan kemungkingan-kemungkinan transisi state yang dapat terjadi untuk sebuah kondisi tertentu (lihat gambar 7)

//fungsi statechart

void transisi_state() {

switch(state) {

case INIT : if(right==left) state CENTER if(right<left) state = RIGHT; if(right>left) state = LEFT;

break;

case CENTER : if(right<left) state = RIGHT; if(right>left) state = LEFT;

break;

case RIGHT : if(right==0) state= OUT_RIGHT; if(right>= left) state= CENTER;

break;

case LEFT : if(left==0) state = OUT_LEFT; if(right<= left) state = CENTER;

break;

case OUT_RIGHT: if(right!=0) state = RIGHT; break;

case OUT_LEFT : if(left!=0) state = LEFT; break;

default : break; }

(9)

2. Fungsi activity: Fungsi ini merepresentasikan apa yang dikerjakan oleh robot ketika berada pada keadaan posisi terntentu (lihat gambar 7)

//fungsi activity dalam state

void activity() {

if(state== CENTER) go_straight(); if(state== RIGHT) turn_left(); if(state== LEFT) turn_right();

if(state== OUT_RIGHT) turn_left_sharp(); if(state== OUT_LEFT) turn_right_sharp(); }

Didalam program utama, selanjutnya kita panggil atau jadwal kedua fungsi tersebut, misal setiap 50 ms sekali. Berikut adalah cuplikan program utama pengontrolan sistem robot penjejak garis

//program utama

enum{INIT, CENTER, RIGHT, LEFT, OUT_RIGHT, OUT_LEFT};

#define right PINA&0x0f

#define left PINB&0x0f unsigned char state; …..

main() {

//inisialisasi hardware dan variabel lain yang diperlukan init_hardware();

state=INIT; //inisialisasi state awal while(1)

{

//panggil fungsi state_mobot dan activity_in_state disini (misal setiap 50 ms) if(timer_soft ==50) { transisi_state(); activity (); } } } Mudah Bukan ? Catatan-catatan Penting

• Agar program yang anda susun terstruktur, maka sebelum mendefinisikan fungsi-fungsi pergerakan robot high level, yaitu seperti go_straight(), turn_left(), turn_right() turn_left_sharp(), dan turn_right_sharp(), anda sebaiknya membuat atau mendefinisikan terlebih dulu sistem kontrol robot yang bersifat lebih low level.

(10)

Misal, Karena semua fungsi high level secara teknis nantinya akan memanipulasi besaran PWM untuk setiap roda, maka buat terlebih dulu fungsi pemanipulasian PWM untuk masing-masing roda, misal prototype yang digunakan:

Void set_wheel_speed(int pwm_motor_kiri, int pwm_motor_kanan); //pwm 0-100% Dengan anggapan anda telah mendefiniskan detail dari fungsi diatas, maka nantinya fungsi high level secara langsung dapat memanggil fungsi low level tersebut.

Berikut adalah contoh yang dapat anda gunakan: go_straight() { set_wheel_speed(100, 100); //pwm 0-100% : max } turn_left() { set_wheel_speed(70, 90); //pwm 0-100% }

Khusus untuk algoritma untuk berbelok (misal turn_left(), turn_right(), dst), logika kontrol yang diimplementasikan didalamnya dapat saja bersifat batch, artinya besar kecepatan putar belok ditentukan juga oleh selisih besar variabel left dan right.

• Agar desain perangkat keras lebih efisien, sensor dapat dihubungkan dengan satu buah port (dengan catatan interkoneksi harus anda ubah --lihat ilustrasinya pada gambar 8)

(11)

• Diagram perancangan dapat anda kembangkan lebih lanjut, disesuaikan dengan problem yang dihadapi: misal jika robot yang anda rancang ingin dapat mendeteksi persimpangan (lihat gambar 9), serta juga ingin melakukan aksi tertentu, maka dalam perancangan anda harus menerapkan konsep event dan action (dalam studi kasus ini kedua konsep tersebut tidak diperlukan)

Gambar 9. Persimpangan garis

Bahan Bacaan

1. BrucePowerDouglas” State Machines and StateChart”, i-Logix

2. Edward Carryer “Event Driven Programming”, Standford University 2005

Gambar

Gambar 1. Informasi garis yang diperoleh robot lewat photosensor
Gambar 2. Interkoneksi Sensor
Gambar 4. Beberapa posisi robot mobil pada garis
Gambar 5. Robot berada di luar garis
+4

Referensi

Dokumen terkait

Namun terdapat beberapa hal yang tidak dilaksanakan oleh panitia pemilih dalam pemilihan kepala Desa Minton yakni tidak dilakukannya pengesahan calon kepala desa kepada

Adanya program ini diharapkan dapat dihasilkan produk jajanan baru, yang nantinya diharapkan dapat bersaing dengan produk makanan lain, karena es krim jamur

Sakit Umum Daerah Provinsi Kepulauan Bangka Belitung belum tercantum dalam Peraturan Daerah Provinsi Kepulauan Bangka Belitung Nomor 2 Tahun 2011 tentang Retribusi Jasa

Jika terdapat bukti objektif bahwa kerugian penurunan nilai telah terjadi atas pinjaman yang diberikan dan piutang atau investasi dimiliki hingga jatuh tempo yang

Triangulation dalam penelitian ini triangulasi dilakukan dalam tiga jenis yakni triangulasi metode dengan menerapkan gabungan antara wawancara, observasi dan studi

Metode ini hanya digunakan untuk obat yang tidak potensial, ahli farmasi menempatkan seluruh serbuk yang telah diolah di atas suatu permukaan lempeng dari gelas atau porselen

Data penelitian diperoleh melalui analisis terhadap perangkat pembelajaran genetika buatan guru SMA se-kota Ternate yang berhasil dihimpun ketika penelitian.

Dapat disimpulkan dari wawancara mendalam yang dilakukan penulis dengan beberapa pemohon di BPPT Kabupaten Grobogan bahwa perhatian yang diberikan pegawai pada