SurgSim::Devices::LeapDevice Class Reference

A class implementing the communication with one hand tracked by Leap Motion camera. More...

`#include <SurgSim/Devices/Leap/LeapDevice.h>`

Inheritance diagram for SurgSim::Devices::LeapDevice:

## Public Member Functions

| LeapDevice (const std::string &name)
| Constructor. More...
| SURGSIM_CLASSNAME (SurgSim::Devices::LeapDevice)
virtual | ~LeapDevice ()
| Destructor. More...
void | setHandType (HandType type)
| Set the type of hand. More...
HandType | getHandType () const
| Get the type of hand. More...
void | setUseHmdTrackingMode (bool useHmdTrackingMode)
| Set the hand tracking mode to HMD This is a global setting that optimizes hand tracking based on the Leap camera placement. More...
bool | isUsingHmdTrackingMode () const
| Is Using HMD Tracking Mode. More...
void | setProvideImages (bool provideImages)
| Set if the device should provide the stereo infrared images. More...
bool | isProvidingImages () const
| Get if the device should provide the stereo infrared images. More...
bool | initialize () override
| Fully initialize the device. More...
bool | isInitialized () const override
Public Member Functions inherited from SurgSim::Input::CommonDevice
| CommonDevice (const std::string &name)
| Constructor. More...
| CommonDevice (const std::string &name, const DataStructures::DataGroup &inputData)
| Constructor. More...
| CommonDevice (const std::string &name, DataStructures::DataGroup &&inputData)
| Constructor. More...
virtual | ~CommonDevice ()
| Destructor. More...
std::string | getName () const override
| Return a (hopefully unique) device name. More...
std::string | getClassName () const override
| The class name for this class. More...
void | setNameForCallback (const std::string &name)
| Set the name used for calling the input consumers and output producer. More...
std::string | getNameForCallback () const
| Get the name used for calling the input consumers and output producer. More...
bool | addInputConsumer (std::shared_ptr< InputConsumerInterface > inputConsumer) override
| Adds an input consumer that will be notified when the application input state is updated. More...
bool | removeInputConsumer (std::shared_ptr< InputConsumerInterface > inputConsumer) override
| Removes an input consumer previously added via addInputConsumer. More...
void | clearInputConsumers () override
| Removes all InputConsumers. More...
bool | setOutputProducer (std::shared_ptr< OutputProducerInterface > outputProducer) override
| Sets an output producer that will be asked for application output state when the device needs it. More...
bool | removeOutputProducer (std::shared_ptr< OutputProducerInterface > outputProducer) override
| Removes an output producer previously added via setOutputProducer. More...
bool | hasOutputProducer () override
| Query if this object has output producer. More...
void | clearOutputProducer () override
| Removes any OutputProducer. More...
Public Member Functions inherited from SurgSim::Input::DeviceInterface
virtual | ~DeviceInterface ()
| Virtual destructor (empty). More...
Public Member Functions inherited from SurgSim::Framework::Accessible
| Accessible ()
| Default Constructor. More...
| ~Accessible ()
| Destructor. More...
template<class T >
T | getValue (const std::string &name) const
| Retrieves the value with the name by executing the getter if it is found and tries to convert it to the given type. More...
boost::any | getValue (const std::string &name) const
| Retrieves the value with the name by executing the getter if it is found. More...
template<class T >
bool | getValue (const std::string &name, T *value) const
| Retrieves the value with the name by executing the getter if it is found, and converts it to the type of the output parameter. More...
void | setValue (const std::string &name, const boost::any &value)
| Sets a value of a property that has setter. More...
bool | isReadable (const std::string &name) const
| Check whether a property is readable. More...
bool | isWriteable (const std::string &name) const
| Check whether a property is writable. More...
void | setGetter (const std::string &name, GetterType func)
| Sets a getter for a given property. More...
void | setSetter (const std::string &name, SetterType func)
| Sets a setter for a given property. More...
void | setAccessors (const std::string &name, GetterType getter, SetterType setter)
| Sets the accessors getter and setter in one function. More...
void | removeAccessors (const std::string &name)
| Removes all the accessors (getter and setter) for a given property. More...
void | forwardProperty (const std::string &name, const Accessible &target, const std::string &targetProperty)
| Adds a property with the given name that uses the targets accessors, in effect forwarding the value to the target. More...
void | setSerializable (const std::string &name, EncoderType encoder, DecoderType decoder)
| Sets the functions used to convert data from and to a YAML::Node. More...
void | setDecoder (const std::string &name, DecoderType decoder)
| Sets the functions used to convert data from a YAML::Node. More...
YAML::Node | encode () const
| Encode this Accessible to a YAML::Node. More...
void | decode (const YAML::Node &node, const std::vector< std::string > &ignoredProperties=std::vector< std::string >())
| Decode this Accessible from a YAML::Node, will throw an exception if the data type cannot be converted. More...
template<>
boost::any | getValue (const std::string &name) const

