Medical Imaging Interaction Toolkit  2023.04.00
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...
 
void ThreadStartTracking ()
 static start method for tracking thread 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
 

Protected Attributes

ToolContainer m_AllTools
 container for all tracking tools More...
 
std::mutex m_ToolsMutex
 mutex for coordinated access of tool container More...
 
std::thread m_Thread
 
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...
 
std::mutex m_StopTrackingMutex
 mutex to control access to m_StopTracking More...
 
std::mutex m_TrackingFinishedMutex
 mutex to manage control flow of StopTracking() More...
 
std::mutex 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()

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.

◆ Clone()

Pointer mitk::VirtualTrackingDevice::Clone ( ) const

◆ CloseConnection()

bool mitk::VirtualTrackingDevice::CloseConnection ( )
overridevirtual

Closes the connection and clears all resources.

Implements mitk::TrackingDevice.

◆ DisableGaussianNoise()

void mitk::VirtualTrackingDevice::DisableGaussianNoise ( )

disable addition of Gaussian Noise to Trackin coordinates

◆ EnableGaussianNoise()

void mitk::VirtualTrackingDevice::EnableGaussianNoise ( )

enable addition of Gaussian Noise to tracking coordinates

◆ 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

◆ GetInternalTool()

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

◆ GetMeanDistribution()

double mitk::VirtualTrackingDevice::GetMeanDistribution ( )

returns the mean distribution for the Gaussian Noise

◆ GetRandomPoint()

ControlPointType mitk::VirtualTrackingDevice::GetRandomPoint ( )
protected

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

◆ 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.

◆ GetTool()

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.

◆ GetToolCount()

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

Implements mitk::TrackingDevice.

◆ InitializeSpline()

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

initializes the spline path of the tool t with random control points inside the current tracking volume

◆ 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.

◆ 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

◆ 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.

◆ 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.

◆ StopTracking()

bool mitk::VirtualTrackingDevice::StopTracking ( )
overridevirtual

Stops the tracking.

Returns
Returns true if the tracking is stopped. Returns false if there was an error.

Reimplemented from mitk::TrackingDevice.

◆ ThreadStartTracking()

void mitk::VirtualTrackingDevice::ThreadStartTracking ( )
protected

static start method for tracking thread

◆ 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.

Member Data Documentation

◆ m_AllTools

ToolContainer mitk::VirtualTrackingDevice::m_AllTools
protected

container for all tracking tools

Definition at line 200 of file mitkVirtualTrackingDevice.h.

◆ 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 208 of file mitkVirtualTrackingDevice.h.

◆ 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 211 of file mitkVirtualTrackingDevice.h.

◆ m_GaussianNoiseEnabled

bool mitk::VirtualTrackingDevice::m_GaussianNoiseEnabled
protected

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

Definition at line 209 of file mitkVirtualTrackingDevice.h.

◆ m_MeanDistributionParam

double mitk::VirtualTrackingDevice::m_MeanDistributionParam
protected

Definition at line 210 of file mitkVirtualTrackingDevice.h.

◆ m_NumberOfControlPoints

unsigned int mitk::VirtualTrackingDevice::m_NumberOfControlPoints
protected

number of control points for the random path generation

Definition at line 206 of file mitkVirtualTrackingDevice.h.

◆ 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 205 of file mitkVirtualTrackingDevice.h.

◆ m_Thread

std::thread mitk::VirtualTrackingDevice::m_Thread
protected

Definition at line 203 of file mitkVirtualTrackingDevice.h.

◆ m_ToolsMutex

std::mutex mitk::VirtualTrackingDevice::m_ToolsMutex
mutableprotected

mutex for coordinated access of tool container

Definition at line 201 of file mitkVirtualTrackingDevice.h.


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