Last updated: 9:00AM, 11 May 2018
The goal of this project is to create a AR app that will semi-automate the creation of HMD tutorials. Gaze-tracking data collection is included to both aid tutorial creation and evaluate performance.
HMDs have been employed in medical treatment, education, rehabilitation, and surgery. Graphical layers on an OST-HMD can display relevant data, images, text, or videos and thus facilitate procedures that would otherwise require the practitioner to refer to a side display, turning his or her gaze away from the object of interest. HMDs not only facilitate these processes, but also are relatively unobtrusive as they may be controlled through voice commands. These devices are best used in controlled training environments due to potential dependencies on internet and appropriate lighting conditions for the optical display. Moreover, the virtual markers used in current training files rely on static visual landmarks that the device uses to determine the location of the markers. If a training file involves virtual markers, it is vital for the user or trainer to ensure that visual landmarks are placed consistently and visible to the HoloLens camera
This project seeks to provide a tool for doctors and other health professionals to easily create their own HMD-based tutorials. In addition, eye-gaze tracking can provide an additional metric to compare a tutorial user's performance to the expert who created the tutorial.
This project consists of two primary modules for tutorial generation and eye-gaze tracking:
Tutorial generation
The HoloLens Development requires Visual Studio with the Windows 10 SDK along with the Vuforia extension to work with Unity. The content generation modules are developed within Unity with C# scripts to control the behavior of the app. Our first step in development was to include initial directions for the user in order to navigate the user interface and begin tutorial generation. The app is controlled using voice commands, since gestures in the current HoloLens libraries are relatively limited and most trainees will be fully occupied with the task. Unity for the HoloLens offers built-in speech recognition modules tha use either online or offline libraries to convert speech to text. While recording speech input, there is a visual indicator for active recording. Unity also is able to directly access the camera in the HoloLens device, although it may only be used by one process at a time, and would prevent our program from capturing video and images simultaneously. After image capture, the image will be displayed to the user for approval, retake, or rejection.
The recorded text will be written to a JSON file and images will be saved as they are captured and approved. The path to the final image will be written to the JSON with each step. Recorded audio will also be saved so necessary corrections can be made manually to the text afterwards.
Eye Gaze Tracking
Eye Gaze Module Components Pupil service - Pupil Labs proprietary software required to interface with the pupil labs cameras. Stores Calibration information, as well as facilitates transfer of gaze coordinate positions to python scripts via a zmq networking paradigm. Calibration Program for Hololens -Unity project provided by Pupil labs to allow for calibrating the HoloLens user’s eye gaze to with the pupil labs service. Gaze Streaming - A script that starts a zmq subscriber to listen to the gaze coordinate positions from the pupil labs service then streams this data over a UDP connection to required destinations on the python scripts running in parallel. Heatmap Server script - Receives raw gaze coordinate data, this is then transformed to the screen frame coordinates for the known display screen size of the HoloLens(approximately 720p). Coordinates are cleaned then transferred to the Heatmap Creation script. Heatmap Creation script - Stores a history of gaze coordinate data and creates a heatmap image from the data. The image is updated after a set number of entries. Image Transfer script - Code to transfer image of the heatmap using a TCP/IP connection to the Hololens. Hololens Scene - All the required code for displaying the Heatmap image is condensed within a unity canvas and a couple of managing components allowing for easy integration with other unity applications