## Private Member Functions

bool | finalize () override
| Finalize (de-initialize) the device. More...

## Private Attributes

std::shared_ptr< LeapScaffold > | m_scaffold
HandType | m_handType
DataStructures::OptionalValue< bool > | m_requestedHmdTrackingMode
| Tracking mode. More...
bool | m_isProvidingImages
| Request Camera Images mode. More...

## Friends

class | LeapScaffold

## Additional Inherited Members

Public Types inherited from SurgSim::Framework::Accessible
typedef std::function< boost::any(void)> | GetterType
typedef std::function< void(boost::any)> | SetterType
typedef std::function< YAML::Node(void)> | EncoderType
typedef std::function< void(const YAML::Node *)> | DecoderType
Public Types inherited from SurgSim::Framework::FactoryBase1< DeviceInterface, std::string >
typedef ObjectFactory1< DeviceInterface, std::string > | FactoryType
Static Public Member Functions inherited from SurgSim::Framework::FactoryBase1< DeviceInterface, std::string >
static FactoryType & | getFactory ()
Protected Member Functions inherited from SurgSim::Input::CommonDevice
virtual void | pushInput ()
| Push application input to consumers. More...
virtual bool | pullOutput ()
| Pull application output from a producer. More...
DataStructures::DataGroup & | getInputData ()
| Getter for the input data DataGroup. More...
const DataStructures::DataGroup & | getOutputData () const
| Getter for the output data DataGroup. More...

## Detailed Description

A class implementing the communication with one hand tracked by Leap Motion camera.

Application input provided by the device:

  type | name |
  --- | --- | ---
  image | "left" | Left infrared image, each pixel value is between 0 and 1.
  image | "right" | Right infrared image, each pixel value is between 0 and 1.
  image | "left_distortion" | Left distortion calibration map
  image | "right_distortion" | Right distortion calibration map
  pose | "pose" | Hand pose
  pose | "ThumbProximal" | Pose of thumb proximal joint
  pose | "ThumbIntermediate" | Pose of thumb intermediate joint
  pose | "ThumbDistal" | Pose of thumb distal joint
  pose | "IndexFingerProximal" | Pose of index finger proximal joint
  pose | "IndexFingerIntermediate" | Pose of index finger intermediate joint
  pose | "IndexFingerDistal" | Pose of index finger distal joint
  pose | "MiddleFingerProximal" | Pose of middle finger proximal joint
  pose | "MiddleFingerIntermediate" | Pose of middle finger intermediate joint
  pose | "MiddleFingerDistal" | Pose of middle finger distal joint
  pose | "RingFingerProximal" | Pose of ring finger proximal joint
  pose | "RingFingerIntermediate" | Pose of ring finger intermediate joint
  pose | "RingFingerDistal" | Pose of ring finger distal joint
  pose | "SmallFingerProximal" | Pose of small finger proximal joint
  pose | "SmallFingerIntermediate" | Pose of small finger intermediate joint
  pose | "SmallFingerDistal" | Pose of small finger distal joint

