Medical Imaging Interaction Toolkit  2018.4.99-3e3f1a6e
Medical Imaging Interaction Toolkit
mitk::VirtualTrackingDevice Class Reference

Class representing a tracking device which generates random positions / orientations. No hardware is needed for tracking device. More...

#include <mitkVirtualTrackingDevice.h>

Inheritance diagram for mitk::VirtualTrackingDevice:
Collaboration diagram for mitk::VirtualTrackingDevice:

Public Member Functions

 mitkClassMacro (VirtualTrackingDevice, TrackingDevice)
 
Pointer Clone () const
 
virtual void SetRefreshRate (unsigned int _arg)
 Sets the refresh rate of the virtual tracking device in ms. More...
 
virtual unsigned int GetRefreshRate () const
 Returns the refresh rate in ms. More...
 
bool StartTracking () override
 Starts the tracking. More...
 
bool StopTracking () override
 Stops the tracking. More...
 
bool OpenConnection () override
 Opens the connection to the device. This have to be done before the tracking is started. More...
 
bool CloseConnection () override
 Closes the connection and clears all resources. More...
 
unsigned int GetToolCount () const override
 
TrackingToolGetTool (unsigned int toolNumber) const override
 
TrackingToolAddTool (const char *toolName)
 Adds a tool to the tracking device. More...
 
virtual void SetBounds (mitk::ScalarType data[])
 Set the tracking volume bounds. More...
 
const mitk::ScalarTypeGetBounds () const
 return the tracking volume bounds More...
 
mitk::ScalarType GetSplineChordLength (unsigned int idx)
 return the approximate length of the spline for tool with index idx in millimeter More...
 
void SetToolSpeed (unsigned int idx, mitk::ScalarType roundsPerSecond)
 sets the speed of the tool idx in rounds per second More...
 
void EnableGaussianNoise ()
 enable addition of Gaussian Noise to tracking coordinates More...
 
void DisableGaussianNoise ()
 disable addition of Gaussian Noise to Trackin coordinates More...
 
void SetParamsForGaussianNoise (double meanDistribution, double deviationDistribution)
 sets the mean distribution and the standard deviation for the Gaussian Noise More...
 
double GetMeanDistribution ()
 returns the mean distribution for the Gaussian Noise More...
 
double GetDeviationDistribution ()
 returns the deviation distribution for the Gaussian Noise More...
 
- Public Member Functions inherited from mitk::TrackingDevice
 mitkClassMacroItkParent (TrackingDevice, itk::Object)
 
virtual mitk::TrackingToolGetToolByName (std::string name) const
 Returns the tool with the given tool name. More...
 
virtual void SetRotationMode (RotationMode r)
 
virtual RotationMode GetRotationMode () const
 
TrackingDeviceState GetState () const
 return current object state (Setup, Ready or Tracking) More...
 
TrackingDeviceType GetType () const
 Deprecated! Use the more specific getData or GetTrackingDeviceName instead. return device type identifier. More...
 
void SetType (TrackingDeviceType type)
 Deprecated! Use the more specific setDeviceData instead. set device type. More...
 
std::string GetTrackingDeviceName ()
 Convenient Method to get the Name of the Tracking Device. This is identical with GetData().Line and can be used to compare with TrackingDeviceTypeInformation::GetTrackingDeviceName() to check if you have a specific device. More...
 
TrackingDeviceData GetData () const
 return device data More...
 
void SetData (TrackingDeviceData data)
 set device type More...
 
virtual bool IsDeviceInstalled ()
 
virtual bool AutoDetectToolsAvailable ()
 
virtual bool AddSingleToolIsAvailable ()
 
virtual mitk::NavigationToolStorage::Pointer AutoDetectTools ()
 

Static Public Member Functions

static Pointer New ()
 

Protected Types

typedef mitk::VirtualTrackingTool::SplineType::ControlPointType ControlPointType
 
typedef std::vector< VirtualTrackingTool::Pointer > ToolContainer
 container type for tracking tools More...
 

Protected Member Functions

 VirtualTrackingDevice ()
 
 ~VirtualTrackingDevice () override
 
void TrackTools ()
 This method tracks tools as long as the variable m_Mode is set to "Tracking". Tracking tools means generating random numbers for the tool position and orientation. More...
 
