TUGAS AKHIR
Nama : Wira Wanangsyah NIM : 08.41010.0438 Program : S1 (Strata Satu) Jurusan : Sistem Informasi
SEKOLAH TINGGI
MANAJEMEN INFORMATIKA & TEKNIK KOMPUTER SURABAYA
vii
Microsoft merilis sebuah sensor bernama Kinect berfungsi sebagai kontrol game alternatif dimana user dapat bergerak bebas menggunakan tubuhnya saat berinteraksi dengan menu virtual atau bermain game. Salah satu contohnya Kinect Sports : Boxing, didalam game tersebut tidak terdapat tampilan pengukuran kecepatan dan kekuatan pukulan.
Dari permasalahan yang ada maka diusulkan sebuah aplikasi yang dapat menghitung kecepatan dan kekuatan sebuah pukulan menggunakan teknologi sensor Kinect. Perhitungan kecepatan dan kekuatan pukulan menggunakan rangkaian rumus menghitung kecepatan dan Energi Kinetik. Kemudian nilai yang dihasilkan dari perhitungan tersebut dijadikan parameter performa saat melakukan latihan pukulan, lalu nilai performa akan dibuat peringkat dengan cara membandingkan setiap nilai tertinggi yang telah dibuat pada latihan sebelumnya agar dapat ditemukan nilai tertinggi yang baru.
Halaman
ABSTRAK...vii
KATA PENGANTAR ... viii
DAFTAR ISI ... x
DAFTAR GAMBAR ... xiv
DAFTAR TABEL ... xvii
DAFTAR LAMPIRAN ... xviii
BAB I PENDAHULUAN ... 1
1.1 LATAR BELAKANG ... 1
1.2 PERUMUSAN MASALAH ... 3
1.3 BATASAN MASALAH ... 3
1.4 TUJUAN ... 4
1.5 SISTEMATIKA PENULISAN ... 5
BAB II LANDASAN TEORI ... 7
2.1 Menghitung Kecepatan Menggunakan Kinect ... 7
2.2 Energi Kinetik ... 7
2.3 Bagian Tubuh Manusia ... 8
2.4 Microsoft Xbox Kinect ... 10
2.5 Microsoft Kinect SDK ... 12
2.6 Bahasa Pemograman C# ... 14
2.7 UML ... 15
BAB III ANALISIS DAN PERANCANGAN SISTEM ... 17
3.1.2 Mengukur Kekuatan Pukulan ... 19
3.1.3 Spesifikasi Perangkat Lunak ... 21
3.1.4 Inisialisasi Kinect ... 22
3.1.5 Mendeteksi Objek dan Drawing User ... 23
3.1.6 Menampilkan Video Stream dan Depth Stream ... 27
3.1.7 Melakukan Pengaturan User Joint ... 28
3.2 Model Pengembangan Sistem... 30
3.3 Use Case Diagram Aplikasi Virtual Punch Training ... 31
3.4 Activity Diagram ... 31
3.4.1 Activity Diagram untuk Use Case Memilih Options ... 31
3.4.2 Activity Diagram untuk Use Case Melakukan Training ... 33
3.4.3 Activity Diagram untuk Use Case Menyimpan Hasil Training ... 34
3.5 Sequence Diagram ... 35
3.5.1 Sequence Diagram Memilih Options ... 35
3.5.2 Sequence Diagram Melakukan Training ... 36
3.5.3 Sequence Diagram Menyimpan Hasil Training... 37
3.6 Class Diagram ... 37
3.6.1 Class Diagram Main Menu ... 38
3.6.2 Class Diagram Virtual Punch Training ... 39
3.6.3 Class Diagram HoverButton ... 40
3.6.4 Class Diagram Options ... 40
3.6.5 Class Diagram Runtime ... 41
3.6.8 Class Diagram SolidColorBrush ... 42
3.6.9 Class Diagram Hitung Performa... 43
3.6.10Class Diagram Score ... 43
3.7 Desain User Interface ... 44
3.7.1 Desain User Interface Form Menu Utama ... 44
3.7.2 Desain User Interface Form Training ... 45
3.7.3 Desain User Interface Form Options ... 45
3.7.4 Desain User Interface Form High Score... 46
3.7.5 Desain User Interface Form Preview Result... 46
BAB IV IMPLEMENTASI SISTEM DAN EVALUASI ... 48
4.1 Implementasi Sistem ... 48
4.1.1 Instalasi dan Kebutuhan Perangkat ... 48
4.2 Penjelasan Hasil Implementasi ... 50
4.2.1 Form Menu Utama ... 50
4.2.2 Form Settings ... 51
4.2.3 Form Play ... 51
4.2.4 Form Hasil Latihan ... 52
4.2.5 Form High Score ... 52
4.3 Uji Coba Fungsionalitas Aplikasi dan Pembahasan ... 53
4.3.1 Proses Mendeteksi User ... 53
4.3.2 Proses Navigasi Menu ... 54
4.3.3 Proses Mengubah Settings ... 54
4.3.6 Proses Menghitung Kekuatan Pukulan ... 58
4.3.7 Proses Menampilkan Grafis Latihan ... 59
4.3.8 Proses Menampilkan Nilai Tertinggi ... 60
4.4 Evaluasi... 61
BAB V PENUTUP ... 64
5.1 Kesimpulan ... 64
5.2 Saran ... 64
DAFTAR PUSTAKA ... 66
LAMPIRAN ...67
Lampiran 1. Biodata Penulis Dan Riwayat Pendidikan ... 67
Halaman
Gambar 2.1 Jarak threshold ... 7
Gambar 2.2 Human Segments ... 9
Gambar 2.3 Joints dan Orientation pada Kinect ... 12
Gambar 2.4 Arsitektur Kinect ... 14
Gambar 3.1 Mengukur Kecepatan Jab ... 19
Gambar 3.2 Mengukur Kecepatan Jab 2 ... 19
Gambar 3.3 Flowchart Inisialisasi Kinect ... 22
Gambar 3.4 Flowchart RuntimeFrameReady ... 24
Gambar 3.5 Flowchart DrawPoint ... 25
Gambar 3.6 Flowchart pendeteksian kecepatan dan hantaman ... 26
Gambar 3.7 Flowchart ColorImageReady ... 27
Gambar 3.8 Flowchart DepthImageReady ... 28
Gambar 3.9 Flowchart ScaleJoint ... 29
Gambar 3.10 Flowchart ScaledPosition ... 29
Gambar 3.12 Use Case Diagram Aplikasi Virtual Punch Training ... 31
Gambar 3.13 Activity Diagram untuk Use Case Memilih Options ... 32
Gambar 3.14 Activity Diagram untuk Use Case Melakukan Training ... 33
Gambar 3.15 Activity Diagram untuk Use Case Menyimpan Hasil Training ... 34
Gambar 3.16 Sequence Diagram Memilih Options ... 35
Gambar 3.17 Sequence Diagram Melakukan Training ... 36
Gambar 3.18 Sequence Diagram Menyimpan Hasil Training ... 37
Gambar 3.21 Class Diagram Virtual Punch Training ... 39
Gambar 3.22 Class Diagram HoverButton ... 40
Gambar 3.23 Class Diagram Options ... 40
Gambar 3.24 Class Diagram Runtime ... 41
Gambar 3.25 Class Diagram RuntimeData ... 41
Gambar 3.26 Class Diagram BitmapSource ... 42
Gambar 3.27 Class Diagram SolidColorBrush ... 42
Gambar 3.28 Class Diagram Hitung Performa... 43
Gambar 3.29 Class Diagram Score ... 43
Gambar 3.30 Desain User Interface Form Menu Utama ... 44
Gambar 3.31 Desain User Interface Form Training ... 45
Gambar 3.32 Desain User Interface Form Options ... 46
Gambar 3.33 Desain User Interface Form High Score... 46
Gambar 3.34 Desain User Interface Form Preview Result... 47
Gambar 4.1 Form Menu Utama ... 50
Gambar 4.2 Form Settings ... 51
Gambar 4.3 Form Play ... 51
Gambar 4.4 Form Hasil Latihan ... 52
Gambar 4.5 Form High Score ... 52
Gambar 4.6 Proses pendeteksian User ... 54
Gambar 4.7 Proses navigasi Menu ... 54
Gambar 4.8 Uji Coba Settings ... 55
Halaman
Tabel 2.1 Persentase berat anggota tubuh ... 9
Tabel 2.2 Persentase rata-rata berat anggota tubuh ... 9
Tabel 4.1 Deskripsi Tombol ... 50
Tabel 4.2 Uji Coba Pendeteksian User ... 53
Tabel 4.3 Uji Coba Settings ... 55
Tabel 4.4 Keluaran Kecepatan Pukulan ... 57
Tabel 4.5 Uji Coba Menghitung Kecepatan Pukulan... 57
Tabel 4.6 Keluaran Kekuatan Pukulan... 58
Tabel 4.7 Uji Coba Menghitung Kekuatan Pukulan ... 58
1 BAB I PENDAHULUAN
1.1 LATAR BELAKANG
Bill Gates, salah satu pemilik dan pendiri perusahaan raksasa didunia, Microsoft, menjawab tantangan dan impiannya bahwa “sebuah mesin permainan dimana kita bisa mengambil bat dan mengayunkannya atau mengambil raket tenis dan mengayunkan raket tersebut” (Webb and Ashley, 2012) dengan membuat sebuah alat bernama Kinect Sensor (Kinect). Kinect sendiri dibuat khusus oleh Microsoft untuk menjadi sebuah alat pengendali pada konsol game, Microsoft Xbox 360. Kinect merupakan video recognition sensor yang terdiri atas 3 kamera dan 4 mic-array, sehingga memungkinkan user untuk berinteraksi dengan game Xbox 360 tanpa menggunakan joystik (Xbox 360 Controller). Kinect dapat digunakan dengan sangat mudah, cukup berdiri atau duduk di depan Kinect selanjutnya Kinect akan mendeteksi seluruh gerakan tubuh user selama dalam jangkauan kamera Kinect yang jarak optimumnya antara 1.2 meter sampai 3.5 meter.
seberapa kuat pukulan user dan bagaimana performa kekuatan user dalam melakukan pukulan.
Dari kekurangan game tersebut maka akan dikembangkan sebuah aplikasi yang dapat menghitung dan menampilkan kekuatan pukulan ke objek target. Sehingga dapat diketahui seberapa kuat tenaga pukulan dan bagaimana performa kekuatan dalam melakukan gerakan pukulan. Untuk dapat menghitung kekuatan pukulan, maka diperlukan beberapa rangkaian rumus fisika, data masukan yang dibutuhkan berupa berat badan user dan kecepatan gerakan tangan dalam melakukan pukulan ke arah target, agar diperoleh data kecepatan pukulan dan tenaga pukulan. Selanjutnya user akan diberi nilai berdasar kekuatan pukulan, dan nilai tersebut akan dikumpulkan untuk waktu tertentu agar bisa dibuat peringkat, sehingga user dapat melihat berapa rekor nilainya untuk setiap ronde.
1.2 PERUMUSAN MASALAH
Sesuai dengan latar belakang di atas, ruang lingkup permasalahan yang akan diselesaikan adalah sebagai berikut :
a. Bagaimana membuat sistem yang dapat menghitung kecepatan dan kekuatan pukulan dari user.
b. Bagaimana membuat sebuah aplikasi yang dapat menerapkan cara menghitung dengan penerapan Energi Kinetik berdasarkan masukan dari user menggunakan Kinect.
c. Bagaimana membuat aplikasi yang dapat menampilkan performa user dalam melakukan latihan pukulan berdasarkan parameter kekuatan pukulan.
1.3 BATASAN MASALAH
Agar tujuan tugas akhir ini menjadi lebih fokus dengan harapan untuk memperoleh hasil yang maksimal, maka perlu adanya batasan masalah sebagai berikut :
1. Sensor yang digunakan dalam aplikasi ini adalah Microsoft Xbox 360 Kinect.
2. Pukulan yang dimaksud adalah pukulan lurus ke arah sensor Kinect, dan user menghadap ke Kinect.
3. Tidak membahas peraturan Tinju.
4. Aplikasi yang dibuat hanya untuk perorangan, tidak dapat digunakan untuk lebih dari satu orang secara bersamaan.
Kinect hanya dapat mendeteksi gerakan user dari arah depan. Adanya delay dalam Runtime Tracking dan Depth Tracking dikarenakan Frame-rate Per Second yang rendah, kurang lebih 24FPS dan kamera masih menggunakan low definiton.
6. Rumus perhitungan yang dipakai adalah penerapan dari perhitungan Energi Kinetik.
7. Target pukulan berupa tampilan virtual.
8. Performa dan daya tahan yang dimaksud adalah berdasarkan parameter kekuatan pukulan.
9. Aplikasi ini dibuat menggunakan Microsoft Kinect SDK v1.7 dan menggunakan Visual Studio 2010 bahasa pemograman C#.
1.4 TUJUAN
Beberapa tujuan dalam tugas akhir ini adalah sebagai berikut :
1. Menerapkan rumus fisika untuk membaca kecepatan dan tenaga pukulan user menggunakan Kinect dan menerapkan rumus tersebut kedalam sebuah aplikasi.
2. Menghasilkan aplikasi yang menerapkan rumus fisika yang sudah ditentukan agar dapat digunakan dalam berbagai bidang misal olahraga tinju sebagai alat ukur tenaga pukulan dari atlit atau sebagai alat ukur performa pukulan atlit tinju saat melakukan latihan.
1.5 SISTEMATIKA PENULISAN
Sistematika penulisan tugas akhir yang berjudul “Aplikasi Virtual Punch Training Menggunakan Microsoft Xbox Kinect” sebagai berikut:
BAB I : PENDAHULUAN
Bab ini menjelaskan gambaran umum penulisan yang berisi latar belakang masalah, perumusan masalah, batasan masalah, tujuan, dan keterangan mengenai sistematika penulisan.
BAB II : LANDASAN TEORI
Bab ini akan menjelaskan tentang teori mencari kecepatan gerak sebuah objek menggunakan Kinect, kemudian menghitung tenaga gerakan tersebut menggunakan parameter energi kinetik, menjelaskan tentang berat bagian tubuh manusia, penjelasan tentang Kinect beserta SDKnya, serta pembahasan tentang bahasa pemograman C# dan UML.
BAB III : PERANCANGAN SISTEM
Bab ini menjelaskan mengenai analisis permasalahan, model perancangan sistem, diagram blok Virtual Punch Training, bagaimana mengukur kecepatan jab, mengukur kekuatan pukulan, spesifikasi perangkat lunak, use case diagram aplikasi Virtual Punch Training, Activity diagram dari aplikasi Virtual Punch Training, sequence diagram aplikasi Virtual Punch Training, class diagram aplikasi Virtual Punch Training dan desain input-output dari aplikasi Virtual Punch Training,
BAB IV : IMPLEMENTASI SISTEM DAN EVALUASI
program Virtual Punch Training dan hasil implementasi dari program, serta melakukan pengujian terhadap aplikasi Virtual Punch Training yang telah dibuat beserta pengujian terhadap kemampuan Kinect apakah dapat menyelesaikan permasalahan yang dihadapi sesuai dengan yang diharapkan.
BAB V : PENUTUP
7
BAB II
LANDASAN TEORI
2.1 Menghitung Kecepatan Menggunakan Kinect
Untuk menghitung kecepatan menggunakan Kinect dibutuhkan sebuah masukan berupa posisi objek dan waktu yang ditempuh objek. (Catuhe, 2012 dan Microsoft, 2012). Nilai masukan dapat diperoleh dari Runtime Tracking atau Depth Tracking. Cara mendapatkan masukan tersebut dengan membuat sebuah threshold. Titik U sebagai posisi dimana user berdiri dan titik K adalah posisi Kinect, sedangkan titik U1 sebagai marker awal pukulan dan U2 sebagai marker akhir dari pukulan. Jarak antara titik U – K adalah 1,5 meter sedangkan jarak titik U1 – U2 adalah 50 cm.
Jarak optimal dan hasil tangkapan terbaik pada Kinect adalah sejauh 1,2 meter sampai 3 meter (Catuhe, 2012), oleh karena itu akan digunakan setengah dari jarak optimal tersebut agar Kinect berfungsi dengan normal sehingga mendapatkan hasil terbaik dan optimal kecepatan pukulan dari tangan user.
Gambar 2.1 Jarak threshold
2.2 Energi Kinetik
tersebut. Dikarenakan bentuk energi yang terlalu banyak maka secara umum energi dapat didefinisikan sebagai kapasitas sebuah benda untuk melakukan usaha.
Energi Kinetik merupakan energi yang dimiliki benda karena gerakannya. Dapat juga didefinisikan sebagai usaha yang dibutuhkan untuk menggerakkan suatu benda dengan massa tertentu dari posisi diam sampai pada kecepatan tertentu.
Dalam fisika, energi kinetik biasa dituliskan dengan persamaan berikut
...(1)
Dimana Energi Kinetik (Ek) adalah setengah dari massa benda dikalikan dengan kuadrat kecepatan benda tersebut. Willem's Gravesande telah melakukan percobaan untuk membuktikan rumus tersebut dengan cara menjatuhkan benda kedalam tanah liat dari hasil percobaan tersebut dia menyimpulkan bahwa kedalaman dari lubang tanah liat yang dihasilkan benda yang jatuh tersebut berbanding lurus dengan kuadrat kecepatan.
Energi Kinetik memiliki satuan internasional yaitu Joule dan dilambangkan dengan kapital J, atau bisa juga ditulis Newton meter (N.m) (Zainuri, 2007)
Karena setiap benda yang bergerak memiliki energi kinetik, maka nilai dari energi kinetik tersebut yang akan digunakan untuk merepresentasikan kekuatan sebuah pukulan.
2.3 Bagian Tubuh Manusia
berdasarkan hasil studi de Leva mengemukakan bahwa tubuh manusia terbagi atas beberapa bagian dan memiliki berat seperti tabel berikut:
Gambar 2.2 Human Segments
Tabel 2.1 Persentase berat anggota tubuh (ExRx, 2013) Percentages of Total Body Weight
Segment Males Females Average
Head & Neck 6.94 6.68 6.81 Trunk 43.46 42.58 43.02 Upper Arm 2.71 2.55 2.63 Forearm 1.62 1.38 1.5
Hand 0.61 0.56 0.585
Thigh 14.16 14.78 14.47
Shank 4.33 4.81 4.57
Foot 1.37 1.29 1.33
lalu jika dibuat tabel rata-rata maka hasilnya sebagai berikut:
Tabel 2.2 Persentase rata-rata berat anggota tubuh (ExRx, 2013) de Leva's Segment Weight data
Segment Quantity Percent Extension
Head 1 6.810 6.81
Trunk 1 43.020 43.02
Total Arm 2 4.715 9.43
Total Leg 2 20.370 40.74
Total Percent: 100
Dikarenakan perbedaan penamaan antara massa dan berat, apabila dalam ilmu fisika massa merupakan berat dalam ilmu biologi ataupun masyarakat umum dimana satuannya sama-sama gram atau Kilogram. Maka untuk selanjutnya penyebutan massa dan berat adalah memiliki maksud yang sama hanya berbeda bidang studinya saja.
2.4 Microsoft Xbox Kinect
Microsoft Xbox 360 Kinect atau biasa disebut Kinect, pada awalnya memiliki nama Project Natal. Kinect adalah produk dari Microsoft yang memperkenalkan teknologi motion gaming sebagai fitur utamanya. Kinect membuat pemain dapat berinteraksi dengan konsol Xbox 360 tanpa bantuan game controller. Menggunakan Kinect, pemain dapat bermain Xbox 360 cukup hanya dengan menggunakan gerakan anggota tubuhnya.
Teknologi Kinect diciptakan dengan tujuan untuk memperluas peminat konsol Xbox 360 diluar batas kalangan gamer. Saat ini Kinect bersaing ketat dengan Playstation Move milik Sony dan Wii MotionPlus milik Nintendo. Kinect pertama kali dirilis pada tanggal 4 November 2010 di wilayah USA.
Kinect dibuat berdasarkan sistem software dari developer Rare yang merupakan bagian dari Microsoft Game Studios. Sedangkan teknologi kamera yang digunakan oleh Kinect dibuat dari developer Israel, PrimeSense.
Sensor ini dapat mengenali sampai enam orang sekaligus, namun hanya dua pemain berstatus aktif yang dapat dideteksi gerakannya oleh Kinect. Depth Sensor terdiri dari sebuah proyektor Infra-Red (IR) yang dikombinasikan dengan sensor monokrom CMOS. Inilah yang dapat membuat Kinect melihat dalam bentuk 3D dalam keadaan cahaya apapun. Kalkulasi jarak antara obyek yang ditangkap dengan Kinect diperoleh berdasarkan sinar IR tersebut. Semakin pendek jaraknya, maka semakin bersinar poin yang ditangkap sensor. Jarak tangkap Depth Sensor dapat diatur. Kinect mampu mengkalibrasikan sensor secara otomatis berdasar pola permainan berada, termasuk benda-benda yang berada disekitar pemain.
Inovasi utama dari Kinect adalah kemampuannya yang lebih maju dalam mengenali wajah, gerakan dan suara. Kinect menghasilkan video dengan 30Hz frame rate. Dengan video stream RGB pada VGA yang beresolusi 11-bit (640 x 480 pixel dengan tingkat sensivitas 2048). Sensor memiliki daerah pandang angular dengan sudut 57 derajat pada bidang horizontal dan 43 derajat pada bidang vertikal. Sensor ini juga dapat dimiringkan hingga 27 derajat ke atas ataupun ke bawah.
Kinect mampu menangkap dan mendeteksi gerakan tubuh secara akurat, pemain hanya menggunakan tubuh untuk berinteraksi dengan dashboard konsol Xbox 360, bermain game, bahkan untuk mengakses fitur-fitur Xbox Live.
Mekanisme kerja Kinect menangkap dan mengenali pergerakan tubuh dari pemain adalah sebagai berikut:
1. Posisi pemain harus menghadap Kinect terlebih dahulu.
kepala, bahu tengah, bahu kanan, bahu kiri, siku kanan, siku kiri, pergelangan tangan kanan, pergelangan tangan kiri, tangan kanan, tangan kiri, tulang punggung, pinggul tengah, pinggul kanan, pinggul kiri, pinggul tengah, lutut kanan, lutut kiri, pergelangan kaki kanan, pergelangan kaki kiri, kaki kanan dan kaki kiri.
3. Joint yang tertangkap oleh sensor tadi dikonversi menjadi titik koordinat 3D (x,y,z) bertipe float. Sehingga setiap pemain melakukan gerakan, maka titik koordinat dari joint yang bersangkutan juga turut berubah pula. Sumbu x merepresentasikan gerakan pemain secara horizontal, sumbu y merepresentasikan gerakan pemain secara vertikal, sumbu z merepresentasikan jauh dekatnya posisi pemain dari Kinect.
Gambar 2.3 Joints dan Orientation pada Kinect (Webb and Ashley, 2012 dan Catuhe,2012)
2.5 Microsoft Kinect SDK
kemampuan yang ditawarkan oleh perangkat Microsoft Kinect yang terhubung ke komputer dengan OS Windows 7.
SDK ini dilengkapi driver, API untuk raw sensor streams, skeletal tracking, dokumentasi instalasi dan resource lainnya. SDK ini juga menyediakan kemampuan-kemampuan Kinect bagi para developer yang akan membuat aplikasi dengan C++, C# maupun Visual Basic dengan menggunakan Microsoft Visual Studio 2010.
SDK ini mencakup beberapa fitur diantaranya: 1. Raw Sensor Streams
Akses ke raw data stream dari depth sensor, color camera sensor dan empat microphone array memungkinkan developer untuk membangun proyek mereka menggunakan low-level stream yang dihasilkan oleh Kinect.
2. Skeletal Tracking
Kemampuan untuk melacak gambar kerangka satu atau dua orang yang bergerak dalam bidang Kinect sehingga mudah untuk membuat aplikasi berbasis gerakan.
3. Kemampuan audio yang canggih
Kemampuan pemrosesan audio yang canggih termasuk acoustic noise suppression dan echo cancellation, beam formation untuk mengidentifikasi sumber suara dan terintegrasi dengan Windows Speech Recognition API. 4. Contoh kode dan dokumentasi
5. Instalasi mudah
Instalasi SDK berlangsung cepat, tidak memerlukan konfigurasi yang rumit dan ukuran installer kurang dari 300MB.
Kinect SDK memiliki arsitektur sebagai berikut, agar aplikasi yang dibuat menggunakan SDK bisa berkomunikasi dengan Kinect. (Microsoft, 2012).
Gambar 2.4 Arsitektur Kinect
2.6 Bahasa Pemograman C#
satu bahasa pemrograman yang mendukung .NET programming melalui Visual Studio.
C# didasarkan pada bahasa pemrograman C++. C# juga memiliki kemiripan dengan beberapa bahasa pemrograman seperti Visual Basic, Java, Delphi dan tentu saja C++. C# memiliki kemudahan syntax seperti Visual Basic, dan tentu saja ketangguhan seperti Java dan C++. Kemiripan-kemiripan ini tentunya memudahkan programmer dari berbagai latar belakang bahasa pemrograman tidak perlu waktu yang lama untuk menguasainya, karena bagaimanapun juga C# lebih sederhana dibandingkan bahasa-bahasa seperti C++ dan Java.
C# didesain oleh program designer dari Microsoft, Anders Hajlsberg. Sebelum bekerja pada Microsoft, Anders bekerja di borland, tempat dia menulis Pascal compiler. Sebelum mengembangkan C#, Anders mengetahui berbagai macam kekurangan pada bahasa C++, Delphi, Java, dan Smaltalk, karena itu Anders menciptakan bahasa C# yang lebih tangguh. Hal ini juga menjelaskan mengapa C# memiliki kemiripan dengan beberapa bahasa tersebut dan menjadi salah satu alasan mengapa C# memiliki lebih banyak nilai tambah apabila digunakan untuk mengembangkan aplikasi Kinect menggunakan SDK milik Microsoft dibandingkan menggunakan bahasa C++ ataupun VB.Net. (Microsoft, 2013).
2.7 UML
disebut use case. Juga mengembangkan sebuah metode untuk perancangan sistem yang disebut Object Oriented Software Enginnering (OOSE) yang berfokus pada analisis. Booch, Rumbough, dan Jacobson biasa disebut dengan tiga sekawan (tree amigos). Semuanya bekerja di Rational Software Corporation dan berfokus pada standarisasi dan perbaikan ulang UML.
BAB III
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis
Punch training merupakan bentuk latihan fisik dimana dilakukan gerakan memukul dengan cara mengepalkan tangan lalu menghantamkannya ke sebuah
sasaran. Punch termasuk gerakan pertahanan yang digunakan untuk memberi jarak antara diri sendiri dengan musuh atau lawan, sehingga terdapat jeda waktu
untuk melarikan diri ataupun memberi serangan lanjutan. Gerakan punch biasanya
dipakai dalam beberapa seni beladiri ataupun olahraga petarung. Salah satu
contohnya adalah tinju.
Jab adalah contoh dari gerakan paling dasar dari sebuah punch, yaitu dengan mengepalkan tangan dan memukul lurus kedepan sejajar dengan dada
sampai tangan benar-benar lurus, jab dapat dilakukan dengan cepat dan memiliki
efek yang cukup besar untuk melumpuhkan target sementara. Biasanya jab
digunakan untuk membuat pengalih perhatian, bertahan ataupun membuat jarak.
Kekuatan pukulan seorang atlit tinju atau siapapun yang melakukan pukulan
dapat dilihat dari kekuatannya saat melakukan jab dimana kekuatan jab ditentukan
oleh beberapa faktor diantaranya berat tangan si pemukul dan kecepatan tangan
saat melakukan jab. Sehingga semakin cepat gerakan tangan dan semakin berat
tangan si pemukul maka akan memiliki jab yang lebih bertenaga daripada yang
kecepatan pukulannya pelan tetapi tangannya berat atau sebaliknya.
Sehingga untuk melihat kekuatan jab dapat menggunakan Kinect sebagai
yang dihasilkan oleh Kinect. Untuk menghitung berat tangan dari pemukul akan
menggunakan rumus segmen tubuh milik de Leva yaitu berat satu tangan manusia
adalah 4,715 persen dari berat tubuh keseluruhan. Kemudian untuk mengukur
kecepatan tangan saat melakukan jab punch akan menggunakan Kinect, dimana
Kinect sudah memiliki kemampuan untuk mengukur jarak dengan menggunakan
Depth-Sensor, Depth-Sensor bekerja menggunakan Infrared-beam dengan
memanfaatkan waktu pantulan dari cahaya Infrared, semakin cepat pantulan cahaya Infrared ditangkap oleh Kinect maka semakin dekat objeknya dengan Kinect, sehingga untuk menentukan jarak suatu objek menjadi lebih akurat.
Terdapat pula Runtime-Tracking yang berfungsi untuk mendeteksi posisi tubuh seperti tangan, kepala, kaki, badan, dan lainnya.
Dari hasil perhitungan tersebut nantinya akan dimunculkan sebuah grafik
kepada user sehingga user dapat mengetahui seberapa kuat tenaga jab yang dia lakukan dan untuk mengukur performa kekuatan pukulan saat melakukan training
akan diberikan sebuah penghitung waktu dan batas pukulan tertentu sebagai
standar training yang harus dilewati, dimana standar tersebut dapat dimasukkan secara manual.
3.1.1 Mengukur Kecepatan Jab
Untuk mengukur kecepatan Jab user harus berdiri di depan menghadap Kinect seperti gambar 3.1, dimana X1 adalah jarak 0 cm yang akan ditampilkan
oleh Kinect, jarak ini didapat oleh kemampuan Depth-Sensor milik Kinect,
memulai perhitungan kecepatan apabila user tidak berada di area X2, area X2 ini
nantinya dapat ditentukan jaraknya didalam program yang akan dibuat.
Gambar 3.1 Mengukur Kecepatan Jab
Setelah user berada di area X2 untuk dapat dilakukan perhitungan kecepatan
[image:30.595.215.411.139.249.2]maka user harus melakukan gerakan Jab lurus ke arah Kinect seperti gambar dibawah.
Gambar 3.2 Mengukur Kecepatan Jab 2
Kinect yang telah melakukan tracking terhadap tangan akan mencatat
perubahan jarak dan waktu tempuh tangan dari X2 ke X3. Sehingga dari waktu
tempuh tersebut akan dibagi dengan jarak dari X2 ke X3, maka ditemukanlah
sebuah variabel kecepatan v, dimana v ini disimpan kedalam memori aplikasi dan
nantinya akan digunakan untuk perhitungan kekuatan pukulan.
3.1.2 Mengukur Kekuatan Pukulan
Untuk pengukuran kekuatan pukulan akan digunakan akan menggunakan
dikalikan kuadrat kecepatan. Pertama dibutuhkan masukan massa, massa
merupakan bobot yang dimiliki suatu benda atau objek, dikarenakan massa yang
akan dihitung adalah hanya massa sebuah tangan maka akan digunakan tabel
segmentasi tubuh manusia oleh de Leva, dimana sebuah tangan memiliki bobot
4,715 persen dari keseluruhan tubuh manusia. Massa tersebut didapatkan dari
masukan massa tubuh user kedalam program. Dimana massa tersebut akan
menjadi variable masukan M, kemudian masukan M akan dicari massa tangannya
(MT) dengan rumus M x 4,715 / 100, hasil dari perkalian tersebut akan menghasilkan massa tangan dengan variabel MT, sehingga rumus Energi Kinetik
berubah menjadi Ek = ½ MT.v2.
Setelah variabel MT berisi nilai selanjutnya adalah mengkuadratkan variabel
kecepatan v yang telah didapat sebelumnya. Hasil dari pengkuadratan v akan
dikalikan dengan MT, kemudian hasil perkalian tersebut akan dikalikan dengan
setengah maka akan di dapat sebuah persamaan akhir Ek = ½ MT.V, nilai tersebut
yang akan dijadikan variabel Kekuatan (Ek) di dalam program.
Sedangkan untuk pencatatan performa akan menggunakan sistem nilai
tertinggi, dimana nilai tersebut didapat dari nilai variabel Ek yang telah ditemukan
sebelumnya, kemudian Ek yang dihasilkan oleh Jab selama latihan akan dicatat
tenaga pukulan terkuat dan pukulan terlemah, selanjutnya disimpan sebagai rekor
pribadi. Apabila nilai dalam satu sesi lebih tinggi dari sesi sebelumnya maka nilai
tertinggi tersebut akan menggantikan nilai yang sebelumnya. Sehingga setiap user
melakukan training dapat meningkatkan performa kekuatan pukulan dengan
3.1.3 Spesifikasi Perangkat Lunak
Dari hasil analisis diatas maka dibutuhkan sebuah aplikasi yang dapat
melakukan hal berikut :
A. Ketika user berada dalam jangkauan Kinect maka tampilan dilayar harus
menampilkan tubuh user secara virtual.
B. Dapat menangkap masukan gerakan user dari Kinect. Dengan cara
melakukan tracking terhadap kedua tangan dan memberi ID pada setiap tangan. Sehingga apabila setiap ID tersebut mengenai triger dalam program
akan menjalankan aksi sesuai triger yang ada, misal memillih menu.
C. Menggunakan masukan tersebut untuk menghitung kecepatan jab dari user
menggunakan teknik perpindahan objek. Yaitu dengan cara menghitung
jarak dari titik awal ke titik akhir pergerakan kemudian dihitung dengan
waktu perpindahan.
D. Menghitung kekuatan jab menggunakan cara yang sudah ditentukan
dibagian analisis.
E. Menggunakan nilai dari kekuatan jab sebagai parameter penilaian saat
melakukan training.
F. Setiap hasil training akan dibandingkan dengan nilai latihan sebelumnya dan memberikan peringkat setiap sesi training.
3.1.4 Inisialisasi Kinect
Prosedur inisialisasi digunakan untuk melakukan inisialisasi awal guna
mempersiapkan Kinect yang akan dipakai. Terdapat beberapa proses inisialisasi
diantaranya :
A. Proses inisialisasi runtime Kinect yang terdiri atas 3 sub-proses. Dimana proses tersebut berperan untuk mempersiapkan Kinect yang akan digunakan
B. Sub-proses inisialisasi color image berperan untuk menginisialisasi sensor
live feed camera atau RGB kamera pada Kinect.
C. Sub-proses inisialisasi depth frame berperan untuk menginisialisasi 3D
depth sensor pada Kinect.
D. Sub-proses inisialisasi runtime frame berperan untuk menginisialisasi
runtime tracking pada Kinect.
[image:33.595.92.505.225.639.2]Prosedur inisialisasi Kinect dapat dilihat pada Gambar 3.3 :
3.1.5 Mendeteksi Objek dan Drawing User
Prosedur yang dipakai untuk mendeteksi objek dan menggambar user adalah sebagai berikut :
A. Prosedur RuntimeFrameReady digunakan untuk mendeteksi user runtime
dengan cara menggambar titik-titik pada persendian (joint) tubuh
A.1 Proses clear image berperan dalam melakukan refresh pada
komponen canvas image pada WPF-form, berguna agar gambar runtime tidak tertumpuk setiap kali user melakukan pergerakan. A.2 Proses deklarasi variabel bertipe RuntimeFrame berperan untuk
menampung runtime data user.
A.3 Proses penyesuaian runtime dan jumlah maksimal user untuk
membatasi runtime agar tidak mendeteksi runtime lain setelah runtime
pertama terdeteksi. Hal ini bertujuan agar meningkatkan kinerja
aplikasi dalam melakukan pendeteksian user.
A.4 Proses menggambar ellipse digunakan untuk menempelkan gambar ellipse dari form pada setiap runtime joint yang terdeteksi.
A.5 Proses isi ellipse dengan warna agar setiap ellipse yang dibuat
memiliki warna.
Proses yang terjadi pada prosedur RuntimeFrameReady dapat dilihat pada Gambar
Gambar 3.4 Flowchart RuntimeFrameReady
B. Prosedur DrawPoint digunakan untuk menggambar titik-titik pada tubuh
user dan digunakan pada prosedur RuntimeFrameReady. Beberapa proses yang terjadi pada saat DrawPoint antara lain:
B.1 Proses deklarasi variabel scaledJoint berperan untuk menandai joint
pada titik tubuh user.
B.2 Proses deklarasi variabel bertipe ellipse digunakan untuk membuat
ellipse yang nantinya akan ditempelkan pada titik joint dari user. B.3 Proses deklarasi SolidColorBrush digunakan untuk mengisi warna
yang nantinya berperan dalam proses pewarnaan ellipse.
B.4 Proses mengisi width, geight dan opacity dari ellipse digunakan untuk
menentukan ukuran tinggi, lebar serta tingkat transparansi dari ellipse
B.5 Proses menambah ellipse berperan dalam membuat ellipse dengan
atribut parameter yang diatur sebelumnya.
Proses yang terjadi pada prosedur DrawPoint dapat dilihat pada Gambar 3.5.
Gambar 3.5 Flowchart DrawPoint
Flowchart pseudocode berikut digunakan untuk mendeteksi kecepatan pukulan dari user dan mendeteksi adanya hantaman dengan objek virtual yang dibuat.
Penjelasan proses yang terjadi pada pendeteksian kecepatan dan pendeteksian
hantaman dengan objek virtual adalah sebagai berikut :
A. Proses Pendeteksian User
-User berdiri tegak didepan Kinect pada jarak antara 150 - 155 cm.
-User melambaikan tangan kearah Kinect agar Kinect dapat memberikan
ID pada masing-masing tangan.
B. Proses Pendeteksian Tangan
-Tangan harus berada di area tangkapan Kinect, setelah tangan terdeteksi
maka diberikan ID pada masing-masing tangan kemudian diberikan
[image:36.595.92.500.158.550.2]C. Proses Pendeteksian Kecepatan Pukulan
-Tangan yang sudah terdeteksi akan diukur jaraknya.
-Setiap tangan memiliki ID dan counter-timer masing-masing.
-Jika tangan terdeteksi pada jarak 150 cm maka counter-timer akan diatur
ke posisi 00.00.00.000.
-Jika tangan bergerak maju mendekati Kinect sehingga jaraknya kurang
dari 150 cm atau sama dengan 149 cm maka counter-timer akan di Mulai.
-Apabila tangan sudah dekat dengan Kinect dengan jarak tangan kurang
dari 100 cm atau sama dengan 100 cm maka counter-timer akan
dihentikan, mainkan efek hantaman lalu dicatat waktu yang dihasilkan
oleh counter-timer tersebut.
-Hitung waktu yang didapat dari counter-timer dengan cara yang telah
ditentukan dibagian analisis, kemudian catat hasilnya. Hasil tersebut
merupakan kecepatan tangan. Masing-masing nilai dibedakan sesuai ID
[image:37.595.90.514.291.737.2]tangan tersebut.
3.1.6 Menampilkan Video Stream dan Depth Stream
Prosedur yang dipakai untuk menampilkan video stream dan depth stream pada layar adalah sebagai berikut:
A. Prosedur ColorImageReady digunakan untuk menampilkan video stream
yang ditangkap Kinect ke layar.
Proses yang terjadi pada prosedur ColorImageReady antara lain :
A.1 Proses deklarasi variabel bertipe planarImage berperan menampung video output dari kamera RGB Kinect.
A.2 Proses mengisi komponen image pada WPF-form berperan mengisi
image dengan video output dari kamera RGB.
[image:38.595.89.509.301.555.2]Proses yang terjadi pada prosedur ColorImageReady ini dapat dilihat pada
Gambar 3.7
.
Gambar 3.7 Flowchart ColorImageReady
B. Prosedur DepthImageReady digunakan untuk menampilkan depth stream
yang ditangkap Kinect ke layar.
Proses yang terjadi pada prosedur DepthImageReady antara lain :
B.2 Proses mengisi komponen image pada WPF-form berperan mengisi
image dengan depth output dari depth sensor.
[image:39.595.94.507.188.537.2]Proses yang terjadi pada prosedur DepthImageReady ini dapat dilihat pada Gambar 3.8.
Gambar 3.8 Flowchart DepthImageReady
3.1.7 Melakukan Pengaturan User Joint
Prosedur pengaturan user joint digunakan supaya joint yang dideteksi sesuai
dengan posisi dan ukuran user.
A. Prosedur ScaleJoint digunakan untuk mengukur joint pada user.
Proses yang terjadi pada prosedur ScaleJoint adalah sebagai berikut :
A.1 Proses deklarasi JointID yang berfungsi menampung ID dari joint
yang dideteksi.
A.2 Proses mengisi koordinat X dan Y dengan posisi user berperan untuk
menentukan letak koordinat dan posisi user.
A.3 Deklarasi StatusTracking berperan untuk menandai apakah user telah terdeteksi atau belum.
Gambar 3.9 Flowchart ScaleJoint
B. Prosedur ScaledPosition digunakan untuk mengukur posisi user dari layar.
Proses yang terjadi pada prosedur ScaledPosition adalah sebagai berikut :
B.1 Proses deklarasi variabel bertipe float yang berperan untuk menampung titik koordinat dari posisi user.
B.2 Jika nilai posisi user lebih besar dari ukuran canvas maka posisi
dianggap sama dengan ukuran canvas.
B.3 Jika nilai posisi user kurang dari nol maka posisi dianggap sama
dengan nol. Selain itu nilai float posisi user dianggap sama dengan posisi user saat itu.
Proses pada prosedur ScaledPosition dapat dilihat pada Gambar 3.10.
3.2 Model Pengembangan Sistem
Berdasarkan hasil analisis tersebut, maka akan dibuat sebuah pengembangan
aplikasi, dimana proses yang terjadi dalam aplikasi Virtual Punch Training dapat digambarkan sebagai berikut:
M e m a s u k k a n N a m a User M e m a s u k k a n B e ra t B a d a n Gerakan D a ta S k e le ta l J o in t D a ta D e p th -S tre a m Pengolahan Data Depth-Stream dan Skeletal Joint Penentuan Koordinat Tangan dan Tubuh Mencatat perubahan posisi koordinat tangan Menghitung waktu perubahan posisi koordinat tangan Menghitung kecepatan gerakan tangan dengan berat badan Mencatat tenaga
[image:41.595.92.521.198.499.2]pukulan dan waktu pukulan Menyimpan rekor pukulan M e n a m p ilk a n Ha s il Tr a in in g M e n a m p ilk a n G e ra k a n
Gambar 3.11 Blok Diagram Aplikasi
Berikut adalah cara kerja dari aplikasi Virtual Punch Training menggunakan
Microsoft Xbox Kinect:
1. User melakukan interaksi terhadap aplikasi dengan menggunakan gerakan tangan didepan Kinect, dan memilih menu yang tersedia. User juga dapat berinteraksi secara manual dengan mouse dan keyboard.
2. Gerakan interaksi User ditangkap oleh Kinect kemudian data Depth-Stream
dan data Skeletal-Joint dimasukkan kedalam komputer untuk diproses oleh
3. Aplikasi mengolah gerakan interaksi terhadap menu dari user dan
memberikan respon berupa tampilan dari layar, baik berupa tampilan hasil
latihan ataupun tampilan menu latihan.
3.3 Use Case Diagram Aplikasi Virtual Punch Training
Kemampuan sistem untuk berinteraksi dengan user digambarkan dengan
[image:42.595.92.504.279.520.2]use case diagram pada gambar dibawah:
Gambar 3.12 Use Case Diagram Aplikasi Virtual Punch Training
3.4 Activity Diagram
Dari use case yang ada dibutuhkan Activity diagram untuk menjelaskan
proses apa saja yang dilakukan setiap use case.
3.4.1 Activity Diagram untuk Use Case Memilih Options
Activity memilih options dapat digambarkan sebagai berikut. Pertama-tama
terdiri dari beberapa pilihan, lalu user diwajibkan memilih menu options terlebih
dahulu dimana menu ini berisi data penting berupa masukan berat badan user yang akan digunakan untuk menampilkan hasil latihan. User dapat menggerakkan
tangannya kearah tombol options ataupun menggunakan mouse untuk
berinteraksi, setelah tombol dipilih maka form options akan ditampilkan, user diwajibkan mengisi nama dan berat badan menggunakan keyboard dan kemudian
menyimpan data tersebut. Setelah selesai user dapat kembali ke menu utama.
[image:43.595.93.505.313.645.2]Activity Diagram dari use case Memilih Options dapat digambarkan sebagai berikut:
3.4.2 Activity Diagram untuk Use Case Melakukan Training
Activity melakukan training dapat digambarkan sebagai berikut. Pertama-tama sistem akan menampilkan menu uPertama-tama dari aplikasi Virtual Punch Training,
kemudian user memilih menu play, saat menu terpilih maka form play akan
ditampilkan dan memberikan konfirmasi untuk melakukan training apabila user setuju untuk melakukan training maka timer akan berjalan dan user dapat mulai
melakukan gerakan pukulan kearah target sampai waktu habis. Apabila user tidak
setuju maka akan kembali ke menu utama.
Activity Diagram dari use case Melakukan Training dapat digambarkan
[image:44.595.96.505.311.689.2]sebagai berikut:
3.4.3 Activity Diagram untuk Use Case Menyimpan Hasil Training
Activity menyimpan hasil training dapat digambarkan sebagai berikut. Setelah user selesai melakukan training maka akan segera muncul form hasil latihan, disini user dapat mereview setiap pukulan yang dihasilkan selama timer
berjalan. User diwajibkan memilih tombol next untuk kembali ke menu awal dan
hasil training disimpan dalam bentuk nilai yang terbaik saat melakukan training.
Activity Diagram dari use case Melakukan Training dapat digambarkan sebagai berikut:
3.5 Sequence Diagram
Untuk memberikan penjelasan dari masing-masing use case dari aplikasi Virtual Punch Training dibutuhkan sequence diagram yang menggambarkan jalannya suatu proses yang melibatkan obejct atau instance dari suatu class pada
aplikasi Virtual Punch Training. Untuk lebih detail akan dijelaskan sebagai berikut:
3.5.1 Sequence Diagram Memilih Options
Sequence Diagram dari Activity Memilih Options digambarkan sebagai
berikut:
3.5.2 Sequence Diagram Melakukan Training
Sequence Diagram dari Activity Melakukan Training digambarkan sebagai berikut:
3.5.3 Sequence Diagram Menyimpan Hasil Training
Sequence Diagram dari Activity Menyimpan Hasil Training digambarkan sebagai berikut:
Gambar 3.18 Sequence Diagram Menyimpan Hasil Training
3.6 Class Diagram
Berdasarkan perencanaan sistem use case diagram, dibutuhkan class untuk
mendukung jalannya aplikasi. Class Diagram digunakan untuk menampilkan class atau paket yang ada didalam sistem serta relasi antar class tersebut.
Gambar 3.19 Class Diagram Aplikasi Virtual Punch Training
3.6.1 Class Diagram Main Menu
Gambar 3.20 Class Diagram Main Menu
3.6.2 Class Diagram Virtual Punch Training
[image:50.595.90.509.314.651.2]Class Virtual Punch Training merupakan class aplikasi utama yang mengkoordinasikan beberapa operasi. Untuk lebih detail dapat dilihat pada
gambar berikut:
3.6.3 Class Diagram HoverButton
Class HoverButton digunakan untuk melakukan pengecekan apakah tangan user sudah menyentuh Hover Button pada menu utama, class ini juga digunakan untuk menampilkan animasi pada saat user melakukan hovering pada menu
[image:51.595.93.506.220.530.2]utama, serta mengatur durasi hover. Untuk lebih jelasnya lihat gambar berikut:
Gambar 3.22 Class Diagram HoverButton
3.6.4 Class Diagram Options
Class ini digunakan untuk menyimpan data nama user dan berat badan user.
Untuk lebih jelasnya lihat gambar berikut:
[image:51.595.251.397.590.719.2]3.6.5 Class Diagram Runtime
[image:52.595.95.510.163.616.2]Class Runtime digunakan untuk melakukan inisialisasi awal Kinect. Untuk lebih jelasnya lihat gambar berikut:
Gambar 3.24 Class Diagram Runtime
3.6.6 Class Diagram RuntimeData
Class ini digunakan untuk menangkap data runtime user. Untuk lebih jelasnya lihat gambar berikut:
3.6.7 Class Diagram BitmapSource
Class ini digunakan untuk menampilkan bitmap image yang digunakan pada pengambilan gambar pada kamera Kinect. Untuk lebih jelasnya lihat gambar
[image:53.595.93.507.192.661.2]berikut:
Gambar 3.26 Class Diagram BitmapSource
3.6.8 Class Diagram SolidColorBrush
Class ini digunakan untuk mengubah warna pada suatu objek. Untuk lebih jelasnya lihat gambar berikut:
3.6.9 Class Diagram Hitung Performa
Class ini digunakan untuk menghitung kecepatan pukulan user, menghitung kekuatan pukulan dan menyimpan hasilnya. Untuk lebih jelasnya lihat gambar
berikut:
Gambar 3.28 Class Diagram Hitung Performa
3.6.10 Class Diagram Score
Class ini digunakan untuk menginputkan data nilai pukulan dan jumlah
pukulan kedalam grafik kemudian membuat score terbaik. Untuk lebih jelasnya
[image:54.595.92.511.200.692.2]lihat gambar berikut:
3.7 Desain User Interface
Pembuatan tampilan sangat diperlukan agar pengguna dapat berinteraksi
dengan sistem sehingga dibutuhkan perancangan secara detail mengenai tampilan
aplikasi berdasarkan informasi yang ditampilkan pada display.
3.7.1 Desain User Interface Form Menu Utama
Pilihan yang ada pada menu utama terdiri dari Play, High Score, Settings, Quit. Menu Play digunakan untuk memanggil form Training dimana user dapat memulai sesi trainingnya. Menu High Score digunakan agar user dapat melihat
track-record dari hasil training terakhir, melihat berapa score terbaiknya saat melakukan training. Menu Settings berfungsi untuk menginputkan nama dan berat
[image:55.595.91.510.301.631.2]badan user. Menut Quit digunakan untuk keluar dari aplikasi. Perancangan tampilan untuk menu utama dapat dilihat pada gambar berikut.
3.7.2 Desain User Interface Form Training
Form Training adalah form utama dari program Virtual Punch Training, dimana user melakukan sesi training dan berinteraksi dengan objek yang ada didalam sistem. Timer akan berjalan beberapa detik setelah Form Training dibuka
[image:56.595.91.506.224.487.2]dari Menu Utama. Berikut adalah rancangan tampilan dari from training.
Gambar 3.31 Desain User Interface Form Training
3.7.3 Desain User Interface Form Options
Form Options adalah form yang berfungsi untuk mengubah data nama user dan data berat badan user yang dibutuhkan untuk perhitungan aplikasi dan
pencatatan score selama latihan. Terdapat beberapa tombol diantaranya Save Name berfungsi untuk menyimpan nama user. Save Mass berfungsi untuk
Gambar 3.32 Desain User Interface Form Options
3.7.4 Desain User Interface Form High Score
Pada Form High Score akan ditampilkan nilai terbaik saat melakukan training, terdapat beberapa informasi yang akan ditampilkan dalam form ini
diantaranya nomor urut, nama user, pukulan terbaik dari tangan kiri dan kanan, lalu jumlah score selama latihan. Berikut rancangan tampilan form high score.
Gambar 3.33 Desain User Interface Form High Score
3.7.5 Desain User Interface Form Preview Result
selanjutnya dan Home dimana user akan kembali ke menu utama. Kekuatan
adalah nilai dari kekuatan pukulan dan akan ditampilkan dalam 2 grafis yang
berbeda untuk membedakan tangan kanan dan tangan kiri. Pukulan merupakan
jumlah pukulan yang dilakukan selama satu sesi training. Berikut rancangan
[image:58.595.93.504.224.536.2]tampilan dari form preview result.
BAB IV
IMPLEMENTASI SISTEM DAN EVALUASI
4.1 Implementasi Sistem
Tahap ini merupakan pembuatan perangkat lunak yang disesuaikan dengan
rancangan atau desain sistem yang telah dibuat. Aplikasi yang dibuat akan
diterapkan berdasarkan kebutuhan.
Aplikasi Virtual Punch Training ini membutuhkan Kinect sebagai media
untuk menangkap gambar user yang nantinya setiap user melakukan gerakan akan
diproses melalui Desktop ataupun Laptop, setelah itu user dapat melakukan
interaksi dengan tampilan GUI.
Sensor 3-Dimensi yang dimiliki oleh Kinect mampu menangkap setiap
gerakan yang dilakukan oleh user. Gerakan yang dideteksi tersebut diubah
menjadi titik koordinat pada bagian tubuh tertentu secara 3-Dimensi (x,y,z).
Titik-titik koordinat ini memiliki tipe data float. Dari data inilah nantinya komputer
dapat memproses gerakan yang ditangkap oleh Kinect.
4.1.1 Instalasi dan Kebutuhan Perangkat A. Kebutuhan Perangkat Keras
Kebutuhan minimum perangkat keras yang diperlukan untuk menjalankan
aplikasi ini adalah:
- Prosesor Quad Core 2.6 Ghz.
- RAM 4GB
- VGA dedicated 512MB.
- Dedicated USB 2.0 Port.
- Microsoft Kinect for Xbox 360 atau Microsoft Kinect for Windows
B. Kebutuhan Perangkat Lunak
Adapun kebutuhan perangkat lunak yang digunakan dalam pembuatan
aplikasi ini adalah sebagai berikut:
- Sistem Operasi Microsoft Windows 7 Ultimate.
- Microsoft Visual Studio 2010 Ultimate.
- Untuk dokumentasi menggunakan Microsoft Office Word 2007.
- Untuk mengakses Kinect menggunakan SDK Microsoft Kinect.
- .Net Framework 4.0
C. Instalasi Program dan Pengaturan Sistem
Pegembangan aplikasi Virtual Punch Training membutuhkan perangkat
lunak yang telah terinstall, adapun tahapan-tahapan instalasi dan pengaturan
sistem adalah sebagai berikut:
-. Install OS Microsoft Windows 7 Ultimate
-. Install Microsoft Visual Studio 2010 bahasa C#.
4.2 Penjelasan Hasil Implementasi
Setelah kebutuhan sistem terpenuhi langkah selanjutnya adalah
mengimplementasikan rancangan sistem kedalam sebuah aplikasi Virtual Punch
Training.
4.2.1 Form Menu Utama
Form ini pertama kali ditampilkan setelah aplikasi di start. Pada form menu
utama terdapat pilihan-pilihan menu yang dapat dipilih oleh user. Tampilan form
[image:61.595.95.515.321.664.2]menu utama adalah sebagai berikut :
Gambar 4.1 Form Menu Utama
Berikut adalah penjelasan dari masing-masing tombol yang digunakan pada
aplikasi Virtual Punch Training.
Tabel 4.1 Deskripsi Tombol
Menu Deskripsi
Play Berfungsi untuk memanggil form play,
dan user dapat memulai sesi latihannya
High Score Berfungsi untuk menampilkan form
nilai terbaik dari sesi latihan
Settings Berfungsi untuk menampilkan form
pengaturan, dimana dapat mengisi nama dan berat badan user
4.2.2 Form Settings
Form Settings adalah form yang wajib diisi datanya sebelum mulai
melakukan latihan, form ini berfungsi untuk mengubah data nama dan data berat
badan user yang dibutuhkan untuk perhitungan aplikasi dan pencatatan score
selama latihan. Terdapat beberapa tombol diantaranya Save Name berfungsi untuk
menyimpan nama user. Save Mass berfungsi untuk menyimpan berat badan user.
Reset digunakan untuk mengembalikan ke nilai default seperti yang ada digambar
Gambar 4.2 Form Settings
4.2.3 Form Play
Pada form ini user dapat melakukan sesi Punch Training, user dapat
memukul objek virtual yang ditampilkan. Setiap kali pukulan user mengenai
target maka akan diberi poin nilai sesuai hasil perhitungan yang telah ditentukan
sebelumnya. Waktu akan berjalan dan apabila waktu telah habis maka sesi latihan
[image:62.595.93.510.277.493.2]berakhir.
4.2.4 Form Hasil Latihan
Setelah waktu untuk satu sesi berakhir maka akan ditampilkan sebuah form
yang berisi informasi grafik tenaga yang dihasilkan setiap pukulan yang dilakukan
pada sesi tersebut.
Gambar 4.4 Form Hasil Latihan
4.2.5 Form High Score
Pada Form High Score akan ditampilkan nilai terbaik saat melakukan
training, terdapat beberapa informasi yang akan ditampilkan dalam form ini
diantaranya nomor urut, nama user, pukulan terbaik dari tangan kiri dan kanan,
[image:63.595.91.510.200.497.2]lalu jumlah score selama latihan.
4.3 Uji Coba Fungsionalitas Aplikasi dan Pembahasan
Uji coba fungsionalitas aplikasi dan pembahasan dilakukan untuk
mengetahui apakah fungsi-fungsi yang ada pada aplikasi Virtual Punch Training
telah berjalan dengan baik atau tidak. Selain itu juga akan membahas
masalah-masalah yang mungkin masih terdapat pada aplikasi. Adapun fungsi-fungsi yang
akan diujikan adalah sebagai berikut:
4.3.1 Proses Mendeteksi User
Proses ini dilakukan untuk menguji apakah aplikasi dapat mendeteksi user
dengan baik. Pengujian dilakukan dengan cara mendeteksi user yang berdiri tegak
didepan Kinect pada ruangan seluas 2x2 meter dan user berdiri dengan jarak
minimal 1,5 meter di depan Kinect. Hasil uji coba pada tabel berikut
Tabel 4.2 Uji Coba Pendeteksian User Test
Case ID
Tujuan Masukkan Keluaran yang
diharapkan Status
1.
Mendeteksi jarak user dari Kinect dalam ruangan 2x2 meter.
User berdiri tegak didepan Kinect dengan posisi siap.
Jarak user ditampilkan oleh aplikasi. Sesuai 2. Penempatan ID setiap tangan.
User berdiri tegak didepan Kinect dengan posisi siap.
Tampilan sarung tangan tinju pada posisi tangan user.
Sesuai
Pada uji coba ini aplikasi dapat mendeteksi user, namun pendeteksian masih
belum 100% akurat, karena terdapat beberapa kesalahan deteksi saat user
menggerakkan tangannya. Selain itu terdapat juga respond delay gerakan antara
gerakan pointer dengan gerakan user. Hal ini disebabkan oleh keterbatasan sensor
kamera Kinect. Solusi yang dapat diberikan adalah melakukan restart form agar
Gambar 4.6 Proses pendeteksian User
4.3.2 Proses Navigasi Menu
Proses ini dilakukan untuk menguji apakah menu yang terdapat dalam
aplikasi dapat berfungsi sesuai yang diinginkan. Pengujian dilakukan dengan cara
memilih menu dari Play, Settings, Back, Home, Play Again dan Quit. Pada uji
coba ini semua tombol menu dapat dipilih dan bernavigasi ke form yang dituju
dengan semestinya.
Gambar 4.7 Proses navigasi Menu
4.3.3 Proses Mengubah Settings
Proses ini dilakukan untuk menguji apakah menu Settings yang terdapat
dalam aplikasi dapat berfungsi sesuai yang diinginkan. Pengujian dilakukan
terhadap 2 textbox dan 3 button, textbox pertama yaitu textbox nama, dilakukan
pemasukan data berupa text dan number maka number tidak muncul kedalam
textbox, kemudian melakukan uji coba button save nama yang berfungsi untuk
uji coba pada textbox kedua yaitu textbox massa, dilakukan pemasukan data
berupa text dan number maka text tidak muncul kedalam textbox, kemudian
melakukan uji coba save massa yang berfungsi menyimpan masukan pada textbox
massa dan berhasil dengan sukses. Yang terakhir melakukan uji coba pada button
reset yang berfungsi mengembalikan nilai dari nama dan massa ke asal, saat
button di klik maka data nama dan massa tersebut terhapus dengan sukses. Hasil
[image:66.595.92.517.281.684.2]coba pengujian pada tabel berikut.
Tabel 4.3 Uji Coba Settings Test
Case ID
Tujuan Masukkan Keluaran yang
diharapkan Status
1. Mengubah nama
user “wira” Nama user “wira”
Nama user “wira” tampil pada textblock.
Sesuai
2.
Mengubah massa user dengan “55” kilogram
Massa user “55” Massa user “55”
tampil pada textblock Sesuai 3. Menghapus semua data settingan yang ada didalam aplikasi
Klik tombol Reset Nama dan Massa
user dihapus dari aplikasi
Sesuai
4.3.4 Proses Training Session
Proses ini dilakukan untuk menguji apakah fungsi timer, fungsi perhitungan
kekuatan pukulan yang terdapat dalam aplikasi dapat berfungsi sesuai yang
diinginkan. Pengujian dilakukan dengan cara user berdiri didepan Kinect siap
untuk berlatih, kemudian memilih menu yang tampil, saat timer berjalan user
melakukan pukulan kearah target. Pada uji coba ini semua fungsi berjalan sebagai
mana mestinya, tetapi pada pukulan cepat terdapat respond delay pada Kinect dan
aplikasi sehingga terkadang beberapa pukulan tidak terdeteksi dengan akurat
waktu dan tenaganya. Untuk mengatasi hal tersebut jeda antar masing-masing
pukulan harus dibuat lama sekitar 1-2 detik sebelum memukul kembali agar
Kinect dan aplikasi dapat kembali sinkron selama terjadi jeda. Jeda tersebut
biasanya muncul apabila pukulan terlalu intensif, penerangan yang kurang, terlalu
banyak objek dibelakang user baik itu berupa orang ataupun benda, jarak user
terhadap Kinect semakin mendekat tidak sesuai dengan jarak yang sudah
ditentukan yaitu 150 cm. Seperti yang disajikan dalam gambar 4.9.
4.3.5 Proses Menghitung Kecepatan Pukulan
Proses ini berjalan disaat proses Training Session berlangsung, saat salah
satu tangan telah terdeteksi oleh Kinect maka program akan memberi ID pada
tangan tersebut dan membuat sebuah stopwatch, stopwatch tersebut akan mulai
berjalan pada saat tangan yang melakukan pukulan berjarak 150 cm dari Kinect
dan akan berhenti setelah tangan berjarak 100 cm dari Kinect, kemudian waktu
analisa. Pada saat tangan kembali ke posisi awal dengan jarak 150 cm atau lebih
maka stopwatch akan direset. Berikut tabel keluaran kecepatan pukulan:
Tabel 4.4 Keluaran Kecepatan Pukulan
Pukulan Ke-
Waktu Tangan (detik) Kecepatan Tangan (m/s)
Kanan Kiri Kanan Kiri
1 0,18 0,22 2,84 2,29
2 0,40 0,17 1,26 3,03
3 0,25 0,23 1,98 2,21
4 0,22 0,25 2,30 2,02
5 0,32 0,23 1,58 2,16
6 0,19 0,20 2,58 2,45
7 0,16 0,19 3,21 2,67
8 0,12 0,14 4,10 3,47
9 0,15 0,17 3,40 2,92
10 0,19 0,20 2,63 2,70
Pengujian terhadap perhitungan kecepatan dilakukan dengan cara
melakukan pukulan secara bervariasi untuk melihat apakah timer dari stopwatch
berfungsi dengan semestinya. Seperti yang disajikan dalam gambar 4.9. Tabel
[image:68.595.94.543.154.705.2]pengujian sebagai berikut.
Tabel 4.5 Uji Coba Menghitung Kecepatan Pukulan Test
Case ID
Tujuan Masukkan Keluaran yang
diharapkan Status
1. Mendeteksi variasi pukulan di antara 0,5-0.9 detik. Gerakan pukulan tangan dari jarak 150 cm sampai 100 cm, waktu dari stopwatch
- Timer sesuai data masukkan. -Timer Direset -Tidak ada delay pembacaan pukulan.
Ada delay apabila jeda antar pukulan
terlalu cepat,
mengakibatkan data
kecepatan tidak
sesuai masukan dari stopwatch. 2. Mendeteksi variasi pukulan di antara 0,1-0.5 detik. Gerakan pukulan tangan dari jarak 150 cm sampai 100 cm, waktu dari stopwatch
- Timer sesuai data masukkan. -Timer Direset -Tidak ada delay pembacaan pukulan.
Ada delay apabila jeda antar pukulan
terlalu cepat,
mengakibatkan data
kecepatan tidak
4.3.6 Proses Menghitung Kekuatan Pukulan
Proses ini berjalan setelah data dari kecepatan pukulan tersimpan kedalam
memori program. Yaitu dengan memasukkan parameter berupa kecepatan dan
berat tangan yang sudah ditentukan besarannya lalu dikalkulasikan menggunakan
rumus Energi Kinetik. Hasil dari perhitungan tersebut akan disimpan dan
digunakan untuk pembuatan grafis performa latihan serta digunakan untuk
mencari pukulan dengan tenaga terkuat dan tenaga terlemah dalam satu sesi
latihan yang bisa dicapai. Pengujian dilakukan dengan cara mengubah parameter
berat tangan dan melakukan pukulan dengan kecepatan yang bervariasi untuk
melihat apakah perhitungan berjalan sesuai harapan. Seperti yang disajikan dalam
gambar 4.9.
Tabel 4.6 Keluaran Kekuatan Pukulan
Pukulan Ke-
Kecepatan Tangan (m/s) Kekuatan Pukulan (Joule)
Kanan Kiri Kanan Kiri
1 2,84 2,29 10,46 6,82
2 1,26 3,03 2,07 11,91
3 1,98 2,21 5,06 6,35
4 2,30 2,02 6,88 5,31
5 1,58 2,16 3,25 6,07
6 2,58 2,45 8,61 7,79
7 3,21 2,67 13,32 9,27
8 4,10 3,47 21,78 15,63
9 3,40 2,92 15,00 11,09
[image:69.595.93.540.304.722.2]10 2,63 2,70 8,98 9,47
Tabel 4.7 Uji Coba Menghitung Kekuatan Pukulan Test
Case ID
Tujuan Masukkan Keluaran yang
diharapkan Status
1.
Mendeteksi kekuatan pukulan di antara kecepatan 1-3 m/s
Gerakan pukulan tangan dari jarak 150 cm sampai 100 cm dengan kecepatan 1-4 m/s. Berat badan 55 Kg
- Kekuatan dalam Joule ditampilkan.
-Kekuatan harus diantara 1-15 Joule.
-Tidak ada keluaran berupa ‘Infinity’.
2.
Mendeteksi kekuatan pukulan di antara kecepatan 3-5 m/s atau lebih.
Gerakan pukulan tangan dari jarak 150 cm sampai 100 cm dengan kecepatan 3-5 m/s atau lebih. Berat badan 55 Kg
- Kekuatan dalam Joule ditampilkan.
-Kekuatan harus lebih besar dari 10-15 Joule.
-Tidak ada keluaran berupa ‘Infinity’.
[image:70.595.94.532.84.494.2]Sesuai
Gambar 4.9 Proses perhitungan kecepatan, kekuatan pukulan
4.3.7 Proses Menampilkan Grafis Latihan
Proses ini dilakukan untuk menguji apakah grafis hasil latihan yang terdapat
dalam aplikasi dapat berfungsi sesuai yang diinginkan. Pengujian dilakukan
setelah user selesai berlatih dan tampilan grafis akan muncul dengan mengambil
parameter nilai yang telah diperoleh pada sesi training. Pada pengujian ini grafis
dapat muncul sesuai yang diharapkan, tetapi terdapat beberapa kekurangan
diantaranya apabila pada sesi training terdapat kesalahan perhitungan akibat jeda
antara Kinect dan aplikasi membuat grafis yang ditampilkan tidak sesuai
Gambar 4.10 Grafis Latihan
4.3.8 Proses Menampilkan Nilai Tertinggi
Proses ini dilakukan untuk menguji apakah fungsi perhitungan nilai tertinggi
yang terdapat dalam aplikasi dapat berfungsi sesuai yang diinginkan. Pengujian
dilakukan dengan cara memilih menu High Score pada aplikasi dan akan disajikan
5 nilai terbaik dari sesi latihan. Pada pengujian ini 5 nilai terbaik dapat
ditampilkan sesuai yang diinginkan, akan tetapi apabila terdapat nilai akibat jeda
pada sesi training dapat mengacaukan hasil 5 nilai terbaik yang telah ada.
4.4 Evaluasi
Setelah melakukan uji coba diatas maka berikut adalah hasil evaluasi dari
aplikasi Virtual Punch Training.
Tabel 4.8 Hasil Evaluasi
Proses Memenuhi Kriteria Faktor Hambatan
Mendeteksi gerakan user Ya -Delay apabila ruangan
banyak objek, atau user
terlalu dekat dengan
sensor.
-Eror apabila jarak tidak
sesuai dengan yang
ditentukan yaitu 100
centimeter sampai 150 centimeter dari Kinect
Navigasi Menu Ya -
Mengubah Settings Ya -
Training Session Ya -Tidak bisa melakukan
pukulan cepat dan
intensif
-Apabila jarak terlalu dekat maka akan terjadi jeda pada Kinect dan aplikasi
Menghitung Kecepatan
Pukulan
Ya -Tidak bisa melakukan
pukulan cepat dan
intensif
-Apabila jarak terlalu dekat maka akan terjadi jeda pada Kinect dan aplikasi
Menghitung Kekuatan
Pukulan
Ya -Apabila masukan
kecepatan terjadi delay maka hasil perhitungan tidak akurat
Menampilkan Grafis Ya -Apabila salah satu
tangan tidak terdeteksi saat melakukan latihan
maka grafis tangan
tersebut tidak dapat
ditampilkan
Berdasarkan pada tabel hasil evaluasi diatas maka dapat disimpulkan
sebagai berikut:
1. Aplikasi Virtual Punch Training dapat digunakan sebagai alat ukur
kekuatan pukulan virtual secara realtime. Dengan batasan kelemahan Kinect,
yaitu tidak dapat mendeteksi gerakan yang intensif dan cepat, tidak bisa
mendeteksi dengan baik apabila dibelakang user terdapat objek ataupun user lain
dibelakang user utama.
2. Aplikasi Virtual Punch Training dapat menampilkan informasi kecepatan
gerakan pukulan, waktu tempuhnya dan kekuatan yang dihasilkan dari pukulan
tersebut.
3. Jeda dari Kinect mengakibatkan hilangnya ID pada setiap tangan yang telah
diberikan sebelumnya oleh aplikasi Virtual Punch Training sehingga pencatatan
kecepatan, kekuatan dan grafis pukulan tidak sesuai yang diharapkan.
4. Besarnya waktu jeda dari Kinect bervariasi tergantung kecepatan dan
intensitas pukulan yang dilakukan, umumnya jeda tersebut terjadi apabila user
terlalu dekat dengan Kinect, pukulan terlalu intensif atau memukul menggunakan
kedua tangan bersamaan.
5. Untuk mengatasi jeda yang diakibatkan oleh Kinect, user harus memberi
waktu beberapa detik sampai posisi kursor kembali ke posisi awal atau
benar-benar melakukan tracking terhadap tangan, atau dengan merestart form pada
aplikasi agar Kinect bisa mendeteksi ulang user utama, disaat Kinect sedang
melakukan pendeteksian diharapkan user berdiri tegak posisi siap.
6. Dari hasil evaluasi dan data tabel keluaran bahwa berat badan dan berat
Semakin berat bobot user dan semakin cepat pukulan tersebut maka semakin
besar pula kekuatan yang dihasilkan.
7. Apabila terjadi kesalahan perhitungan kecepatan akibat jeda dari Kinect
ataupun salah mengisi data berat badan maka akan merusak hasil perhitungan
kekuatan pada aplikasi, sehingga nilai yang ditampilkan terkadang tidak sesuai
dari yang seharusnya.
8. Aplikasi ini masih memiliki delay yang cukup tinggi dalam menangkap
respon user yang disebabkan oleh Kinect dalam menangkap dan mengenali joint
BAB V
PENUTUP
5.1 Kesimpulan
Setelah dilakukan pembuatan analisis, perancangan sistem dan Aplikasi
Virtual Punch Training menggunakan Microsoft Xbox Kinect serta dilakukan
evaluasi hasil penelitiannya, maka dapat diambil kesimpulan bahwa :
1. Aplikasi ini dapat mendeteksi gerakan tangan user dan menghitung berapa
kecepatan dan tenaga pukulannya dalam satuan Joule.
2. Aplikasi Virtual Punch Training ini menggunakan rumus Energi Kinetik
dalam perhitungannya dan memberikan output berupa kecepatan pukulan,
kekuatan pukulan dan grafik pukulan.
3. Aplikasi ini dapat digunakan sebagai sarana latihan dengan mengalahkan
skor tertinggi yang telah dibuat sebelumnya, dengan mengalahkan skor
tersebut diharapkan performa kekuatan pukulan dapat meningkat setiap
latihan rutin.
5.2 Saran
Ada beberapa saran yang dapat disampaikan antara lain :
1. Aplikasi Virtual Punch Training ini masih memiliki kekurangan pada
peralatan sensor, sehingga mengakibatkan jeda yang cukup signifikan,
apabila diwaktu depan ada sensor yang lebih baik dari Kinect agar dapat
2. Aplikasi Virtual Punch Training yang dibuat masih belum cocok untuk PC
kelas low-end, sehingga u