BAB II LANDASAN TEORI 2.1. Perkembangan Robot Istilah “robot” muncul pertama kali pada Czecholoslovakian satirical play, Rossum’s Universal Robots, oleh Karel Capek pada tahun 1920. Robot pada pementasan ini cenderung berperilaku seperti manusia. Berangkat dari hal tersebut, terlihat beberapa cerita fiksi ilmiah yang melibatkan robot dengan emosi manusia dalam masyarakat. Hal tersebut berubah ketika General Motors memasang robot pertamanya di pabrik manufakturingnya pada tahun 1961. Mesin-mesin automatis ini merepresentasi image yang seluruhnya berbeda dari robot berbentuk manusia. Ketika para pencipta robot pertama kali mencoba meniru manuasia dan hewan, mereka menemukan bahwa hal tersebut sangatlah sulit, membutuhkan tenaga perhitungan yang jauh lebih banyak dari yang tersedia pada masa itu. Jadi, penekanan perkembangan diubah ke bidang riset lainnya. Robot sederhana beroda digunakan untuk melakukan eksperimen dalam tingkah laku, navigasi, dan perencanaan jalur. Teknik navigasi tersebut telah berkembang menjadi sistem kontrol robot otonom yang tersedia secara komersial, contoh paling mutakhir dari 8 sistem kontrol navigasi otonom yang tersedia sekarang ini termasuk sistem navigasi berdasarkan laserdan VSLAM (Visual SimulraneousLocalization and Mapping) dari Activ Media Robotics dan Evolution Robotics. Ketika para teknisi siap untuk mencoba robot berjalan kembali, mereka mulai dengan heksapoda dan platform berkaki banyak lainnya. Robot-robot tersebut meniru serangga dan arthropoda dalam bentuk dan fungsi. Tren menuju jenis badan tersebut menawarkan fleksibilitas yang besar dan terbukti dapat beradaptasi dengan berbagai macam lingkungan, tetapi biaya dari penambahan kerumitan mekanikal telah mencegah pengadopsian oleh para konsumen. Dengan lebih dari empat kaki, robot-robot ini stabil secara statis yang membuat mereka bekerja lebih mudah. Tujuan dari riset robot berkaki dua adalah mencapai gerakan berjalan menggunakan gerakan pasif-dinamik yang meniru gerakan manusia. Perkembangan hebat telah dibuat dalam robot medis,dengan dua perusahan khusus, Computer Motion dan Intuitive Surgical, yang menerima pengesahan peraturan di Amerika Utara, Eropa, dan Asia atas robot-robotnya untuk digunakan dalam prosedur pembedahan minimal. Tempat lain dimana robot disukai untuk menggantikan pekerjaan rumah adalah dalam ekspolorasi laut dan ekspolorasi antartika. Untuk tugas-tugas ini, bentuk tubuh artropoda umumnya disukai. Mark W. Tilden dahulunya spesialis Laboratorium Nasional Los Alamos, membuat robot mudah dengan kaki bengkok tetapi tidak menyambung, sementara orang lain mencoba membuat kaki kepiting yang dapat bergerak dan tersambung penuh. 9 Robot bersayap eksperintal dan contoh lain mengeksploitasi biomimikri juga dalam tahap pengembangan dini. Yang disebut “nanomotor” dan “kawat cerdas” diperkirakan dapat menyederhanakan daya gerak secara drastis, sementara stabilisasi dalam penerbangan nampaknya cenderung diperbaiki untuk riset militer teknologi permata-mataan. 2.2. Perancangan Robot Mobil Salah satu jenis robot mobil yang umum digunakan adalah robot mobil dengan sistem penggerak differensial. Alasan utamanya karena relatif fleksibel dalam melakukan manuver. Gambar 2.1. Posisi dan orientasi robot mobile dalam sistem koordinat cartesian Untuk panjang jari-jari roda r, serta kecepatan rotasi roda kanan, dan kiri berturut-turut wr dan wl, maka kecepatan linear roda kanan dan kiri dapat dicari dengan persamaan berikut : 10 VR (t) = rωR (t) (1) VL (t) = rωL (t) (2) Ketika robot melakukan gerak memutar sesaat dengan panjang jari-jari R yang diukur dari pusat rotasi dan titik pusat kedua roda, kecepatan rotasi dapat dihitung sebagai : ω(t) = (3) ω(t) = (4) Kecepatan linier robot v(t) dan kecepatan rotasi robot w(t) dapat diketahui berdasarkan kedua kecepatan linier roda. Secara matrik dapat disajikan sebagai berikut : = (5) Persamaan (5) diatas memperlihatkan relasi kinematika langsung antara kecepatan linier roda-roda robot terhadap kecepatan linier dan angular robotnya, sedangkan persamaan (6) dibawah memperlihatkan relasi sebaliknya. 11 = (6) Syarat mutlak pengendalian posisi robot mobil adalah diketahuinya posisi dan orientasi robot tiap saat. Salah satu solusinya adalah dengan menghitung jarak tempuh roda setiap waktu. Jarak tempuh roda kiri (Sl), roda kanan (Sr), dan jarak rata-rata (S) dalam kawasan waktu berturut-turut sebagai berikut : SL (t) = VL (t) . t (7) SR (t) = VR (t) . t (8) S(t) = .t (9) Pendekatan rumus untuk orientasi, posisi koordinat x, dan koordinat y berturut-turut sebagai berikut : (t) = 2.3. + O (10) x (t) = x0 + S cos (t) (11) y (t) = y0 + S sin (t) (12) Robot Lego Mindstorm NXT LEGO Mindstorm NXT adalah perangkat robot yang pertama dirilis sebagai robot edukasi pada akhir Juli 2006. Seri NXT ini merupakan penerus dari sebelumnya, yaitu RIS (Robotics Invention System). Robot Lego Mindstorm 12 NXT dapat diprogram sesuai dengan keinginan. Adapun beberapa bahasa pemograman yang dapat dijalankan dalam lego NXT yaitu NXT-G, NXT Byte Codes (NBC), Not eXactly C (NXT), RobotC, leJOS NXJ, Microsoft Robotics Studio, dan masih banyak lagi. Robot lego ini terdiri dari komponen-komponen yang bisa dilepas pasang, sehingga kita bisa membuat berbagai bentuk robot, misalnya : Gambar 2.2 Contoh bentuk robot lego mindstorm NXT 13 Komponen-komponen yang ada di robot lego mindstorms NXT adalah : 2.3.1. Brick Gambar 2.3 Brick Brick adalah komponen paling penting dari robot NXT, karena berfungsi sebagai pengendali (otak dan sumber tenaga robot NXT). Program yang sudah dibuat dapat di-upload ke NXT Brick untuk di compile. Spesifikasi teknis dari NXT Brick, yaitu : 32-bit AT91SAM7S256 (ARM7TDNI) main microprocessor @48 MHz (256 KB flash memory, 64 KB RAM) 8-bit Atmega48microcontroller @ 4 MHz (4 KB flash memory, 512 Bytes RAM) LCD display 100 x 64 piksel Bluetooth Satu port USB 2.0 Empat port input : port 1, port 2, port 3, dan port 4 14 Tiga port output : port A, port B, dan port C Speaker terintegrasi untuk mengeluarkan output suara Empat tombol : cancel, OK, left, dan right Penggunaan dua processor membuat Lego Mondstorm NXT dapat menjalankan lebih dari satu Thread pada program. Hal ini disebabkan oleh adanya 2 (dua) processor yang mengerjakan fungsi yang berbeda pada saat bersamaan. Mikrocontroller ARM7 berfungsi sebagai master controller yang fungsi utamanya mengatur jalur komunikasi. Fungsi dari mikrokontroler (PMW) untuk mengendalikan ketiga motor, serta Analog to Digital Converter(ADC) dari terminal masukan. Gambar 2.4. Diagram blok NXT brick 15 Brick dapat menerima masukan dari 4 sensor, dan menjalankan 3 motor sekaligus, dengan bentuk seperti dibawah ini : Gambar 2.5. Brick dengan 4 sensor dan 3 motor Tampilan pada layar LCD brick adalah sebagai berikut : Gambar 2.6. Tampilan pada layar LCD brick 16 Brick dapat kita ibaratkan seperti CPU padakomputer, yang berfungsi untuk mengolah data. Brick berfungsi untuk mengendalikan jalannya robot sesuai dengan program yang kita buat. Pada pembuatan program dengan NXT kita dapat melakukannya dengan 2 cara : Membuat program secara langsung pada NXT Brick. Membuat program melalui komputer, selanjutnya kita upload ke NXT Brick. Untuk program-program yang sederhana kita dapat membuatnya secara langsung pada NXT Brick, sedangkan untuk program-program yang kompleks dan rumit kita dapat membuatnya di komputer terlebih dahulu. Cara membuat program sederhana langsung pada NXT Brick, yaitu : Gambar 2.7. Cara membuat program pada NXT Brick 17 Contoh pemograman yang bisa dibuat langsung pada brick adalah program untuk robot mini golf. Dimana robot tersebut bergerak seperti orang yang sedang bermain golf. Langkah-langkah untuk membuat robot mini golf tersebut sebagai berikut : Gambar 2.8. Contoh pemograman pada brick 2.3.2. Motor Motor pada Lego Mindstrom NXT berfungsi untuk menggerakkan bagian robot, seperti memutar roda atau menjadi sendi. Satu brick bisa dipasang hingga 3 (tiga) buah motor. Motor pada NXT Mindstorm tidak menggunakan motor DC biasa. Motor DC memiliki keterbatasan dalam hal kemampuan torsi putar, karena motor DC tidak mempunyai umpan balik umpan balik untuk mengadaptasi beban pada motor DC. Pada robot Lego Mindstorm NXT, motor yang dipakai adalah motor DC servo yang dilengkapi dengan sebuah encoder yang berfungsi sebagai 18 umpan balik, sehingga pusat pengendalian dapat memberikan arus yang sesuai dengan beban pada motor. Kecepatan sudut maksimum motor adalah satu putaran per detik. Servo juga dapat digunakan untuk menghitung drajat perputaran atau rotasi. Akurasi dari servo motor mencapai kurang lebih satu drajat. Dalam perkembangannya, motor servo dipadukan dengan susunan gearing tertentu untuk mendapatkan torsi akhir yang lebih besar. Torsi yang besar yang didapat dalam waktu singkat merupakan kelebihan motor servo. Kekurangan motor servo adalah kurangnya akurasi sehingga diperlukan suatu pengendali yang dapat meningkatkan keakurasian. Gambar dibawah ini menunjukkan motor lego mindstorm NXT. Gambar 2.9. Motor Dalam perkembangannya motor servo dipadukan dengan susunan gearing tertentu untuk mendapatkan torsi akhir yang lebih besar. Torsi yang besar yang didapat dalam waktu singkat merupakan kelebihan motor servo. Kekurangan motor servo adalah kurangnya akurasi sehingga diperlukan suatu pengendali yang dapat meningkatkan keakurasian. Dari gambar di bawah, maka kita dapat melihat konstruksi bagian dalam motor pada robot lego mindstrorm NXT. 19 Gambar 2.10. Konstruksi bagian dalam motor 2.3.3. Sensor Sentuh Sensor sentuh bekerja seperti indera peraba manusia. Sensor sentuh bekerja berdasarkan penekanan dari saklar, seperti yang telihat pada gambar 2.11. Saklar yang digunakan pada sensor ini merupakan saklar normally off, yang artinya jika saklar ditekan, maka akan mengindikasikan logika “1” dan jika dilepas, maka akan berlogika “0”. Gambar 2.11. Saklar sentuh 20 Guna sensor sentuh ini adalah untuk membuat suatu aksi dari robot yang jika sensor tersebut ditekan, maka robot akan melakukan gerakan/aksi tertentu, tetapi jika sensor tersebut dilepas, maka robot akan melakukan aksi lainnya. Sensor ini dapat kita kombinasikan dengan sensor yang sama atau dengan sensor yang berbeda. Gambar 2.12. Sensor Sentuh 2.3.4. Sensor Ultrasonik Sensor Ultrasonik adalah sensor yang memanfaatkan gelombang ultrasonik sebagai alat navigasi. Gelombang ultrasonik adalah gelombang yang memiliki frekuensi lebih dari 20 KHz. Beberapa hewan tertentu dapat mendengarkan gelombang ultrasonik, seperti lumba-lumba dan kelelawar. Sensor ultrasonik pada lego mindstrom NXT berbentuk seperti mata. Mata sebelah kanan berungsi sebagai pemancar gelombang (transmitter) dan mata sebelah kiri berfungsi sebagai penerima gelombang (receiver). Gambar 2.13. Sensor Ultrasonik 21 2.3.5. Sensor Cahaya Sensor cahaya adalah sensor yang digunakan untuk mendeteksi dan mengukur intensitas cahaya atau gelap terang. Sensor cahaya pada lego mindstrom NXT terdiri dari dua komponen, yaitu LED dan phototransistor. Sensor ini dapat membedakan terang dan gelap, serta mengukur intensitas cahaya di suatu ruangan maupun pada permukaan yang berwarna. Sensor ini dapat dilihat pada gambar berikut. Gambar 2.14. Sensor Cahaya Sensor didasarkan pada prinsip yang berbeda. LEGO sensor menggunakan LED RGB, dan berturut-turut bersinar lampu merah, hijau dan biru pada objek. Cahaya yang dipantulkan dukumpulkan oleh sensor peka cahaya dengan panjang gelombang semua. HiTechnic memiliki LED putih, dan sebuah chip warna khusus yang sensitive. Chip ini memiliki tiga daerah sensitive tercakup merah, hijau dan ilter biru. Keuntungan tambahan dari metode HiTechnic dapat mendeteksi warna cahaya yang dikirim di atasnya (dalam mode pasif, dengan Led putih mematikan). 22 2.3.6. Sensor Suara Sensor suara adalah sensor yang digunakan untuk mendeteksi adanya suara. Sensor ini disesuaikan dengan kemampuan pendengarkan manusia, yaiut antara 20 Hz samapai 20 KHz. Sensor suara pada lego mindstrom NXT digunakan untuk mengukur intensitas suara lingkungan. Sensor ini dapat mendeteksi suara sampai maksimum 90 desibel (dB). Gambar di bawah ini merupakan sensor suara pada lego mindstorms NXT. Gambar 2.15. Sensor Suara Sensor suara berfungsi seperti telinga, yaitu untuk menangkap suara. Sensor suara dalam Lego Mindstorms NXT ini mampu untuk mengukur kenyaringan dari lingkungan robot. Dengan menggunakan sensor ini, robot lego mindstorms NXT dapat berpindah atau bergerak ke area yang lebih tinggi atau menurunkan kenyaringan tergantung pada kode NXT-G yang telah dibuat. Sensor suara mengukur tingkat volum pada skala 0 sampai 100, 100 menjadi yang sangat keras, 0 menjadi yang sepenuhnya diam. Sensor suara mampu untuk mengukur kenyaringan berciri sama dengan decibel (dB) dan dBA (frekwensi sekitar 3-6 kHz, yang mana telinga manusia adalah yang paling sensitif). 23 2.3.7. Konektor Sensor dihubungkan ke NXT brick menggunakan suatu 6-position modular connector yang mengutamakan kedua antarmuka digital dan analog. Antarmuka yang analog adalah backward-compatible (dengan menggunakan suatu adapter) dengan Robotics Invention System yang lama. Antarmuka yang digital mampu untuk kedua komunikasi I2 C dan RS-485. Gambar 2.16. NXT sensor interface pin-out 2.3.8. Komponen Tambahan Selain komponen utama, ada juga komponen tambahan untuk membuat robot lego mindstorms NXT. Komponen-komponen yang terdapat di robot lego mindstorms NXT secara lengkap, yaitu : 24 Gambar 2.17. Komponen robot NXT 2.4. Program NXT-G Untuk menjalankan robot NXT, pertama-tama kita harus memprogram robot tersebut dengan program yang kita inignkan. Ada banyak bahasa pemrograman yang dapat digunakan untuk memprogram NXT, salah satunya adalah NXT-G. NXT-G atau LEGO MINDSTORMS Education NXT adalah software untuk memprogram NXT Brick dari komputer yang dapat dilakukan secara grafikal. Perangkat lunak ini adalah cukup untuk pemrograman dasar, seperti driving motor, membuat sensor sebagai masukan/input, membuat kalkulasi/perhitungan, dan mempelajari struktur program sederhana dan aliran kontrol. MINDSTORMS NXT digunakan untuk menciptakan perangkat lunak yang mengendalikan tindakan dari perangkat keras robot. Software NXT MINDSTORMS adalah suatu sistem instruksi assembling visual/icon. Aliran arah yang pada umumnya bergerak dari kiri ke kanan. Perangkat lunak ini adalah suatu contoh dari suatu program yang di-compile. Program yang dibuat di NXT harus 25 di-compile dan di-download ke NXT Brick sebelum robot melaksanakan program itu. Gambar 2.18. Tampilan awal program NXT-G Gambar di atas merupakan overview dari software NXT-G. Pada bagian yang bernomor 1 (satu) adalah bagian untuk memulai suatu program baru. Sebelum memulai, nama file dapat diubah terlebih dahulu, setelah itu tekan tombol “Go” untuk menuju ke lembar kerja baru. Untuk bagian yang bernomor 2 (dua), jika kita sebelumnya telah memiliki file program, maka dapat kita buka dengan cara memilih nama file yang kita punya terlebih dahulu sebelum menekan tombol “Go” 26 Gambar 2.19. Tampilan lembar kerja baru Gambar di atas adalah gambar saat kita menekan tombol “Go” pada bagian membuat lembar kerja baru. Block function yang dapat digunakan untuk memprogram adalah yang berada di sebelah kiri. Cara untuk memprogramnya cukup dengan klik blok fungsi yang kita inginkan kemudian di-drag menuju awal rangkaian program “star”, kemudian letakkan di tempat yang disediakan. Gambar 2.20. Memulai program di NXT-G 27 Setelah kita memasang blok, maka panel bagian bawah akan muncul parameter dari blok tersebut (masing-masing blok memiliki parameter sendiri), dari parameter tersebut, dapat kita atur berbagai kondisi yang dapat terjadi sesuai dengan keinginan kita. Berikut ini adalah penjelasan beberapa Block yang akan digunakan untuk program pada project ini. 2.4.1 Move Block Gambar 2.21. Move block Salah satu block yang dapat kita pakai untuk memprogram robot adalah Move Block. Move Block memiliki fungsi untuk membuat motor pada robot bekerja (maju atau mundur). Jika disesuaikan dengan model robot, kerja motor dapat membuat variasi gerak pada robot. Selain maju dan mundur, robot juga dapat diperintahkan berbelok hanya dengan menggunakan satu blok saja. Biasanya untuk membuat hasil yang baik, untuk melakukan belok digunakan dua buah move block. 28 Gambar 2.22. Parameter move block Gambar di atas adalah parameter yang terdapat pada Move Block. Pada parameter tersebut, dapat kita atur port motor mana saja yang ingin dijalankan, arah gerak motor, steering pada motor, kecepatan gerak motor, durasi gerak motor, dan perintah sebelum melanjutkan ke block berikutnya. 2.4.2. Switch Block Switch Block merupakan sebuah blok yang memiliki kondisi lebih dari satu. Dalam beberapa bahasa pemograman lain logika dari switch block ini sama dengan logika if…then..else. Switch block ini juga memiliki dua control yang berbeda, yaitu sensor dan value. Pada switch block ini, program yang akan berjalan adalah program pada kondisi yang telah terpenuhi. Jika sudah terpenuhi satu kondisi, maka program itu saja yang akan berjalan sampai switch block menemukan kondisi berikutnya, namun jika hanya 1(satu) kondisi sajayang terpenuhi sampai akhir, maka program yang terdapat pada kondisi lainnya tidak akan berjalan. Berikut adalah gambar kedua switch block tersebut. 29 Gambar 2.23. Switch block dengan kontrol sensor dan value Untuk switch block yang menggunakan kontrol sensor, parameternya tergantung dari jenis sensor yang digunakan. Untuk blok yang menggunakan kontrol value, parameternya tergantung pada tipe dari value yang digunakan. Berikut adalah masing- masing parameter dari switch block tersebut. Gambar 2.24. Parameter switch block dengan control sensor Gambar 2.25. Parameter switch block dengan control value 30 2.4.3. Loop Block Loop block berfungsi untuk melakukan perulangan pada suatu program. Pada beberapa bahaas pemograman lain, logika loop block sama dengan dengan logika repeat….until. Loop block juga memiliki beberapa kontrol, yaitu forever, sensor, time, count, dan logic. Berikut adalah gambar-gambarnya. Gambar 2.26. Loop block dengan control forever, sensor, time, count, dan logic. Masing-masing loop block tersebut memiliki parameter yang hampir sama, terutama yang memiliki control time dan count. Untuk control logic, syarat yang dapat dimasukkan hanya true dan false saja. Untuk control sensor, parameternya tergantung dari masing-masing jenis sensor-nya. Untuk control forever, program akan diulang selamanya, untuk menghentikannya, kita harus melakukan terminating program langsung pada robot. Berikut adalah parameter loop block dengan control time. 31 Gambar 2.27. Parameter loop block dengan control time 2.4.4. Download, Run, dan Stop Setelah selesai membuat program, maka program tersebut dimasukkan ke dalam brick dengan cara menggunakan ikon di bawah ini. Namun, harus menggunakan kabel data memindahkan program dari komputer ke brick. 1 2 3 4 Gambar 2.28. Ikon untuk memasukkan program ke brick Gambar no 1 di atas merupakan ikon untuk menampilkan NXT window, seperti gambar di bawah ini. 32 Gambar 2.29. NXT window Gambar no 2 adalah ikon untuk download dan run selected. Ikon ini berfungsi untuk memasukkan program ke dalam brick dan langsung menjalankannya, namun program yang dimaksud adalah program tertentu yang sudah dipilih saja, bukan seluruh program. Gambar no 3 adalah ikon untuk download seluruh program dalam file yang sedang dibuka. Apabila menggunakan ikon ini, robot tidak akan langsung bergerak sesuai program, karena hanya memindahkan file saja. Gambar no 4 adalah ikon stop. Digunakan untuk menghentikan program yang sedang dijalankan. 33 Gambar no 5 adalah ikon download and run. Ikon ini berfungsi untuk menyimpan program yang sudah dibuat dalam satu file ke dalam memory brick dan langsung menjalankan program tersebut. 34