Abstrak – OpenCV merupakan Library yang didesain untuk komputasional yang efisien dan lebih fokus pada aplikasi real-time. Microsoft XNA adalah sebuah framework menggunakan bahasa C# yang didukung physics engine. Simulasi Pergerakan Robot 3D dengan komando deteksi citra merupakan aplikasi yang dibangun menggunakan Microsoft XNA dan menggunakan engine TorqueX dan Library OpenCV dengan Wrapper EmguCV. Menggunakan perintah tangan yang dideteksi oleh webcam, sehingga dapat mengontrol pergerakan robot 3D secara real-time. Didukung juga dengan grafis 3D sehingga membuat simulasi menjadi lebih menarik.
Simulasi Pergerakan Robot 3D dengan Komando Deteksi Citra Pergerakan
Tangan dengan Opencv dan Microsoft XNA
Niko Purwanto Putra
Jurusan Teknik Informatika, Fakultas Teknologi Informasi, Institut Teknologi Sepuluh Nopember Email : [email protected]
Uji coba yang dilakukan terhadap Simulasi Pergerakan Robot 3D dengan Komando Deteksi Citra dilakukan melalui beberapa skenario. Uji coba ini berhasil mendeteksi posisi tangan sehingga Simulasi Robot 3D dapat dikontrol dengan deteksi citra tangan. Perpindahan jeda waktu antara perubahan gerakan tangan yang bisa dideteksi oleh aplikasi relative sangat kecil dengan satuan microsecond.
Kata kunci: Game simulation ,MicrosotXNA, OpenCV, Deteksi Citra, Game 3D
1. Pendahuluan
Trend terhadap kontrol game maupun simulasi secara akhir – akhir ini berkembang sangat pesat. Pertama kali pengontrolan menggunakan sebuah joystick kemudian ditemukan pengontrolan yang membuat interaksi antara user menjadi lebih realistik, dengan ditemukannya dance pad yang digunakan untuk game dance-dance revolution, pistol yang digunakan untuk game jurasic park. Kemudian ditemukannya touch screen pada game-game yang berjalan pada Nintendo DS. Wiimote untuk game yang berjalan pada console nintendoWii. Selanjutnya ditemukan sebuah inovasi baru dalam pengontrolan sebuah game yaitu dengan deteksi citra. Game – game deteksi citra mulai bermunculan dari yang sederhana sampai dengan yang kompleks seperti game 3D.
Opencv adalah library pengolah citra dengan menggunakan bahasa C. Microsoft XNA adalah framework yang menggunakan bahasa C#. Karena XNA menggunakan bahasa C# dan Opencv dibuat menggunakan bahasa C maka library
Opencv tidak dapat dijalankan kedalam XNA. Untuk mengatasi hal tersebut maka dibutuhkan sebuah wrapper yang disebut EmguCV. Wrapper ini dibuat oleh GPL sebuah pengembang open source.
Microsoft XNA adalah sebuah framework
yang berjalan pada C#. Dengan adanya dukungan
physics engine pada XNA maka sangatlah tepat apabila kita memberikan sebuah hokum – hokum fisika dengan menggunakan software tersebut. Dengan adanya dukungan dari engine yang lain seperti TorqueX 3D maka pembangunan sebuah aplikasi menjadi lebih mudah dan cepat. Karena
engine tersebut dapat berjalan pada C#.
2. Dasar Teori
Bagian ini akan menjelaskan dasar-dasar teori yang menyusun makalah ini yaitu :
2.1.OpenCV
OpenCV adalah open source library
komputer vision yang yang dibangun oleh Intel dan diciptakan untuk domain open source pada tahun 2002. Mempunyai banyak algoritma dan contoh untuk pengolah citra dam komputer vision.[1]
Pembangunan deteksi tangan menjadi lebih kompleks selama mempunyai variabel yang bagus. Disamping gambar training positif juga harus mempunyai rectangular. Kenyataannya tidak signifikan seperti gambar training positif mata dan hidung. Bagaimanapun juga gambar rectangular menyesuaikan untuk memilih wilayah tangan termasuk angka yang penting untuk pixel background, menurut banyaknya variabel tergantung dari postur tangan, yang mana mempengaruhi gambar training positif dan membuat training lebih sulit. Disisi lain, kita mencoba mengatasi variabel tangan dengan membangun detector menggunakan gambar tangan didalam pose yang berbeda dan juga membangun detector yang spesifik untuk setiap postur tangan, keduanya dengan hasil yang buruk. Akhirnya deteksi tangan kanan dan tangan kiri disempurnakan hanya dalam posisi frontal dengan 3192 dan 3217 gambar positif training selanjutnya 2256 dan 2278 negatif training dari database.[3]
2.2.EmguCV
EmguCV adalah cross platfrom .net wrapper untuk Library intel OpenCV pengolah citra. Yang memperbolehkan fungsi OpenCV dipanggil didalam .net bahasa yang cocok seperti C#, VB, VC++,ironPython dan lain-lain. Wrapper
dapat dicompile dalam MonoDevelop dan dapat berjalan pada Linux atau Mac OS X.[5]
2.3.Framework Microsoft XNA
Platform XNA dan kemampuan untuk membuat aplikasi pada Xbox360 menjadi kemajuan yang sangat nyata pada dunia pemrograman game. Sebelum XNA, hal tersebut menjadi rumit dan sangat menguras uang untuk pelajar, hobby pembuat software atau pembuat game yang independent untuk memperoleh development kit yang memuaskan untuk sebagian besar platform console. Dengan direleasenya XNA game studio, peraturan dasar telah berubah. Tiba-tiba setiap orang dengan PC yang mempunyai kartu grapich dapat menggunakan platform XNA untuk menciptakan game tidak hanya untuk windows tetapi juga untuk Xbox360.[6]
2.4.Torque X 3D
Pertama dalam sejarah, Pengusaha besar pabrik game console telah menciptakan platform game yang mewah untuk semua orang yang tertarik untuk menciptakan game console. Sekarang semua orang dapat menciptakan game untuk console Xbox360 tanpa publikasi kontrak atau sulit dan mahal untuk mendapatkan versi developer untuk console. Framework Microsoft’s XNA adalah library gratis dan seperangkat tools untuk membuat game untuk windows dan game console Xbox360. Semua orang dapat mendownload tool untuk membuat game dan join kedalam Xbox Creator Club untuk membuat game pada Xbox360. Framework Torque X membuat pembangunan game menjadi lebih mudah, dengan framework
game engine yang kaya dan seperangkat design tool yang hebat.[9]
3. Metodologi
Bagian ini akan membahas tentang desain perangkat lunak dari aplikasi ”Simulasi Pergerakan Robot 3D dengan Komando Deteksi Citra Pergerakan Tangan dengan Opencv dan Microsoft XNA”. Pembahasan desain meliputi analisis kebutuhan, perancangan aplikasi dan implementasi. Pengembang-pengembang game 3D sekarang mulai membangun game maupun simulasi yang dikendalikan oleh deteksi citra secara realtime pada webcam PC. Untuk menghubungkan kontrol game dengan deteksi citra yang ada pada game atau simulasi tersebut dapat diimplementasikan menggunakan OpenCV dan Framework Microsoft XNA
3.1 Analisis
Berikut merupakan uraian kebutuhan fungsional dari aplikasi ” Simulasi Pergerakan Robot 3D dengan Komando Deteksi Citra Pergerakan Tangan dengan Opencv dan Microsoft XNA” :
1. Memulai simulasi robot 3D 2. Melihat bantuan pada help screen 3. Melihat credit screen
4. Keluar dari simulasi robot 3D
5. Mengontrol robot simulasi dengan tangan 3.2 Perancangan
Berikut perancangan dari Aplikasi 3.2.1 Deteksi Citra Tangan
Obyek yang nantinya akan dideteksi adalah citra tangan. Dalam pendeteksian citra tangan pertama kali adalah mendeteksi warna kulit tangan terlebih dahulu, kemudian mendeteksi kontur tangan selanjutnya adalah mendeteksi jari – jari tangan. Untuk flowchart dapat dilihat pada gambar 3.1. S ta rt D e te k s i w a rn a k u lit Y C rC b _ m in , Y C rC b _ m a x , T e rd e te k s i k o n tu r b a ru S im p a n k o n tu r b a ru c a ri S ta rt P o in t d a ri ta n g a n C a ri d e p th p o in t d a ri ta n g a n C a ri S ta rtD e p th L in e F in is h Y a C a ri k o n tu r ta n g a n H itu n g ja ri y a n g te rd e te k s i C a ri k o n v e k s ity T id a k M e m e n u h i u k u ra n ja ri Y a T id a k
Gambar 3.1 Deteksi Citra Tangan
3.2.1.1 Proses Deteksi Citra
Proses dalam pendeteksian citra tangan sebagai berikut:
1 Mendeteksi warna kulit dengan memanggil fungsi deteksi kulit dengan range warna YcrCb_min sampai dengan YcrCb_max.
2 Mencari kontur kulit dengan memanggil fungsi FindContours kemudian disimpan didalam memory.
3 Kontur yang terdeksi diberikan terhadap variabel. Apabila dideteksi kontur kulit yang baru maka kontur tersebut adalah nilai yang baru dari variabel.
4 Kemudian mencari konveksity dari kontur yang terdeteksi
Selanjutnya dengan menggunakan fungsi convexitydefects mencari jari-jari tangan
3.2.2 Use Case Display Sistem
Memulai Simulasi
Melihat Bantuan Aplikasi User
Melihat Kontributor Aplikasi
Gambar 3.2 Use Case Display Sistem
3.2.3 Use Case kontrol Robot Simulasi
Mengontrol Robot Maju
Mengontrol Robot Mundur
Mengontrol Robot Hadap Kiri
Mengontrol Robot Hadap Kanan User
Mengontrol Robot Diam
Gambar 3.3 Use Case kontrol Robot Simulasi
3.3 Implementasi
Berikut implementasi Aplikasi 3.3.1 Lingkungan Pembangunan Aplikasi
Aplikasi ini dibangun dengan menggunakan perangkat keras notebook dengan spesifikasi prosesor Intel(R) Core(TM) Duo CPU T6600 2,20GHz, memori 4 GB dan harddisk sebesar 150 GB. Sistem operasi dan beberapa tools
yang digunakan dalam membangun aplikasi ini adalah :
• Sistem operasi Microsoft Windows VISTA
• Framework Microsoft XNA • Microsoft Visual Studio 2008 SP1 • Game Engine TorqueX 3D • OpenCV dengan wrapper emguCV 3.3.2 Implementasi Deteksi Citra
Deteksi Citra Tangan menggunakan library OpenCv. Pendeteksian tergantung terhadap pencahayaaan yang baik. Untuk pertama kali yang dideteksi adalah warna kulit pada tangan. YCrCb_min dan YCrCb_max adalah range warna untuk warna kulit seperti dibawah ini.
Kemudian mencari kontur telapak tangan. Pertama kali yang dicari adalah kontur dari tangan apabila kontur dari tangan dideteksi maka kontur tangan tersebut dimasukkan kedalam variabel Result. Jika dideteksi terdapat kontur yang lebih besar maka kontur yang besar menjadi variabel yang selanjutnya. Selanjtnya kontur terbesar dimasukkan kedalam fungsi convexhull.untuk mencari konveksity. Jika konveksity sudah ditemukan maka langkah selanjutnya adalah mencari defect dengan fungsi convexitydefect, bersamaan dengan itu maka informasi startpoint depthpoint juga diketahui Untuk pseudocode dapat dilihat berikut ini.
Selanjutnya dari startpoint dan depthpoint dicari startdepthline yang sesuai dengan jari-jari tangan.
Ycc YCrCb_min =(0, 131, 80)
Ycc YCrCb_max =(255, 185, 135)
Deteksi kulit(gambar yg terdeteksi,
YCrCb_min,YCrCb_max)
While kontur terdeteksi
result1 = kontur(kulit)
If result1 > result2
Then Result2=result1
kontur terbesar = kontur
if kontur terbesar =! Null
then hull = kontur <‐convexhull
defect = kontur terbesar <‐ convexitydefect <‐ simpan
storage
defectarray= defect.toarray
for i=0 to defect.total do
startpoint = defectarray <‐ startpoint
depthpoint = defectarray <‐ depthpoint
startdepthline=garis(startpoint to depthpoint) if (startpoint<centerbox or depthpoint<centerbox)&&(startpoint<depthpoint) &&(sudutconvex>centerbox /6.5) fingernum++ 3.3.3 Implementasi Simulasi 3D
Implementasi Simulasi 3D yang terdiri dari intro, Main Menu Screen,Help Screen, Credit Screen, Play screen.
3.3.4 Implementasi Pengontrolan secara Realtime
Untuk pengontrolan Robot 3D pada waktu Posisi tangan terdeteksi 3 maka variable rotX diberi value sebesar 0.5 bertipe float maka movemnet robot akan rotasi ke kanan. sebaliknya pada waktu Posisi tangan terdeteksi 4 maka variable rotX dikasih value sebesar -0.5 ertipe float maka movemnet robot akan rotasi ke kiri. Pada waktu Posisi tangan terdeteksi 1 maka variable ma dikasih value sebesar 0.5 ertipe float maka movemnet robot akan berjalan maju karena dikalikan dengan vector Forward. Sebaliknya Pada waktu Posisi tangan terdeteksi 2 maka variable ma dikasih value sebesar -0.5 ertipe float maka movemnet robot akan berjalan mundur karena bernilai negatif. Pseudocode dapat dilihat berikut ini.
YCrCb_min = new Ycc(0, 131, 80); YCrCb_max = new Ycc(255, 185, 135);
4. Uji Coba dan Evaluasi
Bab ini membahas pengujian dari aplikasi perangkat lunak yang sudah dibuat.
4.1 Lingkungan Pelaksanaan Uji Coba
Aplikasi ini diuji dengan menggunakan perangkat keras notebook dengan spesifikasi prosesor Intel(R) Core(R)2 Duo CPU T6600 2,20Hz, memori 4 GB dan harddisk sebesar 150 GB.
Uji coba aplikasi ini dilakukan dengan menggunakan satu komputer, spesifikasi komputer adalah :
• Menggunakan OS Windows Vista • Processor Intel Pentium Core 2 Duo
@2.20Ghz · RAM 4GB 4.2 Uji Coba Fungsional
Tabel 4.1 Uji Coba Kontrol Robot
Test Case ID Scenario / Condition Posisi Tangan Result RB 1 Scenario 1 – komando Posisi tangan angka 1. Angka 1 Player bergerak maju. RB 2 Scenario 2 – komando Posisi tangan angka 2. Angka 2 Player bergerak mundur. RB 3 Scenario 3– komando Posisi tangan angka 3 Angka 3 Player hadap kekanan. RB 4 Scenario 4 – komando Posisi tangan angka 4. Angka 4 Player hadap kekiri. RB 5 Scenario 5 – komando Posisi tangan angka 5. Angka 5 Player Diam
Berikut gambar hasil uji coba aplikasi :
If tangan posisi satu terdeteksi then Render teks Perintah “Maju”
Updete input <- vel = ((forward * 0.5f) + (right * 0)) * _moveSpeed; Update camera
If tangan posisi dua terdeteksi then Render teks Perintah “Mundur”
Updete input < vel = ((forward * -0.5f) + (right * 0)) * _moveSpeed; Update camera
If tangan posisi tiga terdeteksi then Render teks Perintah “Mundur”
Updete input <- player Angle = (player Angle - (turn Speed * dt * 0.5f)) % (2.0f * (float)Math.PI) Update camera
If tangan posisi empat terdeteksi then
Render teks Perintah “Mundur”
Updete input <- player Angle = (player Angle (turn Speed * dt * -0.5f)) % (2.0f * (float)Math.PI) Update camera
Posisi tangan satu
Gambar 4.1 Posisi Tangan satu
Posisi tangan dua
Gambar 4.2 Posisi Tangan dua
Posisi tangan tiga
Gambar 4.3 Posisi Tangan tiga
Posisi tangan empat
[2] Gary Bradski, Adrian Kaebler. Computer vision with the OPENCV library,O’REILLY . september 2008.
Posisi tangan lima
[3] D.gonzales-Ortega,FJ Diaz- Pernas,M.Martinez-Zarzuela,M.Anton-Rodriguez.Real-Time hands, face and facial features detection and tracking: Application to cognitive rehabilitation test monitoring. Journal of Network and Computer Applications, 4 Februari 2010
Gambar 4.5 Posisi Tangan lima
[4] Intoduction to programming with OpenCV. http:// www.cs.iit.edu
/~agam/cs512/lect-notes/opencv-intro/index.html. diakses tanggal 6 Maret 2010.
4.3 Uji Coba NonFungsional
Tabel 4.2 Uji Coba Waktu Deteksi Citra
ID Condition Posisi Tangan
Result
RD 1
Posisi tangan angka 1.
Angka 1 0.0027 millisecond RD
2
Posisi tangan angka 2.
Angka 2 0.0022 millisecond RD
3
Posisi tangan angka 3
Angka 3 0.0016 millisecond RD
4
Posisi tangan angka 4.
Angka 4 0.0011 millisecond RD
5
Posisi tangan angka 5.
Angka 5 0.0016 millisecond
[5] EmguCV
http://www.emgu.com/wiki/index.php/ Main_Page. diakses tanggal 8 Maret 2010. [6] Stephen Cawood dan Pat McGee.
Microsoft XNA Game Studio Creator’s Guide,Mc Graw Hill. 2009.
[7] Resource for XNA Game Developers. http://xnaresources.com/. diakses tanggal 4 Maret 2010.
[8] Chad Carter . Microsoft XNA Game Studio 3.0 UNLEASHED .SAMS, Juli 2009. 5. Kesimpulan
Berdasarkan hasil pengamatan selama proses perancangan, implementasi, dan uji coba perangkat lunak didalam tugas akhir ini, dapat diambil kesimpulan sebagai berikut:
[9] John Kanalakis.The complete guide to Torque X,GC Press.2008.
1. Didalam uji coba ini OpenCV dapat mendeteksi posisi tangan sehingga Simulasi Robot 3D dapat dikontrol dengan deteksi citra tangan.
2. Pengontrolan dilakukan secara Real Time dalam arti gerakan tangan yang dideteksi dapat direspon dalam waktu sekitar 1,1 sampai 2,7 mikrosecond.
3. Perpindahan jeda waktu antara perubahan gerakan tangan yang bisa dideteksi oleh aplikasi relative sangat kecil dengan satuan microsecond.
6. Daftar Pustaka
[1] Easy to use Wrapper (DLL) for Intel’s
OpenCV Library . http://www.codeproject.com/KB/cs/Intel_
OpenCV.aspx. diakses tanggal 3 Maret 2010.