SlideShare une entreprise Scribd logo
1  sur  86
Télécharger pour lire hors ligne
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
HALAMAN PENGESAHAN

Nama

: Rahmi

No.BP

: 0910452015

Judul Tugas Akhir

: Implementasi Pengenalan Pola Gerakan Tangan
sebagai Input Remote TV menggunakan Sensor
Kinect

Tugas Akhir ini disetujui oleh Dosen Pembimbing dan disahkan oleh
Ketua Program Studi Sistem Komputer, Fakultas Teknologi Informasi
Universitas Andalas

Pembimbing I

Pembimbing II

Ratna Aisuwarya, M.Eng
NIP. 198410302008122002

Ir. Werman Kasoep, M.Kom
NIP. 195709071992031001

Mengetahui,
Ketua Program Studi Sistem Komputer
Fakultas Teknologi Informasi
Universitas Andalas
Padang, 29 Juli 2013

Dodon Yendri, M.Kom
NIP. 19660309 198603 1 001

i
HALAMAN PERSETUJUAN TUGAS AKHIR

Dengan ini dinyatakan bahwa:
Nama
No.BP
Jurusan
Judul Tugas Akhir

: Rahmi
: 0910452015
: Sistem Komputer
: Implementasi Pengenalan Pola Gerakan Tangan

sebagai Input Remote TV menggunakan Sensor
Kinect
Telah diuji dan disetujui Tugas Akhirnya sebagai salah satu syarat untuk memperoleh
gelar Sarjana Komputer (S.Kom) melalui Ujian Komprehensif yang diadakan pada
tanggal 1 Agustus 2013 berdasarkan ketentuan yang berlaku.

Pembimbing

Ratna Aisuwarya, M.Eng
NIP. 198410302008122002

Penguji I

Penguji II

Andrizal, MT
NIP. 196810051993031001

Ir. Werman Kasoep, M.Kom
NIP. 195709071992031001

Mengetahui,
Ketua Program Studi Sistem Komputer
Fakultas Teknologi Informasi
Universitas Andalas
Padang, 26 Agusutus 2013

(Dodon Yendri, M.Kom)
NIP. 196603091986031001

ii
PERNYATAAN

Dengan ini menyatakan bahwa :
1. Tugas Akhir dengan judul “Implementasi Pengenalan Pola Gerakan Tangan sebagai
Input Remote TV menggunakan Sensor Kinect” adalah asli dan belum pernah
diajukan untuk mendapatkan gelar akademik (Sarjana, Magister, dan Doktor), baik
di Universitas Andalas maupun di perguruan tinggi lainnya.
2. Tugas Akhir ini murni gagasan dan rancangan saya sendiri, tanpa bantuan tidak sah
dari pihak lain, kecuali bantuan dan arahan dari tim pembimbing.
3. Tugas Akhir ini tidak terdapat hasil karya atau pendapat yang ditulis atau
dipublikasikan oleh orang lain, kecuali dikutip secara tertulis dengan jelas dan
dicantumkan sebagai acuan dalam tulisan saya dengan disebutkan nama pengarang
dan dicantumkan dalam daftar pustaka.
4. Pernyataan ini saya buat dengan sesungguhnya, dan apabila dikemudian hari
terdapat penyimpangan dan ketidakbenaran dalam pernyataan ini, maka saya
bersedia menerima sanksi akademik serta sanksi lainnya sesuai dengan norma dan
ketentuan lain yang berlaku.
Demikianlah surat ini dibuat, untuk dapat dipergunakan sebagaimana mestinya.

Padang, Agustus 2013
Yang membuat pernyataan,

Rahmi, S.Kom
0910452015

iii
ABSTRAK

IMPLEMENTASI PENGENALAN POLA GERAKAN TANGAN
SEBAGAI INPUT REMOTE TV MENGGUNAKAN SENSOR
KINECT
Oleh
Rahmi
0910452015

Teknologi pengenalan pola isyarat tangan saat ini telah mengalami perkembangan
yang sangat pesat, diantaranya adalah pengembangan pengenalan pola isyarat
tangan sebagai sistem kontrol televisi. Proses pengontrolan televisi dengan
pengenalan pola isyarat tangan ini menggunakan metode depth treshold yang
diintegrasikan ke Sensor kinect dan Arduino Remote Kontrol sebagai inteface.
Proses pengontrolan televisi dengan pengenalan pola isyarat tangan dimulai
dengan pengintegrasian Remote Kontrol dan Arduino, dimana data dari Remote
Kontrol dikirimkan ke Arduino yang akan diolah dengan Arduino IDE. Hasil dari
pengolahan data tersebut akan dipanggil oleh pemograman sensor Kinect dengan
Processing IDE yang berisikan rancangan program pengenalan pola isyarat
tangan. Rancangan program pengenalan pola isyarat tangan merupakan hasil dari
pengenalan isyarat yang diujikan di depan sensor Kinect. Pola isyarat tangan yang
dikenali dalam sistem ini adalah lambaian tangan yaitu lambaian ke arah kanan
dan ke arah kiri untuk pengontrolan channel, lambaian ke atas dan ke bawah
untuk pengontrolan volume televisi.
Kata kunci : pengenalan pola isyarat tangan, sensor kinect, arduino

iv
ABSTRACT
THE IMPELEMENTATION OF HAND GESTURE RECOGNITION AS
TV REMOTE USING KINECT CENSOR
By :
Rahmi
0910452015

Hand Gesture Recoginition is a sophisticated technological developments, for
example is the development of Hand Gesture Recognition as television control
system. The process of controlling television with Hand Gesture Recognition use
the method of depth treshold which has integrated to kinect censor and Arduino
Remote Control as interface. This process begin with the integration of remote
control and Arduino, in where the data from remote control sent to Arduino and
processed by IDE Arduino. The result of processing data will be summoned by
the censor Kinect program, in which IDE processing contains the design of
program Hand Gesture Recognition. The result of data processing will be
summoned by programming censorship kinect with IDE processing which has
contains the design of program recognition hand gesture. The design of program
Hand Gesture Recognition is the result of gesture recognition, indeed this program
has been tested in front of kinect censor. The Hand Gesture Recognition in this
system is a right swipe and left swipe for channel change, and up swipe and down
swipe for volume control.
Keyword : hand gesture recognition, kinect censor, arduino

v
KATA PENGANTAR

Alhamdulillah wa Syukurillah penulis ucapkan kepada Allah SWT, karena
limpahan rahmat dan karunia-Nya penulis dapat menyelesaikan penulisan tugas
akhir ini. Shalawat dan salam selalu tercurah kepada Rasulullah Muhammad
SAW yang selalu menjadi panutan umat manusia sampai akhir zaman.
Tugas akhir yang berjudul “Perancangan dan Pembuatan Sistem Kontrol
Televisi dengan Pengenalan Pola Isyarat Tangan menggunakan Sensor Kinect dan
Arduino” ini merupakan salah satu syarat untuk menyelesaikan program Strata-1
di program Studi Sistem Komputer Fakultas Teknologi Informasi Universitas
Andalas.
Dukungan dan semangat yang diberikan dari berbagai pihak sangat
membantu penulis dalam menyelesaikan tugas akhir ini, ucapan terimakasih
penulis sampaikan kepada :
1. Papa dan Mama penulis yang tercinta dan tersayang, yang selalu berdoa
untuk kesuksesan penulis dan tanpa kenal lelah selalu mendorong dan
memberikan nasehat kepada penulis.
2. Ibu Ratna Aisuwarya, M.Eng selaku dosen pembimbing 1 yang telah banyak
memberikan arahan dan bimbingan dalam setiap kendala dalam penulisan
tugas akhir ini.
3. Bapak Ir. Werman Kasoep, M.Kom selaku dosen pembimbing 2 yang telah
banyak memberikan arahan dan bimbingan serta koreksi dalam penulisan
tugas akhir ini.

vi
4. Bapak Prof. Dr. Surya Afnarius, Ph.D selaku dekan Fakultas Teknologi
Informasi Universitas Andalas Padang.
5. Bapak Dodon Yendri, M.Kom selaku ketua Program Studi Sistem Komputer
Universitas Andalas Padang.
6. Seluruh staf dosen Program Studi Sistem Komputer Universitas Andalas
Padang. Terimakasih atas ilmu yang telah diberikan kepada penulis selama
kuliah di Program Studi Sistem Komputer Universitas Andalas Padang.
7. Seluruh karyawan Program Studi Sistem Komputer Universitas Andalas
Padang.
8. Teman-teman Angkatan 2009 Program Studi Sistem Komputer Universitas
Andalas Padang.
9. Rekan-rekan Asisten Laboratorium Komputer Program Studi Sistem
Komputer Universitas Andalas Padang.
10. Rekan-rekan UKM Neo Telemetri Universitas Andalas Padang.
11. Seluruh keluarga besar HMSK Universitas Andalas Padang.
12. Semua pihak yang tidak dapat penulis sebutkan namanya satu per satu,
namun telah memberikan bantuan hingga selesainya tugas akhir ini.
“Thanks for supporting me all”.
Semoga Allah SWT melimpahkan rahmat dan karunia-Nya kepada semua
pihak yang telah membantu penulis dalam menyelesaikan penelitian tugas akhir
dan penyusunan laporan tugas akhir ini.
Penulisan tugas akhir ini masih jauh dari kesempurnaan, oleh karena itu saran
dan masukan dari pembaca sangat penulis hargai. Akhir kata semoga laporan

vii
tugas akhir ini bermanfaat dan dapat menambah wawasan bagi semua pembaca
dan penulis sendiri.

Padang, 26 Agustus 2013

Penulis

viii
DAFTAR ISI

LEMBARAN PENGESAHAN................................................................................ i
LEMBARAN PERSETUJUAN PERSETUJUAN ................................................ ii
PERNYATAAN KEASLIAN TUGAS AKHIR ................................................... iii
ABSTRAK ............................................................................................................... iv
ABSTRACT ............................................................................................................. v
KATA PENGANTAR ............................................................................................. vi
DAFTAR ISI ............................................................................................................. ix
DAFTAR TABEL .................................................................................................... xi
DAFTAR GAMBAR ................................................................................................ xii
BAB I. PENDAHULUAN
1.1. Latar Belakang........................................................................................... 1
1.2. Rumusan Masalah ..................................................................................... 2
1.3. Batasan Masalah ........................................................................................ 3
1.4. Tujuan ........................................................................................................ 3
1.5. Sistematika Penulisan ................................................................................ 3
BAB II. LANDASAN TEORI
2.1. Sistem Kontrol ........................................................................................... 4
2.1.1. Sistem Kontrol Loop Tertutup ....................................................... 6
2.1.2. Remote Kontrol ............................................................................. 8
2.2. Computer Vision ........................................................................................ 11
2.2.1. Image Processing........................................................................... 14
2.2.2. Hand Gesture Recognition ............................................................ 16
2.3. Sensor Kinect ............................................................................................. 19
2.3.1. Structured-Light 3D Scanning....................................................... 21
2.3.2. Kinect Software Development Kit (SDK) ..................................... 22
2.3.3. Skeletal Tracking ........................................................................... 25
2.4. Mikrokontroler ATMega328 ..................................................................... 26
2.4.1. Arsitektur Mikrokontroler ATmega328 ........................................ 26
2.4.2. Konfigurasi PIN ATMega328 ....................................................... 27
2.5. Mikrokontroler Arduino ............................................................................ 30

ix
2.5.1. Perangkat Lunak (Arduino IDE) .................................................. 31
BAB III. METODE PENELITIAN
3.1. Desain Penelitian ....................................................................................... 33
3.2. Perancangan Sistem ................................................................................... 36
3.2.1 Perancangan Alat .............................................................................. 37
3.2.1.1 Rancangan Mekanik ................................................................. 37
3.2.1.2 Rancangan Hardware ............................................................... 38
3.2.2 Perancangan Software....................................................................... 39
3.2.2.1 Pengenalan Pola Isyarat Tangan ............................................... 39
3.2.2.2 Sistem Kontrol Remote dan Arduino ....................................... 42
BAB IV. HASIL DAN ANALISA
4.1. Hasil Pengujian .......................................................................................... 43
4.1.1 Pengujian Remote Kontrol dan Arduino .......................................... 44
4.1.2 Pengujian Sistem Kontrol Televisi ................................................... 48
4.1.3 Pengujian Pengenalan Pola Isyarat Tangan dengan Kinect.............. 49
4.2. Analisa ....................................................................................................... 57
BAB V. KESIMPULAN DAN SARAN
5.1. Kesimpulan ................................................................................................ 60
5.2. Saran .......................................................................................................... 60
DAFTAR PUSTAKA
LAMPIRAN
Lampiran A
Lampiran B

x
DAFTAR TABEL

Tabel

Hal

2.4.2.1 Konfigurasi Port B ....................................................................................

28

2.4.2.2 Konfigurasi Port C ....................................................................................

28

2.4.2.3 Konfigurasi Port D ....................................................................................

29

2.5 Deskripsi Arduino Uno ...................................................................................

31

3.2.1.2 Remote Kontrol dan Arduino ....................................................................

39

4.1.1.1 Resistansi button Remote Kontrol ............................................................

44

4.1.1.2 Pengujian Relay pada Arduino ..................................................................

45

4.1.1.3 Tegangan Pin Input dan Output ................................................................

47

4.2.1.1 Hasil pengujian Remote dan Arduino dengan Arduino IDE ....................

48

4.1.3.1 Perhitungan data RGB ..............................................................................

51

4.1.3.2 Ukuran Circle Detector .............................................................................

54

4.1.3.3 Hasil kalibrasi tangan dengan sensor Kinect ............................................

55

4.1.3.4 Pengujian Isyarat Tangan dikenali Sensor Kinect ....................................

56

xi
DAFTAR GAMBAR

Gambar

Hal

2.1. Diagram Sistem Kontrol ................................................................................

5

