Pemanfaatan Accelerometer Pada Telepon Genggam Berbasis Android Sebagai Kendali Mobile Robot 1)
1)
Christoforus Surjoputro 2)Harianto 3)Ira Puspasari
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
mengakses seluruh kemampuaan handset, tanpa meembedakan apakah itu merupakan aplikasi inti atau aplikasi pih hak ketiga. k lain deengan platfoorm android Dalam kata ini, proggrammer atau a develop oper secara penuh akkan bisa menngustomisassi perangkat androidn nya (Mulyadii, 2010). Sebbuah activvity mereprresentasikan sebuah layar l dengan n suatu useer interface. Sebagai contoh , sebuah apliikasi emaill sebuuah activity mempunyyai yang menampiilkan list darri email, sebbuah activity lain untuuk membuat email, dan activity lain untuk meembaca email (Android, 2011). Carra menggaksses sensor pada p telepon genggam m berbasiis android yaitu menggun nakan APII android..hardware. Berikut adalah cupplikan proggram untuk nakan sensoor accelerom meter pada menggun android(A Android, 2011). public class Sens sorActivit ty extends y,implemen nts Activity SensorEv ventListen ner { private final Sen nsorManager r mSensorM Manager; private final Sen nsor mAcceler rometer; public SensorActi S ivity() { mSensorM Manager = (SensorM Manager)ge etSystemSer rvice(SEN SOR_SERV VICE); mAcceler rometer = mSensorM Manager.ge etDefaultSe ensor(Sen sor.TYPE E_ACCELERO OMETER); } ed void on nResume() { protecte super.on nResume(); ; mSensorM Manager.re egisterList tener(thi s, mAcce elerometer r, SensorMa anager.SEN NSOR_DELAY_ _NORMAL); } protecte ed void on nPause() { super.on nPause(); mSensorM Manager.un nregisterLi istener(t his); } public void v onAccura acyChanged d(Sensor se ensor, int accu uracy) { } v public void onSensor rChanged(S SensorEvent t event) { // alpha a is calcu ulated as t / (t + dT)
// wit th t, the low-pass filter's f time-c constant // and d dT, the event deli ivery rate e final float alp pha = 0.8; gravit ty[0] = al lpha * grav vity[0] + (1 - alpha) a * event.value e es[0]; gravit ty[1] = al lpha * grav vity[1] + (1 - alpha) a * event.value e es[1]; gravit ty[2] = al lpha * grav vity[2] + (1 - alpha) a * event.value e es[2]; linear r_accelera ation[0] = event. .values[0] - gravity y[0]; linear r_accelera ation[1] = event. .values[1] - gravity y[1]; linear r_accelera ation[2] = event. .values[2] - gravity y[2]; } }
S Sumbu x adaalah posisi horisontal h daari teleponn genggam,, sumbu y adalah posiisi vertikaal dari telepoon genggam,, dan sumbuu z merupakan sumbuu yang menngarah keluaar D sistem m dari laayar telepon genggam. Dalam ini, ooordinat belakkang layar memiliki m nilai negatiff z. Berikut adalah a gamb bar dari posiisi
sumbu u dari teleepon gengggam(Android, 2011). bar 1. Sistem m Koordinat Dari Teleponn Gamb G Genggam Omni--Directionall Robots K Keajaiban ddari pengenndalian omnnidirectiional adalah roda mecannum. Roda inni telah dikembangk d kan dan dippatenkan oleeh perusaahaan dari swedia Mecanum M A AB dengann Bengt Ilon I pada tahun 19773 sehinggga roda inii sudah adaa cukup lam ma
(Braunnl, 2006). Gamb bar 3. Roda M Mecanum deengan Putaraan 45o
Gambar 2. Roda Meecanum denggan Putaran 90 9 o SOCKET T Sokket adalah ko omponen yaang bertugas sebagai penghubung g antara sattu peralatan p laain. Java menyediakan m dengan peralatan class soccket yang merupakan m class dasar untuk bissa melakukaan konektivitas jaringan antar kom mputer. Konndisi objek sooket baik di sisi cliennt maupun seerver bisa digambarkan d sebagai berikut: b
Gambar 4. Blook Diagram Pertama, Pengirim man Kecepaatan D Dari blok ddiagram padda gambar 4 terlihaat terdapat ddua bagian utama, yaittu bagian n pengirim dan bagiaan penerim ma. Bagian n pengirim dari blok di atas yaittu teleponn genggam m, sedanggkan bagiaan penerim ma yaitu robbot omni. Cara C kerja daari blok diagram d ini, ketika terjaadi perubahaan axis pada teleppon genggam, telepoon mproses axxis genggaam tersebutt akan mem tersebuut untuk diirubah ke nilai n bilangaan asli baaik positif m maupun neggatif. Setelaah berubaah menjadi satuan s bilanngan asli, data tersebuut dikirimkaan ke robot omni melaluui socket dengan perrantara jarin ngan wirelesss. Setelahh robot menerima data tersebut, roboot akan mengolah m bbilangan aslii positif ataau negatiff tersebut m menjadi kecep patan masinggmasingg motor darii robot omni. Blok Diagram D Peengiriman Data D Gambaar
Gambaar 3. Kondisi Objek Sockket di Sisi d Server Client dan Serrver adalahh pihak yang y selalu menungg gu request dari cliennt. Dengan demikian n client adalah a prog gram yang memulai koneksi dalam suattu jaringan (Purnamaa, 2005).
Kecepatan + arah motor 3
Motor 3
Motor 1
Kecepatan + arah motor 1
Robot Omni Kecepatan + arah motor 2 Data + Kecepatan
i s
Data + Kecepatan
Motor 2
agram Penggiriman Daata Kontrol Blok Dia Robot
Ro obotOmni Menerrima Gambar Darri Webcam
Byte array
Byte array a
Handphone
Gam mbar 5. Blokk Diagram Pengiriman P G Gambar D Dari blok diagram d pad da gambar 5, juga teerdapat 2 buuah bagian yaitu y pengirim m dan penerima. p B Bagian penggirim adalaah robot omni, o sedanggkan penerim manya adalaah teleponn genggam m. Cara kerja daari pengirriman videeo ini ad dalah roboot menerima sebuahh frame dari d webcam m. Setelahh robot meenerima fraame tersebuut, robot akan menngirimkan frame yanng berupaa gambar tersebut melalui sockket dengann perantarra jaringaan wirelesss. Kemuddian frame tersebut diterima d oleeh teleponn genggam dan ditampiilkan di layaar teleponn genggam ttersebut.
Proses Pendeteksian Perubahan Axis START
SensorManager manage Sensor acc manage=(SensorManager)getSystemService(SENSOR_SERVICE) T acc=manage.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
onSensorChanged
F
onAccuracyChanged
T
T Mengambil data axis
F
onResume
F
onPause
T
F
T
manage.registerListener (this, acc, SensorManager. SENSOR_DELAY_NORMAL)
manage.unregisterListener(this)
STOP
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 Robot Omni
Untuk
Menggerakkan
START
A
Menerima data, menyimpan di array char dan mengosongkan array String
content[i] == ':'
T
j++
F i=0 j=0
kalimat[j]=kalimat[j] +content[i]
B F
content[i] != '.'
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);
i++
T B A
kalimat[0] ==”mv”
F
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)
kalimat[0] ==”exit”
T soket.close() server.close input.close
STOP
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
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 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 robot,
dengan mengirimkan perintah exit ketika class dari telepon genggam yang melakukan koneksi dengan robot ditutup.
Komunikasi Pengiriman Gambar Dari Robot Omni
START
Pengiriman Gambar Robot Omni
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())
STOP
Penerimaan Gambar Telepon Genggam START
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)
STOP
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
pengirim man data tetap sam ma, yaitu menggun nakan objekk DataOutpuutStream. Perbedaaannya yaitu metode yanng dipakai untuk mengirimkan m n data. Terddapat dua metode untuk u mengirrimkan data pada class ini, yaituu metode a.writeInt((integer) a. dan .write(byte e_array). a.writeI Int(intege er) bergun na untuk mengirim mkan data dalam d formaat integer, sedangkaan a.write(byt te_array) mengirim mkan data dalam d bentukk array of byte. n genggam m, yang Padda telepon pertama diterima adaalah panjangg dari byte u, gambar yang harus dibuat. Setelah itu mpan ke array a byte diterima dan disim u yang g sesuai. Seetelah data dengan ukuran gambar diterima, telepon genggam S itu, mengubaahnya menjaadi bitmap. Setelah gambar ditampilkann di layaar telepon m. genggam
Pennerimaan data padaa telepon genggam m ini mengg gunakan meetode yang berbeda dari penerim maan data pada p robot n program omni. Berikut adalaah potongan nerimaan daata yang diguunakan. untuk pen DataInpu utStream input i = new w DataInpu utStream(s soket.getIn nputStre am()); int leng gth = inpu ut.readInt( (); input.re eadFully(b byte_array) );
Obj bjek penerrimaan daata pada penerimaaan gambaar ini men nggunakan DataInpu utStream. Hal H ini diikarenakan dapat Buffer redReader r hanya menerim ma data beruppa arrray off char dan string, sedangkan yang y diperluukan yaitu ma data dalam m bentuk innteger dan menerim array of byte. Untuk membaca data integer m yaitu mennggunakan yang suddah dikirim sedangkan metode perintah readInt, r untuk membaca m datta array of byte yang sudah dikkirim robot menggunaka m an perintah readFu ully(byte e_array). Penggunaaan objek ini tidak mendukung m pendetekksian adanyaa data atau tiidak, tetapi
otomaatis berhentti menungggu data padda metod de ketika dippanggil. HASIIL DAN PEM MBAHASA AN Hasil ketikka aplikasi pada telepoon gengggam dijalankkan dapat dilihat d seperrti pada gambar g 9 dibbawah ini.
Gambbar 9. Halam man pertama dari Aplikassi m Gambar 9 di atas merrupakan form awal yang tamp mpil dari aplikasi a yanng m I IP meminnta penggunna untuk memasukka dan poort dari roboot omni. Setelah useer memasuk kkan IP daan port dari d robot omni, maka aplikasi akaan memaasuki form berikutnya. Hal pertam ma yang dilakukan adalah poointing yanng bertujuan agar posisi p teleppon genggam m sejajarr dengan ddaratan. Beerikut adalaah gambaar dari prosees pointing.
Gambar 10. Keadaan K Ketiika Proses P Pointing Setelah prooses pointingg, dilanjutkaan k robot yaang dilakukaan dengaan koneksi ke
oleh applikasi dan mulai meenjalankan program utama yaiitu proses pertukaran p B adaalah gambaar ketika data. Berikut komunik kasi antara telepon t gen nggam dan robot om mni sudah terj rjalin. Gambbar 11. Keadaaan Ketika Program P Sedang Berjalan Padda aplikasi di bagiann telepon genggam m terdapat toombol untukk memutar robot ke kiri dan ke kanan. Beriikut adalah kedua gaambar ketikaa robot diberi perintah oleh pen ngguna untuk k berputar ke k kiri dan ke kanann .
mbar 12. Keaddaan Ketika Robot Gam Berputaar Ke Kiri
mbar 13. Keaddaan Ketika Robot Gam Berputar Ke Kanan Dari Percobaaan yang dilakukan, d teleponn genggam ini tidak sensor dari presisi, karena k tidakk bisa mem miliki nilai yang saama meskip pun diletakkkan pada posisi yang y sama. Oleh kaarena itu, perubahaan kecepataan dari roobot omni dilakukann dengan memberikann batasan nilai. Jikka perubahan n axis meleebihi batas tersebut, maka keecepatan roobot akan berubah dan batas yang y sudah ditentukan tersebut dinaikkan lagi, sehinggga ketika
perubahan axis melebihi baatas tersebuut, patan robot akkan bertambbah. kecep Telepon gennggam dan robotino r dapat berkomunikasi ddengan baikk. Perubahaan axis dari teleepon gengggam dapat pengaruhi ppergerakan dari d robotinno memp dengaan adanya keendala seperrti yang sudaah dijelasskan sebeluumnya. Roobotino jugga dapat berputar keetika tombo ol rotasi padda aplikaasi telepon ggenggam diteekan. Telepoon gengggam dapat menerima gambar g yanng ditang gkap dari kkamera robo otino dengaan adanyya kendalaa. Kendalaa ini yaittu pemroosesan yanng lama dari d telepoon gengggam untuk menampillkan gambaar yang diterima. Disimpulkaan demikiaan c dari P PC karenaa ketika mennggunakan client sepertti pada penggujian sebelu umnya, prosees peneriimaan gambbar lancar tannpa kendala.
DAFT TAR PUSTA AKA Androoid. 2011. Sensor Eveent. (onlinee). (http:///developer.aandroid.com m/reference/aan droid//hardware/SeensorEvent.hhtml, diaksees tanggaal 26 Agustuus 2011). P Anwaar, Gunadi annd P., Joshua R.T. and P., Yudhaa W. and Perrmana, Wim m and Prasetyyo and Rusdi, R Faris and a Zuliardii, Agus. 2006. Jaringgan Cliennt Serverr. (onlinee). (http:///www.googgle.co.id/url?sa=t&sourcee =web& &cd=2&sqi= =2& ved=0 0CBwQFjAB B&url=http% %3A%2F%22 Fwww w.wimpermaana.web.ugm m.ac.id%2Fbbu di_s% %2Fwpconten nt%2Fclient__server.pdf& &rct=j&q=clli ent%220server%200adalah&ei= = XxMIITufCG4OurrAeHvZ2aD DA&usg=AF F QjCN NFS2SOnPLkkATcrU8CcrrZcucDLlQm m w&caad=rja, diaksses 27 Juni 2011). 2
Braun nl, Thomaas. 2006. Robottics. Germanny: Springer..
Embeddeed
Mulyaadi. 2010. M Membuat Applikasi Untuuk Androoid. Yogyakkarta: Multim media Centeer Publisshing.
Prawita, Ida Bagus Dony. 2010. JenisJenis Sistem Operasi. (online). (http://www.docstoc.com/docs/62675496/J ENIS—JENIS-SISTEM-OPERASI, diakses tanggal 26 Agustus 2011).