void InitializeSpline (mitk::VirtualTrackingTool *t)
 initializes the spline path of the tool t with random control points inside the current tracking volume More...
 
ControlPointType GetRandomPoint ()
 returns a random position inside the tracking volume (defined by m_Bounds) More...
 
mitk::VirtualTrackingToolGetInternalTool (unsigned int idx)
 
- Protected Member Functions inherited from mitk::TrackingDevice
void SetState (TrackingDeviceState state)
 change object state More...
 
 TrackingDevice ()
 
 ~TrackingDevice () override
 

Static Protected Member Functions

static ITK_THREAD_RETURN_TYPE ThreadStartTracking (void *data)
 static start method for tracking thread More...
 

Protected Attributes

ToolContainer m_AllTools
 container for all tracking tools More...
 
itk::FastMutexLock::Pointer m_ToolsMutex
 mutex for coordinated access of tool container More...
 
itk::MultiThreader::Pointer m_MultiThreader
 MultiThreader that starts continuous tracking update. More...
 
int m_ThreadID
 
unsigned int m_RefreshRate
 refresh rate of the internal tracking thread in milliseconds (NOT refreshs per second!) More...
 
unsigned int m_NumberOfControlPoints
 number of control points for the random path generation More...
 
mitk::ScalarType m_Bounds [6]
 bounding box of the tracking volume stored as {xMin, xMax, yMin, yMax, zMin, zMax} More...
 
bool m_GaussianNoiseEnabled
 adding Gaussian Noise to tracking coordinates or not, false by default More...
 
double m_MeanDistributionParam
 
double m_DeviationDistributionParam
 mean distribution for Gaussion Noise, 0.0 by default More...
 
- Protected Attributes inherited from mitk::TrackingDevice
TrackingDeviceData m_Data
 current device Data More...
 
bool m_StopTracking
 signal stop to tracking thread More...
 
itk::FastMutexLock::Pointer m_StopTrackingMutex
 mutex to control access to m_StopTracking More...
 
itk::FastMutexLock::Pointer m_TrackingFinishedMutex
 mutex to manage control flow of StopTracking() More...
 
itk::FastMutexLock::Pointer m_StateMutex
 mutex to control access to m_State More...
 
RotationMode m_RotationMode
 defines the rotation mode Standard or Transposed, Standard is default More...
 

Additional Inherited Members

- Public Types inherited from mitk::TrackingDevice
enum  RotationMode { RotationStandard, RotationTransposed }
 
enum  TrackingDeviceState { Setup, Ready, Tracking }
 

Detailed Description

Class representing a tracking device which generates random positions / orientations. No hardware is needed for tracking device.

Documentation This TrackingDevice class does not interface with a physical tracking device. It simulates a tracking device by moving the tools on a randomly generated spline path.

Definition at line 35 of file mitkVirtualTrackingDevice.h.

Member Typedef Documentation

◆ ControlPointType

◆ ToolContainer

typedef std::vector<VirtualTrackingTool::Pointer> mitk::VirtualTrackingDevice::ToolContainer
protected

container type for tracking tools

Definition at line 199 of file mitkVirtualTrackingDevice.h.

Constructor & Destructor Documentation

◆ VirtualTrackingDevice()

mitk::VirtualTrackingDevice::VirtualTrackingDevice ( )
protected

◆ ~VirtualTrackingDevice()

mitk::VirtualTrackingDevice::~VirtualTrackingDevice ( )
overrideprotected

Member Function Documentation

◆ AddTool()

mitk::TrackingTool * mitk::VirtualTrackingDevice::AddTool ( const char *  toolName)

Adds a tool to the tracking device.

The tool will have a random path on which it will move around. The path is created with a spline function and random control points inside the tracking volume.

Parameters
toolNameThe tool which will be added.
Returns
Returns true if the tool has been added, false otherwise.

Definition at line 57 of file mitkVirtualTrackingDevice.cpp.

References InitializeSpline(), m_AllTools, m_ToolsMutex, and mitk::VirtualTrackingTool::New().

◆ Clone()

Pointer mitk::VirtualTrackingDevice::Clone ( ) const

◆ CloseConnection()