2.1.1 Sistem Kontrol Loop Tertutup .....................................................................

7

2.1.2.1 Transmitter remote kontrol .......................................................................

8

2.1.2.2 Receiver Remote Kontrol ..........................................................................

9

2.1.2.3 Pengiriman Kode dengan Tipe Pulse-Coded Signal .................................

9

2.1.2.4 Pengiriman Kode dengan Tipe Space-Coded Signal ................................

10

2.1.2.5 Pengiriman Kode dengan Tipe Shift-Coded Signal ..................................

10

2.1.2.6 Sinyal Header dan Kode Remote Kontrol ................................................

11

2.2 Sistem Computer Vision..................................................................................

12

2.2.1 Elemen sistem pemrosesan digital ...............................................................

15

2.2.2 Perkiraan pada potongan runtunan gambar ..................................................

17

2.3.1 Perangkat Keras Kinect ................................................................................

19

2.3.2 Cara kerja depth sensor pada pekerangkat sensor Kinect ............................

20

2.3.3 Hasil proyeksi dari infrared laser projector ................................................

20

2.3.4 Cara kerja sensor Kinect...............................................................................

21

2.3.1.1 Prinsip-prinsip triangulasi untuk Structured-Light 3D .............................

21

2.3.1.2 Kinect IR pembuat gambar........................................................................

22

2.3.1.3 Peta Kedalaman Pengkodean cahaya dengan Inframerah .........................

22

2.3.3.1 Pemetaan objek dengan depth sensor .......................................................

25

2.3.3.2 Pengambilan Hand Tracking dengan XnVPointControl ...........................

25

2.4.2.1 Konfigurasi PIN ATMega328 ...................................................................

27

2.4.3 Diagram Blok Arduino Uno .........................................................................

29

2.5 Board Arduino Uno .........................................................................................

30

xii
2.5.2 Tampilan Framework Arduino UNO ...........................................................

32

3.2.1.1 Rancangan mekanik ..................................................................................

37

3.2.1.2 Rangkaian koneksi Remote Kontrol dan Arduino ....................................

38

3.2.1.3 Remote Kontrol dan Arduino dengan Prototypeshield .............................

38

3.2.2.1 Lapisan OpenNI ........................................................................................

39

3.2.2.2 Flowchart Processing IDE ........................................................................

40

3.2.2.3 Flowchart Arduino IDE ............................................................................

42

4.1 Tampilan Sistem Kontrol Televisi ..................................................................

43

4.1.1 Tampilan Arduino IDE ................................................................................

47

4.1.3.1 Pengambilan gambar dengan metode Depth Treshold..............................

49

4.1.3.2 Identifikasi data RGB................................................................................

50

4.1.3.3 Integrasi Data Depth .................................................................................

52

4.1.3.4 Import Core Serial dan Open Kinect ........................................................

53

4.1.3.5 Import Library SimpleOpenNI .................................................................

54

4.1.3.6 Hasil Pengujian Isyarat Tangan pada Sistem Kontrol TV ........................

57

xiii
BAB I
PENDAHULUAN

1.1. Latar Belakang
Sistem kontrol merupakan sebuah pengendali yang memudahkan pekerjaan
manusia. Alat yang digunakan sebagai sistem kontrol dikenal dengan nama remote
kontrol. Remote kontrol sangat banyak digunakan dalam kehidupan sehari-hari salah
satunya pada televisi. Dalam hal ini remote kontrol berfungsi sebagai kontroler yang
memudahkan manusia dalam melakukan pengaturan televisi.
Perkembangan teknologi yang semakin pesat memberikan sebuah innovasi
baru pada sistem kontrol. Dikenal sebuah istilah hand gesture recognition
(pengenalan pola isyarat tangan) dimana manusia dapat menggunakan isyarat tangan
sebagai kontroler. Pengenalan pola isyarat tangan merupakan salah satu teknik
penting dalam mengembangkan user-friendly interface untuk interaksi manusiakomputer. Melihat perbedaan kebutuhan dan kesibukan manusia, dibutuhkan sebuah
sistem pengenalan pola isyarat tangan yang real-time untuk memberikan kemudahan.
Pengenalan pola isyarat tangan membutuhkan sebuah lensa kamera yang
berkualitas tinggi dan sebuah perangkat komputer dengan algoritma vision untuk
mengenal isyarat tangan, sistem ini membutuhkan biaya yang mahal dan pengaturan
yang cukup luas.

[1]

Microsoft Kinect menyediakan sebuah sistem yang murah dan

mudah untuk komunikasi isyarat yang real-time. Kinect merupakan controller game
Microsoft Xbox platform yang menggunakan sensor warna dan sensor kedalaman
untuk menangkap warna gambar (RGB) dan kedalaman jarak data. Ini
memungkinkan perkembangan algoritma yang mengklasifikasikan dan melakukan
pengenalan dari data gambar. Perangkat lunak yang dirilis Microsoft dikenal dengan
nama Microsoft Kinect SDK dengan Application Programming Interface (API)
memberikan akses kepada aliran sensor data baku atau yang disebut dengan skeletal
tracking.
Dengan pengenalan pola isyarat tangan dapat dikembangkan sebuah sistem
kontrol TV dengan menggunakan Sensor Kinect dan Mikrokontroller Arduino.
1
Sistem kontrol TV yang dirancang dapat ditambahkan dengan pengenalan pola
isyarat tangan yang ditangkap oleh sensor Kinect. Pengenalan pola isyarat tangan ini
menggunakan metode depth threshold yang akan menggambarkan bagaimana
gerakan isyarat tangan dapat diterjemahkan oleh sensor Kinect sehingga dapat
berfungsi sebagai kontroller TV. Sistem ini diharapkan dapat memberikan
kemudahan dalam melakukan pengontrolan channel dan volume pada saat menonton
TV.
Oleh karena itu pada penyusunan tugas akhir ini, penulis membuat sebuah
Sistem Kontrol Televisi (TV) dengan Pengenalan Pola Isyarat Tangan
Menggunakan Sensor Kinect dan Arduino. Sistem ini menggunakan Sensor Kinect
dan Mikrokontroller Arduino dalam pengimplementasiannya.

1.2. Perumusan Masalah
Berikut adalah pemaparan rumusan masalah pada penyusunan tugas akhir ini :
1. Bagaimana analisa sistem pengenalan pola isyarat tangan dengan metode

depth threshold pada Sensor Kinect.
2. Bagaimana integrasi antara sistem pengenalan pola isyarat tangan dengan
Sensor Kinect dan Mikrokontroller Arduino
3. Bagaimana implementasi sistem kontrol TV dengan pengenalan pola isyarat
tangan menggunakan Sensor Kinect dan Arduino

1.3. Batasan Masalah
Adapun pembatasan masalah dalam penyusunan tugas akhir ini adalah :
1. Sistem yang dikontrol hanya pada penukaran channel dan volume TV.
2. Sistem pengenalan pola isyarat tangan hanya dapat membaca satu tangan atau
single user
3. Sistem terintegrasi dengan Sensor Kinect dan Mikrokontroller arduino
menggunakan kabel.

2
4. Sistem pengenalan pola isyarat tangan dengan menggunakan metode depth
threshold.

1.4. Tujuan
Tujuan dari penulisan Tugas Akhir ini adalah :
1. Eksplorasi dan Implementasi sistem kontrol TV dengan pengenalan pola
isyarat tangan dengan algoritma pengenalan pola isyarat tangan menggunakan
Sensor Kinect dan Mikrokontroller Arduino
2. Didapatkannya sebuah analisa dari sistem pengenalan pola isyarat tangan
dengan metode depth threshold.

1.5. Sistematika Penulisan
Secara garis besar, tugas akhir ini dibagi menjadi 5 (lima) bab. Adapun bab tersebut :
BAB I Pendahuluan
Bab ini berisi tentang latar belakang, perumusan masalah, tujuan, batasan
masalah, dan sistematika penulisan.
BAB II Landasan Teori
Bab ini menguraikan teori pendukung yaitu sensor Kinect, teori-teori
pengenalan pola isyarat tangan, dan mikrokontroller arduino.
BAB III Metode Penelitian
Bab ini berisi tentang metodologi penelitian yang digunakan pada proses
pembuatan Sistem Kontrol Televisi (TV) dengan menggunakan Sensor
Kinect dan Arduino.
BAB IV Hasil Dan Analisa
Bab ini berisi tentang pembahasan mengenai pengenalan pola isyarat tangan
dengan algoritma pengenalan pola isyarat tangan dan bagaimana
pengimplementasiannya pada Sensor Kinect dan Mikrokontroller Arduino.

3
BAB V Kesimpulan
Bab ini berisi mengenai hasil analisa tentang pengenalan pola isyarat tangan
dengan algoritma pengenalan pola isyarat tangan dan disertai dengan saran
yang diberikan oleh penulis.

4
BAB II
LANDASAN TEORI

Untuk merancang sistem ini dibutuhkan landasan teori seperti yang akan dibahas
berikut.
2.1 Sistem Kontrol
Sistem kontrol (control system) adalah suatu alat (kumpulan alat) untuk
mengendalikan, memerintah, dan mengatur keadaan dari suatu sistem. Sasaran
sistem kontrol adalah untuk mengatur keluaran (output) dalam suatu sikap
atau kondisi atau keadaan yang telah ditetapkan oleh masukan (input) melalui
elemen sistem kontrol. [2]
Gambar 2.1 memperlihatkan suatu diagram umum suatu sistem kontrol.
masukan

keluaran
Sistem Kontrol

Gambar 2.1 Diagram sistem kontrol [2]
Dengan adanya sasaran ini, maka kualitas keluaran yang dihasilkan tergantung
dari proses yang dilakukan dalam sistem kontrol ini. Pada konsep sistem kontrol
modern, peralatan pembantu manusia semakin dioptimalkan untuk melakukan
fungsi kontrol. Semakin modern dan canggih teknologi yang dikuasai, semakin
canggih pula peralatan pembantu yang berfungsi sebagai alat kontrol.
Dalam

era

modern

ini,

penggunaan

komputer

dan

mikroprosesor

(microcontroller) semakin mendominasi untuk menggantikan peran otak sebagai
kontroler. Dengan kelebihannya mampu mengoperasikan fungsi-fungsi logika dan
matematis serta kemampuannya menyimpan data dalam memorinya, membuat
komputer atau mikroprosesor mampu menjalankan fungsi otak secara sederhana.
Sistem Kontrol terbagi dua, yaitu sistem kontrol dengan Loop Terbuka dan
sistem kontrol Loop Tertutup. Pada pembuatan tugas akhir ini sistem kontrol yang
digunakan adalah sistem kontrol dengan Loop Tertutup.

5
2.1.1

Sistem Kontrol Loop Tertutup
Sistem kontrol loop tertutup adalah identik dengan sistem kontrol umpan
balik, dimana nilai dari keluaran akan ikut mempengaruhi pada aksi
kontrolnya. [3]
Istilah-istilah dalam sistem kontrol :
a. Sistem (system) adalah kombinasi dari komponen-komponen yang
bekerja bersama-sama membentuk suatu obyek tertentu.
b. Variabel terkontrol (controlled variable) adalah suatu besaran
(quantity) atau kondisi (condition) yang terukur dan terkontrol. Pada
keadaan normal, variabel terkontrol merupakan keluaran dari sistem.
c. Variabel termanipulasi (manipulated variable) adalah suatu besaran
atau kondisi yang divariasikan oleh kontroler sehingga mempengaruhi
nilai dari variabel terkontrol.
d. Kontrol (control) – mengatur, artinya mengukur nilai dari variabel
terkontrol dari sistem dan mengaplikasikan variabel termanipulasi
pada sistem untuk mengoreksi atau mengurangi deviasi yang terjadi
terhadap nilai keluaran yang dituju.
e. Plant (Plant) adalah sesuatu obyek fisik yang dikontrol.
f. Proses (process) adalah sesuatu operasi yang dikontrol. Contoh :
proses kimia, proses ekonomi, proses biologi, dan lain sebagainya.
g. Gangguan (disturbance) adalah sinyal yang mempengaruhi nilai
keluaran sistem.
h. Kontrol umpan balik (feedback control) adalah operasi untuk
mengurangi perbedaan antara keluaran sistem dengan referensi
masukan.
i.

Kontroler (controller) adalah suatu alat atau cara untuk memodifikasi
sistem sehingga karakteristik sistem dinamik (dynamic system) yang
dihasilkan sesuai dengan yang dikehendaki.

j.

Sensor adalah peralatan yang digunakan untuk mengukur keluaran
sistem dan menyetarakannya dengan sinyal masukan sehingga bisa
dilakukan suatu operasi hitung antara keluaran dan masukan.

6
k. Aksi kontrol (control action) adalah besaran atau nilai yang dihasilkan
oleh perhitungan kontroler untuk diberikan pada plant (pada kondisi
normal merupakan variabel termanipulasi).
Aktuator (actuator), adalah suatu peralatan atau kumpulan komponen yang
menggerakkan plant.

Secara umum, sistem kontrol loop tertutup diberikan oleh Gambar 2.1.1
masukan

keluaran
kontroler

plant

+
-

sensor

Gambar 2.1.1 Sistem Kontrol Loop Tertutup [3]

Gambar diatas menunjukkan hubungan masukan dan keluaran dari sistem
kontrol loop tertutup. Jika dalam hal ini manusia bekerja sebagai operator,
maka manusia ini akan menjaga sistem agar tetap pada keadaan yang
diinginkan. Ketika terjadi perubahan pada sistem maka manusia akan
melakukan langkah–langkah awal pengaturan sehingga sistem kembali
bekerja pada keadaan yang diinginkan.
Jika kontroler otomatik digunakan untuk menggantikan operator
manusia, maka sistem kontrol tersebut menjadi otomatik. Keadaan ini
biasa disebut sistem kontrol otomatik berumpan balik atau sistem kontrol
loop tertutup, sebagai contoh adalah pengaturan temperatur.
Sistem kontrol manual berumpan-balik dalam hal ini manusia
bekerja dengan cara yang sama dengan sistem kontrol otomatik. Mata
operator adalah analog dengan alat ukur kesalahan, otak analog dengan
kontroler otomatik dan otot–ototnya analog dengan akuator. Hal inilah
yang membedakan dengan sistem kontrol loop terbuka yang keluarannya