Application output used by the device: none.

See also
  SurgSim::Devices::LeapScaffold

## Constructor & Destructor Documentation

## LeapDevice()

SurgSim::Devices::LeapDevice::LeapDevice | ( | const std::string & | name | ) |

explicit

Constructor.

Parameters

  name | A unique name for the device that will be used by the application.

## ~LeapDevice()

SurgSim::Devices::LeapDevice::~LeapDevice | ( |  | ) |

virtual

Destructor.

## Member Function Documentation

## finalize()

bool SurgSim::Devices::LeapDevice::finalize | ( |  | ) |

override private virtual

Finalize (de-initialize) the device.

Implements SurgSim::Input::DeviceInterface.

## getHandType()

HandType SurgSim::Devices::LeapDevice::getHandType | ( |  | ) | const

Get the type of hand.

Returns
  The hand type, either HANDTYPE_LEFT or HANDTYPE_RIGHT

## initialize()

bool SurgSim::Devices::LeapDevice::initialize | ( |  | ) |

override virtual

Fully initialize the device.

When the manager object creates the device, the internal state of the device usually isn't fully initialized yet. This method performs any needed initialization.

Implements SurgSim::Input::DeviceInterface.

## isInitialized()

bool SurgSim::Devices::LeapDevice::isInitialized | ( |  | ) | const

override virtual

Returns
  true if the device has been initialized and has not yet been finalized.

Implements SurgSim::Input::DeviceInterface.

## isProvidingImages()

bool SurgSim::Devices::LeapDevice::isProvidingImages | ( |  | ) | const

Get if the device should provide the stereo infrared images.

Returns
  True if providing images

## isUsingHmdTrackingMode()

bool SurgSim::Devices::LeapDevice::isUsingHmdTrackingMode | ( |  | ) | const

Is Using HMD Tracking Mode.

Returns
  True is HMD Tracking Mode is on

## setHandType()

void SurgSim::Devices::LeapDevice::setHandType | ( | HandType | type | ) |

Set the type of hand.

Parameters

  type | The hand type, either HANDTYPE_LEFT or HANDTYPE_RIGHT

## setProvideImages()

void SurgSim::Devices::LeapDevice::setProvideImages | ( | bool | provideImages | ) |

Set if the device should provide the stereo infrared images.

Parameters

  provideImages | True if providing images

## setUseHmdTrackingMode()

void SurgSim::Devices::LeapDevice::setUseHmdTrackingMode | ( | bool | useHmdTrackingMode | ) |

Set the hand tracking mode to HMD This is a global setting that optimizes hand tracking based on the Leap camera placement.

The default is desktop mode, where the camera is placed face up on a desktop. Use Hmd mode when the camera is attached to the front of a head mounted display.

Parameters

  useHmdTrackingMode | True if Hmd tracking mode is to be used

## SURGSIM_CLASSNAME()

SurgSim::Devices::LeapDevice::SURGSIM_CLASSNAME | ( | SurgSim::Devices::LeapDevice |  | ) |

## Friends And Related Function Documentation

## LeapScaffold

friend class LeapScaffold

friend

## Member Data Documentation

## m_handType

HandType SurgSim::Devices::LeapDevice::m_handType

private

## m_isProvidingImages

bool SurgSim::Devices::LeapDevice::m_isProvidingImages

private

Request Camera Images mode.

## m_requestedHmdTrackingMode

DataStructures::OptionalValue<bool> SurgSim::Devices::LeapDevice::m_requestedHmdTrackingMode

private

Tracking mode.

## m_scaffold

std::shared_ptr<LeapScaffold> SurgSim::Devices::LeapDevice::m_scaffold

private

The documentation for this class was generated from the following files:

- SurgSim/Devices/Leap/LeapDevice.h
- SurgSim/Devices/Leap/LeapDevice.cpp