pada tugas akhir ini, akan dibuat sebuah sistem kontrol televisi menggunakan pengenalan pola gerakan tangan yang diimplementasikan dengan menggunakan sensor kinect. diharapkan dengan adanya sistem
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
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') {
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);
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();
}