7
tidak berpengaruh pada aksi pengontrolan, dimana keluaran tidak diukur
atau diumpan–balikkan untuk dibandingkan dengan masukan.

2.1.2

Remote Kontrol
Pada remote kontrol terdapat dua bagian yang utama yaitu: bagian
transmitter (pemancar) dan bagian receiver (penerima). Bagian transmitter
dalam hal ini menggunakan remote yang sudah jadi, yaitu remote untuk
TV, sedangkan bagian receiver dibangun dari dioda infra merah, filter, dan
penguat sinyal/amplifier. [4]
Rangkaian remote kontrol
Komponen utama dari alat ini adalah IC NE555 sebagai transmitter
dan IC LM567 sebagai receiver. Frekuensi antara transmitter dan
receiver harus sama, karena alat ini bekerja berdasarkan pembacaaan
frekuensi yang dikirimkan transmitter berupa frekuensi dari sinyal
LED infra merah.
Rangkaian transmitter seperti diperlihatkan pada Gambar 2.1.2.1,
sedangkan rangkaian receiver seperti pada Gambar 2.1.2.2.

Gambar 2.1.2.1 Transmitter remote kontrol [4]

8
Gambar 2.1.2.2 Receiver Remote Kontrol [4]
Metode pengiriman data pada remote kontrol
Remote kontrol inframerah menggunakan cahaya inframerah sebagai
media dalam mengirimkan data ke penerima. Data yang dikirimkan
berupa pulsa-pulsa cahaya dengan modulasi frekuensi 40kHz. Sinyal
yang dikirimkan merupakan data-data biner. Untuk membentuk datadata biner tersebut, ada tiga metode yang digunakan yaitu pengubahan
lebar pulsa, lebar jeda (space), dan gabungan keduanya.

 Pulse - Coded Signals
Dalam mengirimkan kode, lebar jeda tetap yaitu t sedangkan lebar
pulsa adalah 2t. Jika lebar pulsa dan lebar jeda adalah sama yaitu t,
berarti yang dikirim adalah bit 0, jika lebar pulsa adalah 2t dan lebar
jeda adalah t, berarti yang dikirim adalah 1.
Pulse

0

0

1

1
Space

Gambar 2.1.2.3 Pengiriman Kode dengan Tipe Pulse-Coded Signal [4]
9
 Space - Coded Signal
Dalam mengirimkan kode remote kontrol dilakukan dengan cara
mengubah lebar jeda, sedangkan lebar pulsa tetap. Jika lebar jeda dan
lebar pulsa adalah sama yaitu t, berarti yang dikirim adalah 0 . Jika
lebar jeda adalah 3t, berarti data yang dikirim adalah 1 .
Pulse

0

1

1

Space

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

 Shift - Coded Signal
Tipe ini merupakan gabungan dari tipe pulse dan space, yaitu dalam
mengirimkan kode remote kontrol, dengan cara mengubah lebar pulsa
dan lebar jeda. Jika lebar jeda adalah t dan lebar pulsa adalah 2t, maka
ini diartikan sebagai data 1. Jika lebar jeda adalah 2t dan lebar pulsa
adalah t, maka ini diartikan sebagai data 0 (low).
Space

Pulse

0

1

0

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

10
Sebelum kode dikirim, terlebih dahulu kirimkan sinyal awal yang
disebut sebagai header. Header adalah sinyal yang dikirimkan
sebelum kode sebenarnya, dan juga merupakan sinyal untuk
mengaktifkan penerima. Header selalu dikirimkan dengan lebar pulsa
yang jauh lebih panjang daripada kode. Setelah header dikirimkan,
baru kemudian kode remote kontrol. Kode remote kontrol dibagi
menjadi dua fungsi, yaitu fungsi pertama digunakan sebagai penunjuk
alamat peralatan yang akan diaktifkan, fungsi kedua adalah sebagai
command atau perintah untuk melaksanakan instruksi dari remote
kontrol.

Header

Code

Gambar 2.1.2.6 Sinyal Header dan Kode remote kontrol
2.2 Computer Vision (Komputer Visi)
Computer Vision adalah salah satu cabang ilmu pengetahuan yang
mempelajari bagaimana komputer dapat mengenali objek/gambar yang
diamati. Gambar yang diperoleh dapat diperoleh dari beberapa sumber seperti
video, scanner, atau digital image. [5]
Computer vision merupakan kombinasi dari:


Pengolahan Citra (Image Processing)
Bidang ini berhubungan dengan proses transformasi citra / gambar.
Proses ini bertujuan untuk mendapatkan kualitas citra yang lebih baik.



Pengenalan Pola (Pattern Recognition)
Bidang ini berhubungan dengan proses identifikasi objek pada citra
atau interpretasi citra. Proses ini bertujuan untuk mengekstrak
informasi/pesan yang disampaikan oleh gambar/citra.

11

[4]
Tujuan dari sistem computer vision adalah membuat model dunia nyata
dari sebuah gambar. Sebuah sistem computer vision memperbaiki informasi
yang berguna mengenai scene dari proyeksi dua-dimensi. Gambar proyeksi
dua-dimensi berasal dari dunia tiga-dimesi, maka informasi yang didapat
tidak langsung tersedia dan harus diperbaiki. Perbaikan ini memerlukan
inversi yang banyak dari satu pemetaan. Pengetahuan mengenai objek-objek
pada scene dan proyeksi geometri sangat diperlukan dalam memperbaiki
informasi tersebut.
Proses-proses dalam computer vision dapat dibagi menjadi 3 aktivitas :
1. Memperoleh atau mengakuisisi citra digital
2. Melakukan teknik komputasi untuk memproses atau memodifikasi data
citra (operasi-operasi pengolahan citra)
3. Menganalisis dan menginterpretasi citra dan menggunakan hasil
pemrosesan untuk tujuan tertentu, misalnya mengontrol peralatan,
memantau proses manufaktur, dan memandu robot.

Sistem computer vision dapat dilihat pada Gambar 2.2
Basis
Pengetahuan

Input

Perolehan
Citra

Preprocessing

Pengekstrasian
fitur

Output
Pengenalan

Penyimpanan
Asosiatif

Gambar 2.2 Sistem Computer Vision [5]

Sistem ini terdiri dari enam tahap: perolehan citra, preprocessing,
pengekstrasian fitur, penyimpanan asosiatif, basis pengetahuan, dan
pengenalan.


Perolehan citra, yaitu langkah untuk memperoleh sebuah citra digital.
Citra yang dimaksud adalah sebuah fungsi intensitas cahaya dua
dimensi f(x,y), dimana x dan y adalah koordinat spasial dan nilai f pada

12
titik (x,y) sebanding dengan tingkat keterangan atau keabuan citra pada
titik tersebut. Tahap perolehan citra adalah mengenai pengambilan
citra oleh suatu sensor. Sensor yang dimaksud dapat berupa sebuah
kamera atau sebuah scanner.


Preprocessing merupakan pengolahan visi awal atau pengolahan
tingkat rendah. Terdapat beberapa teknik preprocessing, di antaranya
adalah manipulasi skala keabuan, penapisan noise, isolasi daerah,
perbaikan geometris, restorasi, rekonstruksi, dan segmentasi. Tahap
preprocessing pada suatu sistem pengenalan mesin mungkin berkaitan
dengan persepsi keterangan seperti permasalahan restorasi dan
rekonstruksi citra. Sistem perolehan citra pada prakteknya tidaklah
sempurna.



Pengekstraksian fitur yang terdiri dari pemetaan sebuah vektor
observasi ke dalam bidang fitur. Tujuan utama dari pengekstraksian
fitur adalah untuk mengurangi data dengan mengukur fitur-fitur
tertentu yang membedakan pola masukan. Untuk mengekstraksi fitur,
dapat dilakukan dengan memilih sebuah subset dari vektor masukan
yang diamati, atau dapat dilakukan dengan mentransformasikan vektor
observasi masukan menjadi sebuah vektor fitur menggunakan
beberapa fungsi dasar ortogonal.



Basis pengetahuan dan pengenalan termasuk ke dalam pengolahan
tingkat tinggi. Ingatan manusia seringkali dapat mengingat informasi
lengkap dari informasi parsial atau petunjuk-petunjuk yang halus.
Penyimpanan asosiatif adalah suatu penyimpanan di mana alamat
setiap data didasarkan pada isi data tersebut (content-addressable).
Kemampuan untuk mendapatkan suatu representasi internal atau untuk
menyimpulkan sebuah representasi yang kompleks dari suatu bagian
membentuk dasar penyimpanan asosiatif. Fungsi dasar penyimpanan
asosiatif adalah untuk menyimpan pasangan pola asosiatif melalui
sebuah proses pengorganisasian sendiri (self-organizing) dan untuk
memproduksi sebuah pola tanggapan yang sesuai pada presentasi pola
stimulus yang sama.

13
2.2.1

Image Processing (Pengolahan Citra)
Citra adalah suatu representasi (gambaran),

kemiripan, atau

imitasi dari suatu objek. Pengolahan citra merupakan proses pengolahan
dan analisis citra yang banyak melibatkan persepsi visual. Proses ini
mempunyai ciri data masukan dan informasi keluaran yang berbentuk
citra. Istilah pengolahan citra digital secara umum didefinisikan sebagai
pemrosesan citra dua dimensi dengan komputer. Dalam definisi yang lebih
luas, pengolahan citra digital juga mencakup semua data dua dimensi.
Citra digital adalah barisan bilangan nyata maupun kompleks yang
diwakili oleh bit-bit tertentu. [5]
Umumnya citra digital berbentuk persegi panjang atau bujur
sangkar (pada beberapa sistem pencitraan ada pula yang berbentuk
segienam) yang memiliki lebar dan tinggi tertentu. Ukuran ini biasanya
dinyatakan dalam banyaknya titik atau piksel sehingga ukuran citra selalu
bernilai bulat. Setiap titik memiliki koordinat sesuai posisinya dalam citra.
Koordinat ini biasanya dinyatakan dalam bilangan bulat positif, yang dapat
dimulai dari 0 atau 1 tergantung pada sistem yang digunakan. Setiap titik
juga memiliki nilai berupa angka digital yang merepresentasikan informasi
yang diwakili oleh titik tersebut.
Format data citra digital berhubungan erat dengan warna. Pada
kebanyakan kasus, terutama untuk keperluan penampilan secara visual,
nilai data digital merepresentasikan warna dari citra yang diolah. Format
citra digital yang banyak dipakai adalah Citra Biner (monokrom), Citra
Skala Keabuan (gray scale), Citra Warna (true color), dan Citra Warna
Berindeks.
Tujuan pengolahan citra :
1. Proses memperbaiki kualitas citra agar mudah diinterpretasi oleh
manusia atau komputer
2. Teknik pengolahan citra dengan mentrasformasikan citra menjadi citra
lain, contoh : pemampatan citra (image compression)
3. Pengolahan citra merupakan proses awal (preprocessing) dari
computer vision.

14
Elemen sistem pemrosesan citra digital
Media Penyimpanan

Citra

Digitizer

Komputer Digital

Piranti Tampilan

Gambar 2.2.1 Elemen sistem pemrosesan digital [5]

Keterangan gambar :


Digitizer (Digital Acqusition System) : sistem penangkap citra digital yang
melakukan penjelajahan citra dan mengkonversinya ke

representasi

numerik sebagai masukan bagi komputer digital. Hasil dari
adalah matriks yang elemen-elemennya menyatakan nilai

digitizer
intensitas

cahaya pada suatu titik. Digitizer terdiri dari 3 komponen dasar :
- Sensor citra yang bekerja sebagai pengukur intensitas cahaya
- Perangkat penjelajah yang berfungsi merekam hasil pengukuran
intensitas pada seluruh bagian citra
- Pengubah analog ke digital yang berfungsi melakukan sampling
(proses untuk menentukan warna pada piksel tertentu pada citra dari
sebuah gambar yang kontinu) dan kuantisasi (proses mengasosiasikan
warna rata-rata dengan tingkatan warna tertentu).


Komputer digital, digunakan pada sistem pemroses citra, mampu
melakukan berbagai fungsi pada citra digital resolusi tinggi.



Piranti tampilan, peraga berfungsi mengkonversi matriks intensitas tinggi
merepresentasikan citra ke tampilan yang dapat diinterpretasi oleh
manusia.



Media penyimpanan, piranti yang mempunyai kapasitas memori besar
sehingga gambar dapat disimpan secara permanen agar dapat diproses lagi
pada waktu yang lain.

15
2.2.2

Hand Gesture Recognition (Pengenalan Pola Isyarat Tangan)
Pengenalan pola isyarat tangan adalah pengenalan pola tangan
sebagai isyarat yang ditangkap oleh sebuah sensor yang terhubung ke
komputer

sehingga

dapat

menghasilkan

pola-pola

yang

dapat