bool mitk::VirtualTrackingDevice::CloseConnection ( )
overridevirtual

Closes the connection and clears all resources.

Implements mitk::TrackingDevice.

Definition at line 171 of file mitkVirtualTrackingDevice.cpp.

References mitk::TrackingDevice::GetState(), mitk::TrackingDevice::SetState(), and mitk::TrackingDevice::Setup.

Referenced by ~VirtualTrackingDevice().

◆ DisableGaussianNoise()

void mitk::VirtualTrackingDevice::DisableGaussianNoise ( )

disable addition of Gaussian Noise to Trackin coordinates

Definition at line 312 of file mitkVirtualTrackingDevice.cpp.

References m_GaussianNoiseEnabled.

◆ EnableGaussianNoise()

void mitk::VirtualTrackingDevice::EnableGaussianNoise ( )

enable addition of Gaussian Noise to tracking coordinates

Definition at line 307 of file mitkVirtualTrackingDevice.cpp.

References m_GaussianNoiseEnabled.

◆ GetBounds()

const mitk::ScalarType* mitk::VirtualTrackingDevice::GetBounds ( ) const
inline

return the tracking volume bounds

This will return the tracking volume as an axis aligned bounding box defined by the six bounds values xMin, xMax, yMin, yMax, zMin, zMax

Definition at line 126 of file mitkVirtualTrackingDevice.h.

◆ GetDeviationDistribution()

double mitk::VirtualTrackingDevice::GetDeviationDistribution ( )

returns the deviation distribution for the Gaussian Noise

Definition at line 323 of file mitkVirtualTrackingDevice.cpp.

References m_DeviationDistributionParam.

◆ GetInternalTool()

mitk::VirtualTrackingTool * mitk::VirtualTrackingDevice::GetInternalTool ( unsigned int  idx)
protected

Definition at line 202 of file mitkVirtualTrackingDevice.cpp.

References m_AllTools, and m_ToolsMutex.

Referenced by GetSplineChordLength(), SetToolSpeed(), and TrackTools().

◆ GetMeanDistribution()

double mitk::VirtualTrackingDevice::GetMeanDistribution ( )

returns the mean distribution for the Gaussian Noise

Definition at line 328 of file mitkVirtualTrackingDevice.cpp.

References m_MeanDistributionParam.

◆ GetRandomPoint()

mitk::VirtualTrackingDevice::ControlPointType mitk::VirtualTrackingDevice::GetRandomPoint ( )
protected

returns a random position inside the tracking volume (defined by m_Bounds)

Definition at line 297 of file mitkVirtualTrackingDevice.cpp.

References m_Bounds.

Referenced by InitializeSpline().

◆ GetRefreshRate()

virtual unsigned int mitk::VirtualTrackingDevice::GetRefreshRate ( ) const
virtual

Returns the refresh rate in ms.

Returns
Returns the refresh rate in ms.

◆ GetSplineChordLength()

mitk::ScalarType mitk::VirtualTrackingDevice::GetSplineChordLength ( unsigned int  idx)

return the approximate length of the spline for tool with index idx in millimeter

if the index idx is not a valid tool index, a std::invalid_argument exception is thrown. GetSplineChordLength() returns the distance between all control points of the spline in millimeter. This can be used as an approximation for the length of the spline path.

Definition at line 181 of file mitkVirtualTrackingDevice.cpp.

References GetInternalTool(), and mitk::VirtualTrackingTool::GetSplineLength().

◆ GetTool()

mitk::TrackingTool * mitk::VirtualTrackingDevice::GetTool ( unsigned int  toolNumber) const
overridevirtual
Parameters
toolNumberThe number of the tool which should be given back.
Returns
Returns the tool which the number "toolNumber". Returns nullptr, if there is no tool with this number.

Implements mitk::TrackingDevice.

Definition at line 117 of file mitkVirtualTrackingDevice.cpp.

References m_AllTools, and m_ToolsMutex.

◆ GetToolCount()

unsigned int mitk::VirtualTrackingDevice::GetToolCount ( ) const
overridevirtual
Returns
Returns the number of tools which have been added to the device.

Implements mitk::TrackingDevice.

Definition at line 111 of file mitkVirtualTrackingDevice.cpp.

