Plus applications user manual  2.9.0.bf99f0e
Software library for tracked ultrasound image acquisition, calibration, and processing.
LeapMotion hand tracker

Supported hardware devices

Supported platforms

Device configuration settings

  • attribute.png
    Type = "LeapMotion"
    required.png
  • attribute.png
    AcquisitionRate
    optional.png
    Default = "20"
  • attribute.png
    LocalTimeOffsetSec
    optional.png
    Default = "0"
  • attribute.png
    ToolReferenceFrame
    optional.png
    Default = "Tracker"
  • attribute.png
    LeapHMDPolicy If the leap is attached to an HMD, set this attribute to TRUE
    optional.png
    Default = "FALSE"
  • attribute.png
    RefusePauseResumePolicy The leap motion gets very hot, so by default Plus requests permission to pause and resume the Leap service (this affects ALL leap motion apps) to minimize the temperature. Set to TRUE to refuse these permissions.
    optional.png
    Default = "FALSE"
  • element.png
    DataSources One datasource per joint DataSource child element is required.
    required.png
    • element.png
      DataSource
      required.png
      • attribute.png
        BufferSize
        optional.png
        Default = "150"
      • attribute.png
        Id The leap motion device uses these Ids to identify which joint transform should be stored in this data source. Please see the section on transform names in this document for details.
        required.png
      • attribute.png
        AveragedItemsForFiltering
        optional.png
        Default = "20"

Data source ID transform names

This device uses the data source "Id" as lookup for which joint to store. The list of acceptable "Id" values are combinations of Hand ("Left", "Right"), Finger ("Thumb", "Index", "Middle", "Ring", "Pinky"), and Joint ("Metacarpal", "Proximal", "Intermediate", "Distal"). Some examples are:

  • LeftIndexMetacarpal
  • RightMiddleProximal
  • LeftThumbDistal

The only exception is that the Thumb does not have a metacarpal joint.

Non-finger joints:

  • LeftPalm
  • RightPalm

Example configuration file PlusDeviceSet_Server_LeapMotionTracker.xml