diterjemahkan.
Pengenalan pola isyarat tangan terdiri dari tiga tahapan, yaitu
deteksi, pelacakan dan pengenalan. Tahap deteksi bertanggung jawab
untuk mendefinisikan dan mengekstrak fitur visual yang dapat dikaitkan
dengan pendeteksian tangan pada kamera. Lapisan pelacakan bertanggung
jawab untuk melakukan pengumpulan data sementara dari frame gambar
yang terdeteksi pada setiap saat dalam waktu tertentu, sehingga dapat
dilacak gambar apa dan dimana. Selain itu, dalam metode berbasis model
pelacakan juga disediakan cara untuk mempertahankan perkiraan model
parameter, variabel dan fitur yang tidak langsung tampak pada setiap saat
dalam waktu tertentu. Terakhir, lapisan pengenalan bertanggung jawab
untuk mengelompokkan data ekstensi spasial dan durasi temporal yang
diambil dalam lapisan sebelumnya dan menetapkan kelompok yang
dihasilkan dari label terkait dengan kelas-kelas tertentu dari gerakan.
Pengenalan pola isyarat tangan pada sistem kontrol televisi ini ditangkap
oleh sensor Kinect. [6]
Secara sederhana, metode pengenalan isyarat mengidentifikasi
serangkaian gerakan. Contohnya, sebuah tangan yang terbuka diikuti
dengan

tangan

yang

tertutup

dapat

ditandai

sebagai

gerakan

‘meraup’/’merenggut’, sementara tangan tertutup diikuti dengan tangan
terbuka dapat ditandai dengan gerakan ‘menjatuhkan’.
Kelihatannya cukup sederhana, namun dapat dilakukan lebih baik
dengan memanfaatkan dependesi sementara antara gerakan. Contohnya,
pada waktu t tangan berada dalam keadaan terbuka, pada waktu t+1
tangan akan memiliki peluang yang lebih besar untuk berada dalam
keadaan tebuka daripada dalam transisi ke keadaan tertutup. Misalkan Et
sebagai estimasi pose pada waktu t, dan misalkan St merupakan pose

16
sebenarnya (atau keadaan) pada waktu t. kemudian, menggunakan rekursi
maju pada model Hidden Markov sederhana kita dapat menghitung:
( |

(

( |
∑ ( |

)

|

)

∑ ( |

) ( | )
) ( | )
) (

| )

Dimana Et = {E1, E2, …, Et}. kita memiliki p(Et|St) dari peluang keluaran
SVM (dihitung dengan mencocokkan nilai tetapan untuk kurva sigmoid).
Kita perkirakan p(St+1|St) dan p(S0) secara manual, dan gunakan p(St|Et)
sebagai perkiraan akhir dari pose (keadaan tangan ) pada waktu t. [7]
Untuk memperagakannya, digunakan contoh gerakan ‘merenggut’
dan ‘menjatuhkan’ seperti yang digambarkan sebelumnya. Ada dua
keadaan yaitu, ‘tebuka’ dan ‘tertutup’ yang mana masing-masing ditandai
dengan ‘1’ dan ‘0’ berurutan. Ditetapkan bahwa p(S0 = 1) = p(S0 = 0) =
0.5 dan peluang transisi p(St+1 ≠ St) = 0.1.
Karena diasumsikan peluang transisi yang rendah, maka rekursi maju
mengelola transisi kasar yang diamati pada perkiraan frame-per-frame
awal.

Gambar 2.2.2 Perkiraan pada potongan runtunan gambar (30fps) dari
gerakan ‘renggut’ dan ‘jatuhkan’ [7]

17
Pengenalan pola isyarat tangan pada Sensor Kinect mempunyai tahapan
sebagai berikut :


Identifikasi Berdasarkan Data RGB
Data RGB adalah data yang diambil dengan kombinasi warna Red, Green,
dan Blue. Pada pengambilan data ini akan digunakan detektor kulit (skin
detector) untuk estimasi awal lokasi piksel tangan. Pada satu set ditandai
piksel 18.696 foto (2 juta piksel) sebagai kulit atau non-kulit. Kemudian
piksel tersebut dicocokkan pada model Mixture of Gaussians untuk data
empiris, menghasilkan sebuah pendekatan untuk nilai p(RGB|S = 1) dan
p(RGB|S = 0); RGB mengindikasikan set nilai RGB tertentu, dan S adalah
variabel biner acak yang mengindikasikan apakah piksel tersebut
merupakan kulit atau tidak.
Dengan melihat berbagai sampel potongan gambar daerah estimasi tangan,
dan menandai piksel pada gambar sebagai kulit atau bukan, dapat
diperkirakan P(S). dengam menggunakan peluang berikut dapat dihitung :
( |



(

)

∑

| ) ( )
| ) ( )