References m_AllTools, and m_ToolsMutex.

Referenced by TrackTools().

◆ InitializeSpline()

void mitk::VirtualTrackingDevice::InitializeSpline ( mitk::VirtualTrackingTool t)
protected

◆ mitkClassMacro()

mitk::VirtualTrackingDevice::mitkClassMacro ( VirtualTrackingDevice  ,
TrackingDevice   
)

◆ New()

static Pointer mitk::VirtualTrackingDevice::New ( )
static

◆ OpenConnection()

bool mitk::VirtualTrackingDevice::OpenConnection ( )
overridevirtual

Opens the connection to the device. This have to be done before the tracking is started.

Exceptions
mitk::IGTExceptionThrows an exception if there are two less control points to start the the virtual device.

Implements mitk::TrackingDevice.

Definition at line 125 of file mitkVirtualTrackingDevice.cpp.

References m_NumberOfControlPoints, mitkThrowException, mitk::TrackingDevice::Ready, and mitk::TrackingDevice::SetState().

◆ SetBounds()

virtual void mitk::VirtualTrackingDevice::SetBounds ( mitk::ScalarType  data[])
virtual

Set the tracking volume bounds.

This will set the tracking volume as an axis aligned bounding box defined by the six bounds values xMin, xMax, yMin, yMax, zMin, zMax. Note that the random path of existing tools will not be updated with the new tracking volume. Tools that are created after calling SetBounds() will use the new tracking volume

◆ SetParamsForGaussianNoise()

void mitk::VirtualTrackingDevice::SetParamsForGaussianNoise ( double  meanDistribution,
double  deviationDistribution 
)

sets the mean distribution and the standard deviation for the Gaussian Noise

Definition at line 317 of file mitkVirtualTrackingDevice.cpp.

References m_DeviationDistributionParam, and m_MeanDistributionParam.

◆ SetRefreshRate()

virtual void mitk::VirtualTrackingDevice::SetRefreshRate ( unsigned int  _arg)
virtual

Sets the refresh rate of the virtual tracking device in ms.

Warning
This refresh rate is not guaranteed. A thread is used to refresh the positions of the virtual tools. However, this thread may not run at all during this refresh time period.
Returns
Sets the refresh rate of the virtual tracking device in ms

◆ SetToolSpeed()

void mitk::VirtualTrackingDevice::SetToolSpeed ( unsigned int  idx,
mitk::ScalarType  roundsPerSecond 
)

sets the speed of the tool idx in rounds per second

The virtual tools will travel along a closed spline path. This method sets the speed of a tool as a factor of how many rounds per second the tool should move. A setting of 1.0 will indicate one complete round per second. Together with GetSplineChordLength(), the speed in millimeter per second can be estimated. roundsPerSecond must be positive and larger than 0.0001.

Warning
Tool speed is currently not used. : use tool speed

Definition at line 190 of file mitkVirtualTrackingDevice.cpp.

References GetInternalTool(), and mitk::VirtualTrackingTool::SetVelocity().

◆ StartTracking()

bool mitk::VirtualTrackingDevice::StartTracking ( )
overridevirtual

Starts the tracking.

After StartTracking() is called, the tools will move on their spline paths with a constant velocity that can be set with SetToolSpeed(). The standard velocity is 10 seconds for one complete cycle along the spline path.

Warning
tool speed is not yet used in the current version
Returns
Returns true if the tracking is started. Returns false if there was an error.

Implements mitk::TrackingDevice.

Definition at line 73 of file mitkVirtualTrackingDevice.cpp.

References mitk::IGTTimeStamp::GetInstance(), mitk::TrackingDevice::GetState(), m_MultiThreader, mitk::TrackingDevice::m_StopTracking, mitk::TrackingDevice::m_StopTrackingMutex, m_ThreadID, mitk::TrackingDevice::Ready, mitk::TrackingDevice::SetState(), mitk::IGTTimeStamp::Start(), ThreadStartTracking(), and mitk::TrackingDevice::Tracking.

◆ StopTracking()

bool mitk::VirtualTrackingDevice::StopTracking ( )
overridevirtual

◆ ThreadStartTracking()

