IMPLEMENTASI ROBOT NXT LEGO PADA PERMAINAN TIC TAC
TOE
Andri Irwanto – Wahyu Suadi, S.Kom.,M.Kom.,M.M
Jurusan Teknik Informatika, Fakultas Teknologi Informasi, Institut Teknologi e-mail : irwansyah@cs.its.ac.id
Abstrak
Perkembangan teknologi yang
berkembang saat ini terus membuka berbagai alternatif baru dalam pemanfaatan teknologi robot yang lebih efisien dan cepat. Salah satu teknologi robot yang terkenal saat ini adalah LEGO NXT dengan platform Mindstorm NXT.
Lego Mindstorm NXT menawarkan lebih dari sekedar mainan. Lego Mindstorm NXT ini memungkinkan pembangunan robot dengan menggunakan beberapa motor dan juga sensor. Sebuah contoh sederhana yang dapat disimulasikan pada robot adalah permainan Tic Tac Toe. Penulis berusaha membuat sebuah robot yang mampu bermain Tic Tac Toe
melawan manusia dengan
mengimplementasikan suatu konstruksi dan algoritma yang digunakan, maka robot mampu untuk bermain Tic Tac Toe tanpa bantuan komputer maupun alat pemroses lainnya.
Kata Kunci : Robot, LEGO, NXT, Tic Tac Toe.
1. PENDAHULUAN
Perkembangan robotika di tanah air selama beberapa tahun terakhir ini terus mengalami peningkatan. Peserta event-event lomba robot yang secara tetap diadakan tiap tahun mulai bertambah khususnya di kalangan mahasiswa. Namun perkembangan robotika tidak hanya di kalangan mahasiswa saja, tetapi juga pada kalangan SD, SMP maupun SMA.
Robot yang digunakan adalah LEGO
ROBOTIC yaitu sebuah produk lego yang bisa dirangkai menjadi sebuah robot dan dapat diprogram dari komputer. LEGO Robotic ini
memadukan kemampuan mekanika dan
kemampuan programming untuk memecahkan berbagai masalah.
Di Indonesia baru mulai dirintis mulai 7 tahun lalu. Sedangkan event lomba robot tingkat SD, SMP dan SMA baru mulai dirintis
tahun 2005 dengan diselenggarakannya
Indonesian Robotics Olympiad (IRO) di Medan.
Sekarang ini sudah banyak bahasa yang bisa digunakan untuk memprogram LEGO
Robotic ini mulai dari icon based
programming seperti ROBOLAB (untuk siswa SD dan SMP) dan text based programming (Untuk SMA) seperti Visual Basic, C (NXC),
LegOS, BrickOS dan Java. Melihat
perkembangan robotik yang pesat, khususnya LEGO Robotic, di kalangan SD dan SMP,
penulis merasa perlu memperkenalkan
programming LEGO Robotic dengan
menggunakan bahasa NXC.
2. LEGO Mindstorm NXT
LEGO Mindstorm NXT adalah robot yang sangat mengasikan untuk bermain secara kreatif, karena disusun dari komponen-komponen yang bisa dilepas pasang. Kita dapat membangun berbagai konstruksi robot, kemudian memrogrammnya untuk berbagai tugas.
1.2.1 Komponen
1.2.1.1 Brick
Brick adalah komponen paling penting dari robot NXT, karena berfungsi sebagai pengendali (otak robot). Brick dapat diisi program untuk melakukan berbagai aksi.
Gambar 2.6 Gambar BRICK
Untuk interaksi langsung, pada Brick terdapat:
Satu layar LCD
Speaker untuk mengeluarkan suara
Empat Tombol (Cancel, OK, Left,
Selain itu Brick dapat menerima masukan dari 4 sensor, dan menjalankan 3 motor.
Gambar 2.7 Komponen – komponen NXT Robot
2.3.1.2 Motor
Motor berfungsi untuk mengerakan bagian robot, seperti memutar roda atau menjadi sendi. Satu brick bisa dipasangi hingga 3 motor.
Gambar 2.8 Motor
2.3.1.3 Sensor Sentuh
Sensor sentuh berkerja seperti indra
peraba pada manusia. Gunanya untuk
membuat robot yang kalau tesentuh akan bereaksi seperti berjalan mundur,belok ke kanan atau ke kiri,dll tergantung progamnya.
Gambar 2.9 Sensor Sentuh
2.3.1.4 Sensor Ultrasonik
Sensor Ultrasonik berfungsi seperti
mulut dan telinga pada kelelawar,
memancarkan Ultrasonik dan mendengar pantulannya supaya dapat memperkirakan jarak benda di depannya.
Gambar 2.10 Sensor Ultrasonik
2.3.1.5 Sensor Cahaya
Sensor cahaya seperti mata, berguna untuk mengetahui gelap terangnya sesuatu
(mode pasif). Pada mode aktif, bisa
memancarkan cahaya dan menerima
pantulannya, antara lain untuk membedakan warna benda.
Gambar 2.11 Sensor Cahaya
2.3.1.6 Sensor Suara
Sensor suara berfungsi seperti telinga, yaitu untuk menangkap suara.
Gambar 2.12 Sensor Suara
3. NXC
NXC singkatan Not eXactly C. Ini adalah bahasa sederhana untuk pemrograman LEGO NXT INDSTORMS produk. NXT ini memiliki juru bytecode (disediakan oleh LEGO), yang dapat digunakan untuk menjalankan program.
NXC compiler menerjemahkan program
sumber menjadi bytecode NXT, yang
kemudian dapat dijalankan pada target itu sendiri. Meskipun preprocessor dan struktur pengendalian NXC sangat mirip dengan C, NXC bukanlah bahasa pemrograman untuk tujuan umum - ada pembatasan banyak yang berasal dari keterbatasan bytecode interpreter NXT.
Logikanya, NXC didefinisikan sebagai dua
bagian yang terpisah. Bahasa NXC
menjelaskan sintaks yang akan digunakan
dalam penulisan program. The NXC
menjelaskan fungsi sistem, konstanta, dan macro yang dapat digunakan oleh program. API ini didefinisikan dalam file khusus yang dikenal sebagai file header "" yang, secara default, termasuk secara otomatis ketika mengkompilasi program.
Dokumen ini menjelaskan kedua bahasa
NXC dan API NXC. Singkatnya, ia
menyediakan informasi yang diperlukan untuk menulis program NXC. Karena terdapat antarmuka yang berbeda untuk NXC, dokumen ini tidak menjelaskan bagaimana untuk menggunakan implementasi NXC tertentu (seperti compiler baris perintah atau Bricx Command Center). Lihat dokumentasi yang diberikan dengan alat NXC, seperti NXC User Manual, untuk informasi khusus untuk implementasi itu.
4. Desain dan Implementasi Sistem
Pada bab ini akan dijelaskan hal-hal yang berkaitan dengan desain dan implementasi sistem yang akan dibuat dalam Tugas Akhir ini
4.1 Arsitektur sistem
Robot Tic Tac Toe dirancang sebagai aplikasi dengan Brick sebagai otak utama yang di dalamnya terdapat program dan motor sebagai aktuator yang mampu menggerakkan robot agar pemain maupun robot sendiri dapat mengisi bola pada setiap sel yang ada di dalam papan permainan Tic Tac Toe. Pada layar LCD terdapat tampilan papan yang dipergunakan oleh pemain untuk memainkan Tic Tac Toe. Untuk mengisi sel-sel tersebut pemain harus menggunakan alat input berupa tombol-tombol yang ada di brick NXT. robot sendiri juga memiliki algoritma agar bisa beramin Tic Tac Toe melawan manusia. Program juga berfungsi untuk menggerakkan motor agar pemain dan robot dapat menempatkan bola ke dalam papan permainan Tic Tac Toe secara bergantian. Berikit ini akan digambarkan diagram alir untuk permainan Tic Tac Toe sesuai arsitektur sistem yang telah dijelaskan.
Gerak pemain Cek pemain menang Gerak robot Cek robot menang Pemenangnya robot Pemenangnya pemain keluar Main lagi Main lagi ya tidak ya tidak ya tidak ya tidak mulai selesai
Gambar 4.1 Arsitektur Umum Sistem
4.2 Mengatur Gerakan Robot
Robot Tic Tac Toe ini menggunakan tiga motor yang digunakan untuk malakukan gerakakan agar bola dapat dimasukkan ke tiap-tiap sel pada papan permainan Tic TAc Toe yang sesuai gerakan yang diinginkan pemain maupun sesuai gerakan robot sendiri. Motor A berfungsi untuk memutar papan permainan Tic Tac Toe. Bola yang akan masuk ke sel tersebut akan diatur oleh motor A ini. Kemudian motor B berfungsi untuk mengatur posisi motor C. motor B ini akan menggerakkan motor C ke depan dan ke belakang agar bola yang akan dimasukkan ke dalam sel bisa tepat pada posisinya. Dan motor yang terakhir adalah motor C yang berfungsi untuk melontarkan bola agar masuk ke papan permaianan. Motor C ini akan membawa Sembilan bola yang disusun secara bergantian antara bola warna putih dan bola waran hitam. Bola warna hitam digunakan untuk menandai gerakan pemain, sedangkan untuk bola waran putih digunakan untuk menandai gerakan robot. Berikut ini gambaran mengenai gerakan robot dalam mengisi sel pada papan permainan Tic Tac Toe.
4.3 Perancangan Tampilan Aplikasi
Dengan memanfaatkan layar LCD dari Brick NXT, kita bisa membuat papan permainan yang terdiri atas empat garis yang disusun sedemikain hingga menjadi papan permainnan Tic Tac Toe 3x3. Garis dapat dibuat dengan memanfaatkan fungsi API yang disediakan oleh firmware atau sistem operasi standart NXT. Gerakan pemain ditandai
dengan simbol silang, sedangkan gerakan untuk robot sendiri ditandai dengan symbol lingkaran. Untuk membedakan antara gerakan pemain maupun gerakan robot, maka untuk nilai positif akan digambar X sebagai tanda gerakan pemain, sedangkan untuk nilai negative akan digambar O (lingkaran) sebagai tanda gerakan robot pada layar LCD NXT. Input yang digunakan adalah tombol kanan, tombol kiri, tombol tengah, dan tombol cancel. Tombol inilah yang digunakan pemain untuk melakukan gerakan yang ada pada layar LCD NXT. Menggambar papan Mengecek positif/negatif Menggambar X Sebagai tanda gerakan pemain Menggambar O Sebagai tanda gerakan robot positif negatif mulai selesai
Gambar 4.2 Perancangan Tampilan
4.4 Perancangan Algoritma yang digunakan
Algoritma yang digunakan berfungsi agar robot dapat memutuskan geraknya secara maksimal. Algoritma ini diperlukan agar robot bisa menghambat gerak pemain agar pemain tidak bisa memenangkan permainan, hal ini bisa diketahui apabila setelah dicek ternyata skor untuk pemain adalah dua. Selain itu, Algoritma yang digunakan mampu melihat apakah dalam permaian ini pemain keluar sebagai pemenang atau robot yang keluar sebagai pemenang mulai Mengecek pemenang Pemain menang Robot menang pemain robot Belum ada Menghadang gerak pemain Robot mneghadang gerakan pemain ya Papan tengan kosong Robot mengisi sel tengah Robot melakukan gerakn lain ya tidak tidak selesai
Gambar 4.3 Perancangan Algoritma
4.5 Perancangan Gerakan Pemain
Untuk melakukan gerakan, pemain harus menggunakan tombola arah kanan, kiri, maupun tombol tengah. Tombol kanan dan tombol kiri digunakan untuk memilih lokasi sel mana yang nantinya akan diisi oleh tanda X, kemudian tombl tengah berfungsi untuk melakukan gerakan sesuai sel yang telah dipilih tadi dengan tanda X.
mulai Menekan tombol Gerakan pemain diincrement satu Gerakan pemain didecrement satu kanan kiri tengah Menggambar simbol X pada sel
yang telah dipilih
selesai
Gambar 4.4 Perancangan Gerakan Pemain
5. Uji Coba
Uji coba yang dilakukan adalah uji coba fungionalitas dari aplikasi yang telah dibuat.
5.1 Uji coba fungsionalitas
Uji coba ini dilakukan untuk melihat apakah fungsi-fungsi dasar dari perangkat
lunak ini berjalan sebagaimana mestinya atau tidak.
5.1.1 Menampilkan Papan Tic Tac Toe
Layar LCD digunakan untuk
menampilkan papan permainan Tic Tac Toe, layar ini yang nantinya akan digunakan oleh pemain untuk mengontrol gerakan pemain itu sendiri.
Gambar 5.1 Tampilan Papan Permainan
Input yang digunakan adalah tombol kanan, tombol kiri, tombol tengah dan tombol
exit. Tombol kanan dan tombol kiri digunakan untuk mengarahkan, kemudian tombol tengah digunakan untuk menaruh bola. Gambar 5-1 dapat dilihat sebuah kursor yang membantu pemain untuk menentukan gerakannya.
5.1.2 Menggerakkan Motor
Pemain dan robot secara bergantian melakukan gerakan untuk mengisi papan permainan. Dibawah ini merupakan hasil pengujian untuk menggerakkan ketiga motor agar gerakan yang dinginkan oleh pemain maupun robot dapat tepat dan akurat.
Gambar 5.2 Gerakan Motor
5.1.3 Algoritma Untuk Gerakan Robot
Agar robot mampu bermain dengan pemain, maka diperlukan algoritma supaya
robot dapat melakukan gerakan yang
maksimal. Berikut iki uji coba agar robot mampu menghadang gerak pemain agar tidak bisa memenangkan permainan.
Gambar 5.3 Gerakan Robot
5.1.4 Gerakan Pemain
Untuk gerakan pemain disediakan LCD sebagai alat output dan tombol sebagai alat inputannya. Pemain hanya bisa melakukan gerakan di papan yang selnya kosong. Kemudian apabila pemain menekan tombol tengah, maka tanda X akan ditempatkan pada sel tersebut.
Gambar 5.4 Posisi Kursor Telah Digerakkan oleh pemain
5.2 Uji coba performa
5.2.1 Robot Mengalahkan Pemain
Pada uji coba ini pemain sengaja mengalah agar robot bisa memenangkan permainan. Pada uji coba ini akn dihitung jumlah step yang terjadi ketika robot mengalahkan pemain serta mekanikal errornya.
Gambar 5.5 Robot Memenangkan Permainan
Tabel 5.1 Informasi Percobaan Pemenang Robot
Step 8
Mekanikal error -
5.2.1 Robot Menghadang Gerakan Pemain
Pada uji coba ini akan dilihat apakah robot mampu menghadang gerak pemain agar pemain tidak bisa memenangkan permainan.
Gambar Robot Menghadang Gerakan Pemain
Tabel 5.2 Informasi Percobaan II Pemenang No Step 9 Mekanikal error -
5.2.1 Perbandingan NXC dan LeJOS
Uji coba kali ini untuk membandingkan tingkat presisi robot ketika menggunakan NXC maupun menggunakan LeJOS. Uji coba ini menggunakan sebuah motor yang diputar dengan kecepatan dan sudut putar tertentu. Berikut ini merupakan hasil pengujian untuk merotasi motor.
Tabel 5.3 Menghitung Persen Error Motor pada rotasi 7200
Rotasi ke
NXC
LeJOS
1
2
00
02
2
00
03
3
00
04
3
00
05
4
00
06
4
00
07
3
00
08
3
00
09
4
00
010
3
00
0Total error
31
00
0persen error 0.43%
0%
Dari pengujian diatas dapat diperoleh hasil bahwa LeJOS masih unggul dalam
tingkat kepresisian gerakan motor bila
dibandingkan dengan menggunakan NXC yang merupakan standat firmware dari NXT.
6. Kesimpulan
Dari hasil pengamatan selama
perancangan, implementasi, dan proses uji coba perangkat lunak yang dilakukan, dapat diambil kesimpulan sebagai berikut :
1. Sistem yang dibuat sudah mampu
memenuhi kebutuhan sebagai aplikasi
yang bisa mengimplementasikan
permainan Tic Tac Toe menggunakan robot nxt dengan beberapa batasan.
2. Aplikasi ini dapat dijalankan tanpa
menggunakan computer atau server lain
untuk memproses program maupun
algoritma. Untuk sementara penggunaan robot hanya dapat di deploy pada Lego
Mindstorms NXT dengan firmware
standart.
Uji coba menunjukkan bahwa penggunaan Firmware LeJOS untuk mengganti firmware standart NXT terbukti lebih unggul dalam hal tingkat kepresisian untuk menggerakkan motor bila dibandingkan dengan NXC yang menggunakan firmware asli NXT.
7. Saran
Berikut merupakan beberapa saran untuk pengembangan sistem di masa yang akan datang, berdasar pada hasil perancangan, implementasi, dan uji coba yang telah dilakukan.
1. Membuat robot yang bisa bermain Tic Tac
Toe pada papan selain 3x3.
2. Membangun konstruksi robot yang lebih
baik agar dihasilkan keakuratan gerak yang lebih sempurna.
3. Penggunaan bahasa pemrograman yang
berbeda agar lebih bisa digunakan dengan tidak terbatas pada semua robot dan komputer.
4. Penggunaan algoritma yang lebih baik
sehingga bisa menghasilkan langkah robot yang lebih efektif.
8. Daftar pustaka
1. Benedettelli, Daniele, Lego
Mindstorms NXT Thinking Robots,
2010, no starch press.
2. Hansen, John C, Lego Mindstorm
NXT Power Programming Robotics In C. Second Edition.
3. http://bricxcc.sourceforge.net/nbc/nxc doc/nxcapi/index.html, tentang petunjuk pemrograman NXC, diakses pada 28 Februari 2010.
4. Perdana, Dian, 2010, Penyelesaian
Rubic Cube Dengan Menggunakan Robot NXT, Tugas Akhir, Jurusan
Teknik Informatika, Fakultas