Pemanfaatan Accelerometer Pada Telepon Genggam Berbasis Android Sebagai Kendali Mobile Robot
1)
Christoforus Surjoputro 2)Harianto 3)Ira Puspasari
1)
Program Studi S1 Sistem Komputer STIKOM Surabaya. Email: [email protected]
1)
Program Studi S1 Sistem Komputer STIKOM Surabaya. Email: [email protected]
1)
Program Studi S1 Sistem Komputer STIKOM Surabaya. Email: [email protected] Abstract
During this time, used of accelerometer sensor is very helpful in human life, generally in automotive needed.Use of this sensor as a detector for airbag in car is worthy to be removed or not in cars accident event. The other used of this sensor is to see the movement of aircraft from its starting point. The conclution of the used of accelerometer sensor in automotive field wal limited to making a decision and see the movement of object.
In mobile phone technology, this sensor is able to used as an interaction between user and applications. Generally for game application. There are several games that used this sensor to perform some actions. It can also be seen that the utilization in mobile phone technology was limited to the interaction of an application.
From both limitation, the authors attempt to use the sensor in other field with other uses. This time, the sensor is used to control a mobile robot from the axis change that are detected by sensor on mobile phone. Users are expected to get more experience in utilization of this sensor, the user can control the mobile robot as playing games in mobile phone.
This application are meneged to control the mobile robot based on the axis change that occur in mobile phone. Beside that, this application also managed to show images that captured from mobile robot so the user can control the mobile robot although the robot can't be seen. There is a problem that the mobile phone has a long respon to show an image on the display and it disturb the user.
Keyword: Mobile Robot, Robotino, Telepon Genggam, Android, accelerometer.
Telepon genggam saat ini juga sudah memiliki sistem operasi. Seperti halnya sistem operasi pada komputer, sistem operasi (SO) telepon genggam adalah
software utama yang melakukan manajemen
dan kontrol terhadap hardware secara
langsung serta sebagai manajemen dan
kontrol software-software lain sehingga
software-software lain bekerja (Prawita,
2010).
Robot ini memiliki kemudahan dalam bergerak, karena dapat bergerak secara mudah tidak hanya ke depan dan belakang namun juga ke samping kiri dan kanan bahkan serong kiri dan kanan (Braunl, 2006).
Jika kedua teknologi di atas digabungkan, yaitu teknologi telepon
genggam dengan sensor accelerometer dan
teknologi robot omni yang dapat bergerak
ke segala arah yang dapat digabungkan dengan teknik tertentu. Sehingga robot omni bergerak sesuai dengan kemiringan telepon genggam.
Pengertian Client Server
Client-Server adalah arsitektur
jaringan yang memisahkan client(biasanya
aplikasi yang menggunakan GUI) dengan
server. Masing-masing client dapat
meminta data atau informasi dari server (Anwar, dkk. 2011).
Android
Pada tahun 2005 Google mengakuisisi Android Inc yang pada saat itu dimotori oleh Andy Roubin, Rich Miner, Nick Sears, dan Chris White. Semua aplikasi yang dibuat untuk android akan memiliki akses yang setara dalam
mengaks tanpa me aplikasi Dalam k ini, prog penuh ak androidn Seb sebuah l Sebagai mempuny menampi lain untu untuk me Car genggam menggun Berikut menggun android(A public Activity SensorEv private mSensorM private mAcceler public S mSensorM (SensorM SOR_SERV mAcceler mSensorM sor.TYPE } protecte super.on mSensorM s, mAcce SensorMa } protecte super.on mSensorM his); } public v onAccura int accu } public v onSensor { // alpha dT) es seluruh embedakan inti atau kata lain de grammer a
kan bisa men nya (Mulyadi
buah activ
layar dengan contoh , yai sebu ilkan list dar uk membuat embaca ema ra menggaks m berbasi nakan API adalah cup nakan senso Android, 20 class Sens y,implemen ventListen final Sen Manager; final Sen rometer; SensorActi Manager = Manager)ge VICE); rometer = Manager.ge E_ACCELERO ed void on nResume(); Manager.re elerometer anager.SEN ed void on nPause(); Manager.un void acyChanged uracy) { void rChanged(S a is calcu kemampua apakah itu aplikasi pih engan platfo atau develop ngustomisas i, 2010). vity merepr n suatu use sebuah apli uah activ ri email, seb email, dan il (Android, ses sensor p is andro I android. plikan prog or accelerom 11). sorActivit nts ner { nsorManager nsor ivity() { etSystemSer etDefaultSe OMETER); nResume() { ; egisterList r, NSOR_DELAY_ nPause() { nregisterLi d(Sensor se SensorEvent ulated as t an handset, merupakan hak ketiga. orm android oper secara si perangkat resentasikan er interface. ikasi email ity yang buah activity activity lain 2011). pada telepon id yaitu .hardware. gram untuk meter pada ty extends r rvice(SEN ensor(Sen { tener(thi _NORMAL); istener(t ensor, t event) t / (t + l // wit time-c // and final gravit (1 - a gravit (1 - a gravit (1 - a linear event. linear event. linear event. } } S telepon vertika merup dari la ini, oo negatif sumbu 2011). Gamb Omni-K directi telah d perusa dengan sehing (Braun Gamb th t, the constant d dT, the float alp ty[0] = al alpha) * e ty[1] = al alpha) * e ty[2] = al alpha) * e r_accelera .values[0] r_accelera .values[1] r_accelera .values[2] Sumbu x ada n genggam, al dari telepo akan sumbu ayar telepon ordinat belak f z. Berikut a u dari tele bar 1. Sistem G -Directional Keajaiban d ional adalah dikembangk ahaan dari n Bengt I gga roda ini
nl, 2006). bar 3. Roda M low-pass f event deli pha = 0.8; lpha * grav event.value lpha * grav event.value lpha * grav event.value ation[0] = - gravity ation[1] = - gravity ation[2] = - gravity alah posisi h , sumbu y on genggam, u yang men genggam. D kang layar m adalah gamb epon gengg m Koordinat Genggam l Robots dari pengen roda mecan kan dan dip swedia M Ilon pada i sudah ada Mecanum de 45o filter's ivery rate vity[0] + es[0]; vity[1] + es[1]; vity[2] + es[2]; y[0]; y[1]; y[2]; horisontal da adalah posi , dan sumbu ngarah kelua Dalam sistem memiliki nil bar dari posi
gam(Androi Dari Telepon ndalian omn num. Roda in patenkan ole Mecanum A tahun 197 a cukup lam engan Putara e ari isi u z ar m ai isi d, n ni-ni eh AB 73 ma an
Gambar SOCKET Sok sebagai dengan p class soc untuk bis antar kom sisi clien sebagai b Gamba Ser menungg demikian memulai (Purnama Blok Dia Robot i s D at a + K ec ep at an 2. Roda Me 9 T ket adalah ko penghubung peralatan la cket yang m sa melakuka mputer. Kon nt maupun se berikut: ar 3. Kondis Client d rver adalah gu request n client a koneksi a, 2005). agram Peng s M o to r 1 K e c e p a ta n + a ra h m o to r 1 ecanum deng 90o omponen ya g antara sat ain. Java m merupakan an konektivi ndisi objek so erver bisa d i Objek Sock dan Server h pihak y dari clien adalah prog dalam suat giriman Da R o b o t O m n i M o to r 1 M o to r 2 K ec ep at an + a ra h m o to r 2 D at a + K ec ep at an gan Putaran ang bertugas tu peralatan menyediakan class dasar tas jaringan oket baik di digambarkan ket di Sisi yang selalu nt. Dengan gram yang tu jaringan ata Kontrol M o to r 3 K e c e p a ta n + a ra h m o to r 3 G D terliha bagian Bagian telepon penerim blok d axis gengga tersebu asli ba beruba tersebu socket Setelah akan m negatif masing Blok D Gam D juga te dan p robot o telepon pengir mener Setelah robot berupa dengan Kemud telepon telepon Ro Mener Dar ambar 4. Blo Pengirim Dari blok d at terdapat d n pengirim n pengirim n genggam ma yaitu rob diagram ini, pada telep am tersebut ut untuk di aik positif m ah menjadi s ut dikirimka dengan per h robot men mengolah b f tersebut m g motor dari Diagram Pe mbar 5. Blok G Dari blok d erdapat 2 bu penerima. B omni, sedang n genggam riman vide ima sebuah h robot me akan men a gambar n perantar dian frame n genggam n genggam t obotOmni rima Gambar ri Webcam Byte a ok Diagram man Kecepa diagram pad dua bagian dan bagia dari blok m, sedang bot omni. C ketika terja pon gengg t akan mem irubah ke n maupun neg satuan bilan an ke robot rantara jarin erima data t bilangan asli menjadi kecep i robot omni engiriman D k Diagram P Gambar diagram pad uah bagian y Bagian peng gkan penerim m. Cara eo ini ad h frame d enerima fra ngirimkan tersebut m ra jaringa tersebut d dan ditampi tersebut. Byte array array Pertama, atan da gambar utama, yait an penerim di atas yait gkan bagia Cara kerja da adi perubaha am, telepo mproses ax nilai bilanga gatif. Setela ngan asli, da omni melalu ngan wireles ersebut, robo i positif ata patan masing . Data Gamba Pengiriman da gambar yaitu pengirim girim adala manya adala kerja da dalah robo dari webcam ame tersebu frame yan elalui sock an wireles diterima ole ilkan di laya Handphone 4 tu ma. tu an ari an on xis an ah ta ui ss. ot au g-ar 5, m ah ah ari ot m. ut, ng ket ss. eh ar
Proses Pendeteksian Perubahan Axis
Gambar 6. Blok Diagram Pendeteksian Axis Untuk melakukan pendeteksian
perubahan axis dengan sensor
accelerometer, diperlukan tiga komponen
yaitu SensorManager, Sensor, dan SensorEventListener. Untuk menggunakan suatu sensor, objek SensorManager harus dihubungkan terlebih dahulu dengan sistem android yang mengatur bagian sensor. Selain itu, sensor juga harus ditentukan
ingin menggunakan sensor accelerometer.
Untuk bisa mendeteksi sensor, suatu class
harus didaftarkan terlebih dahulu. Setelah
didaftarkan, setiap ada perubahan axis, android akan memanggil fungsi
onSensorChanged. Di dalam fungsi itulah, proses pengambilan nilai axis dari posisi telepon genggam dilakukan. Ketika sudah tidak menggunakan sensor lagi, terjadi proses penghapusan class yang bersangkutan dari daftar. OnAccuracy changed tidak digunakan karena tidak
melakukan perubahan accuracy pada
sensor accelerometer.
Komunikasi Untuk Menggerakkan Robot Omni onSensorChanged START T F T SensorManager manage Sensor acc manage=(SensorManager)getSystemService(SENSOR_SERVICE) acc=manage.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
Mengambil data axis
STOP F T F T onResume onPause F manage.registerListener
(this, acc, SensorManager.
SENSOR_DELAY_NORMAL)
T
manage.unregisterListener(this)
Gambar 7. Blok Diagram Pengolahan Data Pada Robot Omni
Dari blok diagram di atas, tampak jelas bahwa telepon genggam hanya mengirimkan dua kriteria, yaitu mv dan exit. Mv ini berfungsi untuk memberikan perintah pada robot omni untuk menggerakkan robot dengan arah dan kecepatan yang sudah dikirimkan bersamaan dengan perintah tersebut. Untuk pengiriman data kecepatan dari telepon
genggam yaitu “mv:(kec.maju):(kec.samping):(kec.putar)”.
Penerimaan di robot omni memisahkan setiap bagian dengan pendeteksian tanda ':'. Jadi isi dari kalimat[0] adalah “mv”, kalimat[1] adalah kecepatan maju berupa bilangan asli, kalimat[2] adalah kecepatan bergerak ke samping berupa bilangan asli, dan kalimat[3] adalah kecepatan putar dalam derajat/detik. Kecepatan maju dan ke samping hanya berupa transmisi dalam bentuk bilangan asli baik positif maupun negatif, sehingga perlu dikalikan dengan speed supaya menjadi kecepatan yang sebenarnya, yaitu dalam bentuk mm/detik. Untuk berhenti berkomunikasi, telepon genggam hanya mengirimkan “exit.”. Jadi
array kalimat[] yang terisi hanya
kalimat[0] dengan isi “exit”. Untuk
mengakhiri pembacaan array char yang
berisi data dari socket, setiap pengiriman
selalu diakhiri dengan tanda titik('.').
Pengiriman yang dilakukan telepon genggam menggunakan perintah seperti di bawah ini.
DataOutputStream delivered = new
DataOutputStream(soket.getOutputStr eam());
delivered.writeBytes(data);
Pengiriman data menggunakan objek
DataOutputStream yang dihubungkan
dengan outputstream milik koneksi socket.
Metode pengiriman yang
digunakan yaitu writeBytes dengan
data yang dikirim berupa string. Untuk
penerimaan data berikut adalah potongan program yang digunakan.
BufferedReader input = new
BufferedReader(new
InputStreamReader(soket.getInputStr eam()));
while(!input.ready());
input.read(content);
Untuk penerimaan data pada sisi robot, menggunakan objek
BufferedReader. Objek ini memerlukan reader sebagai sumber penerimaan data,
maka tidak dapat digunakan secara
langsung metode getInputStream milik
socket. Oleh karena itu, digunakanlah objek
InputStreamReader sebagai perantara
agar sumber dapat berasal dari InputStream
milik socket. Keuntungan menggunakan
BufferedReader ini yaitu bisa dideteksi apakah sudah terdapat data yang siap diambil atau belum. Setelah dideteksi ada data, maka data tersebut diambil dengan
perintah input.read(content). Dengan
metode penerimaan ini, data yang diterima
berupa array of char.
Telepon genggam memberikan instruksi kepada robot untuk bergerak dengan perintah mv ketika terjadi perubahan transmisi kecepatan yang dihitung di bagian class mulai. Telepon genggam memberikan perintah berhenti melakukan koneksi kepada robot omni
START i=0 j=0 content[i] == ':' content[i] != '.' T kalimat[j]=kalimat[j] +content[i] F STOP
Menerima data, menyimpan di array char dan mengosongkan array String
A A T j++ F i++ B B kalimat[0] ==”mv” T int speed=100 float forward=float.valueof(kalimat[1])*speed float side=float.valueof(kalimat[2])*speed float rotate=float.valueof(kalimat[3]) com.Data.setOmniDrive(forward, side, rotate)
F kalimat[0] ==”exit” T soket.close() server.close input.close
dengan mengirimkan perintah exit ketika class dari telepon genggam yang melakukan koneksi dengan robot ditutup.
Komunikasi Pengiriman Gambar Dari Robot Omni
Gambar 8. Blok Diagram Penerimaan dan Pengiriman Gambar Pengiriman gambar pada gambar 8
jelas menggunakan socket yang sudah
terhubung antara robot omni dengan telepon genggam. Gambar yang sudah diterima tersebut, diubah menjadi objek
ByteArrayOutputStream dengan tipe
gambar PNG dengan menggunakan objek
ImageIO. Setelah dirubah ke ByteArray,
yang pertama kali dikirmkan oleh robot
omni adalah panjang dari array yang berisi
gambar tersebut. Hal ini diperlukan agar
telepon genggam membuat array of byte
dengan ukuran yang sesuai. Berikutnya
adalah pengiriman data byte yang berisi
gambar dikirimkan.
Pengiriman dilakukan menggunakan metode yang berbeda dengan pengiriman data. Berikut adalah potongan program untuk mengirimkan data.
DataOutputStream a = new
DataOutputStream(soket.getOutputSt ream());
ByteArrayOutputStream simpan = new
ByteArrayOutputStream(); a.writeInt(integer); a.write(byte_array);
Objek yang digunakan untuk START
STOP
Robotino menerima gambar dari kamera dan disimpan ke objek Image dengan nama image
DataOutputStream a =
new DataoutputStream(soket.getOutputStream()) ByteArrayOutputStream simpan =
new ByteArrayOutputStream()
ImageIO.write((BufferedImage)image, "PNG", simpan) a.writeInt((simpan.toByteArray()).length) a.write(simpan.toByteArray()) START STOP DataInputStream input = new DataInputStream(soket.getInputStream()) int length = input.readInt()
byte[] gambar = new byte[length] input.readFully(gambar) Bitmap bm= BitmapFactory.decodeByteArray(gambar, 0, gambar.length)
Pengiriman Gambar
Robot Omni
Penerimaan Gambar
Telepon Genggam
pengirim menggun Perbedaa untuk m metode u ini, yaitu dan a.writeI mengirim sedangka mengirim byte. Pad pertama yang ha diterima dengan u gambar menguba gambar genggam Pen genggam berbeda omni. B untuk pen DataInpu DataInpu am()); int leng input.re Obj penerima DataInpu Buffer menerim string, s menerim array of yang sud metode untuk m sudah dik readFu Penggun pendetek man data nakan objek annya yaitu mengirimkan untuk mengir u metode a a. Int(intege mkan data d an a mkan data d da telepon diterima ada rus dibuat. dan disim ukuran yang diterima, ahnya menja ditampilkan m. nerimaan m ini mengg dari penerim erikut adala nerimaan da utStream i utStream(s gth = inpu eadFully(b bjek pener aan gamba utStream. H redReader ma data berup edangkan y ma data dalam byte. Untuk dah dikirim perintah r membaca dat kirim robot m ully(byte aaan objek ksian adanya tetap sam k DataOutpu metode yan n data. Terd rimkan data .writeInt( .write(byte er) bergun dalam forma .write(byt dalam bentuk n genggam alah panjang Setelah itu mpan ke a g sesuai. Se telepon adi bitmap. S n di laya data pada gunakan me maan data p ah potongan ata yang digu
input = new soket.getIn ut.readInt( byte_array) rimaan da ar ini men Hal ini di r hanya pa arrray of yang diperlu m bentuk in membaca d m yaitu men readInt, ta array of menggunaka e_array). ini tidak m a data atau ti ma, yaitu utStream. ng dipakai dapat dua pada class (integer) e_array). na untuk at integer, te_array) k array of m, yang g dari byte u, gambar array byte etelah data genggam Setelah itu, ar telepon a telepon etode yang pada robot n program unakan. w nputStre (); ); ata pada nggunakan ikarenakan dapat f char dan ukan yaitu nteger dan ata integer nggunakan sedangkan byte yang an perintah mendukung idak, tetapi otoma metod HASI gengg pada g Gamb awal memin dan po port d mema yang bertuj sejajar gamba G denga atis berhent de ketika dip IL DAN PEM Hasil ketik gam dijalank gambar 9 dib bar 9. Halam Gambar 9 yang tamp nta penggun
ort dari robo
Setelah use dari robot o asuki form dilakukan uan agar p r dengan d ar dari prose ambar 10. K P Setelah pro an koneksi k ti menungg panggil. MBAHASA ka aplikasi kan dapat d bawah ini. man pertama di atas mer mpil dari a na untuk m ot omni. er memasuk mni, maka berikutnya. adalah po posisi telep daratan. Be es pointing. Keadaan Keti Pointing oses pointing ke robot ya gu data pad AN pada telepo dilihat seper dari Aplikas rupakan form aplikasi yan memasukka I kkan IP da aplikasi aka Hal pertam ointing yan pon genggam erikut adala ika Proses g, dilanjutka ang dilakuka da on rti si m ng IP an an ma ng m ah an an
oleh ap program data. B komunik robot om Gamb Pad genggam robot ke kedua ga oleh pen ke kanan Gam Gam Da sensor d presisi, k yang sa posisi y perubaha dilakukan nilai. Jik tersebut, berubah tersebut plikasi dan utama yai Berikut ada kasi antara t mni sudah terj
bar 11. Keada Sedang da aplikasi m terdapat to kiri dan ke ambar ketika ngguna untuk n . mbar 12. Kead Berputa mbar 13. Kead Berputar ri Percoba dari telepon karena tidak ama meskip yang sama an kecepata n dengan ka perubahan maka ke dan batas y dinaikkan mulai me itu proses p alah gamba telepon gen rjalin. aan Ketika P Berjalan di bagian ombol untuk kanan. Beri a robot dibe k berputar k daan Ketika ar Ke Kiri daan Ketika Ke Kanan aan yang n genggam k bisa mem pun diletak . Oleh ka an dari ro memberikan n axis mele ecepatan ro yang sudah lagi, sehing enjalankan pertukaran ar ketika nggam dan Program n telepon k memutar ikut adalah ri perintah ke kiri dan Robot Robot dilakukan, ini tidak miliki nilai kkan pada arena itu, obot omni n batasan ebihi batas obot akan ditentukan gga ketika perub kecep berko axis memp denga dijelas dapat aplika gengg ditang adany pemro gengg yang karena sepert peneri DAFT Andro (http:/ droid/ tangga Anwa Yudha and R Jaring (http:/ =web& ved=0 Fwww di_s% conten ent%2 XxMI QjCN w&ca Braun Robot Mulya Andro Publis ahan axis patan robot ak Telepon gen munikasi d dari tele pengaruhi p an adanya ke skan sebelu berputar ke asi telepon g gam dapat gkap dari k ya kendala osesan yan gam untuk diterima. a ketika men ti pada peng imaan gamb TAR PUSTA oid. 2011. //developer.a /hardware/Se al 26 Agustu ar, Gunadi an a W. and Per Rusdi, Faris a gan Clien //www.goog &cd=2&sqi= 0CBwQFjAB w.wimperma %2Fwp-nt%2Fclient_ 20server%20 ITufCG4Our NFS2SOnPLk ad=rja, diaks nl, Thoma tics. German adi. 2010. M oid. Yogyak shing. melebihi ba kan bertamb nggam dan r dengan baik epon geng pergerakan d endala seper umnya. Ro etika tombo genggam dite menerima g kamera robo a. Kendala ng lama d menampil Disimpulka nggunakan c gujian sebelu bar lancar tan
AKA Sensor Eve android.com ensorEvent.h us 2011). nd P., Joshu rmana, Wim and Zuliardi nt Server gle.co.id/url? =2& B&url=http% ana.web.ugm _server.pdf& 0adalah&ei= rAeHvZ2aD kATcrU8Ccr ses 27 Juni 2 as. 2006. ny: Springer. Membuat Ap karta: Multim atas tersebu bah. robotino dap k. Perubaha ggam dap dari robotin rti yang suda obotino jug ol rotasi pad ekan. Telepo gambar yan otino denga a ini yait dari telepo lkan gamba an demikia client dari P umnya, prose npa kendala. ent. (online m/reference/a html, diakse a R.T. and P m and Prasety i, Agus. 200 r. (online sa=t&source %3A%2F%2 m.ac.id%2Fb &rct=j&q=cl = DA&usg=AF rZcucDLlQm 2011). Embedde . plikasi Untu media Cente ut, at an at no ah ga da on ng an tu on ar an PC es e). an es P., yo 6. e). e 2 bu li F m ed uk er
Prawita, Ida Bagus Dony. 2010.
Jenis-Jenis Sistem Operasi. (online).
(http://www.docstoc.com/docs/62675496/J ENIS—JENIS-SISTEM-OPERASI, diakses tanggal 26 Agustus 2011).