ITK_THREAD_RETURN_TYPE mitk::VirtualTrackingDevice::ThreadStartTracking ( void *  data)
staticprotected

static start method for tracking thread

Definition at line 276 of file mitkVirtualTrackingDevice.cpp.

References m_ThreadID, and TrackTools().

Referenced by StartTracking().

◆ TrackTools()

void mitk::VirtualTrackingDevice::TrackTools ( )
protected

This method tracks tools as long as the variable m_Mode is set to "Tracking". Tracking tools means generating random numbers for the tool position and orientation.

Exceptions
mitk::IGTExceptionThrows an mitk::IGTException if there is an error during virtual tool tracking.

Definition at line 211 of file mitkVirtualTrackingDevice.cpp.

References GetInternalTool(), mitk::TrackingDevice::GetState(), GetToolCount(), mitk::itk2vtk(), m_DeviationDistributionParam, m_GaussianNoiseEnabled, m_MeanDistributionParam, m_RefreshRate, mitk::TrackingDevice::m_StopTracking, mitk::TrackingDevice::m_StopTrackingMutex, mitk::TrackingDevice::m_TrackingFinishedMutex, and mitk::TrackingDevice::Tracking.

Referenced by ThreadStartTracking().

Member Data Documentation

◆ m_AllTools

ToolContainer mitk::VirtualTrackingDevice::m_AllTools
protected

container for all tracking tools

Definition at line 200 of file mitkVirtualTrackingDevice.h.

Referenced by AddTool(), GetInternalTool(), GetTool(), GetToolCount(), and ~VirtualTrackingDevice().

◆ m_Bounds

mitk::ScalarType mitk::VirtualTrackingDevice::m_Bounds[6]
protected

bounding box of the tracking volume stored as {xMin, xMax, yMin, yMax, zMin, zMax}

Definition at line 209 of file mitkVirtualTrackingDevice.h.

Referenced by GetRandomPoint(), and VirtualTrackingDevice().

◆ m_DeviationDistributionParam

double mitk::VirtualTrackingDevice::m_DeviationDistributionParam
protected

mean distribution for Gaussion Noise, 0.0 by default

deviation distribution for Gaussian Noise, 1.0 by default

Definition at line 212 of file mitkVirtualTrackingDevice.h.

Referenced by GetDeviationDistribution(), SetParamsForGaussianNoise(), and TrackTools().

◆ m_GaussianNoiseEnabled

bool mitk::VirtualTrackingDevice::m_GaussianNoiseEnabled
protected

adding Gaussian Noise to tracking coordinates or not, false by default

Definition at line 210 of file mitkVirtualTrackingDevice.h.

Referenced by DisableGaussianNoise(), EnableGaussianNoise(), and TrackTools().

◆ m_MeanDistributionParam

double mitk::VirtualTrackingDevice::m_MeanDistributionParam
protected

◆ m_MultiThreader

itk::MultiThreader::Pointer mitk::VirtualTrackingDevice::m_MultiThreader
protected

MultiThreader that starts continuous tracking update.

Definition at line 203 of file mitkVirtualTrackingDevice.h.

Referenced by StartTracking(), and ~VirtualTrackingDevice().

◆ m_NumberOfControlPoints

unsigned int mitk::VirtualTrackingDevice::m_NumberOfControlPoints
protected

number of control points for the random path generation

Definition at line 207 of file mitkVirtualTrackingDevice.h.

Referenced by InitializeSpline(), and OpenConnection().

◆ m_RefreshRate

unsigned int mitk::VirtualTrackingDevice::m_RefreshRate
protected

refresh rate of the internal tracking thread in milliseconds (NOT refreshs per second!)

Definition at line 206 of file mitkVirtualTrackingDevice.h.

Referenced by TrackTools().

◆ m_ThreadID

int mitk::VirtualTrackingDevice::m_ThreadID
protected

◆ m_ToolsMutex

itk::FastMutexLock::Pointer mitk::VirtualTrackingDevice::m_ToolsMutex
protected

mutex for coordinated access of tool container

Definition at line 201 of file mitkVirtualTrackingDevice.h.

Referenced by AddTool(), GetInternalTool(), GetTool(), GetToolCount(), and VirtualTrackingDevice().


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