(

Mengintegrasikan Data Depth
Data Depth adalah data yang diambil dengan menggunakan kamera depth
pada sensor Kinect dimana data ini berupa gambar hitam putih. Sensor
Kinect mendukung data depth yang sangat bagus sehingga lebih
menyempurnakan perkiraan piksel tangan. Secara khusus, jika dilakukan
penandaan secara kasar pada piksel tangan, untuk berbagai contoh gambar,
dapat diperkirakan p(D|H) dimana D merepresentasikan nilai depth piksel,
dan H merupakan variabel biner acak mengindikasikan apakah piksel
tersebut termasuk kepada bagian kulit. Dapat dihitung persamaan berikut,
dengan mengasumsikan (RGB,S || D)|H:
(

)
( |

∑ ( ) (
)

(
∑

| ) ( | )
)

(

)

18
Untuk lebih sederhananya, asumsikan p(S = H) = 1, maka p(H) = p(S). hal
ini masuk akal karena kebanyak piksel tangan akan menjadi piksel kulit
dan begitu sebaliknya.
Karena sangat membosankan untuk menandai piksel tangan secara
manual, perkiraan terhadap p(H) dan p(D|H) datang dari pelabelan yang
dimiliki oleh p(H|RGB, D); dan ini dihitung dari p(H) dan p(D|H).

2.3 Sensor Kinect
Sensor Kinect adalah produk dari Microsoft yang awalnya dibuat khusus untuk
perangkat game Xbox 360, dimana memperkenalkan teknologi motion gaming
sebagai fitur utamanya. Motion gaming maksudnya adalah membuat pemain dapat
berinteraksi ketika bermain game tanpa menggunakan game controller. Sehingga
melalui Kinect, pemain dapat bermain game cukup hanya dengan menggunakan
gerakan tangan atau gerakan tubuh lainnya. [8]
Fitur-fitur yang ada pada teknologi sensor Kinect meliputi kamera RGB, depth
sensor, motorized tilt, dan multi-array microphone. Dari keempat fitur yang
dimiliki sensor Kinect, depth sensor lah yang berperan penting dalam sistem
motion gaming tersebut. Depth sensor bertujuan untuk mendapatkan data video
dalam kondisi tiga dimensi didalam kondisi ambient light (menyesuaikan sumber
cahaya yang ada dilingkungan tersebut). Pada Gambar 2.3.1 dapat dilihat bentuk
dari perangkat keras Kinect.

Gambar 2.3.1 Perangkat Keras Kinect [8]

Depth sensor terdiri atas kombinasi dari infrared laser projector dan monochrome
CMOS sensor. Infrared laser projector berfungsi untuk mentransmisikan cahaya
19
invisible near-infrared ke seluruh bagian ruangan yang terjangkau oleh sensor
Kinect seperti pada Gambar 2.3.2

Gambar 2.3.2 Cara kerja depth sensor pada pekerangkat sensor Kinect [8]

Cahaya near - infrared tidak dapat dilihat secara kasat mata yang hanya dapat
dilihat dengan menggunakan kamera night vision seperti gambar 2.3.3

Gambar 2.3.3 Hasil proyeksi dari infrared laser projector [8]

Fungsi dari monochrome CMOS sensor adalah mengukur waktu penyeberangan
cahaya setelah terpantul oleh objek di depannya. Sistem ini bekerja layaknya
sebuah sonar, bila diketahui berapa lama waktu yang dibutuhkan untuk cahaya
tersebut kembali, maka dapat diketahui jarak suatu objek dari sensor. Hal ini dapat
dilihat seperti Gambar 2.3.4

20
Gambar 2.3.4 Cara kerja sensor Kinect [9]

2.3.1

Structured-Light 3D Scanning
Kebanyakan pemindaian struktur cahaya (Structured-Light Scanning)
berdasarkan proyeksi garis sempit cahaya ke sebuah objek 3D,
menggunakan deformasi garis ketika dilihat dari sudut pandang yang
berbeda dari sumber untuk mengukur jarak dari setiap titik ke kamera.
Metode ini dapat diperpanjang untuk proyeksi banyak garis-garis terang
pada saat yang sama, yang menyediakan sejumlah besar sampel secara
bersamaan (Gambar 2.3.1.1).

Gambar 2.3.1.1 Prinsip-prinsip triangulasi untuk Structured-Light 3D
[9]

21
Untuk pemindaian cahaya sensor Kinect memiliki sistem yang berbeda. Bukan
memproyeksikan garis-garis dari cahaya tampak, tetapi sensor Kinect IR
proyektor mengirimkan pola cahaya inframerah balok (yang disebut suatu IR
pembuat gambar), yang memantul pada objek dan ditangkap oleh standar sensor
cmos gambar (Gambar 2.3.1.2). Gambar ini diambil dan diteruskan ke chip
primesense onboard yang harus diterjemahkan ke kedalaman gambar (Gambar
2.3.1.3).

Gambar 2.3.1.2 Kinect IR pembuat gambar [9]

Gambar 2.3.1.3 Peta Kedalaman (Kiri) Pengkodean cahaya dengan
Inframerah (kanan) [9]
2.3.2

Kinect Software Development Kit (SDK)
Kinect untuk Windows Software Development Kit (SDK) dari
Microsoft Research adalah starter kit untuk pengembang aplikasi dengan

22
mengunakan sensor Kinect. Diharapkan dengan SDK ini, Kinect dapat
digunakan pada bidang pendidikan, robotika, atau hal lainnya di luar
XBox. Dalam perancangan program juga dibutuhkan toolkit tambahan
untuk membangun visualisasi kerangka digital. [9]
Kinect untuk Windows SDK dilengkapi driver untuk aliran sensor
dan pelacakan gerak manusia. Kinect SDK ini, di rilis oleh Microsoft
untuk pengembangan teknologi dengan aplikasi C + +, C #, atau Visual
Basic dengan menggunakan Microsoft Visual Studio 2010.
Fitur-fitur Kinect SDK yang digunakan pada penulisan ini adalah:
1. Raw Sensor Streams
Akses ke stream data mentah dari sensor kedalaman (depth sensor),
sensor kamera, dan empat-elemen array mikrofon.
2. Skeletal Tracking
Kemampuan untuk melacak gambar tangan manusia dalam bidang
pandang sensor Kinect, Sehingga mempermudah dalam membuat
program berbasis gerakan.
Driver-driver yang digunakan pada perancangan sistem kontrol ini adalah :
1. Processing IDE
Processing adalah bahasa pemrograman dan lingkungan pemrograman
(development environment) open source untuk memprogram gambar,
animasi dan interaksi. Processing mengaitkan konsep software pada
prinsip-prinsip bentuk rupa, gerak, dan interaksi. Processing
mengintegrasikan

suatu

bahasa

pemrograman,

lingkungan

pemrograman, dan metodologi pengajaran ke dalam sistem terpadu.
Dalam Processing struktur program dapat dibuat dalam tiga tingkat
kompleksitas yaitu Mode Statik, Mode Aktif, dan Mode Java. Mode
Statik digunakan untuk membuat gambar statik. Mode Aktif
menyediakan bagian setup() opsional yang akan berjalan ketika
program mulai berjalan. Bagian draw() akan berjalan selamanya
sampai progam dihentikan. Mode Java adalah yang paling fleksibel,
namun tidak tersedia sampai dengan rilis Processing 1.0 Beta. Mode

23
ini memungkinkan menulis program Java secara lengkap di dalam
Lingkungan Processing.
2. OpenNI
OpenNI merupakan singkatan dari Open Natural Interaction, yaitu
sebuah organisasi non-profit yang bertujuan meningkatkan kegunaan
dari perangkat natural user interface (NUI). NUI adalah sebuah
perangkat yang berinteraksi dengan panca indra pendengaran dan
penglihatan manusia.
Kerangka kerja OpenNI memungkinkan terbentuknya komunikasi
dengan perangkat visi dan sensor audio. Hasil komunikasi ini berupa
data representasi tubuh user, representasi lokasi tangan, hingga data
depth map. Secara garis besar, struktur kerangka kerja OpenNI terbagi
menjadi 3 lapisan sebagai berikut:
- Perangkat Keras
Merupakan lapisan terbawah yang berisi perangkat keras yang
digunakan seperti mic, kamera, serta kamera sensor 3D (Microsoft
Kinect).
- Antarmuka OpenNI
Lapisan tengah ini berisi sekumpulan fungsi yang dijalankan untuk
menerima masukan dari perangkat keras untuk kemudian diolah.
Pada tugas akhir ini digunakan middleware PrimeSense NITE.
- Lapisan Perangkat Lunak
Merepresentasikan perangkat lunak yang mengimplementasikan
interaksi natural. Perangkat lunak meliputi permainan, aplikasi
televisi, aplikasi peramban, dan lain sebagainya.
3. PrimeSense NITE
PrimeSense merupakan perusahaan dibalik teknologi yang dimiliki
oleh Microsoft Kinect, yang sebelumnya dikenal dengan Project Natal.
PrimeSense menyediakan implementasi perangkat lunak untuk semua
modul OpenNI. Implementasi tersebut disebut sebagai algoritma
NITE. Algoritma yang digunakan oleh NITE adalah segmentasi
pengguna (user segmentation). Tujuan dari segmentasi pengguna

24
adalah untuk mengidentifikasi dan melacak pengguna di tempat
kejadian. Setiap pengguna dalam adegan diberikan ID yang unik dan
tetap. Keluaran utama dari proses segmentasi pengguna adalah peta
label yang memberikan user ID untuk setiap piksel. Pada PrimeSense
NITE ini kita menggunakan library XnV untuk pengontrolan televisi.
Library tersebut adalah :
-

XnVSessionManager
Library ini berfungsi untuk memperkenalkan objek dengan NITE
pengenalan isyarat.

-

XnVPointControl
Library ini berfungsi untuk menjaga pelacakan dari objek titik
tangan.

-

XnVCircleDetector
Library ini berfungsi untuk menggambarkan lingkaran dari
pengenalan isyarat tangan.

2.3.3

Skeletal Tracking
Skeletal tracking merupakan fitur yang diberikan oleh Kinect SDK,
dimana dengan fitur ini memungkinkan sensor Kinect dapat melacak titik
sendi manusia. Teknologi dibalik skeletal tracking ini sendiri adalah
penggunaan depth sensor. Depth sensor awalnya akan memetakan objek
yang ditangkapnya berdasarkan jarak seperti Gambar 2.3.3.1. Gambar
tersebut akan dibandingkan dengan data hasil training sebelumnya. Data
training tersebut dibuat oleh para peneliti dengan mengunakan 100.000
frame gambar objek manusia yang diambil dengan posisi yang berbeda –
beda. [10]
Pada fitur skeletal tracking ini nantinya kita akan mendapatkan hand
tracking dimana hanya titik sendi pada bagian tangan yang ditangkap oleh
sensor Kinect. Hand Tracking ini dapat diakses melalui library yang
disediakan oleh OpenNI dan NITE.

25
Gambar 2.3.3.1 Pemetaan objek dengan depth sensor [10]
Teknik hand tracking ini memfokuskan kepada pengambilan bagian
tangan dari semua tubuh manusia yang tertangkap oleh sensor Kinect.

Gambar 2.3.3.2 Pengambilan Hand Tracking dengan XnVPointControl [9]

2.4 Mikrokontroler ATMega328
Mikrokontroler merupakan sebuah prosesor yang digunakan untuk
kepentingan kontrol. Meskipun mempunyai bentuk yang jauh lebih kecil
dari suatu komputer pribadi dan computer mainframe, mikrokontroler
dibangun dari elemen–elemen dasar yang sama. Seperti umumnya
komputer, mikrokontroler adalah alat yang mengerjakan instruksi–
instruksi yang diberikan kepadanya. Artinya, bagian terpenting dan utama
dari suatu sistem terkomputerisasi adalah program itu sendiri yang dibuat
oleh seorang programer. Program ini menginstruksikan komputer untuk
melakukan tugas yang lebih kompleks yang diinginkan oleh programer. [11]

26
2.4.1

Arsitektur Mikrokontroler ATmega328
ATMega328 adalah mikrokontroler keluaran dari Atmel yang mempunyai
arsitektur RISC (Reduce Instruction Set Computer). Setiap proses eksekusi
datanya lebih cepat dari pada arsitektur CISC (Completed Instruction Set
Computer).
Mikrokontroler ini memiliki beberapa fitur antara lain :


130 macam instruksi yang hampir semuanya dieksekusi dalam satu
siklus clock.



32 x 8-bit register serba guna.



Kecepatan mencapai 16 MIPS dengan clock 16 MHz.



32 KB Flash memory dan pada arduino memiliki bootloader yang
menggunakan 2 KB dari flash memori sebagai bootloader.



Memiliki EEPROM (Electrically Erasable Programmable Read
Only Memory) sebesar 1KB sebagai tempat penyimpanan data
semi permanent karena EEPROM tetap dapat menyimpan data
meskipun catu daya dimatikan.



Memiliki pin I/O digital sebanyak 14 pin, 6 diantaranya PWM
(Pulse Width Modulation) output.

Mikrokontroler ATmega 328 memiliki arsitektur hardware yang
memisahkan memori untuk kode program dan memori untuk data
sehingga dapat memaksimalkan kerja dan parallelism. Instruksi–
instruksi dalam memori program dieksekusi dalam satu alur tunggal,
dimana pada saat satu instruksi dikerjakan instruksi berikutnya sudah
diambil dari memori program. Konsep inilah yang memungkinkan
instruksi–instruksi dapat dieksekusi dalam setiap satu siklus clock.
Ketiga register pointer 16-bit ini disebut dengan register X (gabungan
R26 dan R27), register Y (gabungan R28 dan R29), dan register Z
(gabungan R30 dan R31).

27
2.4.2

Konfigurasi PIN ATMega328
Berikut gambar 2.4.2.1 adalah konfigurasi pin ATMega328 yang
digunakan pada rancangan alat ini:

Gambar 2.4.2.1 Konfigurasi PIN ATMega328 [11]

Tabel 2.4.2.1 Konfigurasi Port B [11]

28
Tabel 2.4.2.2 Konfigurasi Port C [11]

Tabel 2.4.2.3 Konfigurasi Port D [11]

29
Diagram Blok Mikrokontroler ATmega328

Gambar 2.4.3 Diagram Blok Arduino Uno [12]
2.5 Mikrokontroler Arduino Uno
Arduino merupakan sebuah platform dari physical computing yang
bersifat opensource. Arduino adalah kombinasi dari hardware, bahasa
pemograman, dan Integrated Development Environment (IDE) yang
canggih. IDE adalah sebuah software yang sangat berperan untuk menulis
program, meng-compile menjadi kode biner dan meng-upload ke dalam
memori mikrokontroler. [11]
Arduino Uno adalah board berbasis mikrokontroler pada
ATmega328. Board ini memiliki 14 digital input/output pin (dimana 6 pin
dapat digunakan sebagai output PWM), 6 input analog, 16 MHz osilator
kristal, koneksi USB, jack listrik tombol reset. Pin-pin ini berisi semua
yang diperlukan untuk mendukung mikrokontroler, hanya terhubung ke
komputer dengan kabel USB atau sumber tegangan bisa didapat dari
adaptor AC-DC atau baterai untuk menggunakannya.

30
Board Arduino Uno memiliki fitur-fitur baru sebagai berikut :


1,0 pin out: tambah SDA dan SCL pin yang dekat ke pin aref dan
dua pin baru lainnya ditempatkan dekat ke pin RESET, dengan IO
REF yang memungkinkan sebagai buffer untuk beradaptasi dengan
tegangan yang disediakan dari board system. Pengembangannya,
sistem akan lebih kompatibel dengan prosesor yang menggunakan
AVR, yang beroperasi dengan 5V dan dengan Arduino Karena
yang beroperasi dengan 3.3V.



Circuit Reset

Gambar 2.5 Board Arduino Uno [12]
Pada gambar diatas terdapat 14 pin output/input yang mana 6 pin
dapat digunakan sebagai output PWM, 6 analog input, 1 kristal
osilator 16 MHZ dan 1 tombol reset.

Deskripsi Arduio UNO:
Tabel 2.5 Deskripsi Arduino Uno
Mikrokontroler

Atmega328

Operasi

Voltage 5V

Input

Voltage 7-12 V (Rekomendasi)

Input

Voltage 6-20 V (limits)

I/O

14 pin (6 pin untuk PWM)

Arus

50 mA

Flash

Memory 32KB

Bootloader

SRAM 2 KB

31
EEPROM
Kecepatan

2.5.1

1 KB
17 hz

Perangkat Lunak (Arduino IDE)
Arduino Uno dapat diprogram dengan perangkat lunak Arduino. Tahapan
untuk memprogram Arduino adalah dengan memilih Arduino Uno dari
Tool perangkat lunak Arduino lalu sesuaikan dengan mikrokontroler yang
digunakan. Para ATmega328 pada Arduino Uno memiliki bootloader yang
memungkinkan untuk meng-upload program baru untuk itu tanpa
menggunakan programmer hardware eksternal. Perangkat lunak ini
berkomunikasi menggunakan protokol dari bahasa C.
Lingkungan open-source Arduino memudahkan untuk menulis kode dan
meng-upload ke board Arduino. Perangkat lunak ini dapat berjalan pada
Windows, Mac OS X, dan Linux. Berdasarkan Pengolahan, avr-gcc, dan
perangkat lunak sumber terbuka lainnya.

Gambar 2.5.2 Tampilan Framework Arduino UNO [12]

32
BAB III
METODOLOGI PENELITIAN

3.1 Desain Penelitian
Desain penelitian menggunakan sequential mode yaitu model penelitian
berurutan, dimana tahapan-tahapan penelitian harus diselesaikan sesuai
urutan. Model tersebut dapat dilihat seperti Gambar 3.1.1
Studi Literatur

Desain Sistem

Perancangan Hardware

Perancangan Software

Implementasi

Pengenalan Pola Isyarat
Tangan

Sistem Kontrol Remote
dan Arduino

Pengujian dan Evaluasi

Pengujian Sistem

Evaluasi Sistem

Dokumentasi

Gambar 3.1.1 Desain Penelitian

33
Desain penelitian pada Gambar 3.1.1 dapat dijelaskan sebagai berikut :
1. Studi Literatur
Pada tahap ini, dilakukan pengumpulan teori yang berkaitan dengan
pembuatan tugas akhir, seperti teori tentang sistem kontrol, mikrokontroler
Arduino, dan sensor Kinect. Kemudian mempelajari teori yang berkaitan
dengan sistem kontrol TV dengan menggunakan sensor Kinect dan
mikrokontroler Arduino. Teori-teori tentang sistem kontrol terkhusus pada
sistem kontrol loop tertutup karena pada sistem ini digunakan sistem
kontrol loop tertutup. Teori-teori menyangkut mikrokontroler Arduino dan
bagaimana diagram bloknya. Kemudian teori tentang sensor Kinect,
bagaimana algoritma dari pengenalan pola isyarat tangan ditangkap oleh
sensor Kinect dan diolah sehingga dapat menghasilkan gerakan real time.
Mempelajari beberapa literatur dan jurnal-jurnal yang berkaitan dengan
sensor Kinect ini.
Contoh literatur yang didapatkan :


Rancang

Bangun

Sistem

Perintah

Gerak

Mobile

Robot

Menggunakan Metode Pengenalan Isyarat Tubuh Dengan Sensor
Kinect
Oleh : Dhuha Abdul Aziz, Dr. Ir. Djoko Purwanto, M.Eng., Rudy
Dikairono, ST, M.Sc.
Jurusan Teknik Elektro, Fakultas Teknologi Industri, Institut Teknologi
Sepuluh Nopember (ITS)
“Jurnal ini membahas tentang perancangan sebuah sistem perintah
untuk gerak robot menggunakan metode pengenalan isyarat tubuh
dengan sensor Kinect. Pada jurnal ini mobile robot yang dibuat mampu
mengikuti gerakan manusia.”


Recognizing Hand Gestures with Microsoft’s Kinect
Oleh : Matthew Tang
Jurusan Teknik Elektro, Universitas Standford
“Pada jurnal ini dibahas tentang Pengenalan Pola Isyarat tangan pada
Microsoft Kinect. Dijabarkan bagaimana perhitungan pola dari isyarat
tangan dengan sensor kedalaman (depth sensor). Perhitungan ini

34
menghasilkan analisa dari pola isyarat tangan yang ditangkap oleh
sensor Kinect”

2. Desain Sistem
Pada desain sistem ini ada dua bagian yaitu :
-

Perancangan Perangkat Keras
Pada tahapan ini dirancang cara kerja sistem kontrol TV.
Bagaimana integrasi antara Remote Kontrol, TV, sensor Kinect,
mikrokontroler

Arduino

dan

komputer

sehingga

dapat

menghasilkan sebuah sistem kontrol TV. Perancangan perangkat
keras dapat dilihat pada blok diagram Gambar 3.2.
-

Perancangan Perangkat Lunak
Untuk tahapan ini akan dirancang perangkat lunak berupa program
mikrokontroler Arduino dan sensor Kinect. Program yang
dirancang berisikan coding program mengenai sistem kontrol TV
pada mikrokontroler Arduino dan program tentang pengenalan
pola isyarat tangan pada sensor Kinect.

3. Implementasi
Pada tahapan ini, dilakukan proses pengimplementasian dari sistem yang
telah dirancang. Untuk langkah pertama dilakukan pengintegrasian antara
remote TV dan mikrokontroler Arduino, yang bertujuan untuk
pemindahan data dari remote TV ke mikrokontroler Arduino yang akan
diproses dengan Arduino IDE. Langkah berikutnya adalah pengenalan
pola isyarat tangan pada sensor Kinect, seperti Gambar 3.1.2 :
Isyarat
Tangan

Capture
(kinect)

Mengubah Data
RGB menjadi Data
Depth

Perhitungan
Swipe Gesture

Kinect SDK

Gambar 3.1.2 Proses Pengolahan Pola Isyarat Tangan

35
Setelah itu dilakukan penghitungan dari pola yang didapatkan tersebut,
jika pola isyarat tangan yang didapatkan cocok dengan sensor Kinect maka
dihubungkan dengan mikrokontroler Arduino yang telah terintegrasi
dengan remote TV.
4. Pengujian dan Evaluasi
Dilakukan pengujian dari sistem yang telah dibuat. Apabila terjadi
kesalahan atau sistem tidak berjalan dengan baik, diadakan evaluasi untuk
memperbaiki kesalahan yang terjadi.
5. Dokumentasi
Tahap ini merupakan tahap terahir dari tugas akhir. Pada tahap ini
dilakukan rekapitulasi dokumentasi dari hasil yang telah tercapai seperti
alat uji, program, hasil screenshot interface program, dan lain-lain yang
dirasa perlu.

3.2 Perancangan Sistem
Pada pembuatan tugas akhir ini, sistem yang akan dibuat digambarkan dalam
bentuk blok diagram seperti yang ditunjukan dibawah ini.
Kinect

Komputer

Arduino

Remote Kontrol

TV

Gambar 3.2 Blok Diagram Perancangan Sistem

Blok diagram di atas menjelaskan bahwa TV dikontrol oleh sebuah
Remote Kontrol yang rangkaiannya akan dikoneksikan dengan board
mikrokontoler Arduino. Hal ini bertujuan untuk mengambil data dari Remote
Kontrol yang akan diproses pada Arduino IDE melalui komputer (PC). Pada
pemrosesan ini dilakukan penyimpanan data pada mikrokontroler Arduino.

36
Kemudian sensor Kinect dikoneksikan dengan PC yang akan menangkap
gerakan tangan untuk diproses sebagai kontrol TV pada PC. Nantinya data
Remote Kontrol yang sudah ada pada mikrokontroler Arduino akan
digabungkan dengan data dari sensor Kinect dengan program Kinect SDK.
Gerakan tangan yang ditangkap oleh sensor Kinect akan dihitung dengan
metoda depth threshold dan metoda tersebut akan diproses pada
pemrograman dengan menggunakan Processing IDE dan Kinect SDK. Hasil
perhitungan dari metoda akan digabungkan dengan mikrokontroler Arduino
sehingga gerakan tangan dapat menjadi kontrol TV.
3.2.1

Perancangan Alat

3.2.1.1 Rancangan Alat
Pembuatan sistem dimulai dengan perancangan alat, berdasarkan blok
diagram Gambar 3.2 dapat digambarkan rancangan dari alat yang akan
dibuat. Adapun rancangan mekanik tersebut dapat dilihat pada Gambar
3.2.1.1 :

Gambar 3.2.1.1 Rancangan Alat
Pada Gambar 3.2.1.1 terlihat bagaimana peralatan yang digunakan untuk
pembuatan sistem saling terhubung dengan kabel. Koneksi antara Kinect
dan komputer menggunakan sebuah adaptor, sementara koneksi Arduino
dengan komputer menggunakan kabel USB.

37
3.2.1.2 Rancangan Hardware
Perancangan hardware dimulai dengan perancangan koneksi antara
Remote Kontrol dan board Arduino. Untuk koneksi antara Arduino dengan
Remote Kontrol, dibutuhkan sebuah prototypeshield dengan 4 buah relay
yang akan dihubungkan dengan masing-masing pin Arduino dan board
Remote Kontrol seperti pada Gambar 3.2.1.2 :

Gambar 3.2.1.2 Rangkaian koneksi Remote Kontrol dan Arduino

Gambar 3.2.1.3 Remote Kontrol dan Arduino terhubung dengan
Prototypeshield

38
Tabel 3.2.1.2 Remote Kontrol dan Arduino :
Pasangan kabel dari Relay

Pasangan kabel di remote

Arduino pin 5 Channel +

Arduino pin 5 Channel +

Arduino pin 6 Channel -

Arduino pin 6 Channel -

Arduino pin 7 Volume +

Arduino pin 7 Volume +

Arduino pin 8 Volume -

Arduino pin 8 Volume -

Rancangan koneksi Remote Kontrol dan Arduino ini merupakan
rancangan awal dari tahap pengerjaan sistem ini. Tujuan dari perancangan
koneksi Remote Kontrol dan Arduino ini adalah untuk mendapatkan datadata dari Remote Kontrol yang akan disimpan di Arduino untuk diolah
selanjutnya dalam pengerjaan pengenalan isyarat tangan.
3.2.2

Perancangan Software

3.2.2.1 Pengenalan Pola Isyarat Tangan
Pengenalan pola isyarat tangan menggunakan library dari Kinect SDK,
dimana bahasa pemograman yang digunakan adalah Processing IDE.
Untuk mengakses data stream dari Kinect, digunakan framework OpenNI
dari PrimeSense. Gambar 3.2.2.1 menunjukkan lapisan dari OpenNI.

Gambar 3.2.2.1 Lapisan OpenNI
39
OpenNI menyediakan banyak library yang dapat digunakan untuk
perancangan sistem ini, diantaranya SimpleOpenNI, OpenKinect atau
OpenGL, dan NITE Function. Library ini dapat diakses dengan
menggunakan Processing IDE.
Adapun perancangan software pada Processing IDE dapat digambarkan ke
dalam bentuk flowchart seperti pada Gambar 3.2.2.2 :

Gambar 3.2.2.2 Flowchart Processing IDE

40
Pada Gambar 3.2.2.2 digambarkan bagaimana alur kerja dari processing
IDE dalam melakukan proses pengenalan pola isyarat tangan yang dapat
dijabarkan dalam bentuk langkah-langkah berikut :
-

Pembuatan program dimulai dengan melakukan import dari library
yang akan digunakan.

-

Setelah proses import selesai, diaktifkan dua function dari NITE
yaitu hand tracking dan gesture recognition yang dirangkum ke
dalam tiga buah library XnV.

-

Ditetapkan tiga buah nilai berdasarkan titik koordinat dari
pelacakan tangan yaitu titik X, Y, dan Z. Dimana ketiga titik ini
nantinya berfungsi sebagai penentuan dari pengontrolan yang
dilakukan.

-

Apabila tangan melakukan gerakan vertikal atau dikenal sebagai X,
maka sistem akan mengenali sebagai pengontrolan channel.

-

Apabila tangan melakukan gerakan horizontal atau dikenal sebagai
Y, maka sistem akan mengenali sebagai pengontrolan volume.

-

Sementara titik Z berfungsi sebagai circle atau daerah pelacakan
dari tangan yang melakukan gerakan horizontal maupun vertikal.

-

Daerah pelacakan ini nantinya mempunyai luas daerah tersendiri
berdasarkan luas yang akan ditetapkan. Setelah ketiga titik
dikenali, maka proses pengontrolan dengan isyarat tangan dapat
dilakukan berdasarkan titik yang ditentukan.

-

Apabila gerakan yang dilakukan tidak sesuai dengan ketiga titik,
maka gerakan tangan tersebut tidak akan dikenali dan sistem akan
mati atau tidak berjalan.

-

Penggunaan function dari NITE ini nantinya akan memanggil
program dari Arduino menggunakan fasilitas NITE Callbacks.

Untuk menjalankan program pada processing IDE ini, program dari
Arduino harus terhubung dengan komputer untuk dapat dipanggil pada
saat penentuan titik-titik yang digunakan pada pengontrolan sistem.

41
3.2.2.2 Sistem Kontrol Remote dan Arduino
Perancangan software pada Arduino IDE dapat digambarkan ke dalam
bentuk flowchart seperti pada Gambar 3.2.2.3 :

Gambar 3.2.2.3 Flowchart Arduino IDE

Pada Gambar 3.2.2.3 terlihat bahwa data pada Remote Kontrol
dihubungkan dengan Arduino IDE. Dimulai dengan penginisialisian pin
untuk pengontrolan dimana ditetapkan nilai pin tersebut adalah 1, 2, 3 dan
4. Penetapan nilai pin ini nantinya berfungsi dalam pemilihan
pengontrolan yang akan dilakukan. Ada empat buah pengontrolan dalam
sistem ini, yaitu pengontrolan channel selanjutnya, channel sebelumnya,
menambah volume, dan mengurangi volume. Masing-masing ditetapkan
nilainya yang dapat dilihat pada Gambar 3.2.2.3. Setelah pemilihan dari
pin yang akan difungsikan, pin tersebut akan dibaca dan dilakukan
perintah sesuai yang dikirimkan. Perintah tersebut yang akan menjadi
sistem kontrol dari channel dan volume TV.

42
BAB IV
HASIL DAN ANALISA
4.1 Hasil Pengujian
Setelah perancangan alat dan perancangan software, dihasilkan sebuah
Sistem Kontrol televisi dengan pengenalan pola isyarat tangan menggunakan
sensor Kinect dan Arduino. Adapun tampilan sistem tersebut dapat dilihat
seperti Gambar 4.1 :

Gambar 4.1 Tampilan Sistem Kontrol TV

Untuk mengetahui bekerja atau tidaknya sistem yang telah dirancang,
maka harus dilakukan pengujian terhadap perangkat-perangkat yang
digunakan. Sistem diuji baik dari segi hardware maupun software. Suatu
sistem dinyatakan bekerja dengan baik apabila respon yang dihasilkan sesuai
dengan tujuan awal saat pertama kali dilakukan perancangan. Tujuan
pengujian ini untuk mengetahui sejauh mana keberhasilan sistem yang
dirancang serta membandingkan dengan spesifikasi yang diinginkan.

43
4.1.1

Pengujian Remote Kontrol dan Arduino
Remote Kontrol dan Arduino dihubungkan dengan sebuah
prototypeshield. Tahap awal yang dilakukan dalam proses pengujian
adalah mengukur resistansi dari button

Remote Kontrol yang akan

dihubungkan dengan prototypeshield. Pengukuran resistansi ini bertujuan
untuk menemukan button yang tepat, yaitu keadaan dimana button-button
yang terhubung akan menjadikan remote dalam keadaan ditekan ketika
terhubung dengan prototypeshield. Apabila terjadi perubahan nilai
resistansi dari yang tinggi ke rendah, maka button sudah tepat. Button
yang akan dihubungkan adalah button dari tombol Channel+, Channel-,
Volume+, dan Volume-. Dimana hasil pengujian resistansi dari button button Remote Kontrol dapat dilihat pada tabel 4.1.1.1 :
Tabel 4.1.1.1 Resistansi button Remote Kontrol
Button Remote Kontrol
Channel+
ChannelVolume+
Volume-

Push Button
4.65 Ohm
3.01 Ohm
2.8 Ohm
2.69 Ohm

Release Button
1.07 Ohm
1.48 Ohm
1.6 Ohm
1.35 Ohm

Setelah ditemukan button-button yang tepat, dilanjutkan dengan
menghubungkan button tersebut ke prototypeshield. Pada prototypeshield
ini terdapat empat buah relay yang akan mengkondisikan button Remote
Kontrol

yang

berfungsi

sebagai

tombol

yang

ditekan.

Relay

memungkinkan penggunaan arus kecil untuk mengontrol arus yang lebih
besar. Cara kerja relay adalah menghasilkan medan magnet mekanis untuk
menutup rangkaian, ketika relay dimatikan medan magnet berhenti dan
menghasilkan lonjakan terbalik. Hal ini berpotensi berbahaya bagi
rangkaian karena menerima tegangan negatif pada pin yang sama di mana
tegangan positif juga diterima. Jika lonjakan cukup besar dapat merusak
rangkaian. Untuk mengatasi masalah ini, dihubungkan beberapa dioda di
kumparan relay pada bagian prototypeshield untuk melindungi Arduino.
Dioda bekerja hanya dalam satu arah, menghentikan tegangan negatif yang
masuk ke Arduino. Untuk menghubungkan dioda tersebut, perlu
dihubungkan katoda timbal dengan akhir garis terhadap output pin

44
Arduino yang terhubung dengan Ground. Relay yang digunakan adalah
relay 5V yang mendukung operasi hingga 20mA yang akan dikoneksikan
dengan output Arduino. Relay yang terhubung dengan Arduino dapat diuji
dengan cara menyambungkan rangkaian ke komputer dan menjalankan
program pada Arduino IDE seperti berikut ini :
void setup() {
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}

// Set the digital pin as an output.

// set the LED on
// wait for a second
// set the LED off
// wait for a second

Rangkaian ini memerlukan input tegangan koil sebesar 5V DC dan
Arduino Uno memerlukan input tegangan 5V yang diperoleh dari
sambungan USB pada komputer. Arduino mengirimkan sinyal ke relay
dan relay memungkinkan arus lewat pada waktu yang sama dengan sinyal
HIGH(1), kondisi ini akan menjadikan relay hidup dan apabila sinyal yang
dikirimkan adalah LOW(0), maka relay tersebut akan mati. Pengujian
relay pada Arduino dapat dilihat pada Tabel 4.1.1.2 :
Tabel 4.1.1.2 Pengujian Relay pada Arduino
Masukan Logika pada Relay
LOW (0)
HIGH (1)

Vout pada beban
0 Volt
5 Volt

Selanjutnya dilakukan pengujian terhadap tegangan input dan output
pada Arduino ketika prototypeshield terhubung dengan Arduino.
Pengujian ini bertujuan untuk melihat berapa tegangan yang dibutuhkan
ketika fungsi-fungsi pin pada Arduino diaktifkan. Pin-pin yang diujikan
adalah input 1, 2, 3, 4 dan output 5, 6, 7, 8. Pin-pin ini terhubung
berdasarkan pin-pin yang ditetapkan pada hubungan Remote Kontrol dan
Arduino. Pengujian ini dapat dilakukan dengan menggunakan multimeter.
Dijalankan program Arduino IDE seperti dibawah ini :
int ChannelPlusPin = 5;
int ChannelLessPin = 6;
int VolumePlusPin = 7;

45
int VolumeLessPin = 8;
int pulse = 250;
void setup(){ pinMode(ChannelPlusPin, OUTPUT);
pinMode(ChannelLessPin, OUTPUT);
pinMode(VolumePlusPin, OUTPUT);
pinMode(VolumeLessPin, OUTPUT);
Serial.begin(9600);// Start serial communication at 9600 bps
}
void updatePin (int pin, int pulse){
Serial.println("RECEIVED");
Serial.println(pin);
digitalWrite(pin, HIGH);
delayMicroseconds(pulse);
digitalWrite(pin, LOW);
Serial.println("OFF");
}
void loop(){
if (Serial.available()) {
char val=Serial.read();
if(val == '1') {
updatePin(ChannelPlusPin, pulse);
} else if(val == '2') {
updatePin(ChannelLessPin, pulse);
} else if(val == '3') {
updatePin(VolumePlusPin, pulse);
} else if(val == '4') {
updatePin(VolumeLessPin, pulse);
}
}
}

Akan muncul tampilan sebagai berikut :

46
Gambar 4.1.1 Tampilan Arduino IDE
Pada saat dikirimkan nilai input 1, Arduino merespon dan
mengaktifkan pin 5 sebagai output. Nilai tegangan dapat diukur pada saat
respon yang diberikan Arduino kepada relay, yaitu pada saat relay yang
terhubung dengan pin 5 hidup. Begitupun dengan input dan output
selanjutnya. Tegangan yang diukur dapat dilihat dengan menggunakan
osiloskop. Hasil pengujian dari tegangan pin yang diaktifkan dapat dilihat
pada Tabel 4.1.1.3 :
Tabel 4.1.1.3 Tegangan Pin Input dan Output
Pin Input
1

Tegangan
5,1 V

Pin Output
5

Tegangan
4,8 V

2

4,9 V

6

Gambar

5,1 V

47
3

5,2 V

7

4,79 V

4

4,8 V

8

5V

Program dari Arduino IDE ini nantinya juga akan dipakai pada saat
pengujian Remote Kontrol dan Arduino pada pengujian Sistem Kontrol
Televisi.
4.1.2

Pengujian Sistem Kontrol Televisi
Pengujian Sistem Kontrol televisi dapat dilakukan apabila seluruh
rangkaian terhubung dengan komputer. Dimana pada pengujian sistem ini
alat yang dibutuhkan adalah hasil dari pengujian sebelumnya, yaitu :
-

Remote Kontrol yang terhubung dengan Arduino

-

Sensor Kinect

-

Televisi

-

Komputer
Semua alat terhubung lansung dengan komputer. Untuk melakukan

pengujian ini, dipastikan keseluruhan alat dalam keadaan hidup dan
tersambung satu sama lain ke komputer. Langkah pertama adalah
melakukan pengujian Remote Kontrol dan Arduino dengan TV diman
tahapan dari pengujian ini adalah Remote Kontrol dan Arduino terhubung
dengan baik setelah melewati pengujian prototypeshield dan relay,
Arduino dan Remote Kontrol tersambung ke komputer, Televisi hidup dan
Remote menghadap ke televisi, kemudian dijalankan program Arduino
IDE seperti pada pengujian tegangan input dan output prototypeshield
yang dapat dilihat pada Gambar 4.4.1 pengujian Remote Kontrol dan
Arduino.

48
Adapun hasil pengujian dari Remote Kontrol dan Arduino ini dapat dilihat
pada Tabel 4.2.1.1 :
Tabel 4.2.1.1 Hasil pengujian Remote dan Arduino dengan Arduino IDE
No
1
2
3
4

Pin Input
1
2
3
4

Pin Output
5
6
7
8

Hasil
Next Channel
PreviousChannel
Volume Up
Volume Down

Ketika input yang diberikan 1 akan menghasilkan output 5 yang
akan mengaktifkan relay untuk perubahan channel, dan begitu juga untuk
input-input selanjutnya.
Setelah dilakukan pengujian Remote Kontrol dan Arduino, dihubungkan
sensor Kinect ke komputer. Pada tahapan ini, akan dilakukan pengujian
pengenalan pola isyarat tangan.
4.1.3

Pengujian Pengenalan Pola Isyarat Tangan dengan Kinect
Hand Gesture Recognition (Pengenalan Pola Isyarat Tangan) pada
sensor Kinect dikenal dengan hand tracking. Proses pengujian dapat
dilakukan apabila sensor Kinect dan komputer terhubung. Proses
pengujian pengenalan pola isyarat tangan dimulai dengan pengenalan
isyarat tangan oleh sensor Kinect.
Pengujian hand tracking ini dilakukan dengan menggunakan
metode depth treshold dari Kinect SDK seperti terlihat pada Gambar
4.1.3.1 :

Gambar 4.1.3.1 Pengambilan gambar dengan Metode Depth Treshold
49
Ada dua tahapan dari metode depth treshold, yaitu :
1. Identifikasi data RGB
Pada tahap identifikasi data RGB, diambil gambar tubuh secara
keseluruhan yang memiliki kombinasi warna Red, Green, dan Blue
seperti terlihat pada Gambar 4.1.3.1. Tujuan dari pengambilan data
RGB ini adalah penentuan sampel potongan gambar berdasarkan
gerakan yang dilakukan dideteksi sebagai telapak tangan atau tidak.
Identifikasi data RGB ini menggunakan library dari Kinect sebagai
berikut :
import org.openKinect.*;
import org.openKinect.processing.*;
// Kinect Library object
Kinect Kinect;
void setup() {
size(640, 480);
}
void setup() {
size(640, 480);
Kinect = new Kinect(this);
Kinect.start();
}
Kinect.enableRGB(true);
PImage img = Kinect.getVideoImage();
image(img,0,0);
import org.openKinect.processing.*;
// Kinect Library object
Kinect Kinect;
void setup(){
size(640, 480);
Kinect = new Kinect(this);
Kinect.start();
Kinect.enableRGB(true);
}
void draw(){
PImage img = Kinect.getVideoImage();
image(img,0,0);
}

Output dari program tersebut adalah seperti pada Gambar 4.1.3.2 :

50
Gambar 4.1.3.2 Identifikasi data RGB

Dari Gambar 4.1.3.2 dapat dilihat bahwa data RGB ini,
memberikan perbedaan warna dari tangan yang dideteksi. Perhitungan
perbedaan warna dari tangan ini dilakukan oleh Kinect library.
Adapun proses dari perhitungan tersebut menghasilkan data seperti
terlihat pada Tabel 4.1.3.1 :
Tabel 4.1.3.1 Perhitungan data RGB
R
221
219
210
215

G
120
118
110
115

B
30
27
28
25

X

Y

Z

0.94118
0.90196
0.82353
0.84314

0.47059
0.43137
0.43137
0.45098

0.07843
0.11765
0.10980
0.09804

Akurat
1.4902
1.4509
1.3639
1.3921

Hasil
Telapak tangan
Telapak tangan
Telapak tangan
Telapak tangan

Proses perhitungan tersebut didapat dari rumus berikut :
( |

)

(
∑

(

| ) ( )
| ) ( )

Peluang didapatkannya kulit adalah berdasarkan jumlah nilai RGB
yang didapat. Apabila hasilnya = 1 maka dideteksi telapak tangan dan
apabila hasilnya = 0 dideteksi bukan telapak tangan.
Source code perhitungan rumus :
var_R = ( R / 255 )
var_G = ( G / 255 )
var_B = ( B / 255 )

//R from 0 to 255
//G from 0 to 255
//B from 0 to 255

if ( var_R > 0.04045 ) var_R = ( ( var_R + 0.055 ) / 1.055 ) ^ 2.4
else
var_R = var_R / 12.92
if ( var_G > 0.04045 ) var_G = ( ( var_G + 0.055 ) / 1.055 ) ^ 2.4
else
var_G = var_G / 12.92
if ( var_B > 0.04045 ) var_B = ( ( var_B + 0.055 ) / 1.055 ) ^ 2.4
else
var_B = var_B / 12.92

51
var_R = var_R * 100
var_G = var_G * 100
var_B = var_B * 100
//Observer. = 2°, Illuminant = D65
X = var_R * 0.4124 + var_G * 0.3576 + var_B * 0.1805
Y = var_R * 0.2126 + var_G * 0.7152 + var_B * 0.0722
Z = var_R * 0.0193 + var_G * 0.1192 + var_B * 0.9505

2. Mengintegrasikan data Depth
Setelah

data

RGB

diidentifikasi,

dilanjutkan

dengan

mengintegrasikan data depth. Integrasi data depth bertujuan untuk
mendapatkan kedalaman warna dari isyarat tangan untuk dijadikan
pengontrolan. Integrasi ini menggunakan library Simple OpenNI
seperti dibawah ini :
import SimpleOpenNI.*;
SimpleOpenNI context;
void setup()
{
context = new SimpleOpenNI(this);
// mirror is by default enabled
context.setMirror(true);
// enable depthMap generation
context.enableDepth();
// enable ir generation
context.enableRGB();
//context.enableRGB(640,480,30);
//context.enableRGB(1280,1024,15);
size(context.depthWidth() + context.rgbWidth() + 10, context.rgbHeight());
}
void draw()
{
// update the cam
context.update();
background(200,0,0);
// draw depthImageMap
image(context.depthImage(),0,0);
// draw irImageMap
image(context.rgbImage(),context.depthWidth() + 10,0);

52
}

Dengan output seperti pada Gambar 4.1.3.3 :

Gambar 4.1.3.3 Integrasi Data Depth
Setelah proses integrasi data Depth, dilanjutkan dengan tahap
pengontrolan televisi menggunakan Hand Gesture Recognition dengan
sensor Kinect. Tahapan ini dimulai dengan mengimport library core
Serial, library OpenGL, dan library Simple-OpenNI pada sketch
processing IDE. Seperti terlihat pada Gambar 4.1.3.4 :

Gambar 4.1.3.4 Import Core Serial dan Open Kinect

53
Ketika import library selesai dilakukan, dibutuhkan dua fungsi dari
NITE untuk melakukan pengontrolan channel dan volume, yaitu fungsi
hand tracking dan gesture recognition untuk gerakan tangan melambai,
mengangkat tangan, dan deteksi titik pelacakan. Fungsi ini dideklarasikan
dengan XnVSessionManager, XnVPointControl dan XnVCircleDetector.
Seperti terlihat pada Gambar 4.1.3.5 :

Gambar 4.1.3.5 Import Library SimpleOpenNI
Setelah import selesai, digambarkan sebuah circle detector untuk
menentukan jarak tangan ketika melakukan gerakan melambai untuk
pengontrolan volume dan channel. Circle detector ini, memiliki garis
tengah, titik pusat dan sudut dalam penggunaannya.
Untuk ukuran dari circle detector dapat dilihat pada Tabel 4.1.3.2
berikut :

54
Tabel 4.1.3.2 Ukuran Circle Detector
Pengontrolan Channel
Next Channel
Previous Channel

Luas 0,7 m
Sudut
horizontal 570

Luas 0,7 m
Sudut horizontal
570

Pengontrolan Volume
Up
Down

Luas 0,8 m
Sudut
vertikal 430

Luas 0,8 m
Sudut vertikal
430

Pengontrolan dapat dilakukan dengan mengikuti arah panah yang
ada dalam circle detector, selama masih dalam jarak yang sesuai dengan
luas dari circle detector. Setelah didapatkan ukuran dari circle detector,
ditentukan titik awal dari pengontrolan yang akan dilakukan. Penentuan
titik awal ini disebut kalibrasi. Proses kalibrasi dilakukan ketika akan
melakukan pengontrolan, setiap user mengkalibrasikan tangan agar
dikenal sensor Kinect untuk proses pengontrolan TV.
Untuk proses kalibrasi dari tangan, dilakukan gerakan melambai di
depan kamera depth sensor Kinect. Pengkalibrasian ini tergantung
kecepatan tangan melambai di depan depth sensor Kinect. Gerakan
melambai ini nantinya akan memunculkan sebuah titik merah yang akan
memandu proses pengontrolan channel atau volume. Jarak antara tangan
dan sensor Kinect pada saat pengkalibrasian ini adalah 40cm sampai
dengan 300cm. Hasil kalibrasi dapat dilihat pada tabel berikut :
Tabel 4.1.3.3 Hasil kalibrasi tangan dengan sensor Kinect
Waktu
3 detik
3 detik
3 detik
3 detik
3 detik
3 detik

Jarak Tangan dengan Sensor
64 cm
115 cm
164 cm
215 cm
268 cm
300 cm

55
Pengontrolan dibedakan menjadi dua model, yaitu pengontrolan
volume dan pengontrolan channel. Sensor Kinect mendeteksi pengontrolan
ini menjadi tiga variabel yaitu, model pengontrolan volume yang diset
variabel 1, model pengontrolan channel yang diset variabel 2, dan model
kontrol standby yaitu model kontrol yang di set variabel 0 ketika tidak ada
proses penukaran channel atau volume. Proses ini secara keseluruhan
diolah dengan processing IDE yang terdapat pada lampiran B.
Pengenalan isyarat tangan yang dilakukan adalah “lambaian tangan
ke kanan”, “lambaian tangan ke kiri”, “lambaian tangan ke atas”,
“lambaian tangan ke bawah”. Pada pengujian ini keempat isyarat tangan
terbentuk pada sistem yang diujikan secara satu persatu sebanyak 20 kali
gerakan lambaian.
Hasil pengujian ini adalah semua isyarat dikenali dengan benar,
seperti yang terlihat pada Tabel 4.1.3.4 :
Tabel 4.1.3.4 Pengujian Isyarat Tangan dikenali Sensor Kinect
No
1

2

3

4

Pola
Isyarat
Lambaian
tangan ke
kanan
Lambaian
tangan ke
kiri
Lambaian
tangan ke
atas
Lambaian
tangan ke
bawah

Tingkat
Keberhasilan
19

Tingkat
Kegagalan
1

Presentase
Keberhasilan
99%

20

-

100%

5

15

25%

5

15

25%

Setelah didapatkan hasil dari pengujian pola isyarat tangan, dapat
dilakukan pengujian dari Sistem Kontrol televisi. Pada proses ini semua
alat yang dibutuhkan sistem tersambung dengan baik.
Untuk pengontrolan channel digunakan “swipe” ke arah kiri untuk
previous channel dan ke arah kanan untuk next channel. Sedangkan untuk

56
volume, digunakan “swipe” ke atas untuk menambah volume dan bawah
untuk mengurangi volume. Gerak pengontrolan ini seperti terlihat pada
Gambar 4.1.3.6 :

Gambar 4.1.3.6 Hasil Pengujian Isyarat Tangan pada Sistem Kontrol
TV

4.2 Analisa
Dari proses yang telah dilakukan, baik terhadap pengujian rangkaian dari
segi perangkat keras (hardware) maupun perangkat lunak (software), dapat
dikatakan bahwa alat yang dirancang sudah sesuai dengan spesifikasi yang
diinginkan. Dari segi perangkat keras, mikrokontroler Arduino mempunyai
batas toleransi tertentu sehingga memungkinkan pemakaian komponen yang
tidak terlalu presisi. Sebagai contoh, jika tegangan untuk sumber daya (vcc)
mikrokontroler Arduino sebesar 5 volt DC, berarti tegangan kurang dari
semestinya. Namun hal tersebut tidak menjadi masalah jika masih dalam batas

57
karakteristik

dari

mikrokontroler

tersebut.

Adapun

karakteristik

mikrokontroler Arduino tersebut diantaranya sebagai berikut :
VCC

= 1.8V to 5.5V

DC Output

= 20 mA

Ini berarti supply tegangan VCC mikrokontroler Arduino yang
diperbolehkan berkisar antara 1.8V sampai 5.5 volt. Keadaan ini memberikan
kemudahan bagi perancangan Arduino dan Remote Kontrol, karena tegangan
yang dibutuhkan untuk beroperasi adalah berkisaran 5 volt.
Pada pengujian Remote Kontrol dan Arduino, didapatkan data input dan
output dari pin yang digunakan pada proses pembacaan data. Pin-pin yang
digunakan pada Arduino diurutkan berdasarkan board pada Remote Kontrol.
Data pin yang dihubungkan adalah pin 5, 6, 7, dan 8 dimana pemilihan pin ini
berdasarkan prototypeshield yang menggunakan empat buah relay yang akan
mengaktifkan fungsi dari Remote Kontrol. Dimana pin 5 dan 6 mendukung
PWM (pulse width modulation) yang dapat mengubah pin hidup (on) atau
mati (off) dengan sangat cepat sehingga membuatnya dapat berfungsi
layaknya keluaran analog. Value (nilai) pada format kode tersebut adalah
angka antara 0 (0% duty cycle ~ 0V) dan 255 (100% duty cycle ~ 5V).
Pengujian data pada Remote Kontrol ini menunjukkan bahwa koneksi antara
Remote Kontrol dan Arduino terhubung dengan baik.
Setelah didapatkan data yang akurat dari koneksi Remote Kontrol dan
Arduino, dilakukan pengujian pola isyarat tangan pada sensor Kinect.
Tahapan pengujian ini mengalami beberapa kendala yaitu dalam penentuan
titik awal atau kalibrasi dari pengenalan pola isyarat tangan dimana harus
dilakukan berulang-ulang kali gerakan tangan di depan sensor Kinect untuk
mendapatkan sebuah titik untuk proses pengontrolan. Hal ini terjadi karena
potensiometer yang terdapat pada sensor Kinect dalam pengontrolan ini tidak
konstan, sehingga dibutuhkan sebuah potensiometer manual untuk mengatur
pengontrolan agar tetap stabil yaitu ditentukannya sebuah circle detector yang
terdapat pada library NITE. Circle detector ini menentukan sebuah titik awal
yang akan mengawali proses dari pengontrolan. Dengan adanya circle

58
detector ini pengontrolan sistem dapat dilakukan selama masih dalam rentang
yang dimiliki oleh circle detector yaitu berdasarkan luas yang terdapat pada
bagian hasil. Dan untuk jarak yang dapat ditangkap oleh sensor Kinect adalah
40 cm sampai dengan 300 cm. Dari data pada tabel 4.1.3.3 terlihat bahwa
jarak antara tangan dan sensor tidak mempengaruhi waktu untuk proses
kalibrasi tangan. Jadi user dapat melakukan pengontrolan dengan jarak yang
mereka butuhkan.

59
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan hasil perancangan dan pengujian yang telah dilakukan pada
sistem yang telah dibuat, maka dapat disimpulkan bahwa :
1. Pengenalan pola isyarat tangan menggunakan metode depth treshold yang
menghasilkan gambar potongan tangan dan dapat dijadikan sebagai Sistem
Kontrol Televisi.
2. Sistem kontrol televisi dengan pengenalan isyarat tangan menggunakan
sensor Kinect dan Arduino. Sensor Kinect digunakan untuk pengenalan
Pola Isyarat Tangan, dan Arduino sebagai interface Remote TV. Kalibrasi
Sistem Kontrol untuk melacak titik tangan dilakukan selama 3 detik.
3. Sistem pengenalan pola isyarat tangan hanya dapat membaca satu tangan
atau single user dimana jarak pengontrolannya adalah antara 40cm-300cm.
4. Sistem kontrol televisi dengan pengenalan pola isyarat tangan dapat
bekerja sesuai dengan rancangan dan tingkat keberhasilan 75%.

4.2 Saran
Untuk penelitian dan pengembangan sistem ini selanjutnya, dapat disarankan
beberapa hal sebagai berikut :
1. Sistem yang dirancang pada tugas akhir ini perlu dikembangkan
sehingga nantinya dapat melakukan pengenalan isyarat tangan yang
lebih baik, pembentukan model isyarat yang dilakukan selanjutnya
bersifat multiple user dan menggunakan metode Hidden Markov
Model.
2. Sistem yang dirancang hanya mengenali jenis gerakan tangan berupa
lambaian, dapat dikembangkan dalam bentuk isyarat-isyarat tangan
yang lebih bervariasi.

60
3. Sistem masih menggunakan interface kabel, dapat dikembangkan
dengan menggunakan wireless sehingga dapat mengurangi pemakaian
kabel yang panjang.
4. Sistem pengontrolan yang dilakukan hanya untuk pengontrolan
channel dan volume, dapat dikembangkan sistem pengontrolan yang
lain agar fungsinya dapat diperluas.

61
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.
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");
}
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') {
// 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);
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);
}
}}
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
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);
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
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);
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));
}
// 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();
}

