Your SlideShare is downloading. ×
  • Like
Ta rahmi-0910452015-implementasi pengenalan pola gerakan tangan sebagai input remote tv menggunakan sensor kinect
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Ta rahmi-0910452015-implementasi pengenalan pola gerakan tangan sebagai input remote tv menggunakan sensor kinect

  • 1,288 views
Published

pada tugas akhir ini, akan dibuat sebuah sistem kontrol televisi menggunakan pengenalan pola gerakan tangan yang diimplementasikan dengan menggunakan sensor kinect. diharapkan dengan adanya sistem

pada tugas akhir ini, akan dibuat sebuah sistem kontrol televisi menggunakan pengenalan pola gerakan tangan yang diimplementasikan dengan menggunakan sensor kinect. diharapkan dengan adanya sistem

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,288
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
85
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. IMPLEMENTASI PENGENALAN POLA GERAKAN TANGAN SEBAGAI INPUT REMOTE TV MENGGUNAKAN SENSOR KINECT TUGAS AKHIR SISTEM KOMPUTER RAHMI 0910452015 PROGRAM STUDI SISTEM KOMPUTER FAKULTAS TEKNOLOGI INFORMASI UNIVERSITAS ANDALAS PADANG 2013
  • 2. HALAMAN PENGESAHAN Nama : Rahmi No.BP : 0910452015 Judul Tugas Akhir : Implementasi Pengenalan Pola Gerakan Tangan sebagai Input Remote TV menggunakan Sensor Kinect Tugas Akhir ini disetujui oleh Dosen Pembimbing dan disahkan oleh Ketua Program Studi Sistem Komputer, Fakultas Teknologi Informasi Universitas Andalas Pembimbing I Pembimbing II Ratna Aisuwarya, M.Eng NIP. 198410302008122002 Ir. Werman Kasoep, M.Kom NIP. 195709071992031001 Mengetahui, Ketua Program Studi Sistem Komputer Fakultas Teknologi Informasi Universitas Andalas Padang, 29 Juli 2013 Dodon Yendri, M.Kom NIP. 19660309 198603 1 001 i
  • 3. HALAMAN PERSETUJUAN TUGAS AKHIR Dengan ini dinyatakan bahwa: Nama No.BP Jurusan Judul Tugas Akhir : Rahmi : 0910452015 : Sistem Komputer : Implementasi Pengenalan Pola Gerakan Tangan sebagai Input Remote TV menggunakan Sensor Kinect Telah diuji dan disetujui Tugas Akhirnya sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer (S.Kom) melalui Ujian Komprehensif yang diadakan pada tanggal 1 Agustus 2013 berdasarkan ketentuan yang berlaku. Pembimbing Ratna Aisuwarya, M.Eng NIP. 198410302008122002 Penguji I Penguji II Andrizal, MT NIP. 196810051993031001 Ir. Werman Kasoep, M.Kom NIP. 195709071992031001 Mengetahui, Ketua Program Studi Sistem Komputer Fakultas Teknologi Informasi Universitas Andalas Padang, 26 Agusutus 2013 (Dodon Yendri, M.Kom) NIP. 196603091986031001 ii
  • 4. PERNYATAAN Dengan ini menyatakan bahwa : 1. Tugas Akhir dengan judul “Implementasi Pengenalan Pola Gerakan Tangan sebagai Input Remote TV menggunakan Sensor Kinect” adalah asli dan belum pernah diajukan untuk mendapatkan gelar akademik (Sarjana, Magister, dan Doktor), baik di Universitas Andalas maupun di perguruan tinggi lainnya. 2. Tugas Akhir ini murni gagasan dan rancangan saya sendiri, tanpa bantuan tidak sah dari pihak lain, kecuali bantuan dan arahan dari tim pembimbing. 3. Tugas Akhir ini tidak terdapat hasil karya atau pendapat yang ditulis atau dipublikasikan oleh orang lain, kecuali dikutip secara tertulis dengan jelas dan dicantumkan sebagai acuan dalam tulisan saya dengan disebutkan nama pengarang dan dicantumkan dalam daftar pustaka. 4. Pernyataan ini saya buat dengan sesungguhnya, dan apabila dikemudian hari terdapat penyimpangan dan ketidakbenaran dalam pernyataan ini, maka saya bersedia menerima sanksi akademik serta sanksi lainnya sesuai dengan norma dan ketentuan lain yang berlaku. Demikianlah surat ini dibuat, untuk dapat dipergunakan sebagaimana mestinya. Padang, Agustus 2013 Yang membuat pernyataan, Rahmi, S.Kom 0910452015 iii
  • 5. ABSTRAK IMPLEMENTASI PENGENALAN POLA GERAKAN TANGAN SEBAGAI INPUT REMOTE TV MENGGUNAKAN SENSOR KINECT Oleh Rahmi 0910452015 Teknologi pengenalan pola isyarat tangan saat ini telah mengalami perkembangan yang sangat pesat, diantaranya adalah pengembangan pengenalan pola isyarat tangan sebagai sistem kontrol televisi. Proses pengontrolan televisi dengan pengenalan pola isyarat tangan ini menggunakan metode depth treshold yang diintegrasikan ke Sensor kinect dan Arduino Remote Kontrol sebagai inteface. Proses pengontrolan televisi dengan pengenalan pola isyarat tangan dimulai dengan pengintegrasian Remote Kontrol dan Arduino, dimana data dari Remote Kontrol dikirimkan ke Arduino yang akan diolah dengan Arduino IDE. Hasil dari pengolahan data tersebut akan dipanggil oleh pemograman sensor Kinect dengan Processing IDE yang berisikan rancangan program pengenalan pola isyarat tangan. Rancangan program pengenalan pola isyarat tangan merupakan hasil dari pengenalan isyarat yang diujikan di depan sensor Kinect. Pola isyarat tangan yang dikenali dalam sistem ini adalah lambaian tangan yaitu lambaian ke arah kanan dan ke arah kiri untuk pengontrolan channel, lambaian ke atas dan ke bawah untuk pengontrolan volume televisi. Kata kunci : pengenalan pola isyarat tangan, sensor kinect, arduino iv
  • 6. ABSTRACT THE IMPELEMENTATION OF HAND GESTURE RECOGNITION AS TV REMOTE USING KINECT CENSOR By : Rahmi 0910452015 Hand Gesture Recoginition is a sophisticated technological developments, for example is the development of Hand Gesture Recognition as television control system. The process of controlling television with Hand Gesture Recognition use the method of depth treshold which has integrated to kinect censor and Arduino Remote Control as interface. This process begin with the integration of remote control and Arduino, in where the data from remote control sent to Arduino and processed by IDE Arduino. The result of processing data will be summoned by the censor Kinect program, in which IDE processing contains the design of program Hand Gesture Recognition. The result of data processing will be summoned by programming censorship kinect with IDE processing which has contains the design of program recognition hand gesture. The design of program Hand Gesture Recognition is the result of gesture recognition, indeed this program has been tested in front of kinect censor. The Hand Gesture Recognition in this system is a right swipe and left swipe for channel change, and up swipe and down swipe for volume control. Keyword : hand gesture recognition, kinect censor, arduino v
  • 7. KATA PENGANTAR Alhamdulillah wa Syukurillah penulis ucapkan kepada Allah SWT, karena limpahan rahmat dan karunia-Nya penulis dapat menyelesaikan penulisan tugas akhir ini. Shalawat dan salam selalu tercurah kepada Rasulullah Muhammad SAW yang selalu menjadi panutan umat manusia sampai akhir zaman. Tugas akhir yang berjudul “Perancangan dan Pembuatan Sistem Kontrol Televisi dengan Pengenalan Pola Isyarat Tangan menggunakan Sensor Kinect dan Arduino” ini merupakan salah satu syarat untuk menyelesaikan program Strata-1 di program Studi Sistem Komputer Fakultas Teknologi Informasi Universitas Andalas. Dukungan dan semangat yang diberikan dari berbagai pihak sangat membantu penulis dalam menyelesaikan tugas akhir ini, ucapan terimakasih penulis sampaikan kepada : 1. Papa dan Mama penulis yang tercinta dan tersayang, yang selalu berdoa untuk kesuksesan penulis dan tanpa kenal lelah selalu mendorong dan memberikan nasehat kepada penulis. 2. Ibu Ratna Aisuwarya, M.Eng selaku dosen pembimbing 1 yang telah banyak memberikan arahan dan bimbingan dalam setiap kendala dalam penulisan tugas akhir ini. 3. Bapak Ir. Werman Kasoep, M.Kom selaku dosen pembimbing 2 yang telah banyak memberikan arahan dan bimbingan serta koreksi dalam penulisan tugas akhir ini. vi
  • 8. 4. Bapak Prof. Dr. Surya Afnarius, Ph.D selaku dekan Fakultas Teknologi Informasi Universitas Andalas Padang. 5. Bapak Dodon Yendri, M.Kom selaku ketua Program Studi Sistem Komputer Universitas Andalas Padang. 6. Seluruh staf dosen Program Studi Sistem Komputer Universitas Andalas Padang. Terimakasih atas ilmu yang telah diberikan kepada penulis selama kuliah di Program Studi Sistem Komputer Universitas Andalas Padang. 7. Seluruh karyawan Program Studi Sistem Komputer Universitas Andalas Padang. 8. Teman-teman Angkatan 2009 Program Studi Sistem Komputer Universitas Andalas Padang. 9. Rekan-rekan Asisten Laboratorium Komputer Program Studi Sistem Komputer Universitas Andalas Padang. 10. Rekan-rekan UKM Neo Telemetri Universitas Andalas Padang. 11. Seluruh keluarga besar HMSK Universitas Andalas Padang. 12. Semua pihak yang tidak dapat penulis sebutkan namanya satu per satu, namun telah memberikan bantuan hingga selesainya tugas akhir ini. “Thanks for supporting me all”. Semoga Allah SWT melimpahkan rahmat dan karunia-Nya kepada semua pihak yang telah membantu penulis dalam menyelesaikan penelitian tugas akhir dan penyusunan laporan tugas akhir ini. Penulisan tugas akhir ini masih jauh dari kesempurnaan, oleh karena itu saran dan masukan dari pembaca sangat penulis hargai. Akhir kata semoga laporan vii
  • 9. tugas akhir ini bermanfaat dan dapat menambah wawasan bagi semua pembaca dan penulis sendiri. Padang, 26 Agustus 2013 Penulis viii
  • 10. DAFTAR ISI LEMBARAN PENGESAHAN................................................................................ i LEMBARAN PERSETUJUAN PERSETUJUAN ................................................ ii PERNYATAAN KEASLIAN TUGAS AKHIR ................................................... iii ABSTRAK ............................................................................................................... iv ABSTRACT ............................................................................................................. v KATA PENGANTAR ............................................................................................. vi DAFTAR ISI ............................................................................................................. ix DAFTAR TABEL .................................................................................................... xi DAFTAR GAMBAR ................................................................................................ xii BAB I. PENDAHULUAN 1.1. Latar Belakang........................................................................................... 1 1.2. Rumusan Masalah ..................................................................................... 2 1.3. Batasan Masalah ........................................................................................ 3 1.4. Tujuan ........................................................................................................ 3 1.5. Sistematika Penulisan ................................................................................ 3 BAB II. LANDASAN TEORI 2.1. Sistem Kontrol ........................................................................................... 4 2.1.1. Sistem Kontrol Loop Tertutup ....................................................... 6 2.1.2. Remote Kontrol ............................................................................. 8 2.2. Computer Vision ........................................................................................ 11 2.2.1. Image Processing........................................................................... 14 2.2.2. Hand Gesture Recognition ............................................................ 16 2.3. Sensor Kinect ............................................................................................. 19 2.3.1. Structured-Light 3D Scanning....................................................... 21 2.3.2. Kinect Software Development Kit (SDK) ..................................... 22 2.3.3. Skeletal Tracking ........................................................................... 25 2.4. Mikrokontroler ATMega328 ..................................................................... 26 2.4.1. Arsitektur Mikrokontroler ATmega328 ........................................ 26 2.4.2. Konfigurasi PIN ATMega328 ....................................................... 27 2.5. Mikrokontroler Arduino ............................................................................ 30 ix
  • 11. 2.5.1. Perangkat Lunak (Arduino IDE) .................................................. 31 BAB III. METODE PENELITIAN 3.1. Desain Penelitian ....................................................................................... 33 3.2. Perancangan Sistem ................................................................................... 36 3.2.1 Perancangan Alat .............................................................................. 37 3.2.1.1 Rancangan Mekanik ................................................................. 37 3.2.1.2 Rancangan Hardware ............................................................... 38 3.2.2 Perancangan Software....................................................................... 39 3.2.2.1 Pengenalan Pola Isyarat Tangan ............................................... 39 3.2.2.2 Sistem Kontrol Remote dan Arduino ....................................... 42 BAB IV. HASIL DAN ANALISA 4.1. Hasil Pengujian .......................................................................................... 43 4.1.1 Pengujian Remote Kontrol dan Arduino .......................................... 44 4.1.2 Pengujian Sistem Kontrol Televisi ................................................... 48 4.1.3 Pengujian Pengenalan Pola Isyarat Tangan dengan Kinect.............. 49 4.2. Analisa ....................................................................................................... 57 BAB V. KESIMPULAN DAN SARAN 5.1. Kesimpulan ................................................................................................ 60 5.2. Saran .......................................................................................................... 60 DAFTAR PUSTAKA LAMPIRAN Lampiran A Lampiran B x
  • 12. DAFTAR TABEL Tabel Hal 2.4.2.1 Konfigurasi Port B .................................................................................... 28 2.4.2.2 Konfigurasi Port C .................................................................................... 28 2.4.2.3 Konfigurasi Port D .................................................................................... 29 2.5 Deskripsi Arduino Uno ................................................................................... 31 3.2.1.2 Remote Kontrol dan Arduino .................................................................... 39 4.1.1.1 Resistansi button Remote Kontrol ............................................................ 44 4.1.1.2 Pengujian Relay pada Arduino .................................................................. 45 4.1.1.3 Tegangan Pin Input dan Output ................................................................ 47 4.2.1.1 Hasil pengujian Remote dan Arduino dengan Arduino IDE .................... 48 4.1.3.1 Perhitungan data RGB .............................................................................. 51 4.1.3.2 Ukuran Circle Detector ............................................................................. 54 4.1.3.3 Hasil kalibrasi tangan dengan sensor Kinect ............................................ 55 4.1.3.4 Pengujian Isyarat Tangan dikenali Sensor Kinect .................................... 56 xi
  • 13. DAFTAR GAMBAR Gambar Hal 2.1. Diagram Sistem Kontrol ................................................................................ 5 2.1.1 Sistem Kontrol Loop Tertutup ..................................................................... 7 2.1.2.1 Transmitter remote kontrol ....................................................................... 8 2.1.2.2 Receiver Remote Kontrol .......................................................................... 9 2.1.2.3 Pengiriman Kode dengan Tipe Pulse-Coded Signal ................................. 9 2.1.2.4 Pengiriman Kode dengan Tipe Space-Coded Signal ................................ 10 2.1.2.5 Pengiriman Kode dengan Tipe Shift-Coded Signal .................................. 10 2.1.2.6 Sinyal Header dan Kode Remote Kontrol ................................................ 11 2.2 Sistem Computer Vision.................................................................................. 12 2.2.1 Elemen sistem pemrosesan digital ............................................................... 15 2.2.2 Perkiraan pada potongan runtunan gambar .................................................. 17 2.3.1 Perangkat Keras Kinect ................................................................................ 19 2.3.2 Cara kerja depth sensor pada pekerangkat sensor Kinect ............................ 20 2.3.3 Hasil proyeksi dari infrared laser projector ................................................ 20 2.3.4 Cara kerja sensor Kinect............................................................................... 21 2.3.1.1 Prinsip-prinsip triangulasi untuk Structured-Light 3D ............................. 21 2.3.1.2 Kinect IR pembuat gambar........................................................................ 22 2.3.1.3 Peta Kedalaman Pengkodean cahaya dengan Inframerah ......................... 22 2.3.3.1 Pemetaan objek dengan depth sensor ....................................................... 25 2.3.3.2 Pengambilan Hand Tracking dengan XnVPointControl ........................... 25 2.4.2.1 Konfigurasi PIN ATMega328 ................................................................... 27 2.4.3 Diagram Blok Arduino Uno ......................................................................... 29 2.5 Board Arduino Uno ......................................................................................... 30 xii
  • 14. 2.5.2 Tampilan Framework Arduino UNO ........................................................... 32 3.2.1.1 Rancangan mekanik .................................................................................. 37 3.2.1.2 Rangkaian koneksi Remote Kontrol dan Arduino .................................... 38 3.2.1.3 Remote Kontrol dan Arduino dengan Prototypeshield ............................. 38 3.2.2.1 Lapisan OpenNI ........................................................................................ 39 3.2.2.2 Flowchart Processing IDE ........................................................................ 40 3.2.2.3 Flowchart Arduino IDE ............................................................................ 42 4.1 Tampilan Sistem Kontrol Televisi .................................................................. 43 4.1.1 Tampilan Arduino IDE ................................................................................ 47 4.1.3.1 Pengambilan gambar dengan metode Depth Treshold.............................. 49 4.1.3.2 Identifikasi data RGB................................................................................ 50 4.1.3.3 Integrasi Data Depth ................................................................................. 52 4.1.3.4 Import Core Serial dan Open Kinect ........................................................ 53 4.1.3.5 Import Library SimpleOpenNI ................................................................. 54 4.1.3.6 Hasil Pengujian Isyarat Tangan pada Sistem Kontrol TV ........................ 57 xiii
  • 15. BAB I PENDAHULUAN 1.1. Latar Belakang Sistem kontrol merupakan sebuah pengendali yang memudahkan pekerjaan manusia. Alat yang digunakan sebagai sistem kontrol dikenal dengan nama remote kontrol. Remote kontrol sangat banyak digunakan dalam kehidupan sehari-hari salah satunya pada televisi. Dalam hal ini remote kontrol berfungsi sebagai kontroler yang memudahkan manusia dalam melakukan pengaturan televisi. Perkembangan teknologi yang semakin pesat memberikan sebuah innovasi baru pada sistem kontrol. Dikenal sebuah istilah hand gesture recognition (pengenalan pola isyarat tangan) dimana manusia dapat menggunakan isyarat tangan sebagai kontroler. Pengenalan pola isyarat tangan merupakan salah satu teknik penting dalam mengembangkan user-friendly interface untuk interaksi manusiakomputer. Melihat perbedaan kebutuhan dan kesibukan manusia, dibutuhkan sebuah sistem pengenalan pola isyarat tangan yang real-time untuk memberikan kemudahan. Pengenalan pola isyarat tangan membutuhkan sebuah lensa kamera yang berkualitas tinggi dan sebuah perangkat komputer dengan algoritma vision untuk mengenal isyarat tangan, sistem ini membutuhkan biaya yang mahal dan pengaturan yang cukup luas. [1] Microsoft Kinect menyediakan sebuah sistem yang murah dan mudah untuk komunikasi isyarat yang real-time. Kinect merupakan controller game Microsoft Xbox platform yang menggunakan sensor warna dan sensor kedalaman untuk menangkap warna gambar (RGB) dan kedalaman jarak data. Ini memungkinkan perkembangan algoritma yang mengklasifikasikan dan melakukan pengenalan dari data gambar. Perangkat lunak yang dirilis Microsoft dikenal dengan nama Microsoft Kinect SDK dengan Application Programming Interface (API) memberikan akses kepada aliran sensor data baku atau yang disebut dengan skeletal tracking. Dengan pengenalan pola isyarat tangan dapat dikembangkan sebuah sistem kontrol TV dengan menggunakan Sensor Kinect dan Mikrokontroller Arduino. 1
  • 16. Sistem kontrol TV yang dirancang dapat ditambahkan dengan pengenalan pola isyarat tangan yang ditangkap oleh sensor Kinect. Pengenalan pola isyarat tangan ini menggunakan metode depth threshold yang akan menggambarkan bagaimana gerakan isyarat tangan dapat diterjemahkan oleh sensor Kinect sehingga dapat berfungsi sebagai kontroller TV. Sistem ini diharapkan dapat memberikan kemudahan dalam melakukan pengontrolan channel dan volume pada saat menonton TV. Oleh karena itu pada penyusunan tugas akhir ini, penulis membuat sebuah Sistem Kontrol Televisi (TV) dengan Pengenalan Pola Isyarat Tangan Menggunakan Sensor Kinect dan Arduino. Sistem ini menggunakan Sensor Kinect dan Mikrokontroller Arduino dalam pengimplementasiannya. 1.2. Perumusan Masalah Berikut adalah pemaparan rumusan masalah pada penyusunan tugas akhir ini : 1. Bagaimana analisa sistem pengenalan pola isyarat tangan dengan metode depth threshold pada Sensor Kinect. 2. Bagaimana integrasi antara sistem pengenalan pola isyarat tangan dengan Sensor Kinect dan Mikrokontroller Arduino 3. Bagaimana implementasi sistem kontrol TV dengan pengenalan pola isyarat tangan menggunakan Sensor Kinect dan Arduino 1.3. Batasan Masalah Adapun pembatasan masalah dalam penyusunan tugas akhir ini adalah : 1. Sistem yang dikontrol hanya pada penukaran channel dan volume TV. 2. Sistem pengenalan pola isyarat tangan hanya dapat membaca satu tangan atau single user 3. Sistem terintegrasi dengan Sensor Kinect dan Mikrokontroller arduino menggunakan kabel. 2
  • 17. 4. Sistem pengenalan pola isyarat tangan dengan menggunakan metode depth threshold. 1.4. Tujuan Tujuan dari penulisan Tugas Akhir ini adalah : 1. Eksplorasi dan Implementasi sistem kontrol TV dengan pengenalan pola isyarat tangan dengan algoritma pengenalan pola isyarat tangan menggunakan Sensor Kinect dan Mikrokontroller Arduino 2. Didapatkannya sebuah analisa dari sistem pengenalan pola isyarat tangan dengan metode depth threshold. 1.5. Sistematika Penulisan Secara garis besar, tugas akhir ini dibagi menjadi 5 (lima) bab. Adapun bab tersebut : BAB I Pendahuluan Bab ini berisi tentang latar belakang, perumusan masalah, tujuan, batasan masalah, dan sistematika penulisan. BAB II Landasan Teori Bab ini menguraikan teori pendukung yaitu sensor Kinect, teori-teori pengenalan pola isyarat tangan, dan mikrokontroller arduino. BAB III Metode Penelitian Bab ini berisi tentang metodologi penelitian yang digunakan pada proses pembuatan Sistem Kontrol Televisi (TV) dengan menggunakan Sensor Kinect dan Arduino. BAB IV Hasil Dan Analisa Bab ini berisi tentang pembahasan mengenai pengenalan pola isyarat tangan dengan algoritma pengenalan pola isyarat tangan dan bagaimana pengimplementasiannya pada Sensor Kinect dan Mikrokontroller Arduino. 3
  • 18. BAB V Kesimpulan Bab ini berisi mengenai hasil analisa tentang pengenalan pola isyarat tangan dengan algoritma pengenalan pola isyarat tangan dan disertai dengan saran yang diberikan oleh penulis. 4
  • 19. BAB II LANDASAN TEORI Untuk merancang sistem ini dibutuhkan landasan teori seperti yang akan dibahas berikut. 2.1 Sistem Kontrol Sistem kontrol (control system) adalah suatu alat (kumpulan alat) untuk mengendalikan, memerintah, dan mengatur keadaan dari suatu sistem. Sasaran sistem kontrol adalah untuk mengatur keluaran (output) dalam suatu sikap atau kondisi atau keadaan yang telah ditetapkan oleh masukan (input) melalui elemen sistem kontrol. [2] Gambar 2.1 memperlihatkan suatu diagram umum suatu sistem kontrol. masukan keluaran Sistem Kontrol Gambar 2.1 Diagram sistem kontrol [2] Dengan adanya sasaran ini, maka kualitas keluaran yang dihasilkan tergantung dari proses yang dilakukan dalam sistem kontrol ini. Pada konsep sistem kontrol modern, peralatan pembantu manusia semakin dioptimalkan untuk melakukan fungsi kontrol. Semakin modern dan canggih teknologi yang dikuasai, semakin canggih pula peralatan pembantu yang berfungsi sebagai alat kontrol. Dalam era modern ini, penggunaan komputer dan mikroprosesor (microcontroller) semakin mendominasi untuk menggantikan peran otak sebagai kontroler. Dengan kelebihannya mampu mengoperasikan fungsi-fungsi logika dan matematis serta kemampuannya menyimpan data dalam memorinya, membuat komputer atau mikroprosesor mampu menjalankan fungsi otak secara sederhana. Sistem Kontrol terbagi dua, yaitu sistem kontrol dengan Loop Terbuka dan sistem kontrol Loop Tertutup. Pada pembuatan tugas akhir ini sistem kontrol yang digunakan adalah sistem kontrol dengan Loop Tertutup. 5
  • 20. 2.1.1 Sistem Kontrol Loop Tertutup Sistem kontrol loop tertutup adalah identik dengan sistem kontrol umpan balik, dimana nilai dari keluaran akan ikut mempengaruhi pada aksi kontrolnya. [3] Istilah-istilah dalam sistem kontrol : a. Sistem (system) adalah kombinasi dari komponen-komponen yang bekerja bersama-sama membentuk suatu obyek tertentu. b. Variabel terkontrol (controlled variable) adalah suatu besaran (quantity) atau kondisi (condition) yang terukur dan terkontrol. Pada keadaan normal, variabel terkontrol merupakan keluaran dari sistem. c. Variabel termanipulasi (manipulated variable) adalah suatu besaran atau kondisi yang divariasikan oleh kontroler sehingga mempengaruhi nilai dari variabel terkontrol. d. Kontrol (control) – mengatur, artinya mengukur nilai dari variabel terkontrol dari sistem dan mengaplikasikan variabel termanipulasi pada sistem untuk mengoreksi atau mengurangi deviasi yang terjadi terhadap nilai keluaran yang dituju. e. Plant (Plant) adalah sesuatu obyek fisik yang dikontrol. f. Proses (process) adalah sesuatu operasi yang dikontrol. Contoh : proses kimia, proses ekonomi, proses biologi, dan lain sebagainya. g. Gangguan (disturbance) adalah sinyal yang mempengaruhi nilai keluaran sistem. h. Kontrol umpan balik (feedback control) adalah operasi untuk mengurangi perbedaan antara keluaran sistem dengan referensi masukan. i. Kontroler (controller) adalah suatu alat atau cara untuk memodifikasi sistem sehingga karakteristik sistem dinamik (dynamic system) yang dihasilkan sesuai dengan yang dikehendaki. j. Sensor adalah peralatan yang digunakan untuk mengukur keluaran sistem dan menyetarakannya dengan sinyal masukan sehingga bisa dilakukan suatu operasi hitung antara keluaran dan masukan. 6
  • 21. k. Aksi kontrol (control action) adalah besaran atau nilai yang dihasilkan oleh perhitungan kontroler untuk diberikan pada plant (pada kondisi normal merupakan variabel termanipulasi). Aktuator (actuator), adalah suatu peralatan atau kumpulan komponen yang menggerakkan plant. Secara umum, sistem kontrol loop tertutup diberikan oleh Gambar 2.1.1 masukan keluaran kontroler plant + - sensor Gambar 2.1.1 Sistem Kontrol Loop Tertutup [3] Gambar diatas menunjukkan hubungan masukan dan keluaran dari sistem kontrol loop tertutup. Jika dalam hal ini manusia bekerja sebagai operator, maka manusia ini akan menjaga sistem agar tetap pada keadaan yang diinginkan. Ketika terjadi perubahan pada sistem maka manusia akan melakukan langkah–langkah awal pengaturan sehingga sistem kembali bekerja pada keadaan yang diinginkan. Jika kontroler otomatik digunakan untuk menggantikan operator manusia, maka sistem kontrol tersebut menjadi otomatik. Keadaan ini biasa disebut sistem kontrol otomatik berumpan balik atau sistem kontrol loop tertutup, sebagai contoh adalah pengaturan temperatur. Sistem kontrol manual berumpan-balik dalam hal ini manusia bekerja dengan cara yang sama dengan sistem kontrol otomatik. Mata operator adalah analog dengan alat ukur kesalahan, otak analog dengan kontroler otomatik dan otot–ototnya analog dengan akuator. Hal inilah yang membedakan dengan sistem kontrol loop terbuka yang keluarannya 7
  • 22. tidak berpengaruh pada aksi pengontrolan, dimana keluaran tidak diukur atau diumpan–balikkan untuk dibandingkan dengan masukan. 2.1.2 Remote Kontrol Pada remote kontrol terdapat dua bagian yang utama yaitu: bagian transmitter (pemancar) dan bagian receiver (penerima). Bagian transmitter dalam hal ini menggunakan remote yang sudah jadi, yaitu remote untuk TV, sedangkan bagian receiver dibangun dari dioda infra merah, filter, dan penguat sinyal/amplifier. [4] Rangkaian remote kontrol Komponen utama dari alat ini adalah IC NE555 sebagai transmitter dan IC LM567 sebagai receiver. Frekuensi antara transmitter dan receiver harus sama, karena alat ini bekerja berdasarkan pembacaaan frekuensi yang dikirimkan transmitter berupa frekuensi dari sinyal LED infra merah. Rangkaian transmitter seperti diperlihatkan pada Gambar 2.1.2.1, sedangkan rangkaian receiver seperti pada Gambar 2.1.2.2. Gambar 2.1.2.1 Transmitter remote kontrol [4] 8
  • 23. Gambar 2.1.2.2 Receiver Remote Kontrol [4] Metode pengiriman data pada remote kontrol Remote kontrol inframerah menggunakan cahaya inframerah sebagai media dalam mengirimkan data ke penerima. Data yang dikirimkan berupa pulsa-pulsa cahaya dengan modulasi frekuensi 40kHz. Sinyal yang dikirimkan merupakan data-data biner. Untuk membentuk datadata biner tersebut, ada tiga metode yang digunakan yaitu pengubahan lebar pulsa, lebar jeda (space), dan gabungan keduanya.  Pulse - Coded Signals Dalam mengirimkan kode, lebar jeda tetap yaitu t sedangkan lebar pulsa adalah 2t. Jika lebar pulsa dan lebar jeda adalah sama yaitu t, berarti yang dikirim adalah bit 0, jika lebar pulsa adalah 2t dan lebar jeda adalah t, berarti yang dikirim adalah 1. Pulse 0 0 1 1 Space Gambar 2.1.2.3 Pengiriman Kode dengan Tipe Pulse-Coded Signal [4] 9
  • 24.  Space - Coded Signal Dalam mengirimkan kode remote kontrol dilakukan dengan cara mengubah lebar jeda, sedangkan lebar pulsa tetap. Jika lebar jeda dan lebar pulsa adalah sama yaitu t, berarti yang dikirim adalah 0 . Jika lebar jeda adalah 3t, berarti data yang dikirim adalah 1 . Pulse 0 1 1 Space Gambar 2.1.2.4 Pengiriman Kode dengan Tipe Space-Coded Signal [4]  Shift - Coded Signal Tipe ini merupakan gabungan dari tipe pulse dan space, yaitu dalam mengirimkan kode remote kontrol, dengan cara mengubah lebar pulsa dan lebar jeda. Jika lebar jeda adalah t dan lebar pulsa adalah 2t, maka ini diartikan sebagai data 1. Jika lebar jeda adalah 2t dan lebar pulsa adalah t, maka ini diartikan sebagai data 0 (low). Space Pulse 0 1 0 Gambar 2.1.2.5 Pengiriman Kode dengan Tipe Shift-Coded Signal [4] 10
  • 25. Sebelum kode dikirim, terlebih dahulu kirimkan sinyal awal yang disebut sebagai header. Header adalah sinyal yang dikirimkan sebelum kode sebenarnya, dan juga merupakan sinyal untuk mengaktifkan penerima. Header selalu dikirimkan dengan lebar pulsa yang jauh lebih panjang daripada kode. Setelah header dikirimkan, baru kemudian kode remote kontrol. Kode remote kontrol dibagi menjadi dua fungsi, yaitu fungsi pertama digunakan sebagai penunjuk alamat peralatan yang akan diaktifkan, fungsi kedua adalah sebagai command atau perintah untuk melaksanakan instruksi dari remote kontrol. Header Code Gambar 2.1.2.6 Sinyal Header dan Kode remote kontrol 2.2 Computer Vision (Komputer Visi) Computer Vision adalah salah satu cabang ilmu pengetahuan yang mempelajari bagaimana komputer dapat mengenali objek/gambar yang diamati. Gambar yang diperoleh dapat diperoleh dari beberapa sumber seperti video, scanner, atau digital image. [5] Computer vision merupakan kombinasi dari:  Pengolahan Citra (Image Processing) Bidang ini berhubungan dengan proses transformasi citra / gambar. Proses ini bertujuan untuk mendapatkan kualitas citra yang lebih baik.  Pengenalan Pola (Pattern Recognition) Bidang ini berhubungan dengan proses identifikasi objek pada citra atau interpretasi citra. Proses ini bertujuan untuk mengekstrak informasi/pesan yang disampaikan oleh gambar/citra. 11 [4]
  • 26. Tujuan dari sistem computer vision adalah membuat model dunia nyata dari sebuah gambar. Sebuah sistem computer vision memperbaiki informasi yang berguna mengenai scene dari proyeksi dua-dimensi. Gambar proyeksi dua-dimensi berasal dari dunia tiga-dimesi, maka informasi yang didapat tidak langsung tersedia dan harus diperbaiki. Perbaikan ini memerlukan inversi yang banyak dari satu pemetaan. Pengetahuan mengenai objek-objek pada scene dan proyeksi geometri sangat diperlukan dalam memperbaiki informasi tersebut. Proses-proses dalam computer vision dapat dibagi menjadi 3 aktivitas : 1. Memperoleh atau mengakuisisi citra digital 2. Melakukan teknik komputasi untuk memproses atau memodifikasi data citra (operasi-operasi pengolahan citra) 3. Menganalisis dan menginterpretasi citra dan menggunakan hasil pemrosesan untuk tujuan tertentu, misalnya mengontrol peralatan, memantau proses manufaktur, dan memandu robot. Sistem computer vision dapat dilihat pada Gambar 2.2 Basis Pengetahuan Input Perolehan Citra Preprocessing Pengekstrasian fitur Output Pengenalan Penyimpanan Asosiatif Gambar 2.2 Sistem Computer Vision [5] Sistem ini terdiri dari enam tahap: perolehan citra, preprocessing, pengekstrasian fitur, penyimpanan asosiatif, basis pengetahuan, dan pengenalan.  Perolehan citra, yaitu langkah untuk memperoleh sebuah citra digital. Citra yang dimaksud adalah sebuah fungsi intensitas cahaya dua dimensi f(x,y), dimana x dan y adalah koordinat spasial dan nilai f pada 12
  • 27. titik (x,y) sebanding dengan tingkat keterangan atau keabuan citra pada titik tersebut. Tahap perolehan citra adalah mengenai pengambilan citra oleh suatu sensor. Sensor yang dimaksud dapat berupa sebuah kamera atau sebuah scanner.  Preprocessing merupakan pengolahan visi awal atau pengolahan tingkat rendah. Terdapat beberapa teknik preprocessing, di antaranya adalah manipulasi skala keabuan, penapisan noise, isolasi daerah, perbaikan geometris, restorasi, rekonstruksi, dan segmentasi. Tahap preprocessing pada suatu sistem pengenalan mesin mungkin berkaitan dengan persepsi keterangan seperti permasalahan restorasi dan rekonstruksi citra. Sistem perolehan citra pada prakteknya tidaklah sempurna.  Pengekstraksian fitur yang terdiri dari pemetaan sebuah vektor observasi ke dalam bidang fitur. Tujuan utama dari pengekstraksian fitur adalah untuk mengurangi data dengan mengukur fitur-fitur tertentu yang membedakan pola masukan. Untuk mengekstraksi fitur, dapat dilakukan dengan memilih sebuah subset dari vektor masukan yang diamati, atau dapat dilakukan dengan mentransformasikan vektor observasi masukan menjadi sebuah vektor fitur menggunakan beberapa fungsi dasar ortogonal.  Basis pengetahuan dan pengenalan termasuk ke dalam pengolahan tingkat tinggi. Ingatan manusia seringkali dapat mengingat informasi lengkap dari informasi parsial atau petunjuk-petunjuk yang halus. Penyimpanan asosiatif adalah suatu penyimpanan di mana alamat setiap data didasarkan pada isi data tersebut (content-addressable). Kemampuan untuk mendapatkan suatu representasi internal atau untuk menyimpulkan sebuah representasi yang kompleks dari suatu bagian membentuk dasar penyimpanan asosiatif. Fungsi dasar penyimpanan asosiatif adalah untuk menyimpan pasangan pola asosiatif melalui sebuah proses pengorganisasian sendiri (self-organizing) dan untuk memproduksi sebuah pola tanggapan yang sesuai pada presentasi pola stimulus yang sama. 13
  • 28. 2.2.1 Image Processing (Pengolahan Citra) Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi dari suatu objek. Pengolahan citra merupakan proses pengolahan dan analisis citra yang banyak melibatkan persepsi visual. Proses ini mempunyai ciri data masukan dan informasi keluaran yang berbentuk citra. Istilah pengolahan citra digital secara umum didefinisikan sebagai pemrosesan citra dua dimensi dengan komputer. Dalam definisi yang lebih luas, pengolahan citra digital juga mencakup semua data dua dimensi. Citra digital adalah barisan bilangan nyata maupun kompleks yang diwakili oleh bit-bit tertentu. [5] Umumnya citra digital berbentuk persegi panjang atau bujur sangkar (pada beberapa sistem pencitraan ada pula yang berbentuk segienam) yang memiliki lebar dan tinggi tertentu. Ukuran ini biasanya dinyatakan dalam banyaknya titik atau piksel sehingga ukuran citra selalu bernilai bulat. Setiap titik memiliki koordinat sesuai posisinya dalam citra. Koordinat ini biasanya dinyatakan dalam bilangan bulat positif, yang dapat dimulai dari 0 atau 1 tergantung pada sistem yang digunakan. Setiap titik juga memiliki nilai berupa angka digital yang merepresentasikan informasi yang diwakili oleh titik tersebut. Format data citra digital berhubungan erat dengan warna. Pada kebanyakan kasus, terutama untuk keperluan penampilan secara visual, nilai data digital merepresentasikan warna dari citra yang diolah. Format citra digital yang banyak dipakai adalah Citra Biner (monokrom), Citra Skala Keabuan (gray scale), Citra Warna (true color), dan Citra Warna Berindeks. Tujuan pengolahan citra : 1. Proses memperbaiki kualitas citra agar mudah diinterpretasi oleh manusia atau komputer 2. Teknik pengolahan citra dengan mentrasformasikan citra menjadi citra lain, contoh : pemampatan citra (image compression) 3. Pengolahan citra merupakan proses awal (preprocessing) dari computer vision. 14
  • 29. Elemen sistem pemrosesan citra digital Media Penyimpanan Citra Digitizer Komputer Digital Piranti Tampilan Gambar 2.2.1 Elemen sistem pemrosesan digital [5] Keterangan gambar :  Digitizer (Digital Acqusition System) : sistem penangkap citra digital yang melakukan penjelajahan citra dan mengkonversinya ke representasi numerik sebagai masukan bagi komputer digital. Hasil dari adalah matriks yang elemen-elemennya menyatakan nilai digitizer intensitas cahaya pada suatu titik. Digitizer terdiri dari 3 komponen dasar : - Sensor citra yang bekerja sebagai pengukur intensitas cahaya - Perangkat penjelajah yang berfungsi merekam hasil pengukuran intensitas pada seluruh bagian citra - Pengubah analog ke digital yang berfungsi melakukan sampling (proses untuk menentukan warna pada piksel tertentu pada citra dari sebuah gambar yang kontinu) dan kuantisasi (proses mengasosiasikan warna rata-rata dengan tingkatan warna tertentu).  Komputer digital, digunakan pada sistem pemroses citra, mampu melakukan berbagai fungsi pada citra digital resolusi tinggi.  Piranti tampilan, peraga berfungsi mengkonversi matriks intensitas tinggi merepresentasikan citra ke tampilan yang dapat diinterpretasi oleh manusia.  Media penyimpanan, piranti yang mempunyai kapasitas memori besar sehingga gambar dapat disimpan secara permanen agar dapat diproses lagi pada waktu yang lain. 15
  • 30. 2.2.2 Hand Gesture Recognition (Pengenalan Pola Isyarat Tangan) Pengenalan pola isyarat tangan adalah pengenalan pola tangan sebagai isyarat yang ditangkap oleh sebuah sensor yang terhubung ke komputer sehingga dapat menghasilkan pola-pola yang dapat diterjemahkan. Pengenalan pola isyarat tangan terdiri dari tiga tahapan, yaitu deteksi, pelacakan dan pengenalan. Tahap deteksi bertanggung jawab untuk mendefinisikan dan mengekstrak fitur visual yang dapat dikaitkan dengan pendeteksian tangan pada kamera. Lapisan pelacakan bertanggung jawab untuk melakukan pengumpulan data sementara dari frame gambar yang terdeteksi pada setiap saat dalam waktu tertentu, sehingga dapat dilacak gambar apa dan dimana. Selain itu, dalam metode berbasis model pelacakan juga disediakan cara untuk mempertahankan perkiraan model parameter, variabel dan fitur yang tidak langsung tampak pada setiap saat dalam waktu tertentu. Terakhir, lapisan pengenalan bertanggung jawab untuk mengelompokkan data ekstensi spasial dan durasi temporal yang diambil dalam lapisan sebelumnya dan menetapkan kelompok yang dihasilkan dari label terkait dengan kelas-kelas tertentu dari gerakan. Pengenalan pola isyarat tangan pada sistem kontrol televisi ini ditangkap oleh sensor Kinect. [6] Secara sederhana, metode pengenalan isyarat mengidentifikasi serangkaian gerakan. Contohnya, sebuah tangan yang terbuka diikuti dengan tangan yang tertutup dapat ditandai sebagai gerakan ‘meraup’/’merenggut’, sementara tangan tertutup diikuti dengan tangan terbuka dapat ditandai dengan gerakan ‘menjatuhkan’. Kelihatannya cukup sederhana, namun dapat dilakukan lebih baik dengan memanfaatkan dependesi sementara antara gerakan. Contohnya, pada waktu t tangan berada dalam keadaan terbuka, pada waktu t+1 tangan akan memiliki peluang yang lebih besar untuk berada dalam keadaan tebuka daripada dalam transisi ke keadaan tertutup. Misalkan Et sebagai estimasi pose pada waktu t, dan misalkan St merupakan pose 16
  • 31. sebenarnya (atau keadaan) pada waktu t. kemudian, menggunakan rekursi maju pada model Hidden Markov sederhana kita dapat menghitung: ( | ( ( | ∑ ( | ) | ) ∑ ( | ) ( | ) ) ( | ) ) ( | ) Dimana Et = {E1, E2, …, Et}. kita memiliki p(Et|St) dari peluang keluaran SVM (dihitung dengan mencocokkan nilai tetapan untuk kurva sigmoid). Kita perkirakan p(St+1|St) dan p(S0) secara manual, dan gunakan p(St|Et) sebagai perkiraan akhir dari pose (keadaan tangan ) pada waktu t. [7] Untuk memperagakannya, digunakan contoh gerakan ‘merenggut’ dan ‘menjatuhkan’ seperti yang digambarkan sebelumnya. Ada dua keadaan yaitu, ‘tebuka’ dan ‘tertutup’ yang mana masing-masing ditandai dengan ‘1’ dan ‘0’ berurutan. Ditetapkan bahwa p(S0 = 1) = p(S0 = 0) = 0.5 dan peluang transisi p(St+1 ≠ St) = 0.1. Karena diasumsikan peluang transisi yang rendah, maka rekursi maju mengelola transisi kasar yang diamati pada perkiraan frame-per-frame awal. Gambar 2.2.2 Perkiraan pada potongan runtunan gambar (30fps) dari gerakan ‘renggut’ dan ‘jatuhkan’ [7] 17
  • 32. Pengenalan pola isyarat tangan pada Sensor Kinect mempunyai tahapan sebagai berikut :  Identifikasi Berdasarkan Data RGB Data RGB adalah data yang diambil dengan kombinasi warna Red, Green, dan Blue. Pada pengambilan data ini akan digunakan detektor kulit (skin detector) untuk estimasi awal lokasi piksel tangan. Pada satu set ditandai piksel 18.696 foto (2 juta piksel) sebagai kulit atau non-kulit. Kemudian piksel tersebut dicocokkan pada model Mixture of Gaussians untuk data empiris, menghasilkan sebuah pendekatan untuk nilai p(RGB|S = 1) dan p(RGB|S = 0); RGB mengindikasikan set nilai RGB tertentu, dan S adalah variabel biner acak yang mengindikasikan apakah piksel tersebut merupakan kulit atau tidak. Dengan melihat berbagai sampel potongan gambar daerah estimasi tangan, dan menandai piksel pada gambar sebagai kulit atau bukan, dapat diperkirakan P(S). dengam menggunakan peluang berikut dapat dihitung : ( |  ( ) ∑ | ) ( ) | ) ( ) ( Mengintegrasikan Data Depth Data Depth adalah data yang diambil dengan menggunakan kamera depth pada sensor Kinect dimana data ini berupa gambar hitam putih. Sensor Kinect mendukung data depth yang sangat bagus sehingga lebih menyempurnakan perkiraan piksel tangan. Secara khusus, jika dilakukan penandaan secara kasar pada piksel tangan, untuk berbagai contoh gambar, dapat diperkirakan p(D|H) dimana D merepresentasikan nilai depth piksel, dan H merupakan variabel biner acak mengindikasikan apakah piksel tersebut termasuk kepada bagian kulit. Dapat dihitung persamaan berikut, dengan mengasumsikan (RGB,S || D)|H: ( ) ( | ∑ ( ) ( ) ( ∑ | ) ( | ) ) ( ) 18
  • 33. Untuk lebih sederhananya, asumsikan p(S = H) = 1, maka p(H) = p(S). hal ini masuk akal karena kebanyak piksel tangan akan menjadi piksel kulit dan begitu sebaliknya. Karena sangat membosankan untuk menandai piksel tangan secara manual, perkiraan terhadap p(H) dan p(D|H) datang dari pelabelan yang dimiliki oleh p(H|RGB, D); dan ini dihitung dari p(H) dan p(D|H). 2.3 Sensor Kinect Sensor Kinect adalah produk dari Microsoft yang awalnya dibuat khusus untuk perangkat game Xbox 360, dimana memperkenalkan teknologi motion gaming sebagai fitur utamanya. Motion gaming maksudnya adalah membuat pemain dapat berinteraksi ketika bermain game tanpa menggunakan game controller. Sehingga melalui Kinect, pemain dapat bermain game cukup hanya dengan menggunakan gerakan tangan atau gerakan tubuh lainnya. [8] Fitur-fitur yang ada pada teknologi sensor Kinect meliputi kamera RGB, depth sensor, motorized tilt, dan multi-array microphone. Dari keempat fitur yang dimiliki sensor Kinect, depth sensor lah yang berperan penting dalam sistem motion gaming tersebut. Depth sensor bertujuan untuk mendapatkan data video dalam kondisi tiga dimensi didalam kondisi ambient light (menyesuaikan sumber cahaya yang ada dilingkungan tersebut). Pada Gambar 2.3.1 dapat dilihat bentuk dari perangkat keras Kinect. Gambar 2.3.1 Perangkat Keras Kinect [8] Depth sensor terdiri atas kombinasi dari infrared laser projector dan monochrome CMOS sensor. Infrared laser projector berfungsi untuk mentransmisikan cahaya 19
  • 34. invisible near-infrared ke seluruh bagian ruangan yang terjangkau oleh sensor Kinect seperti pada Gambar 2.3.2 Gambar 2.3.2 Cara kerja depth sensor pada pekerangkat sensor Kinect [8] Cahaya near - infrared tidak dapat dilihat secara kasat mata yang hanya dapat dilihat dengan menggunakan kamera night vision seperti gambar 2.3.3 Gambar 2.3.3 Hasil proyeksi dari infrared laser projector [8] Fungsi dari monochrome CMOS sensor adalah mengukur waktu penyeberangan cahaya setelah terpantul oleh objek di depannya. Sistem ini bekerja layaknya sebuah sonar, bila diketahui berapa lama waktu yang dibutuhkan untuk cahaya tersebut kembali, maka dapat diketahui jarak suatu objek dari sensor. Hal ini dapat dilihat seperti Gambar 2.3.4 20
  • 35. Gambar 2.3.4 Cara kerja sensor Kinect [9] 2.3.1 Structured-Light 3D Scanning Kebanyakan pemindaian struktur cahaya (Structured-Light Scanning) berdasarkan proyeksi garis sempit cahaya ke sebuah objek 3D, menggunakan deformasi garis ketika dilihat dari sudut pandang yang berbeda dari sumber untuk mengukur jarak dari setiap titik ke kamera. Metode ini dapat diperpanjang untuk proyeksi banyak garis-garis terang pada saat yang sama, yang menyediakan sejumlah besar sampel secara bersamaan (Gambar 2.3.1.1). Gambar 2.3.1.1 Prinsip-prinsip triangulasi untuk Structured-Light 3D [9] 21
  • 36. Untuk pemindaian cahaya sensor Kinect memiliki sistem yang berbeda. Bukan memproyeksikan garis-garis dari cahaya tampak, tetapi sensor Kinect IR proyektor mengirimkan pola cahaya inframerah balok (yang disebut suatu IR pembuat gambar), yang memantul pada objek dan ditangkap oleh standar sensor cmos gambar (Gambar 2.3.1.2). Gambar ini diambil dan diteruskan ke chip primesense onboard yang harus diterjemahkan ke kedalaman gambar (Gambar 2.3.1.3). Gambar 2.3.1.2 Kinect IR pembuat gambar [9] Gambar 2.3.1.3 Peta Kedalaman (Kiri) Pengkodean cahaya dengan Inframerah (kanan) [9] 2.3.2 Kinect Software Development Kit (SDK) Kinect untuk Windows Software Development Kit (SDK) dari Microsoft Research adalah starter kit untuk pengembang aplikasi dengan 22
  • 37. mengunakan sensor Kinect. Diharapkan dengan SDK ini, Kinect dapat digunakan pada bidang pendidikan, robotika, atau hal lainnya di luar XBox. Dalam perancangan program juga dibutuhkan toolkit tambahan untuk membangun visualisasi kerangka digital. [9] Kinect untuk Windows SDK dilengkapi driver untuk aliran sensor dan pelacakan gerak manusia. Kinect SDK ini, di rilis oleh Microsoft untuk pengembangan teknologi dengan aplikasi C + +, C #, atau Visual Basic dengan menggunakan Microsoft Visual Studio 2010. Fitur-fitur Kinect SDK yang digunakan pada penulisan ini adalah: 1. Raw Sensor Streams Akses ke stream data mentah dari sensor kedalaman (depth sensor), sensor kamera, dan empat-elemen array mikrofon. 2. Skeletal Tracking Kemampuan untuk melacak gambar tangan manusia dalam bidang pandang sensor Kinect, Sehingga mempermudah dalam membuat program berbasis gerakan. Driver-driver yang digunakan pada perancangan sistem kontrol ini adalah : 1. Processing IDE Processing adalah bahasa pemrograman dan lingkungan pemrograman (development environment) open source untuk memprogram gambar, animasi dan interaksi. Processing mengaitkan konsep software pada prinsip-prinsip bentuk rupa, gerak, dan interaksi. Processing mengintegrasikan suatu bahasa pemrograman, lingkungan pemrograman, dan metodologi pengajaran ke dalam sistem terpadu. Dalam Processing struktur program dapat dibuat dalam tiga tingkat kompleksitas yaitu Mode Statik, Mode Aktif, dan Mode Java. Mode Statik digunakan untuk membuat gambar statik. Mode Aktif menyediakan bagian setup() opsional yang akan berjalan ketika program mulai berjalan. Bagian draw() akan berjalan selamanya sampai progam dihentikan. Mode Java adalah yang paling fleksibel, namun tidak tersedia sampai dengan rilis Processing 1.0 Beta. Mode 23
  • 38. ini memungkinkan menulis program Java secara lengkap di dalam Lingkungan Processing. 2. OpenNI OpenNI merupakan singkatan dari Open Natural Interaction, yaitu sebuah organisasi non-profit yang bertujuan meningkatkan kegunaan dari perangkat natural user interface (NUI). NUI adalah sebuah perangkat yang berinteraksi dengan panca indra pendengaran dan penglihatan manusia. Kerangka kerja OpenNI memungkinkan terbentuknya komunikasi dengan perangkat visi dan sensor audio. Hasil komunikasi ini berupa data representasi tubuh user, representasi lokasi tangan, hingga data depth map. Secara garis besar, struktur kerangka kerja OpenNI terbagi menjadi 3 lapisan sebagai berikut: - Perangkat Keras Merupakan lapisan terbawah yang berisi perangkat keras yang digunakan seperti mic, kamera, serta kamera sensor 3D (Microsoft Kinect). - Antarmuka OpenNI Lapisan tengah ini berisi sekumpulan fungsi yang dijalankan untuk menerima masukan dari perangkat keras untuk kemudian diolah. Pada tugas akhir ini digunakan middleware PrimeSense NITE. - Lapisan Perangkat Lunak Merepresentasikan perangkat lunak yang mengimplementasikan interaksi natural. Perangkat lunak meliputi permainan, aplikasi televisi, aplikasi peramban, dan lain sebagainya. 3. PrimeSense NITE PrimeSense merupakan perusahaan dibalik teknologi yang dimiliki oleh Microsoft Kinect, yang sebelumnya dikenal dengan Project Natal. PrimeSense menyediakan implementasi perangkat lunak untuk semua modul OpenNI. Implementasi tersebut disebut sebagai algoritma NITE. Algoritma yang digunakan oleh NITE adalah segmentasi pengguna (user segmentation). Tujuan dari segmentasi pengguna 24
  • 39. adalah untuk mengidentifikasi dan melacak pengguna di tempat kejadian. Setiap pengguna dalam adegan diberikan ID yang unik dan tetap. Keluaran utama dari proses segmentasi pengguna adalah peta label yang memberikan user ID untuk setiap piksel. Pada PrimeSense NITE ini kita menggunakan library XnV untuk pengontrolan televisi. Library tersebut adalah : - XnVSessionManager Library ini berfungsi untuk memperkenalkan objek dengan NITE pengenalan isyarat. - XnVPointControl Library ini berfungsi untuk menjaga pelacakan dari objek titik tangan. - XnVCircleDetector Library ini berfungsi untuk menggambarkan lingkaran dari pengenalan isyarat tangan. 2.3.3 Skeletal Tracking Skeletal tracking merupakan fitur yang diberikan oleh Kinect SDK, dimana dengan fitur ini memungkinkan sensor Kinect dapat melacak titik sendi manusia. Teknologi dibalik skeletal tracking ini sendiri adalah penggunaan depth sensor. Depth sensor awalnya akan memetakan objek yang ditangkapnya berdasarkan jarak seperti Gambar 2.3.3.1. Gambar tersebut akan dibandingkan dengan data hasil training sebelumnya. Data training tersebut dibuat oleh para peneliti dengan mengunakan 100.000 frame gambar objek manusia yang diambil dengan posisi yang berbeda – beda. [10] Pada fitur skeletal tracking ini nantinya kita akan mendapatkan hand tracking dimana hanya titik sendi pada bagian tangan yang ditangkap oleh sensor Kinect. Hand Tracking ini dapat diakses melalui library yang disediakan oleh OpenNI dan NITE. 25
  • 40. Gambar 2.3.3.1 Pemetaan objek dengan depth sensor [10] Teknik hand tracking ini memfokuskan kepada pengambilan bagian tangan dari semua tubuh manusia yang tertangkap oleh sensor Kinect. Gambar 2.3.3.2 Pengambilan Hand Tracking dengan XnVPointControl [9] 2.4 Mikrokontroler ATMega328 Mikrokontroler merupakan sebuah prosesor yang digunakan untuk kepentingan kontrol. Meskipun mempunyai bentuk yang jauh lebih kecil dari suatu komputer pribadi dan computer mainframe, mikrokontroler dibangun dari elemen–elemen dasar yang sama. Seperti umumnya komputer, mikrokontroler adalah alat yang mengerjakan instruksi– instruksi yang diberikan kepadanya. Artinya, bagian terpenting dan utama dari suatu sistem terkomputerisasi adalah program itu sendiri yang dibuat oleh seorang programer. Program ini menginstruksikan komputer untuk melakukan tugas yang lebih kompleks yang diinginkan oleh programer. [11] 26
  • 41. 2.4.1 Arsitektur Mikrokontroler ATmega328 ATMega328 adalah mikrokontroler keluaran dari Atmel yang mempunyai arsitektur RISC (Reduce Instruction Set Computer). Setiap proses eksekusi datanya lebih cepat dari pada arsitektur CISC (Completed Instruction Set Computer). Mikrokontroler ini memiliki beberapa fitur antara lain :  130 macam instruksi yang hampir semuanya dieksekusi dalam satu siklus clock.  32 x 8-bit register serba guna.  Kecepatan mencapai 16 MIPS dengan clock 16 MHz.  32 KB Flash memory dan pada arduino memiliki bootloader yang menggunakan 2 KB dari flash memori sebagai bootloader.  Memiliki EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar 1KB sebagai tempat penyimpanan data semi permanent karena EEPROM tetap dapat menyimpan data meskipun catu daya dimatikan.  Memiliki pin I/O digital sebanyak 14 pin, 6 diantaranya PWM (Pulse Width Modulation) output. Mikrokontroler ATmega 328 memiliki arsitektur hardware yang memisahkan memori untuk kode program dan memori untuk data sehingga dapat memaksimalkan kerja dan parallelism. Instruksi– instruksi dalam memori program dieksekusi dalam satu alur tunggal, dimana pada saat satu instruksi dikerjakan instruksi berikutnya sudah diambil dari memori program. Konsep inilah yang memungkinkan instruksi–instruksi dapat dieksekusi dalam setiap satu siklus clock. Ketiga register pointer 16-bit ini disebut dengan register X (gabungan R26 dan R27), register Y (gabungan R28 dan R29), dan register Z (gabungan R30 dan R31). 27
  • 42. 2.4.2 Konfigurasi PIN ATMega328 Berikut gambar 2.4.2.1 adalah konfigurasi pin ATMega328 yang digunakan pada rancangan alat ini: Gambar 2.4.2.1 Konfigurasi PIN ATMega328 [11] Tabel 2.4.2.1 Konfigurasi Port B [11] 28
  • 43. Tabel 2.4.2.2 Konfigurasi Port C [11] Tabel 2.4.2.3 Konfigurasi Port D [11] 29
  • 44. Diagram Blok Mikrokontroler ATmega328 Gambar 2.4.3 Diagram Blok Arduino Uno [12] 2.5 Mikrokontroler Arduino Uno Arduino merupakan sebuah platform dari physical computing yang bersifat opensource. Arduino adalah kombinasi dari hardware, bahasa pemograman, dan Integrated Development Environment (IDE) yang canggih. IDE adalah sebuah software yang sangat berperan untuk menulis program, meng-compile menjadi kode biner dan meng-upload ke dalam memori mikrokontroler. [11] Arduino Uno adalah board berbasis mikrokontroler pada ATmega328. Board ini memiliki 14 digital input/output pin (dimana 6 pin dapat digunakan sebagai output PWM), 6 input analog, 16 MHz osilator kristal, koneksi USB, jack listrik tombol reset. Pin-pin ini berisi semua yang diperlukan untuk mendukung mikrokontroler, hanya terhubung ke komputer dengan kabel USB atau sumber tegangan bisa didapat dari adaptor AC-DC atau baterai untuk menggunakannya. 30
  • 45. Board Arduino Uno memiliki fitur-fitur baru sebagai berikut :  1,0 pin out: tambah SDA dan SCL pin yang dekat ke pin aref dan dua pin baru lainnya ditempatkan dekat ke pin RESET, dengan IO REF yang memungkinkan sebagai buffer untuk beradaptasi dengan tegangan yang disediakan dari board system. Pengembangannya, sistem akan lebih kompatibel dengan prosesor yang menggunakan AVR, yang beroperasi dengan 5V dan dengan Arduino Karena yang beroperasi dengan 3.3V.  Circuit Reset Gambar 2.5 Board Arduino Uno [12] Pada gambar diatas terdapat 14 pin output/input yang mana 6 pin dapat digunakan sebagai output PWM, 6 analog input, 1 kristal osilator 16 MHZ dan 1 tombol reset. Deskripsi Arduio UNO: Tabel 2.5 Deskripsi Arduino Uno Mikrokontroler Atmega328 Operasi Voltage 5V Input Voltage 7-12 V (Rekomendasi) Input Voltage 6-20 V (limits) I/O 14 pin (6 pin untuk PWM) Arus 50 mA Flash Memory 32KB Bootloader SRAM 2 KB 31
  • 46. EEPROM Kecepatan 2.5.1 1 KB 17 hz Perangkat Lunak (Arduino IDE) Arduino Uno dapat diprogram dengan perangkat lunak Arduino. Tahapan untuk memprogram Arduino adalah dengan memilih Arduino Uno dari Tool perangkat lunak Arduino lalu sesuaikan dengan mikrokontroler yang digunakan. Para ATmega328 pada Arduino Uno memiliki bootloader yang memungkinkan untuk meng-upload program baru untuk itu tanpa menggunakan programmer hardware eksternal. Perangkat lunak ini berkomunikasi menggunakan protokol dari bahasa C. Lingkungan open-source Arduino memudahkan untuk menulis kode dan meng-upload ke board Arduino. Perangkat lunak ini dapat berjalan pada Windows, Mac OS X, dan Linux. Berdasarkan Pengolahan, avr-gcc, dan perangkat lunak sumber terbuka lainnya. Gambar 2.5.2 Tampilan Framework Arduino UNO [12] 32
  • 47. BAB III METODOLOGI PENELITIAN 3.1 Desain Penelitian Desain penelitian menggunakan sequential mode yaitu model penelitian berurutan, dimana tahapan-tahapan penelitian harus diselesaikan sesuai urutan. Model tersebut dapat dilihat seperti Gambar 3.1.1 Studi Literatur Desain Sistem Perancangan Hardware Perancangan Software Implementasi Pengenalan Pola Isyarat Tangan Sistem Kontrol Remote dan Arduino Pengujian dan Evaluasi Pengujian Sistem Evaluasi Sistem Dokumentasi Gambar 3.1.1 Desain Penelitian 33
  • 48. Desain penelitian pada Gambar 3.1.1 dapat dijelaskan sebagai berikut : 1. Studi Literatur Pada tahap ini, dilakukan pengumpulan teori yang berkaitan dengan pembuatan tugas akhir, seperti teori tentang sistem kontrol, mikrokontroler Arduino, dan sensor Kinect. Kemudian mempelajari teori yang berkaitan dengan sistem kontrol TV dengan menggunakan sensor Kinect dan mikrokontroler Arduino. Teori-teori tentang sistem kontrol terkhusus pada sistem kontrol loop tertutup karena pada sistem ini digunakan sistem kontrol loop tertutup. Teori-teori menyangkut mikrokontroler Arduino dan bagaimana diagram bloknya. Kemudian teori tentang sensor Kinect, bagaimana algoritma dari pengenalan pola isyarat tangan ditangkap oleh sensor Kinect dan diolah sehingga dapat menghasilkan gerakan real time. Mempelajari beberapa literatur dan jurnal-jurnal yang berkaitan dengan sensor Kinect ini. Contoh literatur yang didapatkan :  Rancang Bangun Sistem Perintah Gerak Mobile Robot Menggunakan Metode Pengenalan Isyarat Tubuh Dengan Sensor Kinect Oleh : Dhuha Abdul Aziz, Dr. Ir. Djoko Purwanto, M.Eng., Rudy Dikairono, ST, M.Sc. Jurusan Teknik Elektro, Fakultas Teknologi Industri, Institut Teknologi Sepuluh Nopember (ITS) “Jurnal ini membahas tentang perancangan sebuah sistem perintah untuk gerak robot menggunakan metode pengenalan isyarat tubuh dengan sensor Kinect. Pada jurnal ini mobile robot yang dibuat mampu mengikuti gerakan manusia.”  Recognizing Hand Gestures with Microsoft’s Kinect Oleh : Matthew Tang Jurusan Teknik Elektro, Universitas Standford “Pada jurnal ini dibahas tentang Pengenalan Pola Isyarat tangan pada Microsoft Kinect. Dijabarkan bagaimana perhitungan pola dari isyarat tangan dengan sensor kedalaman (depth sensor). Perhitungan ini 34
  • 49. menghasilkan analisa dari pola isyarat tangan yang ditangkap oleh sensor Kinect” 2. Desain Sistem Pada desain sistem ini ada dua bagian yaitu : - Perancangan Perangkat Keras Pada tahapan ini dirancang cara kerja sistem kontrol TV. Bagaimana integrasi antara Remote Kontrol, TV, sensor Kinect, mikrokontroler Arduino dan komputer sehingga dapat menghasilkan sebuah sistem kontrol TV. Perancangan perangkat keras dapat dilihat pada blok diagram Gambar 3.2. - Perancangan Perangkat Lunak Untuk tahapan ini akan dirancang perangkat lunak berupa program mikrokontroler Arduino dan sensor Kinect. Program yang dirancang berisikan coding program mengenai sistem kontrol TV pada mikrokontroler Arduino dan program tentang pengenalan pola isyarat tangan pada sensor Kinect. 3. Implementasi Pada tahapan ini, dilakukan proses pengimplementasian dari sistem yang telah dirancang. Untuk langkah pertama dilakukan pengintegrasian antara remote TV dan mikrokontroler Arduino, yang bertujuan untuk pemindahan data dari remote TV ke mikrokontroler Arduino yang akan diproses dengan Arduino IDE. Langkah berikutnya adalah pengenalan pola isyarat tangan pada sensor Kinect, seperti Gambar 3.1.2 : Isyarat Tangan Capture (kinect) Mengubah Data RGB menjadi Data Depth Perhitungan Swipe Gesture Kinect SDK Gambar 3.1.2 Proses Pengolahan Pola Isyarat Tangan 35
  • 50. Setelah itu dilakukan penghitungan dari pola yang didapatkan tersebut, jika pola isyarat tangan yang didapatkan cocok dengan sensor Kinect maka dihubungkan dengan mikrokontroler Arduino yang telah terintegrasi dengan remote TV. 4. Pengujian dan Evaluasi Dilakukan pengujian dari sistem yang telah dibuat. Apabila terjadi kesalahan atau sistem tidak berjalan dengan baik, diadakan evaluasi untuk memperbaiki kesalahan yang terjadi. 5. Dokumentasi Tahap ini merupakan tahap terahir dari tugas akhir. Pada tahap ini dilakukan rekapitulasi dokumentasi dari hasil yang telah tercapai seperti alat uji, program, hasil screenshot interface program, dan lain-lain yang dirasa perlu. 3.2 Perancangan Sistem Pada pembuatan tugas akhir ini, sistem yang akan dibuat digambarkan dalam bentuk blok diagram seperti yang ditunjukan dibawah ini. Kinect Komputer Arduino Remote Kontrol TV Gambar 3.2 Blok Diagram Perancangan Sistem Blok diagram di atas menjelaskan bahwa TV dikontrol oleh sebuah Remote Kontrol yang rangkaiannya akan dikoneksikan dengan board mikrokontoler Arduino. Hal ini bertujuan untuk mengambil data dari Remote Kontrol yang akan diproses pada Arduino IDE melalui komputer (PC). Pada pemrosesan ini dilakukan penyimpanan data pada mikrokontroler Arduino. 36
  • 51. Kemudian sensor Kinect dikoneksikan dengan PC yang akan menangkap gerakan tangan untuk diproses sebagai kontrol TV pada PC. Nantinya data Remote Kontrol yang sudah ada pada mikrokontroler Arduino akan digabungkan dengan data dari sensor Kinect dengan program Kinect SDK. Gerakan tangan yang ditangkap oleh sensor Kinect akan dihitung dengan metoda depth threshold dan metoda tersebut akan diproses pada pemrograman dengan menggunakan Processing IDE dan Kinect SDK. Hasil perhitungan dari metoda akan digabungkan dengan mikrokontroler Arduino sehingga gerakan tangan dapat menjadi kontrol TV. 3.2.1 Perancangan Alat 3.2.1.1 Rancangan Alat Pembuatan sistem dimulai dengan perancangan alat, berdasarkan blok diagram Gambar 3.2 dapat digambarkan rancangan dari alat yang akan dibuat. Adapun rancangan mekanik tersebut dapat dilihat pada Gambar 3.2.1.1 : Gambar 3.2.1.1 Rancangan Alat Pada Gambar 3.2.1.1 terlihat bagaimana peralatan yang digunakan untuk pembuatan sistem saling terhubung dengan kabel. Koneksi antara Kinect dan komputer menggunakan sebuah adaptor, sementara koneksi Arduino dengan komputer menggunakan kabel USB. 37
  • 52. 3.2.1.2 Rancangan Hardware Perancangan hardware dimulai dengan perancangan koneksi antara Remote Kontrol dan board Arduino. Untuk koneksi antara Arduino dengan Remote Kontrol, dibutuhkan sebuah prototypeshield dengan 4 buah relay yang akan dihubungkan dengan masing-masing pin Arduino dan board Remote Kontrol seperti pada Gambar 3.2.1.2 : Gambar 3.2.1.2 Rangkaian koneksi Remote Kontrol dan Arduino Gambar 3.2.1.3 Remote Kontrol dan Arduino terhubung dengan Prototypeshield 38
  • 53. Tabel 3.2.1.2 Remote Kontrol dan Arduino : Pasangan kabel dari Relay Pasangan kabel di remote Arduino pin 5 Channel + Arduino pin 5 Channel + Arduino pin 6 Channel - Arduino pin 6 Channel - Arduino pin 7 Volume + Arduino pin 7 Volume + Arduino pin 8 Volume - Arduino pin 8 Volume - Rancangan koneksi Remote Kontrol dan Arduino ini merupakan rancangan awal dari tahap pengerjaan sistem ini. Tujuan dari perancangan koneksi Remote Kontrol dan Arduino ini adalah untuk mendapatkan datadata dari Remote Kontrol yang akan disimpan di Arduino untuk diolah selanjutnya dalam pengerjaan pengenalan isyarat tangan. 3.2.2 Perancangan Software 3.2.2.1 Pengenalan Pola Isyarat Tangan Pengenalan pola isyarat tangan menggunakan library dari Kinect SDK, dimana bahasa pemograman yang digunakan adalah Processing IDE. Untuk mengakses data stream dari Kinect, digunakan framework OpenNI dari PrimeSense. Gambar 3.2.2.1 menunjukkan lapisan dari OpenNI. Gambar 3.2.2.1 Lapisan OpenNI 39
  • 54. OpenNI menyediakan banyak library yang dapat digunakan untuk perancangan sistem ini, diantaranya SimpleOpenNI, OpenKinect atau OpenGL, dan NITE Function. Library ini dapat diakses dengan menggunakan Processing IDE. Adapun perancangan software pada Processing IDE dapat digambarkan ke dalam bentuk flowchart seperti pada Gambar 3.2.2.2 : Gambar 3.2.2.2 Flowchart Processing IDE 40
  • 55. Pada Gambar 3.2.2.2 digambarkan bagaimana alur kerja dari processing IDE dalam melakukan proses pengenalan pola isyarat tangan yang dapat dijabarkan dalam bentuk langkah-langkah berikut : - Pembuatan program dimulai dengan melakukan import dari library yang akan digunakan. - Setelah proses import selesai, diaktifkan dua function dari NITE yaitu hand tracking dan gesture recognition yang dirangkum ke dalam tiga buah library XnV. - Ditetapkan tiga buah nilai berdasarkan titik koordinat dari pelacakan tangan yaitu titik X, Y, dan Z. Dimana ketiga titik ini nantinya berfungsi sebagai penentuan dari pengontrolan yang dilakukan. - Apabila tangan melakukan gerakan vertikal atau dikenal sebagai X, maka sistem akan mengenali sebagai pengontrolan channel. - Apabila tangan melakukan gerakan horizontal atau dikenal sebagai Y, maka sistem akan mengenali sebagai pengontrolan volume. - Sementara titik Z berfungsi sebagai circle atau daerah pelacakan dari tangan yang melakukan gerakan horizontal maupun vertikal. - Daerah pelacakan ini nantinya mempunyai luas daerah tersendiri berdasarkan luas yang akan ditetapkan. Setelah ketiga titik dikenali, maka proses pengontrolan dengan isyarat tangan dapat dilakukan berdasarkan titik yang ditentukan. - Apabila gerakan yang dilakukan tidak sesuai dengan ketiga titik, maka gerakan tangan tersebut tidak akan dikenali dan sistem akan mati atau tidak berjalan. - Penggunaan function dari NITE ini nantinya akan memanggil program dari Arduino menggunakan fasilitas NITE Callbacks. Untuk menjalankan program pada processing IDE ini, program dari Arduino harus terhubung dengan komputer untuk dapat dipanggil pada saat penentuan titik-titik yang digunakan pada pengontrolan sistem. 41
  • 56. 3.2.2.2 Sistem Kontrol Remote dan Arduino Perancangan software pada Arduino IDE dapat digambarkan ke dalam bentuk flowchart seperti pada Gambar 3.2.2.3 : Gambar 3.2.2.3 Flowchart Arduino IDE Pada Gambar 3.2.2.3 terlihat bahwa data pada Remote Kontrol dihubungkan dengan Arduino IDE. Dimulai dengan penginisialisian pin untuk pengontrolan dimana ditetapkan nilai pin tersebut adalah 1, 2, 3 dan 4. Penetapan nilai pin ini nantinya berfungsi dalam pemilihan pengontrolan yang akan dilakukan. Ada empat buah pengontrolan dalam sistem ini, yaitu pengontrolan channel selanjutnya, channel sebelumnya, menambah volume, dan mengurangi volume. Masing-masing ditetapkan nilainya yang dapat dilihat pada Gambar 3.2.2.3. Setelah pemilihan dari pin yang akan difungsikan, pin tersebut akan dibaca dan dilakukan perintah sesuai yang dikirimkan. Perintah tersebut yang akan menjadi sistem kontrol dari channel dan volume TV. 42
  • 57. BAB IV HASIL DAN ANALISA 4.1 Hasil Pengujian Setelah perancangan alat dan perancangan software, dihasilkan sebuah Sistem Kontrol televisi dengan pengenalan pola isyarat tangan menggunakan sensor Kinect dan Arduino. Adapun tampilan sistem tersebut dapat dilihat seperti Gambar 4.1 : Gambar 4.1 Tampilan Sistem Kontrol TV Untuk mengetahui bekerja atau tidaknya sistem yang telah dirancang, maka harus dilakukan pengujian terhadap perangkat-perangkat yang digunakan. Sistem diuji baik dari segi hardware maupun software. Suatu sistem dinyatakan bekerja dengan baik apabila respon yang dihasilkan sesuai dengan tujuan awal saat pertama kali dilakukan perancangan. Tujuan pengujian ini untuk mengetahui sejauh mana keberhasilan sistem yang dirancang serta membandingkan dengan spesifikasi yang diinginkan. 43
  • 58. 4.1.1 Pengujian Remote Kontrol dan Arduino Remote Kontrol dan Arduino dihubungkan dengan sebuah prototypeshield. Tahap awal yang dilakukan dalam proses pengujian adalah mengukur resistansi dari button Remote Kontrol yang akan dihubungkan dengan prototypeshield. Pengukuran resistansi ini bertujuan untuk menemukan button yang tepat, yaitu keadaan dimana button-button yang terhubung akan menjadikan remote dalam keadaan ditekan ketika terhubung dengan prototypeshield. Apabila terjadi perubahan nilai resistansi dari yang tinggi ke rendah, maka button sudah tepat. Button yang akan dihubungkan adalah button dari tombol Channel+, Channel-, Volume+, dan Volume-. Dimana hasil pengujian resistansi dari button button Remote Kontrol dapat dilihat pada tabel 4.1.1.1 : Tabel 4.1.1.1 Resistansi button Remote Kontrol Button Remote Kontrol Channel+ ChannelVolume+ Volume- Push Button 4.65 Ohm 3.01 Ohm 2.8 Ohm 2.69 Ohm Release Button 1.07 Ohm 1.48 Ohm 1.6 Ohm 1.35 Ohm Setelah ditemukan button-button yang tepat, dilanjutkan dengan menghubungkan button tersebut ke prototypeshield. Pada prototypeshield ini terdapat empat buah relay yang akan mengkondisikan button Remote Kontrol yang berfungsi sebagai tombol yang ditekan. Relay memungkinkan penggunaan arus kecil untuk mengontrol arus yang lebih besar. Cara kerja relay adalah menghasilkan medan magnet mekanis untuk menutup rangkaian, ketika relay dimatikan medan magnet berhenti dan menghasilkan lonjakan terbalik. Hal ini berpotensi berbahaya bagi rangkaian karena menerima tegangan negatif pada pin yang sama di mana tegangan positif juga diterima. Jika lonjakan cukup besar dapat merusak rangkaian. Untuk mengatasi masalah ini, dihubungkan beberapa dioda di kumparan relay pada bagian prototypeshield untuk melindungi Arduino. Dioda bekerja hanya dalam satu arah, menghentikan tegangan negatif yang masuk ke Arduino. Untuk menghubungkan dioda tersebut, perlu dihubungkan katoda timbal dengan akhir garis terhadap output pin 44
  • 59. Arduino yang terhubung dengan Ground. Relay yang digunakan adalah relay 5V yang mendukung operasi hingga 20mA yang akan dikoneksikan dengan output Arduino. Relay yang terhubung dengan Arduino dapat diuji dengan cara menyambungkan rangkaian ke komputer dan menjalankan program pada Arduino IDE seperti berikut ini : void setup() { pinMode(2, OUTPUT); } void loop() { digitalWrite(2, HIGH); delay(1000); digitalWrite(2, LOW); delay(1000); } // Set the digital pin as an output. // set the LED on // wait for a second // set the LED off // wait for a second Rangkaian ini memerlukan input tegangan koil sebesar 5V DC dan Arduino Uno memerlukan input tegangan 5V yang diperoleh dari sambungan USB pada komputer. Arduino mengirimkan sinyal ke relay dan relay memungkinkan arus lewat pada waktu yang sama dengan sinyal HIGH(1), kondisi ini akan menjadikan relay hidup dan apabila sinyal yang dikirimkan adalah LOW(0), maka relay tersebut akan mati. Pengujian relay pada Arduino dapat dilihat pada Tabel 4.1.1.2 : Tabel 4.1.1.2 Pengujian Relay pada Arduino Masukan Logika pada Relay LOW (0) HIGH (1) Vout pada beban 0 Volt 5 Volt Selanjutnya dilakukan pengujian terhadap tegangan input dan output pada Arduino ketika prototypeshield terhubung dengan Arduino. Pengujian ini bertujuan untuk melihat berapa tegangan yang dibutuhkan ketika fungsi-fungsi pin pada Arduino diaktifkan. Pin-pin yang diujikan adalah input 1, 2, 3, 4 dan output 5, 6, 7, 8. Pin-pin ini terhubung berdasarkan pin-pin yang ditetapkan pada hubungan Remote Kontrol dan Arduino. Pengujian ini dapat dilakukan dengan menggunakan multimeter. Dijalankan program Arduino IDE seperti dibawah ini : int ChannelPlusPin = 5; int ChannelLessPin = 6; int VolumePlusPin = 7; 45
  • 60. int VolumeLessPin = 8; int pulse = 250; void setup(){ pinMode(ChannelPlusPin, OUTPUT); pinMode(ChannelLessPin, OUTPUT); pinMode(VolumePlusPin, OUTPUT); pinMode(VolumeLessPin, OUTPUT); Serial.begin(9600);// Start serial communication at 9600 bps } void updatePin (int pin, int pulse){ Serial.println("RECEIVED"); Serial.println(pin); digitalWrite(pin, HIGH); delayMicroseconds(pulse); digitalWrite(pin, LOW); Serial.println("OFF"); } void loop(){ if (Serial.available()) { char val=Serial.read(); if(val == '1') { updatePin(ChannelPlusPin, pulse); } else if(val == '2') { updatePin(ChannelLessPin, pulse); } else if(val == '3') { updatePin(VolumePlusPin, pulse); } else if(val == '4') { updatePin(VolumeLessPin, pulse); } } } Akan muncul tampilan sebagai berikut : 46
  • 61. Gambar 4.1.1 Tampilan Arduino IDE Pada saat dikirimkan nilai input 1, Arduino merespon dan mengaktifkan pin 5 sebagai output. Nilai tegangan dapat diukur pada saat respon yang diberikan Arduino kepada relay, yaitu pada saat relay yang terhubung dengan pin 5 hidup. Begitupun dengan input dan output selanjutnya. Tegangan yang diukur dapat dilihat dengan menggunakan osiloskop. Hasil pengujian dari tegangan pin yang diaktifkan dapat dilihat pada Tabel 4.1.1.3 : Tabel 4.1.1.3 Tegangan Pin Input dan Output Pin Input 1 Tegangan 5,1 V Pin Output 5 Tegangan 4,8 V 2 4,9 V 6 Gambar 5,1 V 47
  • 62. 3 5,2 V 7 4,79 V 4 4,8 V 8 5V Program dari Arduino IDE ini nantinya juga akan dipakai pada saat pengujian Remote Kontrol dan Arduino pada pengujian Sistem Kontrol Televisi. 4.1.2 Pengujian Sistem Kontrol Televisi Pengujian Sistem Kontrol televisi dapat dilakukan apabila seluruh rangkaian terhubung dengan komputer. Dimana pada pengujian sistem ini alat yang dibutuhkan adalah hasil dari pengujian sebelumnya, yaitu : - Remote Kontrol yang terhubung dengan Arduino - Sensor Kinect - Televisi - Komputer Semua alat terhubung lansung dengan komputer. Untuk melakukan pengujian ini, dipastikan keseluruhan alat dalam keadaan hidup dan tersambung satu sama lain ke komputer. Langkah pertama adalah melakukan pengujian Remote Kontrol dan Arduino dengan TV diman tahapan dari pengujian ini adalah Remote Kontrol dan Arduino terhubung dengan baik setelah melewati pengujian prototypeshield dan relay, Arduino dan Remote Kontrol tersambung ke komputer, Televisi hidup dan Remote menghadap ke televisi, kemudian dijalankan program Arduino IDE seperti pada pengujian tegangan input dan output prototypeshield yang dapat dilihat pada Gambar 4.4.1 pengujian Remote Kontrol dan Arduino. 48
  • 63. Adapun hasil pengujian dari Remote Kontrol dan Arduino ini dapat dilihat pada Tabel 4.2.1.1 : Tabel 4.2.1.1 Hasil pengujian Remote dan Arduino dengan Arduino IDE No 1 2 3 4 Pin Input 1 2 3 4 Pin Output 5 6 7 8 Hasil Next Channel PreviousChannel Volume Up Volume Down Ketika input yang diberikan 1 akan menghasilkan output 5 yang akan mengaktifkan relay untuk perubahan channel, dan begitu juga untuk input-input selanjutnya. Setelah dilakukan pengujian Remote Kontrol dan Arduino, dihubungkan sensor Kinect ke komputer. Pada tahapan ini, akan dilakukan pengujian pengenalan pola isyarat tangan. 4.1.3 Pengujian Pengenalan Pola Isyarat Tangan dengan Kinect Hand Gesture Recognition (Pengenalan Pola Isyarat Tangan) pada sensor Kinect dikenal dengan hand tracking. Proses pengujian dapat dilakukan apabila sensor Kinect dan komputer terhubung. Proses pengujian pengenalan pola isyarat tangan dimulai dengan pengenalan isyarat tangan oleh sensor Kinect. Pengujian hand tracking ini dilakukan dengan menggunakan metode depth treshold dari Kinect SDK seperti terlihat pada Gambar 4.1.3.1 : Gambar 4.1.3.1 Pengambilan gambar dengan Metode Depth Treshold 49
  • 64. Ada dua tahapan dari metode depth treshold, yaitu : 1. Identifikasi data RGB Pada tahap identifikasi data RGB, diambil gambar tubuh secara keseluruhan yang memiliki kombinasi warna Red, Green, dan Blue seperti terlihat pada Gambar 4.1.3.1. Tujuan dari pengambilan data RGB ini adalah penentuan sampel potongan gambar berdasarkan gerakan yang dilakukan dideteksi sebagai telapak tangan atau tidak. Identifikasi data RGB ini menggunakan library dari Kinect sebagai berikut : import org.openKinect.*; import org.openKinect.processing.*; // Kinect Library object Kinect Kinect; void setup() { size(640, 480); } void setup() { size(640, 480); Kinect = new Kinect(this); Kinect.start(); } Kinect.enableRGB(true); PImage img = Kinect.getVideoImage(); image(img,0,0); import org.openKinect.processing.*; // Kinect Library object Kinect Kinect; void setup(){ size(640, 480); Kinect = new Kinect(this); Kinect.start(); Kinect.enableRGB(true); } void draw(){ PImage img = Kinect.getVideoImage(); image(img,0,0); } Output dari program tersebut adalah seperti pada Gambar 4.1.3.2 : 50
  • 65. Gambar 4.1.3.2 Identifikasi data RGB Dari Gambar 4.1.3.2 dapat dilihat bahwa data RGB ini, memberikan perbedaan warna dari tangan yang dideteksi. Perhitungan perbedaan warna dari tangan ini dilakukan oleh Kinect library. Adapun proses dari perhitungan tersebut menghasilkan data seperti terlihat pada Tabel 4.1.3.1 : Tabel 4.1.3.1 Perhitungan data RGB R 221 219 210 215 G 120 118 110 115 B 30 27 28 25 X Y Z 0.94118 0.90196 0.82353 0.84314 0.47059 0.43137 0.43137 0.45098 0.07843 0.11765 0.10980 0.09804 Akurat 1.4902 1.4509 1.3639 1.3921 Hasil Telapak tangan Telapak tangan Telapak tangan Telapak tangan Proses perhitungan tersebut didapat dari rumus berikut : ( | ) ( ∑ ( | ) ( ) | ) ( ) Peluang didapatkannya kulit adalah berdasarkan jumlah nilai RGB yang didapat. Apabila hasilnya = 1 maka dideteksi telapak tangan dan apabila hasilnya = 0 dideteksi bukan telapak tangan. Source code perhitungan rumus : var_R = ( R / 255 ) var_G = ( G / 255 ) var_B = ( B / 255 ) //R from 0 to 255 //G from 0 to 255 //B from 0 to 255 if ( var_R > 0.04045 ) var_R = ( ( var_R + 0.055 ) / 1.055 ) ^ 2.4 else var_R = var_R / 12.92 if ( var_G > 0.04045 ) var_G = ( ( var_G + 0.055 ) / 1.055 ) ^ 2.4 else var_G = var_G / 12.92 if ( var_B > 0.04045 ) var_B = ( ( var_B + 0.055 ) / 1.055 ) ^ 2.4 else var_B = var_B / 12.92 51
  • 66. var_R = var_R * 100 var_G = var_G * 100 var_B = var_B * 100 //Observer. = 2°, Illuminant = D65 X = var_R * 0.4124 + var_G * 0.3576 + var_B * 0.1805 Y = var_R * 0.2126 + var_G * 0.7152 + var_B * 0.0722 Z = var_R * 0.0193 + var_G * 0.1192 + var_B * 0.9505 2. Mengintegrasikan data Depth Setelah data RGB diidentifikasi, dilanjutkan dengan mengintegrasikan data depth. Integrasi data depth bertujuan untuk mendapatkan kedalaman warna dari isyarat tangan untuk dijadikan pengontrolan. Integrasi ini menggunakan library Simple OpenNI seperti dibawah ini : import SimpleOpenNI.*; SimpleOpenNI context; void setup() { context = new SimpleOpenNI(this); // mirror is by default enabled context.setMirror(true); // enable depthMap generation context.enableDepth(); // enable ir generation context.enableRGB(); //context.enableRGB(640,480,30); //context.enableRGB(1280,1024,15); size(context.depthWidth() + context.rgbWidth() + 10, context.rgbHeight()); } void draw() { // update the cam context.update(); background(200,0,0); // draw depthImageMap image(context.depthImage(),0,0); // draw irImageMap image(context.rgbImage(),context.depthWidth() + 10,0); 52
  • 67. } Dengan output seperti pada Gambar 4.1.3.3 : Gambar 4.1.3.3 Integrasi Data Depth Setelah proses integrasi data Depth, dilanjutkan dengan tahap pengontrolan televisi menggunakan Hand Gesture Recognition dengan sensor Kinect. Tahapan ini dimulai dengan mengimport library core Serial, library OpenGL, dan library Simple-OpenNI pada sketch processing IDE. Seperti terlihat pada Gambar 4.1.3.4 : Gambar 4.1.3.4 Import Core Serial dan Open Kinect 53
  • 68. Ketika import library selesai dilakukan, dibutuhkan dua fungsi dari NITE untuk melakukan pengontrolan channel dan volume, yaitu fungsi hand tracking dan gesture recognition untuk gerakan tangan melambai, mengangkat tangan, dan deteksi titik pelacakan. Fungsi ini dideklarasikan dengan XnVSessionManager, XnVPointControl dan XnVCircleDetector. Seperti terlihat pada Gambar 4.1.3.5 : Gambar 4.1.3.5 Import Library SimpleOpenNI Setelah import selesai, digambarkan sebuah circle detector untuk menentukan jarak tangan ketika melakukan gerakan melambai untuk pengontrolan volume dan channel. Circle detector ini, memiliki garis tengah, titik pusat dan sudut dalam penggunaannya. Untuk ukuran dari circle detector dapat dilihat pada Tabel 4.1.3.2 berikut : 54
  • 69. Tabel 4.1.3.2 Ukuran Circle Detector Pengontrolan Channel Next Channel Previous Channel Luas 0,7 m Sudut horizontal 570 Luas 0,7 m Sudut horizontal 570 Pengontrolan Volume Up Down Luas 0,8 m Sudut vertikal 430 Luas 0,8 m Sudut vertikal 430 Pengontrolan dapat dilakukan dengan mengikuti arah panah yang ada dalam circle detector, selama masih dalam jarak yang sesuai dengan luas dari circle detector. Setelah didapatkan ukuran dari circle detector, ditentukan titik awal dari pengontrolan yang akan dilakukan. Penentuan titik awal ini disebut kalibrasi. Proses kalibrasi dilakukan ketika akan melakukan pengontrolan, setiap user mengkalibrasikan tangan agar dikenal sensor Kinect untuk proses pengontrolan TV. Untuk proses kalibrasi dari tangan, dilakukan gerakan melambai di depan kamera depth sensor Kinect. Pengkalibrasian ini tergantung kecepatan tangan melambai di depan depth sensor Kinect. Gerakan melambai ini nantinya akan memunculkan sebuah titik merah yang akan memandu proses pengontrolan channel atau volume. Jarak antara tangan dan sensor Kinect pada saat pengkalibrasian ini adalah 40cm sampai dengan 300cm. Hasil kalibrasi dapat dilihat pada tabel berikut : Tabel 4.1.3.3 Hasil kalibrasi tangan dengan sensor Kinect Waktu 3 detik 3 detik 3 detik 3 detik 3 detik 3 detik Jarak Tangan dengan Sensor 64 cm 115 cm 164 cm 215 cm 268 cm 300 cm 55
  • 70. Pengontrolan dibedakan menjadi dua model, yaitu pengontrolan volume dan pengontrolan channel. Sensor Kinect mendeteksi pengontrolan ini menjadi tiga variabel yaitu, model pengontrolan volume yang diset variabel 1, model pengontrolan channel yang diset variabel 2, dan model kontrol standby yaitu model kontrol yang di set variabel 0 ketika tidak ada proses penukaran channel atau volume. Proses ini secara keseluruhan diolah dengan processing IDE yang terdapat pada lampiran B. Pengenalan isyarat tangan yang dilakukan adalah “lambaian tangan ke kanan”, “lambaian tangan ke kiri”, “lambaian tangan ke atas”, “lambaian tangan ke bawah”. Pada pengujian ini keempat isyarat tangan terbentuk pada sistem yang diujikan secara satu persatu sebanyak 20 kali gerakan lambaian. Hasil pengujian ini adalah semua isyarat dikenali dengan benar, seperti yang terlihat pada Tabel 4.1.3.4 : Tabel 4.1.3.4 Pengujian Isyarat Tangan dikenali Sensor Kinect No 1 2 3 4 Pola Isyarat Lambaian tangan ke kanan Lambaian tangan ke kiri Lambaian tangan ke atas Lambaian tangan ke bawah Tingkat Keberhasilan 19 Tingkat Kegagalan 1 Presentase Keberhasilan 99% 20 - 100% 5 15 25% 5 15 25% Setelah didapatkan hasil dari pengujian pola isyarat tangan, dapat dilakukan pengujian dari Sistem Kontrol televisi. Pada proses ini semua alat yang dibutuhkan sistem tersambung dengan baik. Untuk pengontrolan channel digunakan “swipe” ke arah kiri untuk previous channel dan ke arah kanan untuk next channel. Sedangkan untuk 56
  • 71. volume, digunakan “swipe” ke atas untuk menambah volume dan bawah untuk mengurangi volume. Gerak pengontrolan ini seperti terlihat pada Gambar 4.1.3.6 : Gambar 4.1.3.6 Hasil Pengujian Isyarat Tangan pada Sistem Kontrol TV 4.2 Analisa Dari proses yang telah dilakukan, baik terhadap pengujian rangkaian dari segi perangkat keras (hardware) maupun perangkat lunak (software), dapat dikatakan bahwa alat yang dirancang sudah sesuai dengan spesifikasi yang diinginkan. Dari segi perangkat keras, mikrokontroler Arduino mempunyai batas toleransi tertentu sehingga memungkinkan pemakaian komponen yang tidak terlalu presisi. Sebagai contoh, jika tegangan untuk sumber daya (vcc) mikrokontroler Arduino sebesar 5 volt DC, berarti tegangan kurang dari semestinya. Namun hal tersebut tidak menjadi masalah jika masih dalam batas 57
  • 72. karakteristik dari mikrokontroler tersebut. Adapun karakteristik mikrokontroler Arduino tersebut diantaranya sebagai berikut : VCC = 1.8V to 5.5V DC Output = 20 mA Ini berarti supply tegangan VCC mikrokontroler Arduino yang diperbolehkan berkisar antara 1.8V sampai 5.5 volt. Keadaan ini memberikan kemudahan bagi perancangan Arduino dan Remote Kontrol, karena tegangan yang dibutuhkan untuk beroperasi adalah berkisaran 5 volt. Pada pengujian Remote Kontrol dan Arduino, didapatkan data input dan output dari pin yang digunakan pada proses pembacaan data. Pin-pin yang digunakan pada Arduino diurutkan berdasarkan board pada Remote Kontrol. Data pin yang dihubungkan adalah pin 5, 6, 7, dan 8 dimana pemilihan pin ini berdasarkan prototypeshield yang menggunakan empat buah relay yang akan mengaktifkan fungsi dari Remote Kontrol. Dimana pin 5 dan 6 mendukung PWM (pulse width modulation) yang dapat mengubah pin hidup (on) atau mati (off) dengan sangat cepat sehingga membuatnya dapat berfungsi layaknya keluaran analog. Value (nilai) pada format kode tersebut adalah angka antara 0 (0% duty cycle ~ 0V) dan 255 (100% duty cycle ~ 5V). Pengujian data pada Remote Kontrol ini menunjukkan bahwa koneksi antara Remote Kontrol dan Arduino terhubung dengan baik. Setelah didapatkan data yang akurat dari koneksi Remote Kontrol dan Arduino, dilakukan pengujian pola isyarat tangan pada sensor Kinect. Tahapan pengujian ini mengalami beberapa kendala yaitu dalam penentuan titik awal atau kalibrasi dari pengenalan pola isyarat tangan dimana harus dilakukan berulang-ulang kali gerakan tangan di depan sensor Kinect untuk mendapatkan sebuah titik untuk proses pengontrolan. Hal ini terjadi karena potensiometer yang terdapat pada sensor Kinect dalam pengontrolan ini tidak konstan, sehingga dibutuhkan sebuah potensiometer manual untuk mengatur pengontrolan agar tetap stabil yaitu ditentukannya sebuah circle detector yang terdapat pada library NITE. Circle detector ini menentukan sebuah titik awal yang akan mengawali proses dari pengontrolan. Dengan adanya circle 58
  • 73. detector ini pengontrolan sistem dapat dilakukan selama masih dalam rentang yang dimiliki oleh circle detector yaitu berdasarkan luas yang terdapat pada bagian hasil. Dan untuk jarak yang dapat ditangkap oleh sensor Kinect adalah 40 cm sampai dengan 300 cm. Dari data pada tabel 4.1.3.3 terlihat bahwa jarak antara tangan dan sensor tidak mempengaruhi waktu untuk proses kalibrasi tangan. Jadi user dapat melakukan pengontrolan dengan jarak yang mereka butuhkan. 59
  • 74. BAB V KESIMPULAN DAN SARAN 5.1 Kesimpulan Berdasarkan hasil perancangan dan pengujian yang telah dilakukan pada sistem yang telah dibuat, maka dapat disimpulkan bahwa : 1. Pengenalan pola isyarat tangan menggunakan metode depth treshold yang menghasilkan gambar potongan tangan dan dapat dijadikan sebagai Sistem Kontrol Televisi. 2. Sistem kontrol televisi dengan pengenalan isyarat tangan menggunakan sensor Kinect dan Arduino. Sensor Kinect digunakan untuk pengenalan Pola Isyarat Tangan, dan Arduino sebagai interface Remote TV. Kalibrasi Sistem Kontrol untuk melacak titik tangan dilakukan selama 3 detik. 3. Sistem pengenalan pola isyarat tangan hanya dapat membaca satu tangan atau single user dimana jarak pengontrolannya adalah antara 40cm-300cm. 4. Sistem kontrol televisi dengan pengenalan pola isyarat tangan dapat bekerja sesuai dengan rancangan dan tingkat keberhasilan 75%. 4.2 Saran Untuk penelitian dan pengembangan sistem ini selanjutnya, dapat disarankan beberapa hal sebagai berikut : 1. Sistem yang dirancang pada tugas akhir ini perlu dikembangkan sehingga nantinya dapat melakukan pengenalan isyarat tangan yang lebih baik, pembentukan model isyarat yang dilakukan selanjutnya bersifat multiple user dan menggunakan metode Hidden Markov Model. 2. Sistem yang dirancang hanya mengenali jenis gerakan tangan berupa lambaian, dapat dikembangkan dalam bentuk isyarat-isyarat tangan yang lebih bervariasi. 60
  • 75. 3. Sistem masih menggunakan interface kabel, dapat dikembangkan dengan menggunakan wireless sehingga dapat mengurangi pemakaian kabel yang panjang. 4. Sistem pengontrolan yang dilakukan hanya untuk pengontrolan channel dan volume, dapat dikembangkan sistem pengontrolan yang lain agar fungsinya dapat diperluas. 61
  • 76. DAFTAR PUSTAKA [1] Yi Li. 2012. Hand Gesture Recognition. Thesis. University of Louisville. China. [2] Phillips, Charles. 2011. Dasar-Dasar Sistem Kontrol. Prentice Hall. [3] Sulasno, Thomas Agus Prayitno. 2006. Teknik Sistem Kontrol. Graha Ilmu. Yogyakarta. [4] http://idkf.bogor.net/yuesbi/eDU.KU/edukasi.net/Elektro/Remote.Control/ materi_3.html (diakses 3 Februari 2013). [5] Fadlisyah. 2007. Computer Vision dan Pengolahan Citra. Andi Publisher. Jakarta. [6] Tang, Matthew. 2011. Hand Gesture Recognition Using Microsoft's Kinect. Computer Science Department at Stanford University. [7] Tang, Matthew. 2011. Recognizing Hand Gestures with Microsoft’s Kinect. Standford University. [8] Sean Kean, Jonathan Hall, and Phoenix Perry. 2011. Meet The Kinect. Apress. New York. [9] Jeff Kramer, Nicolas Burrus, Florian Echtler, Daniel Herrera C., and Matt Parker. 2012. Hacking The Kinect. Apress. New York. [10] Dhuha Abdul Aziz, Djoko Purwanto, Rudy Dikairono. 2012. Rancang Bangun Sistem Perintah Gerak Mobile Robot Menggunakan Metode Pengenalan Isyarat Tubuh Dengan Sensor Kinect. Jurnal. Jurusan Teknik Elektro, Fakultas Teknologi Industri, Institut Teknologi Sepuluh Nopember. [11] McRoberts, Michael. 2010. Beginning Arduino. Apress. New York. [12] Margolis, Michael. 2011. Arduino CookBook. O’Reilly. Beijing.
  • 77. Lampiran A Bahasa Program Arduino IDE : // Remote Control //Use of 4 pins, 2 for channel changes, 2 volume changes int ChannelPlusPin = 5; int ChannelLessPin = 6; int VolumePlusPin = 7; int VolumeLessPin = 8; int pulse = 25000; // milliseconds to hold button on void setup() { //set up pins as outputs pinMode(ChannelPlusPin, OUTPUT); pinMode(ChannelLessPin, OUTPUT); pinMode(VolumePlusPin, OUTPUT); pinMode(VolumeLessPin, OUTPUT); Serial.begin(9600);// Start serial communication at 9600 bps } // function for updating any pin void updatePin (int pin, int pulse){ Serial.print("RECEIVED PIN"); Serial.println(pin); digitalWrite(pin, LOW); delayMicroseconds(pulse); digitalWrite(pin, HIGH); Serial.println("ON"); Serial.println("OFF"); }
  • 78. void loop() { /* while(1){ digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); }*/ if (Serial.available()) { // If data is available to read, int val=Serial.read(); if(val == '1') { // Channel plus button pulsed digitalWrite(5, LOW); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); delay(250); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); delay(250); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); delay(250); updatePin(ChannelPlusPin, pulse); } else if(val == '2') {
  • 79. // Channel less button pulsed digitalWrite(5, HIGH); digitalWrite(6, LOW); digitalWrite(7, HIGH); digitalWrite(8, HIGH); delay(250); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); delay(250); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); delay(250); updatePin(ChannelLessPin, pulse); } else if(val == '3') { // Volume plus button pulsed digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, LOW); digitalWrite(8, HIGH); delay(75); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); delay(75);
  • 80. digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); delay(75); updatePin(VolumePlusPin, pulse); } else if(val == '4') { // Volume less button pulsed digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, LOW); delay(75); digitalWrite(5, HIGH); digitalWrite(6, HIGH); digitalWrite(7, HIGH); digitalWrite(8, HIGH); delay(75); digitalWrite(5, LOW); digitalWrite(6, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); delay(75); updatePin(VolumeLessPin, pulse); } }}
  • 81. Lampiran B Bahasa Program Processing IDE : import SimpleOpenNI.*; import processing.opengl.*; import processing.serial.*; SimpleOpenNI kinect; Serial myPort; // NITE XnVSessionManager sessionManager; XnVPointControl pointControl; XnVCircleDetector circleDetector; // Font for text on screen PFont font; // Variable to define different modes int mode = 0; // Variables for Hand Detection boolean handsTrackFlag = true; PVector screenHandVec = new PVector(); PVector handVec = new PVector(); ArrayList<PVector> handVecList = new ArrayList<PVector>(); int handVecListSize = 30; // Variables for Channel and Volume Control float rot; float prevRot; float rad; float angle; PVector centerVec = new PVector(); PVector screenCenterVec = new PVector(); int changeChannel; int channelTime; void setup() { // Simple-openni object kinect = new SimpleOpenNI(this); kinect.setMirror(true); // enable depthMap generation, hands + gestures
  • 82. kinect.enableDepth(); kinect.enableGesture(); kinect.enableHands(); // setup NITE sessionManager = kinect.createSessionManager("Wave", "RaiseHand"); // Setup NITE.s Hand Point Control pointControl = new XnVPointControl(); pointControl.RegisterPointCreate(this); pointControl.RegisterPointDestroy(this); pointControl.RegisterPointUpdate(this); // Setup NITE's Circle Detector circleDetector = new XnVCircleDetector(); circleDetector.RegisterCircle(this); circleDetector.RegisterNoCircle(this); // Add the two to the session sessionManager.AddListener(circleDetector); sessionManager.AddListener(pointControl); // Set the sketch size to match the depth map size(kinect.depthWidth(), kinect.depthHeight()); smooth(); // Initialize Font font = loadFont("SansSerif-12.vlw"); //Initialize Serial Communication myPort = new Serial(this, "COM6", 9600); } // XnVPointControl callbacks void onPointCreate(XnVHandPointContext pContext) { println("onPointCreate:"); handsTrackFlag = true; handVec.set(pContext.getPtPosition().getX(), pContext.getPtPosition().getY(), pContext.getPtPosition().getZ()); handVecList.clear(); handVecList.add(handVec.get()); } void onPointDestroy(int nID) { println("PointDestroy: " + nID);
  • 83. handsTrackFlag = false; } void onPointUpdate(XnVHandPointContext pContext) { handVec.set(pContext.getPtPosition().getX(), pContext.getPtPosition().getY(), pContext.getPtPosition().getZ()); handVecList.add(0, handVec.get()); if (handVecList.size() >= handVecListSize) { // remove the last point handVecList.remove(handVecList.size()-1); } } // XnVCircleDetector callbacks void onCircle(float fTimes, boolean bConfident, XnVCircle circle) { println("onCircle: " + fTimes + " , bConfident=" + bConfident); rot = fTimes; angle = (fTimes % 1.0f) * 2 * PI - PI/2 ; centerVec.set(circle.getPtCenter().getX(), circle.getPtCenter().getY(), handVec.z); kinect.convertRealWorldToProjective(centerVec, screenCenterVec); rad = circle.getFRadius(); mode = 1; } void onNoCircle(float fTimes, int reason) { println("onNoCircle: " + fTimes + " , reason= " + reason); mode = 0; } // Draw and other Functions void draw() { background(0); // Update Kinect data kinect.update(); // update NITE kinect.update(sessionManager); // draw depthImageMap image(kinect.depthImage(), 0, 0); // Switch between modes
  • 84. switch(mode) { case 0: // Waiting Mode checkSpeed(); // Check the speed of the hand if (handsTrackFlag) drawHand(); // Draw the hand if it's been initialized break; case 1: // Volume Control Mode // Display the volume control volumeControl(); break; case 2: // Channel Change Mode channelChange(changeChannel);// draw the change channel simbol // Add one to the timer channelTime++; // If the timer gets to 10, reset the counter and go back to waiting mode (0) if (channelTime>10) { channelTime = 0; mode = 0; } break; } } // This will draw the channel simbol on screen and send the change channel signal to Arduino void channelChange(int sign) { String channelChange; pushStyle(); // If we are changing to the next channel if (sign==1) { stroke(255, 0, 0); fill(255, 0, 0); // Send the signal only if it's the first loop if (channelTime == 0)myPort.write('1'); textAlign(LEFT); channelChange = "Next Channel"; } // Else, we are changing to the previous channel else { stroke(0, 255, 0); fill(0, 255, 0); // Send the signal only if it's the first loop if (channelTime == 0)myPort.write('2'); textAlign(RIGHT); channelChange = "Previous Channel"; } // Draw an arrow on screen strokeWeight(10);
  • 85. pushMatrix(); translate(width/2,height/2); line(0,0,sign*200,0); triangle(sign*200,20,sign*200,-20,sign*250,0); textFont(font,20); text(channelChange,0,40); popMatrix(); popStyle(); } // Check if the hand movement matches what we want void checkSpeed() { // Checkl only if we have two positions, so we can calculate the speed if (handVecList.size()>1) { // Check the distance between the two last hand positions PVector vel = PVector.sub(handVecList.get(0), handVecList.get(1)); // If the distance is greater than 50 on the x-axis if (vel.x>50) { mode = 2; changeChannel = 1; } // If the distance is lesser than -50 on the x-axis else if (vel.x<-50) { changeChannel = -1; mode = 2; } } } // This will display the colume control gizmo and send the signal to Arduino void volumeControl() { String volumeText = "You Can Now Change the Volume"; fill(150); ellipse(screenCenterVec.x, screenCenterVec.y, 2*rad, 2*rad); fill(255); if (rot>prevRot) { fill(0, 0, 255); volumeText = "Volume Level Up"; myPort.write('3'); } else { fill(0, 255, 0); volumeText = "Volume Level Down"; myPort.write('4'); } prevRot = rot; text(volumeText, screenCenterVec.x, screenCenterVec.y); line(screenCenterVec.x, screenCenterVec.y, screenCenterVec.x+rad*cos(angle), screenCenterVec.y+rad*sin(angle));
  • 86. } // Draw the hand on screen void drawHand() { stroke(255, 0, 0); pushStyle(); strokeWeight(6); kinect.convertRealWorldToProjective(handVec, screenHandVec); point(screenHandVec.x, screenHandVec.y); popStyle(); noFill(); Iterator itr = handVecList.iterator(); beginShape(); while ( itr.hasNext ()) { PVector p = (PVector) itr.next(); PVector sp = new PVector(); kinect.convertRealWorldToProjective(p, sp); vertex(sp.x, sp.y); } endShape(); }