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 manusia 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 sistem kontrol navigasi otonom yang tersedia sekarang ini termasuk sistem navigasi berdasarkan laser dan VSLAM (Visual Simulraneous Localization 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 6|Page 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 perusahaan 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 manusia adalah dalam eksplorasi laut dan eksplorasi antariksa. Untuk tugas-tugas ini, bentuk tubuh artropoda umumnya disukai. Mark W. Tilden dahulunya spesialis Laboratorium Nasional Los Alamos, membuat robot murah dengan kaki bengkok tetapi tidak menyambung, sementara orang lain mencoba membuat kaki kepiting yang dapat bergerak dan tersambung penuh. Robot bersayap eksperimental 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. 7|Page 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 ωR dan ωL, maka kecepatan linier roda kanan dan kiri dapat dicari dengan persamaan berikut : (1) (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 : (3) (4) 8|Page Kecepatan linier robot v(t) dan kecepatan rotasi robot ω(t) dapat diketahui berdasarkan kedua kecepatan linier roda. Secara matrik dapat disajikan sebagai berikut : (5) Persamaan (5) di atas memperlihatkan relasi kinematika langsung antara kecepatan linier roda-roda robot terhadap kecepatan linier dan angular robotnya, sedangkan persamaan (6) di bawah memperlihatkan relasi sebaliknya. (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 : (7) (8) (9) Pendekatan rumus untuk orientasi, posisi koordinat x, dan koordinat y berturut-turut sebagai berikut. (10) (11) (12) 9|Page 2.3. 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 seri sebelumnya, yaitu RIS (Robotics Invention System). Robot lego mindstorm NXT dapat diprogram sesuai dengan keinginan. Adapun beberapa bahasa pemrograman yang dapat dijalankan dalam lego NXT yaitu NXT-G, Next Byte Codes (NBC), Not eXactly C (NXC), RobotC, leJOS NXJ, Microsoft Robotics Studio, dan masih banyak lagi. Robot Lego ini terdiri dari komponen-komponen yang bisa di lepas pasang, sehingga kita bisa membuat berbagai bentuk robot, misalnya : Gambar 2.2. Contoh bentuk robot lego mindstorm NXT 10 | P a g e Komponen-komponen yang ada di robot lego mindstorm 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 (ARM7TDMI) 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 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 11 | P a g e 2 (dua) processor yang mengerjakan fungsi yang berbeda pada saat bersamaan. Mikrokontroler ARM7 berfungsi sebagai master controller yang fungsi utamanya mengatur jalur komunikasi. Fungsi dari mikrokontroler AVR adalah pengatur daya, pengatur Pulse Width Modulation (PWM) untuk mngendalikan ketiga motor, serta Analog to Digital Converter (ADC) dari terminal masukan. Gambar 2.4. Diagram blok NXT brick Brick dapat menerima masukan dari 4 sensor, dan menjalankan 3 motor sekaligus, dengan bentuk seperti di bawah ini. Gambar 2.5. Brick dengan 4 sensor dan 3 motor 12 | P a g e Tampilan pada layar LCD brick adalah sebgai berikut : Gambar 2.6. Tampilan pada layar LCD brick Brick dapat kita ibaratkan seperti CPU pada komputer, 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. 13 | P a g e Cara membuat program sederhana langsung pada NXT brick, yaitu : Gambar 2.7. Cara membuat program pada NXT brick Contoh pemrograman 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 pemrograman pada brick 14 | P a g e 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 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 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 derajat. 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 di bawah 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 15 | P a g e 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 mindstorm NXT. 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 terlihat 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 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 16 | P a g e 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 mindstorm NXT berbentuk seperti mata. Mata sebelah kanan berfungsi sebagai pemancar gelombang (transmitter) dan mata sebelah kiri berfungsi sebagai penerima gelombang (receiver). Gambar 2.13. Sensor Ultrasonik 2.3.5. Sensor Cahaya Sensor cahaya adalah sensor yang digunakan untuk mendeteksi dan mengukur intensitas cahaya atau gelap terang. Sensor cahaya pada lego mindstorm NXT terdiri dari dua komponen, yaitu LED dan phototransistor. 17 | P a g e 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 dikumpulkan oleh sensor peka cahaya dengan panjang gelombang semua. HiTechnic memiliki LED putih, dan sebuah chip warna khusus yang sensitif. Chip ini memiliki tiga daerah sensitif tercakup merah, hijau dan filter biru. Keuntungan tambahan dari metode HiTechnic dapat mendeteksi warna cahaya yang dikirim di atasnya (dalam mode pasif, dengan LED putih mematikan). 2.3.6. Sensor Suara Sensor suara adalah sensor yang digunakan untuk mendeteksi adanya suara. Sensor ini disesuaikan dengan kemampuan pendengaran manusia, yaitu antara 20 Hz sampai 20 KHz. Sensor suara pada lego midstorm NXT digunakan untuk mengukur intensitas suara lingkungan. Sensor ini dapat mendeteksi suara sampai maksumum 90 desibel (db). Gambar di bawah ini merupakan sensor suara pada lego mindstorm NXT. 18 | P a g e 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 kenyaringannya 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 dalam desibel (dB) dan dBA (frekwensi sekitar 3-6 kHz, yang mana telinga manusia adalah yang paling sensitif). 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 I2C dan RS-485. 19 | P a g e Gambar 2.16. NXT sensor interface pin-out 2.3.8. Komponen Tambahan Selain komponen utama, ada juga komponen tambahan untuk membuat robot lego mindstorm NXT. Komponen-komponen yang terdapat di robot lego mindstorm NXT seara lengkap, yaitu : Gambar 2.17. Komponen robot NXT 20 | P a g e 2.4. Program NXT-G Untuk menjalankan robot NXT, pertama-tama kita harus memprogram robot tersebut dengan program yang kita inginkan. Ada banyak bahasa pemrograman yang dapat digunakan untuk memprogram NXT, salah satunya adalah NXT-G. NXT-G atau LEGO MINDSTROMS Education NXT adalah software untuk memogram 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 NXTharus dicompile dan di-download ke NXT Brick sebelum Robot melaksanakan program itu. Gambar 2.18. Tampilan awal program NXT-G 21 | P a g e 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”. Gambar 2.19. Tampilan lembar kerja baru Gambar di atas adalah gambar saat kita menekan tombol “Go” pada bagian membuat lembar untuk memprogram kerja adalah baru. yang Block function berada di yang sebelah dapat kiri. digunakan Cara untuk memprogramnya cukup dengan klik blok fungsi yang kita inginkan kemudian didrag menuju awal rangkaian program “start”, kemudian letakkan di tempat yang disediakan. 22 | P a g e Gambar 2.20. Memulai program di NXT-G Setelah kita memasang blok, maka pada 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 melakukan program pada project ini. 2.4.1. Move Block Gambar 2.21. Move block 23 | P a g e 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. 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 blok berikutnya. 2.4.2. Switch Block Switch Block merupakan sebuah blok yang memiliki kondisi lebih dari satu. Dalam beberapa bahasa pemrograman lain logika dari switch block ini sama dengan logika if…then…else. Switch block ini juga memiliki dua kontrol 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 saja 24 | P a g e yang terpenuhi sampai akhir, maka program yang terdapat pada kondisi lainnya tidak akan berjalan. Berikut adalah gambar kedua switch block tersebut. Gambar 2.23. Switch block dengan control sensor dan value Untuk switch block yang menggunakan control sensor, parameternya tergantung dari jenis sensor yang digunakan. Untuk blok yang menggunakan control 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 25 | P a g e 2.4.3. Loop Block Loop block berfungsi untuk melakukan perulangan pada suatu program. Pada beberapa bahasa pemrograman lain, logika loop block sama dengan logika repeat…until. Loop block juga memiliki beberapa control, 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. Gambar 2.27. Parameter loop block dengan control time 26 | P a g e 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 untuk memindahkan program dari komputer ke brick. 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. Gambar 2.29. NXT window 27 | P a g e 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. 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. 28 | P a g e