MITK-IGT
IGT Extension of MITK
|
Class representing a tracking device which generates random positions / orientations. No hardware is needed for tracking device. More...
#include <mitkVirtualTrackingDevice.h>
Public Member Functions | |
mitkClassMacro (VirtualTrackingDevice, TrackingDevice) | |
itkFactorylessNewMacro (Self) | |
itkCloneMacro (Self) | |
itkSetMacro (RefreshRate, unsigned int) | |
Sets the refresh rate of the virtual tracking device in ms. | |
itkGetConstMacro (RefreshRate, unsigned int) | |
Returns the refresh rate in ms. | |
bool | StartTracking () override |
Starts the tracking. | |
bool | StopTracking () override |
Stops the tracking. | |
bool | OpenConnection () override |
Opens the connection to the device. This have to be done before the tracking is started. | |
bool | CloseConnection () override |
Closes the connection and clears all resources. | |
unsigned int | GetToolCount () const override |
TrackingTool * | GetTool (unsigned int toolNumber) const override |
TrackingTool * | AddTool (const char *toolName) |
Adds a tool to the tracking device. | |
itkSetVectorMacro (Bounds, mitk::ScalarType, 6) | |
Set the tracking volume bounds. | |
const mitk::ScalarType * | GetBounds () const |
return the tracking volume bounds | |
mitk::ScalarType | GetSplineChordLength (unsigned int idx) |
return the approximate length of the spline for tool with index idx in millimeter | |
void | SetToolSpeed (unsigned int idx, mitk::ScalarType roundsPerSecond) |
sets the speed of the tool idx in rounds per second | |
void | EnableGaussianNoise () |
enable addition of Gaussian Noise to tracking coordinates | |
void | DisableGaussianNoise () |
disable addition of Gaussian Noise to Trackin coordinates | |
void | SetParamsForGaussianNoise (double meanDistribution, double deviationDistribution) |
sets the mean distribution and the standard deviation for the Gaussian Noise | |
double | GetMeanDistribution () |
returns the mean distribution for the Gaussian Noise | |
double | GetDeviationDistribution () |
returns the deviation distribution for the Gaussian Noise | |
![]() | |
mitkClassMacroItkParent (TrackingDevice, itk::Object) | |
virtual mitk::TrackingTool * | GetToolByName (std::string name) const |
Returns the tool with the given tool name. | |
virtual void | SetRotationMode (RotationMode r) |
itkGetConstMacro (RotationMode, RotationMode) | |
TrackingDeviceState | GetState () const |
return current object state (Setup, Ready or Tracking) | |
TrackingDeviceType | GetType () const |
Deprecated! Use the more specific getData or GetTrackingDeviceName instead. return device type identifier. | |
void | SetType (TrackingDeviceType type) |
Deprecated! Use the more specific setDeviceData instead. set device type. | |
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. | |
TrackingDeviceData | GetData () const |
return device data | |
void | SetData (TrackingDeviceData data) |
set device type | |
virtual bool | IsDeviceInstalled () |
virtual bool | AutoDetectToolsAvailable () |
virtual bool | AddSingleToolIsAvailable () |
virtual mitk::NavigationToolStorage::Pointer | AutoDetectTools () |
Protected Types | |
typedef mitk::VirtualTrackingTool::SplineType::ControlPointType | ControlPointType |
typedef std::vector< VirtualTrackingTool::Pointer > | ToolContainer |
container type for tracking tools | |
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. | |
void | InitializeSpline (mitk::VirtualTrackingTool *t) |
initializes the spline path of the tool t with random control points inside the current tracking volume | |
void | ThreadStartTracking () |
static start method for tracking thread | |
ControlPointType | GetRandomPoint () |
returns a random position inside the tracking volume (defined by m_Bounds) | |
mitk::VirtualTrackingTool * | GetInternalTool (unsigned int idx) |
![]() | |
void | SetState (TrackingDeviceState state) |
change object state | |
TrackingDevice () | |
~TrackingDevice () override | |
Protected Attributes | |
ToolContainer | m_AllTools |
container for all tracking tools | |
std::mutex | m_ToolsMutex |
mutex for coordinated access of tool container | |
std::thread | m_Thread |
unsigned int | m_RefreshRate |
refresh rate of the internal tracking thread in milliseconds (NOT refreshs per second!) | |
unsigned int | m_NumberOfControlPoints |
number of control points for the random path generation | |
mitk::ScalarType | m_Bounds [6] |
bounding box of the tracking volume stored as {xMin, xMax, yMin, yMax, zMin, zMax} | |
bool | m_GaussianNoiseEnabled |
adding Gaussian Noise to tracking coordinates or not, false by default | |
double | m_MeanDistributionParam |
double | m_DeviationDistributionParam |
mean distribution for Gaussion Noise, 0.0 by default | |
![]() | |
TrackingDeviceData | m_Data |
current device Data | |
bool | m_StopTracking |
signal stop to tracking thread | |
std::mutex | m_StopTrackingMutex |
mutex to control access to m_StopTracking | |
std::mutex | m_TrackingFinishedMutex |
mutex to manage control flow of StopTracking() | |
std::mutex | m_StateMutex |
mutex to control access to m_State | |
RotationMode | m_RotationMode |
defines the rotation mode Standard or Transposed, Standard is default | |
Additional Inherited Members | |
![]() | |
enum | RotationMode { RotationStandard , RotationTransposed } |
enum | TrackingDeviceState { Setup , Ready , Tracking } |
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.
|
protected |
Definition at line 193 of file mitkVirtualTrackingDevice.h.
|
protected |
container type for tracking tools
Definition at line 198 of file mitkVirtualTrackingDevice.h.
|
protected |
Definition at line 25 of file mitkVirtualTrackingDevice.cpp.
|
overrideprotected |
Definition at line 34 of file mitkVirtualTrackingDevice.cpp.
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.
toolName | The tool which will be added. |
Definition at line 51 of file mitkVirtualTrackingDevice.cpp.
|
overridevirtual |
Closes the connection and clears all resources.
Implements mitk::TrackingDevice.
Definition at line 163 of file mitkVirtualTrackingDevice.cpp.
void mitk::VirtualTrackingDevice::DisableGaussianNoise | ( | ) |
disable addition of Gaussian Noise to Trackin coordinates
Definition at line 288 of file mitkVirtualTrackingDevice.cpp.
void mitk::VirtualTrackingDevice::EnableGaussianNoise | ( | ) |
enable addition of Gaussian Noise to tracking coordinates
Definition at line 283 of file mitkVirtualTrackingDevice.cpp.
|
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 125 of file mitkVirtualTrackingDevice.h.
double mitk::VirtualTrackingDevice::GetDeviationDistribution | ( | ) |
returns the deviation distribution for the Gaussian Noise
Definition at line 299 of file mitkVirtualTrackingDevice.cpp.
|
protected |
Definition at line 194 of file mitkVirtualTrackingDevice.cpp.
double mitk::VirtualTrackingDevice::GetMeanDistribution | ( | ) |
returns the mean distribution for the Gaussian Noise
Definition at line 304 of file mitkVirtualTrackingDevice.cpp.
|
protected |
returns a random position inside the tracking volume (defined by m_Bounds)
Definition at line 273 of file mitkVirtualTrackingDevice.cpp.
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 173 of file mitkVirtualTrackingDevice.cpp.
|
overridevirtual |
toolNumber | The number of the tool which should be given back. |
Implements mitk::TrackingDevice.
Definition at line 109 of file mitkVirtualTrackingDevice.cpp.
|
overridevirtual |
Implements mitk::TrackingDevice.
Definition at line 103 of file mitkVirtualTrackingDevice.cpp.
|
protected |
initializes the spline path of the tool t with random control points inside the current tracking volume
Definition at line 129 of file mitkVirtualTrackingDevice.cpp.
mitk::VirtualTrackingDevice::itkCloneMacro | ( | Self | ) |
mitk::VirtualTrackingDevice::itkFactorylessNewMacro | ( | Self | ) |
mitk::VirtualTrackingDevice::itkGetConstMacro | ( | RefreshRate | , |
unsigned int | ) |
Returns the refresh rate in ms.
mitk::VirtualTrackingDevice::itkSetMacro | ( | RefreshRate | , |
unsigned int | ) |
Sets the refresh rate of the virtual tracking device in ms.
mitk::VirtualTrackingDevice::itkSetVectorMacro | ( | Bounds | , |
mitk::ScalarType | , | ||
6 | ) |
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
mitk::VirtualTrackingDevice::mitkClassMacro | ( | VirtualTrackingDevice | , |
TrackingDevice | ) |
|
overridevirtual |
Opens the connection to the device. This have to be done before the tracking is started.
mitk::IGTException | Throws an exception if there are two less control points to start the the virtual device. |
Implements mitk::TrackingDevice.
Definition at line 117 of file mitkVirtualTrackingDevice.cpp.
void mitk::VirtualTrackingDevice::SetParamsForGaussianNoise | ( | double | meanDistribution, |
double | deviationDistribution ) |
sets the mean distribution and the standard deviation for the Gaussian Noise
Definition at line 293 of file mitkVirtualTrackingDevice.cpp.
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.
Definition at line 182 of file mitkVirtualTrackingDevice.cpp.
|
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.
Implements mitk::TrackingDevice.
Definition at line 67 of file mitkVirtualTrackingDevice.cpp.
|
overridevirtual |
Stops the tracking.
Reimplemented from mitk::TrackingDevice.
Definition at line 85 of file mitkVirtualTrackingDevice.cpp.
|
protected |
static start method for tracking thread
Definition at line 268 of file mitkVirtualTrackingDevice.cpp.
|
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.
mitk::IGTException | Throws an mitk::IGTException if there is an error during virtual tool tracking. |
Definition at line 203 of file mitkVirtualTrackingDevice.cpp.
|
protected |
container for all tracking tools
Definition at line 199 of file mitkVirtualTrackingDevice.h.
|
protected |
bounding box of the tracking volume stored as {xMin, xMax, yMin, yMax, zMin, zMax}
Definition at line 207 of file mitkVirtualTrackingDevice.h.
|
protected |
mean distribution for Gaussion Noise, 0.0 by default
deviation distribution for Gaussian Noise, 1.0 by default
Definition at line 210 of file mitkVirtualTrackingDevice.h.
|
protected |
adding Gaussian Noise to tracking coordinates or not, false by default
Definition at line 208 of file mitkVirtualTrackingDevice.h.
|
protected |
Definition at line 209 of file mitkVirtualTrackingDevice.h.
|
protected |
number of control points for the random path generation
Definition at line 205 of file mitkVirtualTrackingDevice.h.
|
protected |
refresh rate of the internal tracking thread in milliseconds (NOT refreshs per second!)
Definition at line 204 of file mitkVirtualTrackingDevice.h.
|
protected |
Definition at line 202 of file mitkVirtualTrackingDevice.h.
|
mutableprotected |
mutex for coordinated access of tool container
Definition at line 200 of file mitkVirtualTrackingDevice.h.