ทดลองจับ Leap Motion Controller

by inkirby
19 March 2013 - 10:53

**Leap Motion Controller** คืออุปกรณ์จาก [Leap Motion](https://www.leapmotion.com/) สำหรับตรวจจับการเคลื่อนไหวของมือ นิ้วมือ และเครื่องมือที่มีลักษณะเป็นแท่งทรงกระบอก (อย่างเช่นปากกาหรือพู่กัน) โดยสามารถตรวจจับได้ด้วยอัตราการส่งข้อมูลที่สูง (สูงสุดถึง 120 fps) และมีความแม่นยำสูง ในระดับ 0.01 มิลลิเมตร (หน่วยที่ใช้ในข้อมูลจะเป็นมิลลิเมตร)

ถ้านึกภาพไม่ออก อุปกรณ์ตัวนี้จะมีลักษณะการตรวจจับคล้ายๆ กับ Kinect ของ Microsoft คือใช้อินฟราเรดในการตรวจจับ ซึ่งก็หมายความว่าถ้าหากนำไปใช้ในที่ๆ มีแสงจ้า ก็อาจจะไม่สามารถทำงานได้เลย

วิดีโอสำหรับใครที่ยังไม่รู้จักเจ้าตัวนี้ครับ

##รูปทรงและลักษณะ

![leap_front](http://farm9.staticflickr.com/8523/8571710546_db8b5e9c1b_z.jpg)

ตัวอุปกรณ์มีลักษณะค่อนข้างเล็ก ขนาดประมาณยางลบก้อนใหญ่ 1 ก้อน น้ำหนักเบา

![leap_led](http://farm9.staticflickr.com/8227/8570613275_f8b7a186eb_z.jpg)

ด้านบนเป็นกระจกสีดำ ใต้กระจกมีหลอด LED แสงอินฟราเรดจำนวน 3 หลอด และมีเซนเซอร์รับแสงอีก 2 ตัว ด้านข้างทำจากอลูมิเนียม มีช่องเสียบ USB 3.0 (ซึ่งสามารถใช้สาย microUSB เพื่อเชื่อมต่อแบบ USB 2.0 ได้ตามปกติ) และช่องไฟ LED สีเขียวเพื่อแสดงสถานะ ด้านใต้เป็นยางกันลื่นครับ

![leap_usb](http://farm9.staticflickr.com/8093/8570611207_cfcec13a2a_z.jpg)

##ความสามารถของ Leap Motion Controller

ตัวอุปกรณ์จะจำตำแหน่งของวัตถุต่างๆ โดยอ้างอิงกับแกน X, Y, และ Z โดยมีจุด origin อยู่ที่กลางผิวกระจกของตัวอุปกรณ์ ซึ่งแกน X แทนแกนขนานกับแนวยาว แกน Y แทนแกนความสูง และแกน Z เป็นแกนแนวขวางที่พุ่งออกจากหน้าจอ

![Leap_Axes](http://farm9.staticflickr.com/8093/8570609119_3be332377f.jpg)

โดยปกติแล้ว ค่าที่เราสามารถดึงออกมาจากตัวอุปกรณ์นั้นจะอยู่ในรูปแบบของเวกเตอร์และตำแหน่งเสียส่วนใหญ่

##การตรวจจับวัตถุ

อย่างที่กล่าวไปแล้วในข้างต้นว่าตัวอุปกรณ์นั้นสามารถตรวจจับมือ นิ้วมือ และเครื่องมือได้ โดยการตรวจจับวัตถุแต่ละชนิดก็จะให้ข้อมูลที่ต่างกัน

- **มือ** เมื่อตัวอุปกรณ์ตรวจจับมือได้ จะส่งค่าแสดงตำแหน่ง ทิศทางของมือ และความเร็วของมือ

![Leap_Palm_Vectors](http://farm9.staticflickr.com/8103/8570608863_5c0199db78_n.jpg) ![leap_vir_hand](http://farm9.staticflickr.com/8382/8570608723_69304478a5_n.jpg)

- **นิ้วมือและเครื่องมือ** เมื่อตัวอุปกรณ์ตรวจจับนิ้วมือและเครื่องมือได้จะส่งค่าตำแหน่งของปลายนิ้วมือหรือเครื่องมือ ทิศทาง ความเร็ว รวมไปถึงความยาวและความกว้างโดยเฉลี่ยของวัตถุด้วย

![Leap_Tool](http://farm9.staticflickr.com/8369/8571704010_6102bd80ce_n.jpg) ![Leap_Finger_Model](http://farm9.staticflickr.com/8506/8571704200_88b72f8692_n.jpg)

![leap_vir_pointer](http://farm9.staticflickr.com/8111/8571703750_fda91aca82.jpg)

##การตรวจจับท่าทาง (gesture)

ตัว SDK นั้นมี API ที่ทำให้สามารถดึงเอาลักษณะท่าทาง (gesture) ต่างๆ ออกมาใช้งานได้จำนวนหนึ่งโดยที่นักพัฒนาไม่ต้องลงทุนเขียนขึ้นเอง (ซึ่งคาดว่าจะมีเพิ่มขึ้นในอนาคต) โดยท่าทางที่สามารถนำมาใช้ได้มีอยู่ 3 ลักษณะหลักๆ

- **วงกลม (circle)** คือการวาดนิ้วหรือเครื่องมือในลักษณะวงกลม โดยตัวอุปกรณ์สามารถตรวจจับตำแหน่ง ทิศทาง และขนาดของวงกลมที่เกิดขึ้นได้

![Leap_Gesture_Circle](http://farm9.staticflickr.com/8519/8571703992_1487d6529b_n.jpg) ![leap_vir_circle](http://farm9.staticflickr.com/8228/8570608791_1aafde2555_n.jpg)

- **การปัด (swipe)** คือการปัดนิ้วหรือเครื่องมืออย่างรวดเร็วในลักษณะเป็นเส้นตรง ซึ่งตัวอุปกรณ์สามารถตรวจจับตำแหน่งและทิศทางได้

![Leap_Gesture_Swipe](http://farm9.staticflickr.com/8097/8570609021_d20cfb0c53_n.jpg) ![leap_vir_swipe](http://farm9.staticflickr.com/8384/8570608735_17cf7b1702_n.jpg)

- **การแตะ (tap)** คือการใช้นิ้วหรือเครื่องมือเคลื่อนที่ลงแล้วขึ้นอย่างรวดเร็ว ลักษณะคล้ายกับการแตะจอสัมผัสที่ลอยอยู่บนอากาศนั่นเอง ตัวอุปกรณ์จะสามารถตรวจจับตำแหน่งของการแตะได้

![Leap_Gesture_Tap](http://farm9.staticflickr.com/8529/8571703862_c788e9f3fa_n.jpg) ![leap_vir_tap](http://farm9.staticflickr.com/8101/8570608733_9bd6dbf1be_n.jpg)

##SDK - ชุดสำหรับพัฒนาแอพพลิเคชัน

สำหรับผู้ที่มี Leap Motion Controller อยู่ในครอบครองแล้ว สามารถสร้าง Developer ID แล้วเข้าไปดาวน์โหลดชุด SDK มาใช้งานได้ทันทีครับ ซึ่งในชุด SDK นั้นจะมีทั้งตัวอย่างแอพพลิเคชัน ไดรเวอร์ และไลบรารีให้เรียกใช้สำหรับหลายภาษา ไม่ว่าจะเป็น C++, C#, Objective-C, Python, Unity, Java หรือ JavaScript ได้ (ใช่ครับ มันรันในเบราว์เซอร์ได้ แต่เบราว์เซอร์นั้นจะต้องลงไลบรารีนิดหน่อย ซึ่งเมื่อเปิดไฟล์ตัวอย่างครั้งแรก ระบบจะแจ้งลิงก์สำหรับดาวน์โหลดให้อัตโนมัติ) ซึ่งสำหรับเรื่องการเขียนโค้ดนั้น ผมจะขอข้ามไปครับ

##ข้อจำกัดของอุปกรณ์

ถึงแม้ว่ามันจะสามารถนำไปประยุกต์ใช้ได้หลายอย่าง แต่มันก็มีข้อจำกัดเช่นกัน

- **ระยะที่จำกัด** แน่นอนว่าตัวอุปกรณ์นั้นมีระยะที่จะตรวจจับที่จำกัด โดยระยะตามที่ทาง Leap Motion บอกเอาไว้ใน SDK คือ 600 มิลลิเมตร มีลักษณะเป็นรูปทรงกรวยชี้ลง ทำมุมกับพื้น 45 องศาจากพื้น แต่เท่าที่ผมได้ลองกับแสงที่ความเข้มต่างๆ กัน พบว่าระยะไกลสุดที่ทำได้ในที่แสงน้อยนั้นได้ราว 500 มิลลิเมตร และแสงมีผลกระทบต่อการตรวจจับพอสมควร ยิ่งแสงภายนอกแรง (โดยเฉพาะแสงอินฟราเรด) ก็จะยิ่งทำให้ความแม่นยำและระยะที่สามารถตรวจจับได้นั้นลดลง หากแสงส่องเข้าโดยตรงไปที่เซนเซอร์แล้ว อาจจะทำให้ไม่สามารถทำงานเลยก็ได้ ระยะของมือหรือเครื่องมือที่อยู่ใกล้ตัวอุปกรณ์มากเกินกว่าระยะ 10 มิลลิเมตร ก็ไม่สามารถตรวจจับได้เช่นเดียวกันครับ

- **ลักษณะของวัตถุ** เนื่องจากว่าตัว Leap Motion Controller นั้นใช้แสงอินฟราเรดในการตรวจจับวัตถุ ดังนั้นมันจะไม่สามารถตรวจจับวัตถุที่อยู่ซ้อนกันได้ ซึ่งจะเห็นเป็นวัตถุชิ้นเดียวที่ใหญ่ที่สุด นอกจากนั้นวัตถุที่อยู่ใกล้กันมากเกินไป ก็จะถูกตีความเป็นวัตถุเพียงชิ้นเดียวเช่นกัน ข้อจำกัดของวัตถุข้อต่อมาคือ อีกหนึ่งข้อจำกัดของวัตถุคือ แนวของวัตถุ ถ้าเราชี้นิ้วไปด้านข้างให้ขนานกับตัวอุปกรณ์ ตัวอุปกรณ์จะไม่สามารถตรวจจับได้ กรณีนี้ผมคาดว่าเป็นเพราะนิ้วที่อยู่ในแนวเดียวกันกับเซนเซอร์

##สรุป - ความเป็นไปได้ของอุปกรณ์คงขึ้นอยู่กับนักพัฒนา

ผมมองว่า Leap Motion Controller มีความเป็นไปได้ที่หลากหลายในการนำมาประยุกต์ให้เข้ากับการใช้งานคอมพิวเตอร์ในปัจจุบัน แม้ว่าในความคิดเห็นของผม ส่วนใหญ่อาจจะเป็นการเล่นเกมเสียมากกว่า แต่ด้วยศักยภาพที่เรียกได้ว่าน่าทึ่ง เช่นการแยกแยะวัตถุที่เป็นเครื่องมือออกจากนิ้วมือปกติได้ อาจจะนำไปใช้ในด้านการออกแบบ หรือการทำโมเดลต่างๆ ได้ หรือหากอุปกรณ์ชิ้นนี้สามารถทำให้มีความแม่นยำที่สูงขึ้น เราอาจเห็นการนำไปใช้กับจอธรรมดาๆ แล้วพัฒนาให้เป็นจอที่รองรับการสัมผัสได้ในอนาคต ด้วยราคาที่ไม่แพงมาก ผมว่ามันเป็นอีกทางเลือกหนึ่งของผู้ใช้ที่ต้องการความแปลกใหม่ของการสั่งงานคอมพิวเตอร์เลยทีเดียว เพียงแต่อาจจะต้องรอแอพพลิเคชันที่เป็นรูปเป็นร่างมากกว่าในปัจจุบัน

สำหรับนักพัฒนาในตอนนี้ สามารถสั่ง Leap Motion Controller จากเว็บไซต์ของ [Leap Motion](https://www.leapmotion.com/preorder/new) ได้ในราคา $79.99 (รวมภาษีและค่าจัดส่งมาที่ไทยแล้วอยู่ที่ $100.58 หรือประมาณ 3,000 บาท) โดยทาง Leap Motion แจ้งไว้ว่าจะจัดส่งทั่วโลกในวันที่ 13 พฤษภาคม และจะสามารถหาซื้อจาก BestBuy ได้ในวันที่ 19 พฤษภาคมนี้ครับ

![leap_back](http://farm9.staticflickr.com/8249/8571712430_d956a6aba9_z.jpg)

Blognone Jobs Premium