Contenu connexe

Tendances

Proposal penelitian
Proposal penelitianProposal penelitian
Proposal penelitian
Joni Candra
 
Tugas jurnal basindo rian
Tugas jurnal basindo rianTugas jurnal basindo rian
Tugas jurnal basindo rian
Muhamad Iqbal
 
Perancangan Penghitung Pengunjung Perpustakaan Berbasis Mikrokontroller AT89...
Perancangan  Penghitung Pengunjung Perpustakaan Berbasis Mikrokontroller AT89...Perancangan  Penghitung Pengunjung Perpustakaan Berbasis Mikrokontroller AT89...
Perancangan Penghitung Pengunjung Perpustakaan Berbasis Mikrokontroller AT89...
Ohen Razak
 

Tendances (11)

Kajian 2 3-batasan masalah
Kajian 2 3-batasan masalah Kajian 2 3-batasan masalah
Kajian 2 3-batasan masalah
 
Wsn
WsnWsn
Wsn
 
RaspBerry
RaspBerryRaspBerry
RaspBerry
 
Proposal penelitian
Proposal penelitianProposal penelitian
Proposal penelitian
 
Tugas jurnal basindo rian
Tugas jurnal basindo rianTugas jurnal basindo rian
Tugas jurnal basindo rian
 
Tugas 2
Tugas 2Tugas 2
Tugas 2
 
