ta rahmi-0910452015-implementasi pengenalan pola gerakan tangan sebagai input remote tv menggunakan...

86
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

Upload: amy-naira

Post on 28-Nov-2014

1.107 views

Category:

Documents


12 download

DESCRIPTION

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

TRANSCRIPT

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

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

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

i

HALAMAN PENGESAHAN

Nama : Rahmi

No.BP : 0910452015

Judul Tugas Akhir :

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 Ir. Werman Kasoep, M.Kom

NIP. 198410302008122002 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

Implementasi Pengenalan Pola Gerakan Tangan

sebagai Input Remote TV menggunakan Sensor

Kinect

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

ii

HALAMAN PERSETUJUAN TUGAS AKHIR

Dengan ini dinyatakan bahwa:

Nama : Rahmi

No.BP : 0910452015

Jurusan : Sistem Komputer

Judul Tugas Akhir : 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 Ir. Werman Kasoep, M.Kom

NIP. 196810051993031001 NIP. 195709071992031001

Mengetahui,

Ketua Program Studi Sistem Komputer

Fakultas Teknologi Informasi

Universitas Andalas

Padang, 26 Agusutus 2013

(Dodon Yendri, M.Kom)

NIP. 196603091986031001

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

iii

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

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

iv

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

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

v

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

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

vi

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.

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

vii

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

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

viii

tugas akhir ini bermanfaat dan dapat menambah wawasan bagi semua pembaca

dan penulis sendiri.

Padang, 26 Agustus 2013

Penulis

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

ix

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

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

x

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

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

xi

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

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

xii

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

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

xiii

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

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

1

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 manusia-

komputer. 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.

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

2

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.

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

3

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.

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

4

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.

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

5

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.

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.

Sistem Kontrol masukan keluaran

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

6

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.

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

7

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

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

kontroler plant

sensor

masukan keluaran

+ -

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

8

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]

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

9

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 data-

data 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.

Gambar 2.1.2.3 Pengiriman Kode dengan Tipe Pulse-Coded Signal

[4]

Space

Pulse

0 0 1 1

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

10

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 .

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).

Gambar 2.1.2.4 Pengiriman Kode dengan Tipe Space-Coded Signal [4]

Space

Pulse

0 1 1

Gambar 2.1.2.5 Pengiriman Kode dengan Tipe Shift-Coded Signal [4]

Space Pulse

0

1 0

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

11

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.

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.

Header Code

Gambar 2.1.2.6 Sinyal Header dan Kode remote kontrol [4]

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

12

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

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

Perolehan

Citra

Pre-

processing Pengekstrasian

fitur

Penyimpanan

Asosiatif

Pengenalan

Basis

Pengetahuan

Output Input

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

13

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.

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

14

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.

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

15

Elemen sistem pemrosesan citra digital

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 digitizer

adalah matriks yang elemen-elemennya menyatakan nilai 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.

Citra

Media Penyimpanan

Piranti Tampilan

Komputer Digital Digitizer

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

16

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

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

17

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]

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

18

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:

( ) ∑ ( ) ( | ) ( | )

( | ) ( )

∑ ( )

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

19

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

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

20

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

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

21

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]

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

22

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

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

23

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

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

24

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

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

25

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.

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

26

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]

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

27

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).

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

28

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]

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

29

Tabel 2.4.2.2 Konfigurasi Port C [11]

Tabel 2.4.2.3 Konfigurasi Port D [11]

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

30

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.

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

31

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

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

32

EEPROM 1 KB

Kecepatan 17 hz

2.5.1 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]

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

33

Evaluasi Sistem

Pengujian dan Evaluasi

Dokumentasi

Pengujian Sistem

Pengenalan Pola Isyarat

Tangan

Sistem Kontrol Remote

dan Arduino

Implementasi

Studi Literatur

Desain Sistem

Perancangan Hardware Perancangan Software

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

Gambar 3.1.1 Desain Penelitian

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

34

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

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

35

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 :

Gambar 3.1.2 Proses Pengolahan Pola Isyarat Tangan

Isyarat

Tangan

Perhitungan

Swipe Gesture

Mengubah Data

RGB menjadi Data

Depth

Capture

(kinect)

Kinect SDK

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

36

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.

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.

Kinect

Arduino

TV

Komputer

Remote Kontrol

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

37

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.

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

38

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

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

39

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 data-

data 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

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

40

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

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

41

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.

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

42

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.

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

43

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.

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

44

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 Push Button Release Button

Channel+ 4.65 Ohm 1.07 Ohm

Channel- 3.01 Ohm 1.48 Ohm

Volume+ 2.8 Ohm 1.6 Ohm

Volume- 2.69 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

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

45

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); // Set the digital pin as an output.

}

void loop() {

digitalWrite(2, HIGH); // set the LED on

delay(1000); // wait for a second

digitalWrite(2, LOW); // set the LED off

delay(1000); // 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 Vout pada beban LOW (0) 0 Volt HIGH (1) 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;

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

46

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 :

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

47

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 Tegangan Pin Output Tegangan Gambar

1 5,1 V 5 4,8 V

2 4,9 V 6 5,1 V

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

48

3 5,2 V 7 4,79 V

4 4,8 V 8 5 V

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.

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

49

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 Pin Input Pin Output Hasil

1 1 5 Next Channel

2 2 6 PreviousChannel

3 3 7 Volume Up

4 4 8 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

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

50

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 :

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

51

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 G B X Y Z Akurat Hasil

221 120 30 0.94118 0.47059 0.07843 1.4902 Telapak tangan

219 118 27 0.90196 0.43137 0.11765 1.4509 Telapak tangan

210 110 28 0.82353 0.43137 0.10980 1.3639 Telapak tangan

215 115 25 0.84314 0.45098 0.09804 1.3921 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 ) //R from 0 to 255

var_G = ( G / 255 ) //G from 0 to 255

var_B = ( B / 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

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

52

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);

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

53

}

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

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

54

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 :

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

55

Tabel 4.1.3.2 Ukuran Circle Detector

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 Jarak Tangan dengan Sensor

3 detik 64 cm

3 detik 115 cm

3 detik 164 cm

3 detik 215 cm

3 detik 268 cm

3 detik 300 cm

Pengontrolan Channel Pengontrolan Volume

Next Channel Previous Channel Up Down

Luas 0,7 m

Sudut

horizontal 570

Luas 0,7 m

Sudut horizontal

570

Luas 0,8 m

Sudut

vertikal 430

Luas 0,8 m

Sudut vertikal

430

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

56

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 Pola

Isyarat

Tingkat

Keberhasilan

Tingkat

Kegagalan

Presentase

Keberhasilan

1 Lambaian

tangan ke

kanan

19 1 99%

2 Lambaian

tangan ke

kiri

20 - 100%

3 Lambaian

tangan ke

atas

5 15 25%

4 Lambaian

tangan ke

bawah

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

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

57

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

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

58

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

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

59

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.

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

60

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.

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

61

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.

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

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.

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

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");

}

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

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') {

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

// 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);

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

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);

}

}}

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

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

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

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);

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

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

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

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);

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

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));

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

} // 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(); }