Research Overview
Our project is centered on enhancing the MotionInput SDK by developing a new version that significantly improves compatibility and usability in gesture-based interfaces. To accomplish this, we are conducting extensive research, focusing on four pivotal areas: innovative API design, meticulous compilation of MotionInput v3.4, efficient management of GitHub repositories, and a thorough exploration of diverse sources. Our approach involves delving into the latest design trends and user feedback to create an intuitive and robust API, optimizing the code for better performance across various platforms, and maintaining organized GitHub repositories for effective team collaboration and version control. This comprehensive research and analysis are aimed at developing a technologically advanced MotionInput SDK, customized to meet user expectations, thereby enhancing the overall user experience with gesture-based systems.
Technology Review
Kinect: API/SDK and How It Works
Kinect SDK
The Kinect SDK offers developers a comprehensive set of tools to create Kinect applications. The SDK includes reference API for skeletal tracking and facial recognition, allowing for the development of interactive games, educational software, and rehabilitation tools.[11]
- Drivers and detailed technical guides for developing applications that are compatible with the Kinect for Windows sensor.
- Reference APIs and related documentation for coding in both managed and native environments.
- Examples showcasing best practices for integrating a Kinect sensor into applications.
- Sample code that deconstructs these examples into manageable tasks for users.
Kinect API
The Kinect API offers:
Lean Tracking :[12]
- Lean Tracking allows developers to add the detection of player's body lean to their applications. It assesses the deviation of the player's body from an upright position. Leans to the sides are represented by X values, and forward or backward leans are represented by Y values, both ranging from -1 to 1, correlating to approximately 45 degrees of lean. These values are derived from each player's BodyFrame.
Body Tracking :[13]
- Body tracking allows developers to integrate various movements of the body, including hands and joints, into their Kinect projects. Through the BodyFrame class, access to the data of individual players is provided by the GetAndRefreshBodyData method. The BodyData class holds numerous data points useful for Kinect developers, such as:
- Joints: Captures information on 25 body joints. Each joint is represented by the Joint class, detailing the joint's position (using a Vector4 object), orientation (via a Quaternion object), and its tracking status. A diagram illustrates the joint hierarchy.
- Hand States: Details the condition of each hand, represented by the HandState enumeration which includes five possible states: Open, Closed, Lasso, Not Tracked, and Unknown. These states help identify how a player interacts with the Kinect application.
- Lean: Measures the player's body lean in X and Y values, indicating the direction and extent of the lean.
Face Tracking :[14]
- Face tracking allows the incorporation of the player's gaze direction, facial expressions, and eyewear status into Kinect applications. The FaceFrame class includes a FaceFrameResult object, which provides this facial data. This data is gathered in infrared and represented in color. The FaceFrameResult object contains:
- Face Properties: Information on the player's facial appearance is stored as a read-only map with key/value pairs, where each key is a FaceProperty enumeration item, including Happy, Engaged, Wearing Glasses, Left Eye Closed, Right Eye Closed, Mouth Open, Mouth Moved, and Looking Away. Each map entry's value corresponds to a DetectionResult enumeration item, including Yes, No, Maybe, and Unknown.
- Face Rotation: Information on the face's rotation is stored as a Quaternion object.
- Points: The positions of five critical facial points are stored: Left Eye, Right Eye, Nose, Left Mouth Corner, and Right Mouth Corner.
High Definition Face Tracking :[15]
- This advanced face tracking API facilitates the extraction of detailed facial data in two key scenarios:
- Face Capture: Enables the capture of the player's facial shape.
- Face Tracking: Allows for real-time monitoring of the player's facial expressions.
Leap Motion Controller: API/SDK and How It Works
Leap SDK
The Leap SDK is a tools designed to facilitate the integration of Leap Motion's hand-tracking technology into various software applications. Available for Windows, Mac, and Linux, the SDK supports several programming languages, including JavaScript, C# (for Unity), C++, Java, Python, and Objective-C. Additionally, it's extensible to other languages through community-contributed wrappers and libraries. The SDK includes:[16]
- Extensive Libraries and Examples: Offers a wide array of libraries and sample code to jumpstart development.
- Documentation and Tutorials: Provides detailed guides and tutorials to help developers understand and implement Leap Motion technology effectively.
- Diagnostic Visualizer: A tool for visualizing hand and finger tracking in real-time, enabling developers to debug and refine their applications.
- v2 Skeletal Assets for Unity: Features assets for quick integration into Unity projects, including customizable hand models and demo scenes.[17]
Leap API
The Leap API is at the core of the Leap SDK, enabling access to the rich tracking data generated by the Leap Motion Controller. This data is presented in the form of frames, which contain detailed information about all tracked entities within the Leap Motion's field of view. The API provides:[18]
- Frames: Each frame object includes data on hands, fingers, tools, recognized gestures, and the overall motion of hands in the scene.
- Positional Tracking: Detailed positional data for each tracked entity, organized in a hierarchy starting with the hand and including palm position, fingers (with tip position and velocity, length, and width), bones, and the arm.
- Motions and Gestures: Allows for the recognition of continuous movements and specific gestures like swipe, circle, and tap, facilitating interactive application controls.
- V2 Tracking Enhancements: Offers additional tracking data such as left vs. right-hand recognition, tracking confidence, grab and pinch strength, and persistent finger tracking with identified digit types and individual bone tracking.
MotionInput
MotionInput integrates a variety of features to enhance user interaction through motion and speech recognition. This includes:
- Hand Tracking Utilizing MediaPipe, this feature is found within the HandModule folder, offering landmark detection for up to 18 specific points on each hand, such as the wrist and thumb tip, and can recognize various hand gestures.
- Body Tracking Also powered by MediaPipe and stored in the BodyModule folder. This functionality identifies up to 33 body landmarks including the nose and hips, which assists in understanding body positions.
- Tracking: With the help of Dlib, located in the HeadModule folder, this capability detects up to 68 facial landmarks to monitor head movements and expressions.
- Eye Tracking Implemented through OpenVino and found in the EyeModule folder, it focuses on detecting landmarks around the eyes and calculating gaze direction and other eye-related data.
Comparison
Kinect vs Leap Motion Controller
Microsoft Kinect provides depth sensing and 3D mapping capabilities, which allows user to monitor in real-time movements of objects within its field. This capability makes it useful in applications that require movement recognition, such as rehabilitation. However, Kinect requires a considerable space to setup, which is a challenge when having limited space.
In contrast, the Leap Motion Controller specializes in accurate hands and finger tracking. In addition, its small size and user-friendly setup provide flexibility and accessibility, which could be advantageous to users who may not require the full spatial tracking capabilities of the Kinect.
Kinect vs MotionInput
UCL MotionInput and Kinect share several capabilities, such as body tracking and detailed tracking of specific body parts like hands and face. However, there are some notable differences between them.
One advantage is that MotionInput is capable of identifying a wider range of body landmarks (such as facial features), which enhances its ability to track movements and recognize complex gestures.
Another advantage is that Kinect uses structured light (for Kinect v1) and time-of-flight (for Kinect v2) methods for depth sensing and movement tracking, MotionInput can operate with a standard RGB camera.
Therefore, MotionInput has proven to be more versatile and available to a wider audience, as they are not limited to specific hardware.
Leap Motion Controller vs MotionInput
Leap Motion Controller specializes in high-precision hand and finger tracking, whereas MotionInput offers a broader range of tracking capabilities including body, head, eye, and speech recognition.
In addition, Leap Motion requires its specific hardware for tracking, making it less accessible to users without the device. MotionInput, on the other hand, utilizing standard RGB cameras and various software libraries, can be more accessible and versatile in terms of hardware requirements.
Conclusion
It is evident that the Kinect and Leap Motion Controller have made significant contributions to the field of gesture-based interfaces. However, both technologies have their limitations, making it crucial to apply the lessons learnt from existing technologies into our project. This is especially important when there is urgency to develop accessibility technologies that benefit a variety of disabled individuals.
Minimal Reliance on External Hardware
Allows for easy set up for the disabled individuals and caretakers.
Low Cost
Reduce the barrier to entry for such technologies. Especially important for individuals who may not have the financial means to afford expensive hardware.
Precise Tracking of Different Body Parts
Increases the range of disabilities that can be catered to by MotionInput.
References
[1] An Introduction to the Kinect Sensor | Microsoft Press Store. (n.d.). www.microsoftpressstore.com. https://www.microsoftpressstore.com/articles/article.aspx?p=2201646
[2] Sorry Kinect, we’ve already tried motion control in laptops and it flopped. (n.d.). CNET. Retrieved February 26, 2024, from https://www.cnet.com/culture/sorry-kinect-weve-already-tried-motion-control-in-laptops-and-it-flopped/
[3] The pros and cons of the game-changing Kinect. (2010, December 13). Memeburn. https://memeburn.com/2010/12/the-pros-and-cons-of-the-game-changing-kinect-review/
[4] Pterneas, V. (2023, September 13). Kinect is dead. Here is the best alternative. LightBuzz. https://lightbuzz.com/kinect-alternative/#:~:text=Microsoft%20stopped%20making%20the%20Kinect
[5] Klug, B. (n.d.). Microsoft Kinect: The AnandTech Review. Www.anandtech.com. Retrieved February 26, 2024, from https://www.anandtech.com/show/4057/microsoft-kinect-the-anandtech-review/3
[6] Kincaid, Clay J.; Vaterlaus, Austin C.; Stanford, Nathan R.; and Charles, Steven Knight, (2018, November 15) "Frequency response of the Leap Motion Controller and its suitability for measuring tremor". Faculty Publications. 2716. https://scholarsarchive.byu.edu/facpub/2716
[7] Kirby, D. (2022, March 30). Setup and comfortable use of your Leap Motion Controller. Ultraleap. https://support.leapmotion.com/hc/en-us/articles/360004324298-Setup-and-comfortable-use-of-your-Leap-Motion-Controller
[8] Tölgyessy, Michal, et al. “Analysis of the Leap Motion Controller Workspace for HRI Gesture Applications.” MDPI, Multidisciplinary Digital Publishing Institute, 5 Jan. 2023, www.mdpi.com/2076-3417/13/2/742. Accessed 12 Mar. 2024
[9] Kirby, Dan. “Running the Leap Motion Diagnostics – Ultraleap Tracking Support.” Ultraleap For Developers, Ultraleap, 2 Nov. 2023, support.leapmotion.com/hc/en-us/articles/360004363657-Running-the-Leap-Motion-Diagnostics Accessed 12 Mar. 2024
[10] Hawkins, Robin. “Handy Applications for Leap Motion Controller 2.” Ultraleap, 29 Aug. 2023, www.ultraleap.com/company/news/blog/software-apps-leap-2/. Accessed 12 Mar. 2024.
[11] “Kinect for Windows Programming Guide.” Microsoft Learn, 21 Oct. 2014, learn.microsoft.com/en-us/previous-versions/windows/kinect/dn782037(v=ieb.10). Accessed 11 Mar. 2024.
[12] “Lean Tracking.” Microsoft Learn, 21 Oct. 2014, learn.microsoft.com/en-us/previous-versions/windows/kinect/dn785526(v=ieb.10). Accessed 11 Mar. 2024.
[13] “Body Tracking.” Microsoft Learn, 21 Oct. 2014, learn.microsoft.com/en-us/previous-versions/windows/kinect/dn799273(v=ieb.10). Accessed 11 Mar. 2024.
[14] “Face Tracking.” Microsoft Learn, 21 Oct. 2014, learn.microsoft.com/en-us/previous-versions/windows/kinect/dn782034(v=ieb.10). Accessed 11 Mar. 2024.
[15] “High Definition Face Tracking.” Microsoft Learn, 21 Oct. 2014, learn.microsoft.com/en-us/previous-versions/windows/kinect/dn785525(v=ieb.10). Accessed 11 Mar. 2024.
[16] Davis, Alan. “Getting Started with the Leap Motion SDK.” Leap Motion Blog, Ultraleap For Developers, 16 Aug. 2014, blog.leapmotion.com/getting-started-leap-motion-sdk/. Accessed 12 Mar. 2024.
[17] “Ultraleap in Unity¶.” Ultraleap in Unity - Ultraleap Documentation, Ultraleap For Developers, docs.ultraleap.com/xr-and-tabletop/xr/unity/index.html. Accessed 12 Mar. 2024.
[18] “How Hand Tracking Works.” Ultraleap, 3 Sept. 2020, www.ultraleap.com/company/news/blog/how-hand-tracking-works/. Accessed 12 Mar. 2024.