Perancangan Penghitung Pengunjung Perpustakaan Berbasis Mikrokontroller AT89...
Perancangan  Penghitung Pengunjung Perpustakaan Berbasis Mikrokontroller AT89...Perancangan  Penghitung Pengunjung Perpustakaan Berbasis Mikrokontroller AT89...
Perancangan Penghitung Pengunjung Perpustakaan Berbasis Mikrokontroller AT89...
 
Kajian 2 2 rumusan masalah aplod
Kajian 2 2 rumusan masalah aplodKajian 2 2 rumusan masalah aplod
Kajian 2 2 rumusan masalah aplod
 
A
AA
A
 
09030581721011 nabillah selva setiawan tpki 3
09030581721011 nabillah selva setiawan  tpki 309030581721011 nabillah selva setiawan  tpki 3
09030581721011 nabillah selva setiawan tpki 3
 
alat pendeteksi asap rokok at89s52 in"UNSIQ 2012
alat pendeteksi asap rokok at89s52 in"UNSIQ 2012alat pendeteksi asap rokok at89s52 in"UNSIQ 2012
alat pendeteksi asap rokok at89s52 in"UNSIQ 2012
 

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

190453 id-rancang-bangun-sistem-kendali-rumah-jara
190453 id-rancang-bangun-sistem-kendali-rumah-jara190453 id-rancang-bangun-sistem-kendali-rumah-jara
190453 id-rancang-bangun-sistem-kendali-rumah-jara
Manto Adjalach
 
