Dari IgosCenter
iCommand adalah kit pemrograman LEGO Mindstorm NXT untuk mengontrol robot secara remote melalui bluetooth. Program robot yang dibuat dengan iCommand akan berjalan di komputer, tak perlu diunggah ke robot.
Daftar isi |
Deskripsi
Berbeda dengan LeJOS NXJ, iCommand dipakai untuk membuat program java yang akan berjalan di komputer, bukan di robot itu sendiri ! Meski demikian pustaka iCommand sengaja dibuat sangat mirip dengan LeJOS NXJ, sehingga menulis program untuk keduanya tidak berbeda jauh. Tahap-tahap umum pemrograman dengan iCommand adalah:
- Tulis kode sumber (file.java) dengan editor teks.
- Kompilasi kode sumber terebut dengan kompiler Java biasa.
- Siapkan NXT brick pada mode bluetooh.
- Hasil kompilasi (file.class) dijalankan di komputer (tidak di NXT brick !)
Saat berjalan, program akan mengkoneksikan diri ke NXT, lalu mengirim permintaan (biasanya membaca data dari sensor) dan mengirim komando (misal membuat motor berputar).
Sebagai contoh, telah dibuat robot yang bergerak mengikuti lintasan berupa garis hitam pada suatu bidang putih. Si robot harus pindah dari suatu titik A ke titik B dengan efisian. Di atas bidang tersebut ada webcam di atas bidang, yang bisa melihat seluruh bidang, termasuk robot. Citra digital (berupa movie) dari webcam dikirim ke komputer. Si komputer akan:
- Mengolah citra untuk mengenali jalur dan mendeteksi posisi serta arah robot.
- Menggunakan artificial intellegence untuk menentukan lintasan terpendek dari A ke B.
- Menghitung sinyal kontrol untuk menggerakkan robot mengikuti lintasan.
- Mengirim sinyal kontrol ke robot melalui bluetooth.
Kasus tersebut diselesaikan dengan iCommand. Keuntungannya adalah:
- Pada brick bisa dipakai NXT firmware asli, tak perlu menggantinya dengan LeJOS firmware (walau dari pengalaman, kinerja LeJOS lebih baik).
- Tak perlu kabel, karena pakai bluetooth.
- Program Java tak perlu repot-repot diunggah ke brick.
- Program java, karena berjalan di komputer, dapat sangat kompleks dan besar. Ini membuka peluang untuk aplikasi tingkat tinggi seperti pengenal suara, penjejak peta visual, optimasi jalan, dan sebagainya.
- Bisa dibuat antarmuka grafis di komputer untuk mengendalikan robot.
- Bisa memakai sensor yang lebih maju, dihubungkan lengsung ke komputer (dalam hal ini WebCam).
Sementara itu kerugiannya juga ada. Karena bekerja secara remote, maka:
- Robot tidak se-responsif jika dikontrol program lokal (memakai LeJOS NXJ).
- Robot tidak bisa bekerja secara autonomous (mandiri), harus selalu ada komputer kontrolnya.
Persiapan Komputer
Untuk memakai iCommand, kita perlu beberapa langkah persiapan berikut.
Komputer dan Bluetooth
Siapkan komputer dengan bluetooth. Pada beberapa laptop, bluetooth sudah tersedia. Jika belum, disarankan untuk membeli USB bluetooth, dan memasangnya ke salah satu USB port. Pada tulisan ini dipakai notebook HP tablet yang sudah punya bluetooth.
Hacking: Pada Linux, ketersediaan piranti ini bisa diperiksa dengan perintah dmesg
kocil$ dmesg | grep -i bluetooth [ 0.820014] Bluetooth: Core ver 2.13 [ 0.820035] Bluetooth: HCI device and connection manager initialized [ 0.820035] Bluetooth: HCI socket layer initialized [ 2.712165] Bluetooth: L2CAP ver 2.11 [ 2.712168] Bluetooth: L2CAP socket layer initialized [ 2.712172] Bluetooth: SCO (Voice Link) ver 0.6 [ 2.712175] Bluetooth: SCO socket layer initialized [ 2.712256] Bluetooth: RFCOMM socket layer initialized [ 2.712264] Bluetooth: RFCOMM TTY layer initialized [ 2.712267] Bluetooth: RFCOMM ver 1.10 [ 13.312488] Bluetooth: Generic Bluetooth USB driver ver 0.3 [ 28.623555] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 28.623560] Bluetooth: BNEP filters: protocol multicast
Linux dengan Bluez
Untuk tulisan ini, kebetulan dipakai Ubuntu 9.04. Cara mudah memasang pustaka bluez pada distro ini adalah:
- Panggil menu "System - Administration - Synaptic Package Manager"
- Klik tombol search, carilah kata "bluez"
- Pilih-pilih paket bluez.
- Klik "Apply".
Hacking: Pustaka bluez-4.x di Ubuntu 9.04 ternyata sudah terlalu baru dibanding iCommand-0.7. Oleh karena itu perlu hack sedikit dari terminal
kocil$ cd /usr/lib kocil$ sudo ln -sf libbluetooth.so.3.2.1 libbluetooth.so.2
Menjodohkan Piranti Bluetooth
Hidupkan NXT brick. Jika si brick masih memakai NXT firmware, maka:
- Dari menu utama, tekan panah kanan beberapa kali untuk memilih menu "Bluetooth".
- Lanjutkan memilih menu "On/Off"
- Pilih ON
Pada LCD sebelah kiri atas, akan nampak tanda bahwa bluetooth sedang hidup.
Di sisi lainnya, pada komputer:
- Pilih menu "System - Preferences - Bluetooth"
- Tekan tombol "+".
- Pada menu, seharusnya akan tampak pilihan NXT (kalau tidak, NXT anda ada masalah). Pilihlah.
- Pilih "use fixed pin code", lalu pilih kode (misal 1234).
- Tekan "forward".
Pada NXT brick akan terdengan suara, anda harus berikan konfirmasi:
- Isi Passkey: 1234
- Tekan tombol OK
Pada komputer, koneksi akan sukses, dan layar bluetooth menunjukkan piranti NXT sudah terdaftar.
Mencari Alamat NXT Brick
Dari terminal, panggil:
kocil$ hcitool scan Scanning ... 00:11:22:33:44:55 NXT
Konfigurasi iCommand
Buatlah file $HOME/icommand.properties, dengan isi:
# icommand.properties # tipe driver, harus bluez nxtcomm.type=bluez # alamat NXT, sesuai hasil hcitool scan bluez.address=00:11:22:33:44:55
Mengunduh
Silahkan unduh dengan bebas dari http://lejos.sourceforge.net/. Tersedia versi untuk Linux maupun Windows. Untuk Linux, paket yang harus diunduh adalah:
- icommand-VER.tar.gz.
Memasang iCommand
Setelah di download, ekstrasi berkas icommand-VER-tar.gz ke laci $HOME/java,
$ mkdir -p ~/java $ cd ~/java $ tar -xjf ~/Downloads/icommand*.tar.gz
Menyiapkan Netbeans
Untuk memrogram menggunakan iCommand, kita akan pakai Netbeans sebagai IDE Java yang enak. Sebagai langkah pertama, daftarkan pustaka icommand, agar selanjutnya mudah dipakai pada setiap proyek. Untuk itu, segera saja pilih menu "Tools - Libraries".
- Klik tombol "New Library". Pada dialog beri nama "iCommand", lalu klik OK
- Untuk pustaka baru tersebut, klik tab "Classpath", lalu klik "Add Jar/Folder". Tambahkan berkas $HOME/java/icommand-VER/dist/icommand.jar
- Lanjutkan dengan klik tab "Source", lalu klik "Add Jar/Folder". Tambahkan berkas $HOME/java/icommand-VER/dist/icommand-src.zip.
- Terakhir, klik tab "Java Doc", lalu klik "Add Zip/Folder". Tambahkan berkas $HOME/java/icommand-VER/dist/icommand-doc.zip
Memrogram Robot
Kita segera mulai memrogram robot dengan icommand.
Membuat Proyek
Dari layar utama Netbeans, pilih menu "File - New Project".
- Untuk proyek, pilih kategori "Java" dan tipe proyek "Java Application". Klik "Next".
- Selanjutnya beri nama proyek, dalam hal ini "RobotHello". Yakinkan untuk mencentang "Create Main Project", lalu klik "Finish".
Menambah Pustaka
Ini langkah spesifik untuk setiap proyek icommand, kita harus menambah pustakanya.
- Pada panel "Project", cari cabang "Libraries", lalu klik kanan. Pilih menu "Add Library".
- Pada dialog, pilih pustaka "icommand", dan klik OK.
Mengedit Kode Sumber
Nah, kini kita masuk ke hidangan utama, menulis program robot. Segera saja ke layar kode sumber Main.java. Netbeans sudah membuatkan skeleton dasarnya, mari kita tambahkan program sebagai berikut:
/* * File : Main.java * Program pertama memakai icommand. * - Membuka koneksi ke robot * - Menulis nama pemakai komputer * - Menulis nama robot * - Tutup koneksi robot */ package robotnxj; // Tambahkan pustaka icommand import icommand.nxt.comm.NXTCommand; import icommand.nxt.*; /** * * @author kocil */ public class Main { /** * Program utama */ public static void main(String[] args) { // pertama, buka koneksi ke robot System.out.println("Koneksi ke robot ... "); NXTCommand.open(); NXTCommand.setVerify(true); // baca nama pemakai di komputer String username = System.getProperty("user.name"); System.out.println("Nama pemakai komputer = " + username); // baca nama robot String robotname = NXT.getBrickName(); System.out.println("Nama robot = " + robotname); // tunggu System.out.println("Tutup koneksi ke robot"); NXTCommand.close(); } }
Kompilasi & Eksekusi
Di Netbeans, ada berbagai cara untuk menjalankan program, yang tersingkat adalah:
- Tekan kunci F6 (mengkompilasi seluruh proyek, dan menjalankan file utama).
- Tekan kunci Shift F6 (mengkompilasi dan menjalankan file yang sedang diedit).
Sebelum melakukan hal itu, pastikan NXT brick sudah hidup, dan bluetoothnya ON. Pada panel Output Netbeans, akan nampak keluaran:
Koneksi ke robot ... Nama pemakai komputer = kocil Nama robot = NXT Tutup koneksi ke robot
Pustaka
- iCommand API []
Kontributor: Kocil