GitHub Account Google Scholar Account LinkedIn Account Twitter Account flickr Account vialab Research Group Profile Page

Calibrating Multiple Leap Motion Controllers

Date: February 16, 2015

At the current time, Leap Motion does not support using multiple Leap Motion controllers connected to a single computer. Developers can still get around this issue by employing the Web Sockets protocol along with a second computer or a virtual machine, as described in my earlier post. If these Leap Motion devices are used along side one another, it is beneficial to place them within the same frame of reference (coordinate system). This can be accomplished with the use of a touch-enabled visual display.

Within a calibration mode, multiple small touch-enabled targets can be drawn on-screen at corners of the display. By programmatically determining the size and resolution of this display, all target positions in milimetres (mm) from the bottom-left corner can be calculated. A milimetre-based coordinate system is used as the Leap Motion devices output positional data in mm from the centre of each device.

To place each device within this coordinate system, a human can select each target with their index finger one-at-a-time for a certain duration. Since each target is touch-enabled, the system knows when a target is being touched. For the duration that a target is being touched, the system can then calculate the average distance in mm from a Leap Motion device to the index finger that is touching the target.

After all targets have been touched, the system will know the distance from the bottom-left corner of the display to each corner of the display, then to the centre of each Leap Motion device. Now when a hand is placed within a Leap Motion controller's field of view, the system will be able to convert the Leap Motion's positional data from its local frame of reference to the newly created global frame of reference. This allows multiple Leap Motion controllers to be employed, as well as allowing further devices to be easily integrated into the system.