<PlusConfiguration version="2.1">
<DataCollection StartupDelaySec="1.0">
<DeviceSet
Name="PlusServer: LeapMotion"
Description="Collecting joint pose data from a LeapMotion hand tracker and broadcasting through OpenIGTLink"
/>
<Device
AcquisitionRate="240"
Id="TrackerDevice"
Type="LeapMotion"
ToolReferenceFrame="Tracker" >
<DataSources>
<DataSource Type="Video" Id="LeftCamera"/>
<DataSource Type="Video" Id="RightCamera"/>
<DataSource Type="Tool" Id="LeftThumbDistal"/>
<DataSource Type="Tool" Id="LeftIndexDistal"/>
<DataSource Type="Tool" Id="LeftMiddleDistal"/>
<DataSource Type="Tool" Id="LeftRingDistal"/>
<DataSource Type="Tool" Id="LeftPinkyDistal"/>
<DataSource Type="Tool" Id="LeftThumbIntermediate"/>
<DataSource Type="Tool" Id="LeftIndexIntermediate"/>
<DataSource Type="Tool" Id="LeftMiddleIntermediate"/>
<DataSource Type="Tool" Id="LeftRingIntermediate"/>
<DataSource Type="Tool" Id="LeftPinkyIntermediate"/>
<DataSource Type="Tool" Id="LeftThumbProximal"/>
<DataSource Type="Tool" Id="LeftIndexProximal"/>
<DataSource Type="Tool" Id="LeftMiddleProximal"/>
<DataSource Type="Tool" Id="LeftRingProximal"/>
<DataSource Type="Tool" Id="LeftPinkyProximal"/>
<DataSource Type="Tool" Id="RightThumbDistal"/>
<DataSource Type="Tool" Id="RightIndexDistal"/>
<DataSource Type="Tool" Id="RightMiddleDistal"/>
<DataSource Type="Tool" Id="RightRingDistal"/>
<DataSource Type="Tool" Id="RightPinkyDistal"/>
<DataSource Type="Tool" Id="RightThumbIntermediate"/>
<DataSource Type="Tool" Id="RightIndexIntermediate"/>
<DataSource Type="Tool" Id="RightMiddleIntermediate"/>
<DataSource Type="Tool" Id="RightRingIntermediate"/>
<DataSource Type="Tool" Id="RightPinkyIntermediate"/>
<DataSource Type="Tool" Id="RightThumbProximal"/>
<DataSource Type="Tool" Id="RightIndexProximal"/>
<DataSource Type="Tool" Id="RightMiddleProximal"/>
<DataSource Type="Tool" Id="RightRingProximal"/>
<DataSource Type="Tool" Id="RightPinkyProximal"/>
</DataSources>
<OutputChannels>
<OutputChannel Id="LeftChannel" VideoDataSourceId="LeftCamera"/>
<OutputChannel Id="RightChannel" VideoDataSourceId="RightCamera"/>
<OutputChannel Id="TrackerChannel">
<DataSource Id="LeftThumbDistal"/>
<DataSource Id="LeftIndexDistal"/>
<DataSource Id="LeftMiddleDistal"/>
<DataSource Id="LeftRingDistal"/>
<DataSource Id="LeftPinkyDistal"/>
<DataSource Id="LeftThumbIntermediate"/>
<DataSource Id="LeftIndexIntermediate"/>
<DataSource Id="LeftMiddleIntermediate"/>
<DataSource Id="LeftRingIntermediate"/>
<DataSource Id="LeftPinkyIntermediate"/>
<DataSource Id="LeftThumbProximal"/>
<DataSource Id="LeftIndexProximal"/>
<DataSource Id="LeftMiddleProximal"/>
<DataSource Id="LeftRingProximal"/>
<DataSource Id="LeftPinkyProximal"/>
<DataSource Id="RightThumbDistal"/>
<DataSource Id="RightIndexDistal"/>
<DataSource Id="RightMiddleDistal"/>
<DataSource Id="RightRingDistal"/>
<DataSource Id="RightPinkyDistal"/>
<DataSource Id="RightThumbIntermediate"/>
<DataSource Id="RightIndexIntermediate"/>
<DataSource Id="RightMiddleIntermediate"/>
<DataSource Id="RightRingIntermediate"/>
<DataSource Id="RightPinkyIntermediate"/>
<DataSource Id="RightThumbProximal"/>
<DataSource Id="RightIndexProximal"/>
<DataSource Id="RightMiddleProximal"/>
<DataSource Id="RightRingProximal"/>
<DataSource Id="RightPinkyProximal"/>
</OutputChannel>
</OutputChannels>
</Device>
<Device
Id="CaptureDevice"
Type="VirtualCapture"
BaseFilename="RecordingTest.igs.nrrd"
EnableCompression="TRUE"
EnableCapturingOnStart="FALSE" >
<InputChannels>
<InputChannel Id="TrackerChannel" />
</InputChannels>
</Device>
</DataCollection>
<CoordinateDefinitions>
<Transform From="LeftCamera" To="Tracker"
Matrix="1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1"
Date="2011.12.06 17:57:00" Error="0.0" />
</CoordinateDefinitions>
<PlusOpenIGTLinkServer
MaxNumberOfIgtlMessagesToSend="1"
MaxTimeSpentLeaphProcessingMs="50"
ListeningPort="18945"
OutputChannelId="LeftChannel"
>
<DefaultClientInfo>
<MessageTypes>
<Message Type="IMAGE" />
</MessageTypes>
<ImageNames>
<Image Name="LeftCamera" EmbeddedTransformToFrame="Tracker"/>
</ImageNames>
</DefaultClientInfo>
</PlusOpenIGTLinkServer>
<PlusOpenIGTLinkServer
MaxNumberOfIgtlMessagesToSend="1"
MaxTimeSpentLeaphProcessingMs="50"
ListeningPort="18944"
OutputChannelId="TrackerChannel"
>
<DefaultClientInfo>
<MessageTypes>
<Message Type="TRANSFORM" />
</MessageTypes>
<TransformNames>
<Transform Name="LeftThumbDistalToTracker"/>
<Transform Name="LeftIndexDistalToTracker"/>
<Transform Name="LeftMiddleDistalToTracker"/>
<Transform Name="LeftRingDistalToTracker"/>
<Transform Name="LeftPinkyDistalToTracker"/>
<Transform Name="LeftThumbIntermediateToTracker"/>
<Transform Name="LeftIndexIntermediateToTracker"/>
<Transform Name="LeftMiddleIntermediateToTracker"/>
<Transform Name="LeftRingIntermediateToTracker"/>
<Transform Name="LeftPinkyIntermediateToTracker"/>
<Transform Name="LeftThumbProximalToTracker"/>
<Transform Name="LeftIndexProximalToTracker"/>
<Transform Name="LeftMiddleProximalToTracker"/>
<Transform Name="LeftRingProximalToTracker"/>
<Transform Name="LeftPinkyProximalToTracker"/>
<Transform Name="RightThumbDistalToTracker"/>
<Transform Name="RightIndexDistalToTracker"/>
<Transform Name="RightMiddleDistalToTracker"/>
<Transform Name="RightRingDistalToTracker"/>
<Transform Name="RightPinkyDistalToTracker"/>
<Transform Name="RightThumbIntermediateToTracker"/>
<Transform Name="RightIndexIntermediateToTracker"/>
<Transform Name="RightMiddleIntermediateToTracker"/>
<Transform Name="RightRingIntermediateToTracker"/>
<Transform Name="RightPinkyIntermediateToTracker"/>
<Transform Name="RightThumbProximalToTracker"/>
<Transform Name="RightIndexProximalToTracker"/>
<Transform Name="RightMiddleProximalToTracker"/>
<Transform Name="RightRingProximalToTracker"/>
<Transform Name="RightPinkyProximalToTracker"/>
</TransformNames>
</DefaultClientInfo>
</PlusOpenIGTLinkServer>
</PlusConfiguration>