ALAT PEDETEKSI ORANG MEROKOK DALAM TOILET MENGGUNAKAN SENSOR ASAP BERBASIS AR...
ALAT PEDETEKSI ORANG MEROKOK DALAM TOILET MENGGUNAKAN SENSOR ASAP BERBASIS AR...ALAT PEDETEKSI ORANG MEROKOK DALAM TOILET MENGGUNAKAN SENSOR ASAP BERBASIS AR...
ALAT PEDETEKSI ORANG MEROKOK DALAM TOILET MENGGUNAKAN SENSOR ASAP BERBASIS AR...
Joni Candra
 
Pengembangan Sistem SCADA Android Pada PLC Tipe COMPACT Untuk Aplikasi Pintu ...
Pengembangan Sistem SCADA Android Pada PLC Tipe COMPACT Untuk Aplikasi Pintu ...Pengembangan Sistem SCADA Android Pada PLC Tipe COMPACT Untuk Aplikasi Pintu ...
Pengembangan Sistem SCADA Android Pada PLC Tipe COMPACT Untuk Aplikasi Pintu ...
Brian Raafiu
 

Similaire à Ta rahmi-0910452015-implementasi pengenalan pola gerakan tangan sebagai input remote tv menggunakan sensor kinect (20)

Jurnal Merancang dan Membangun Hotspot Menggunakan Linux Ubuntu Server
Jurnal Merancang dan Membangun Hotspot Menggunakan Linux Ubuntu ServerJurnal Merancang dan Membangun Hotspot Menggunakan Linux Ubuntu Server
Jurnal Merancang dan Membangun Hotspot Menggunakan Linux Ubuntu Server
 
Laporan Tugas Akhir Pendeteksi Cuaca
Laporan Tugas Akhir Pendeteksi CuacaLaporan Tugas Akhir Pendeteksi Cuaca
Laporan Tugas Akhir Pendeteksi Cuaca
 
Laporan Tugas Akhir Pendeteksi Cuaca
Laporan Tugas Akhir Pendeteksi CuacaLaporan Tugas Akhir Pendeteksi Cuaca
Laporan Tugas Akhir Pendeteksi Cuaca
 
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
LAPORAN TUGAS AKHIR PERANCANGAN APLIKASI KNOWLEDGE BASE SYSTEM UNTUK INSTRUKS...
 
Presentation ppk 2018
Presentation ppk  2018Presentation ppk  2018
Presentation ppk 2018
 
Laporan Tugas Akhir Wireless Lock Door Menggunakan Arduino
Laporan Tugas Akhir Wireless Lock Door Menggunakan ArduinoLaporan Tugas Akhir Wireless Lock Door Menggunakan Arduino
Laporan Tugas Akhir Wireless Lock Door Menggunakan Arduino
 
Pengendali Lampu Menggunakan WiFi
Pengendali Lampu Menggunakan WiFiPengendali Lampu Menggunakan WiFi
Pengendali Lampu Menggunakan WiFi
 
Rangkuman Materi Kuliah Teknik Komputer
Rangkuman Materi Kuliah Teknik KomputerRangkuman Materi Kuliah Teknik Komputer
Rangkuman Materi Kuliah Teknik Komputer
 
Tugas 1
Tugas 1Tugas 1
Tugas 1
 
190453 id-rancang-bangun-sistem-kendali-rumah-jara
190453 id-rancang-bangun-sistem-kendali-rumah-jara190453 id-rancang-bangun-sistem-kendali-rumah-jara
190453 id-rancang-bangun-sistem-kendali-rumah-jara
 
MAKALAH IDE PENGEMBANGAN ELECTRIC METER APP
MAKALAH IDE PENGEMBANGAN ELECTRIC METER APPMAKALAH IDE PENGEMBANGAN ELECTRIC METER APP
MAKALAH IDE PENGEMBANGAN ELECTRIC METER APP
 
1401020022 tugas makalah jarkom_stmik primakara
1401020022 tugas makalah jarkom_stmik primakara1401020022 tugas makalah jarkom_stmik primakara
1401020022 tugas makalah jarkom_stmik primakara
 
Tugas 1.doc
Tugas 1.docTugas 1.doc
Tugas 1.doc
 
Makalah jaringan komputer - Parking Finder
Makalah jaringan komputer - Parking FinderMakalah jaringan komputer - Parking Finder
Makalah jaringan komputer - Parking Finder
 
Tilang Elektronik untuk Ketertiban Lalu Lintas
Tilang Elektronik untuk Ketertiban Lalu LintasTilang Elektronik untuk Ketertiban Lalu Lintas
Tilang Elektronik untuk Ketertiban Lalu Lintas
 
ALAT PEDETEKSI ORANG MEROKOK DALAM TOILET MENGGUNAKAN SENSOR ASAP BERBASIS AR...
ALAT PEDETEKSI ORANG MEROKOK DALAM TOILET MENGGUNAKAN SENSOR ASAP BERBASIS AR...ALAT PEDETEKSI ORANG MEROKOK DALAM TOILET MENGGUNAKAN SENSOR ASAP BERBASIS AR...
ALAT PEDETEKSI ORANG MEROKOK DALAM TOILET MENGGUNAKAN SENSOR ASAP BERBASIS AR...
 
Tugas 2
Tugas 2Tugas 2
Tugas 2
 
1108014
11080141108014
1108014
 
Pengembangan Sistem SCADA Android Pada PLC Tipe COMPACT Untuk Aplikasi Pintu ...
Pengembangan Sistem SCADA Android Pada PLC Tipe COMPACT Untuk Aplikasi Pintu ...Pengembangan Sistem SCADA Android Pada PLC Tipe COMPACT Untuk Aplikasi Pintu ...
Pengembangan Sistem SCADA Android Pada PLC Tipe COMPACT Untuk Aplikasi Pintu ...
 
Rancang bangun prototype kendali pintu
Rancang bangun prototype kendali pintuRancang bangun prototype kendali pintu
Rancang bangun prototype kendali pintu
 

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

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