diff --git a/Modules/IGT/Documentation/doxygen/IGTHowToImplementATrackingDevice.dox b/Modules/IGT/Documentation/doxygen/IGTHowToImplementATrackingDevice.dox index 652d192200..1e31f57c8b 100644 --- a/Modules/IGT/Documentation/doxygen/IGTHowToImplementATrackingDevice.dox +++ b/Modules/IGT/Documentation/doxygen/IGTHowToImplementATrackingDevice.dox @@ -1,73 +1,73 @@ /** \page IGTHowToImplementATrackingDevice How To Implement A Tracking Device If you want to implement your own Tracking device, you need to do the following (see e.g. mitk::VirtualTrackerTypeInformation): -# Derive a class MyAwesomeTrackingDeviceInformation from the abstract class mitk::TrackingDeviceTypeInformation -# In the constructor of your class -# give your device a unique name ("my awesome device") -# push back at least one mitk::TrackingDeviceData corresponding to your device to m_TrackingDeviceData (mitk::TrackingDeviceType member 'Line' needs to be identical to your chosen device name "my awesome device") -# Implement the method mitk::TrackingDeviceTypeInformation::CreateTrackingDeviceSource. Recommended steps (but not necessary): -# Provide a static method to get your tracking device name.\n Recommended: \code{.cpp} static std::string MyAwesomeTrackingDeviceInformation::GetTrackingDeviceName() { return "my awesome device"; } \endcode Use this method in your constructor for step 2a) and 2b). This method will make it easier to implement options for your device in any other Module/Plugin. If you want to check if the device in use is your device, you need to compare the names - and this can now be done in any Plugin just by calling this static method. And if you later on decide to change the name of your device into "my One And Only Device" - there is only one line of code you'll have to adapt.\n Attention: If you change the name, you must edit all tool storages which were saved, e.g. using \ref org_mitk_views_igtnavigationtoolmanager .\n Attention: You should use a static method instead of static variables due to the initialization order of static variables and the autoload module. -# Provide static methods for all your mitk::TrackingDeviceData.\n Recommended: \code{.cpp} TrackingDeviceData MyAwesomeTrackingDeviceInformation::GetDeviceDataForMyFirstDevice() { return{ MyAwesomeTrackingDeviceInformation::GetTrackingDeviceName(), "my Model", "my model volume location", "my hardware code" }; } \endcode -# Register your Tracking Device to the collection: \code{.cpp} #include #include #include #include mitk::TrackingDeviceTypeCollection* m_DeviceTypeCollection; us::ModuleContext* context = us::GetModuleContext(); std::vector > refs = context->GetServiceReferences(); if (refs.empty()) { MITK_ERROR << "No tracking device service found!"; } m_DeviceTypeCollection = context->GetService(refs.front()); m_DeviceTypeCollection->RegisterTrackingDeviceType(new mitk::MyAwesomeTrackingDeviceInformation()); \endcode You can do the registration anywhere in your code, also from external projects. We recommend doing the registration of your tracking device in the autoload function of your module. Devices, which should be always available (e.g. Polaris, Aurora, Virtual, ...) are registered in mitk::IGTActivator. -# Implement a widget to configure your device and register it to the collection -# Derive a Widget class QmitkMyAwesomeTrackingDeviceWidget from QmitkAbstractTrackingDeviceWidget. Please follow the steps as explained in QmitkAbstractTrackingDeviceWidget.h -# Create a .ui file -# Register it to mitk::TrackingDeviceWidgetCollection \code{.cpp} m_DeviceWidgetCollection.RegisterTrackingDeviceWidget(mitk::MyAwesomeTrackingDeviceInformation::GetTrackingDeviceName(), new QmitkMyAwesomeTrackingDeviceWidget); \endcode You can get the Widget collection analogous to step 3, replacing mitk::TrackingDeviceTypeCollection with mitk::TrackingDeviceWidgetCollection. Your tracking device should now be available in other Plugins, e.g. \ref org_mitk_views_igttrackingtoolbox . -*/ +*/ \ No newline at end of file diff --git a/Modules/IGT/Documentation/doxygen/IGTModule.dox b/Modules/IGT/Documentation/doxygen/IGTModule.dox index ed7c201c9d..9c4dc25d6e 100644 --- a/Modules/IGT/Documentation/doxygen/IGTModule.dox +++ b/Modules/IGT/Documentation/doxygen/IGTModule.dox @@ -1,80 +1,77 @@ /** \page NavigationGeneralModulePage The Navigation Modules \section IGTGeneralModulePageOverview Overview Navigation modules consist of IGT (Tracking devices), US (Ultrasound) and TOF (3D range imaging) modules. Each module is separated into UI dependent and independent modules (e.g. IGT and IGTUI module). The navigation modules are based on the OpenCVVideoSupport modules and OpenIGTLink modules. In addition, there is the basic module IGTBase, which holds general functionality for all navigation modules. Most navigation modules support hardware devices. A current list of all supported devices can be found here: Hardware Support. \section IGTModules IGT modules -The module IGT integrates image guided therapy (IGT) functionality to MITK. The main features of MITK-IGT are: +The module IGT integrates image guided therapy (IGT) functionality to MITK. The main features of MITK-IGT are:
    -
  • handling and processing of medical imaging data which is available through MITK itself -
  • support of tracking devices +
  • handling and processing of medical imaging data which is available through MITK itself +
  • support of tracking devices
  • a concept for processing tracking data
MITK-IGT consists of two layers for hardware control (Tracking Layer) and processing of tracking data (Navigation Layer). Additionally it offers components for rapid development of graphicalt user interfaces (GUIs) of navigation applications. To separate UI functionality from the rest of the code UI classes are encapsulated in the separate module IGT-UI. The IGT documentation contains the following pages:
  • \subpage IGTTutorialOverview IGT Tutorial Overview - This tutorial will guide you step by step through all plugins, modules and documentation pages. It contains the following steps:
    • \ref IGTTutorialStepPluginIntroduction - Step 1: This tutorial step explains the usage of the most important IGT plugins
    • \ref IGTTutorialStepFilterPipeline - Step 2: This tutorial step on how to implement an IGT filter pipeline
    • \ref IGTTutorialStepVisualization - Step 3: This tutorial step creates a simple render window to visualize tracking tools.
    • \ref IGTTutorialStepSimplePlugin - Step 4: This tutorial step shows you how to create a simple plugin for tracking
    • \ref IGTTutorialStepTrackingLab - Step 5: This tutorial step gives step-by-step explanations on how to use the example tracking lab by registering a book of your choice.
    • \ref IGTTutorialStepAdvanced - Step 6: This step revises the code of the IGT plugins from the first step in more depth
    • \ref IGTTutorialStepOpenIGTLink - Step 7: This tutorial step gives an overview about OpenIGTLink in MITK
    • \ref IGTHowToImplementATrackingDevice - Step 8: This guideline is for an implementation of your own tracking device
  • \ref org_mitk_gui_qt_igttracking - Overview of all tracking views which could be used for your application
    • \ref org_mitk_views_igttrackingtoolbox - Connect your tracking device and start tracking
    • \ref org_mitk_views_igtnavigationtoolmanager - Edit your tool storage
    • \ref org_mitk_views_navigationdataplayer - Play your navigation data, e.g. recorded with the tracking toolbox
  • \ref org_mitk_gui_qt_igtexample - Overview of the example plugin
      -
    • \ref org_imageguidedtherapytutorial - The plugin which is created in Step \ref StepSimplePlugin +
    • \ref org_imageguidedtherapytutorial - The plugin which is created in Step \ref IGTTutorialStepSimplePlugin -
    • \ref org_igttrackinglab - IGT Tutorial Step 4: The IGT-TrackingLab +
    • \ref org_igttrackinglab - The IGT-TrackingLab view which is described in step \ref IGTTutorialStepTrackingLab
    • \ref org_openigtlinkexample OpenIGTLink client example
    • \ref org_openigtlinkproviderexample OpenIGTLink server example
    • \ref org_openigtlinkplugin An extended OpenIGTLink example
- - \section USModules US modules -\li The ultrasound user manual: USModulePage - +\li The ultrasound user manual: \ref USModulePage \section TOFModules TOF modules -User manual vom Plugin TODO +\ref org_toftutorial An explanation on how to create a TOF Module can be found here: \li \subpage GeneratingDeviceModulesPage - -*/ + +*/ \ No newline at end of file diff --git a/Modules/IGT/Documentation/doxygen/IGTTutorialOverview.dox b/Modules/IGT/Documentation/doxygen/IGTTutorialOverview.dox index 5675fa63d3..f23283b607 100644 --- a/Modules/IGT/Documentation/doxygen/IGTTutorialOverview.dox +++ b/Modules/IGT/Documentation/doxygen/IGTTutorialOverview.dox @@ -1,54 +1,49 @@ /** \page IGTTutorialOverview IGT Tutorial Overview The IGT tutorial consists of several steps which will introduce the you to the basic concepts and functions of IGT. The overview of all pages can be found here: \ref NavigationGeneralModulePage. \section TrackingPlugins Tracking Plugins Step 1 - Introduction to the Tracking Plugins \n -During the introduction, you will get familiar with the usage of the tracking plugins. We will guide you step by step through the most important functions of our plugins. An overview of all plugins can also be found here: \ref org_mitk_gui_qt_igttracking. +During the introduction, you will get familiar with the usage of the tracking plugins. We will guide you step by step through the most important functions of our plugins. \li \subpage IGTTutorialStepPluginIntroduction - - \section IGTCode The IGT code Step 2 - IGT filter pipeline \n We will now start with a look at simple code examples to construct a simple navigation pipeline. Via a virtual tracking device, tracking data is written to the console. Everything is organized in a classic c++ main method. \li \subpage IGTTutorialStepFilterPipeline Step 3 - Visualization Filter and MITK Concepts \n This step adds a broader view of basic MITK concepts. The objects are now added to an mitkDataStorage and rendered in an mitkRenderWindow. For visualization the NavigationDataObjectVisualizationFilter is used. Everything is organized in a classic c++ main method. \li \subpage IGTTutorialStepVisualization - - \section IGTWorkbench IGT within the MITK workbench Step 4 - Write your own simple Tracking Plugin \n This step shows how to seamlessly integrate an IGT plugin (the QmitkIGTTutorialView) into the mitkWorkbench. The plugin uses the virtual tracking device to generate data and renders the result in the mitkWorkbench. It is also possible to connect an NDI tracking device and use real hardware to track. The code is written in the QmitkView manner. \li \subpage IGTTutorialStepSimplePlugin Step 5 - Example for a tracking application: The IGT Tracking Lab Plugin \n \li \subpage IGTTutorialStepTrackingLab Step 6 - Advanced usage of IGT Modules \n In this step, we will have a deeper look into the plugins which we already saw within the first introduction step. Here, we point out some details in the code, which might be useful for you to reuse them within your own projects. \li \subpage IGTTutorialStepAdvanced Step 7 - OpenIGTLink Tutorial \n This step gives examples how to use OpenIGTLink in MITK. The first two simple examples include code to open a OpenIGTLink client and server for tracking data. The third, more advanced example shows you how to stream tracking and ultrasound data simultaneously from an external server. \li \subpage IGTTutorialStepOpenIGTLink - \section FurtherFunctionality Further IGT functionality If you want to implement your own tracking device, this page might be helpful: \li \subpage IGTHowToImplementATrackingDevice -*/ +*/ \ No newline at end of file diff --git a/Modules/IGT/Documentation/doxygen/IGTTutorialStep0.dox b/Modules/IGT/Documentation/doxygen/IGTTutorialStep0.dox index a02a136ab9..c678b10f3f 100644 --- a/Modules/IGT/Documentation/doxygen/IGTTutorialStep0.dox +++ b/Modules/IGT/Documentation/doxygen/IGTTutorialStep0.dox @@ -1,17 +1,21 @@ /** \page IGTTutorialStepPluginIntroduction Introduction to the IGT Plugins -\ref org_mitk_gui_qt_igttracking - Overview of all tracking views which could be used for your application +The IGT module provides some nice views which might help you with your project. This first step leads you through the main functionality of the IGT plugin. -\li igttrackingtoolbox - Connect your tracking device and start tracking +To get familiar with these, please click on each of the views and follow the instructions: -\li igtnavigationtoolmanager - Edit your tool storage +\li \ref org_mitk_views_igttrackingtoolbox - Connect your tracking device and start tracking -\li navigationdataplayer - Play your navigation data, e.g. recorded with the tracking toolbox +\li \ref org_mitk_views_igtnavigationtoolmanager - Edit your tool storage -\li calibration tool manager. Will follow soon. +\li \ref org_mitk_views_navigationdataplayer - Play your navigation data, e.g. recorded with the tracking toolbox +\li \ref org_mitk_views_calibrationtoolmanager Calibration Tool Manager. Will follow soon. -\ref Return to the \ref IGTTutorialOverview "[IGT Tutorial Overview]" +An overview of all tracking views can also be found here: +\li \ref org_mitk_gui_qt_igttracking -*/ +\ref Return to the \ref TrackingPlugins "[IGT Tutorial Overview]" + +*/ \ No newline at end of file diff --git a/Modules/IGT/Documentation/doxygen/IGTTutorialStep1.dox b/Modules/IGT/Documentation/doxygen/IGTTutorialStep1.dox index 3e418a2902..235ded774f 100644 --- a/Modules/IGT/Documentation/doxygen/IGTTutorialStep1.dox +++ b/Modules/IGT/Documentation/doxygen/IGTTutorialStep1.dox @@ -1,46 +1,64 @@ /** \page IGTTutorialStepFilterPipeline IGT filter pipeline The IGT tutorial consists of four main parts for construction of a small navigation pipeline using a virtual tracking device. The virtual tracking device produces random tool data (position and orientation) so no additional hardware is required. +\snippet mitkIGTTutorialStep1.cpp What we will do + \section sec1 In Tracking Layer Firstly a new object "tracker" of the type mitk::VirtualTrackingDevice is created, then two tools, named "tool1" and "tool2", are added to this "tracker". Since, the tracking device "tracker" is treated as a virtual tracking device "tool1" and "tool2" are just added to the object by method AddTool(name). +\snippet mitkIGTTutorialStep1.cpp Part I Basic 1 + \section sec2 In Navigation Layer \imageMacro{IGTTutorialStep1.png,"",15.90} Secondly, a new source of the type mitk::TrackingDeviceSource has to be created with outputs for each single tool of a tracker. -The source sets the following tracking device by using method SetTrackingDevice as shown below -\code -source->SetTrackingDevice(tracker); -\endcode +The source sets the following tracking device by using method SetTrackingDevice as shown below. So now, the source is initialized with the virtual tracking device. Next, the source is connected and tracking is started. +\snippet mitkIGTTutorialStep1.cpp Part I Basic 2 + In part II, a displacemt filter (object "displacer") is constructed to change the positions of the filtered NavigationData objects with an offset for each direction (X,Y,Z). The given filter has inputs and outputs for each tool, in this example we have 2 tools, hence there exists two inputs and outputs. Every output of the displacement filter object is connected to the recorder object in the next part. +\snippet mitkIGTTutorialStep1.cpp Part II: Create a NavigationDataToNavigationDataFilter + In part III, all the NavigationData is recorded with the NavigationDataRecorder. In order to record, we simply create an object "recorder" of the type mitk::NavigationDataRecorder and set the appropriate file to it. Now the displacer object is connected to the recorder object for every output by using a for-loop in the code, the method StartRecording() is called on the next line. Afterwards, the recorder has to be updated a couple of times. In this example the recorder is updating 100 times through the second for-loop statement in part III. This can also be seen as a simulation of a timer by using a for-loop. +\snippet mitkIGTTutorialStep1.cpp Part III: Record the data with the NavigationDataRecorder + Part IV explains how the recoded file can be played for further use. After the object "player" of a type mitk::NavigationDataPlayer is created, the required file has to be set to the player and playing has to be started. Here, there exists a new pipeline which functions by reading the recorded file from the harddisc and plays it by using the player as source. During the play, the for-loop makes the file update as in part III. \imageMacro{IGTTutorialStep1-2.png,"",9.53} +\snippet mitkIGTTutorialStep1.cpp Part IV: Play the data with the NavigationDataPlayer + The full code of small navigation pipeline is shown below and can be found in MITK-Source/Modules/IGT/Tutorial/mitkIGTTutorialStep1.cpp. + This tutorial is an extra target which can be build separately. -\include mitkIGTTutorialStep1.cpp + Visual Studio: Right click in your solution explorer on MITKIGTTutorialStep1 --> Set as start up project --> build & Start without debugging + + +Your output should look similar to this: + +\imageMacro{IGTTutorialStep1_output.png,"",9.53} + + + \ref Return to the \ref IGTTutorialOverview "[IGT Tutorial Overview]" -*/ +*/ \ No newline at end of file diff --git a/Modules/IGT/Documentation/doxygen/IGTTutorialStep1_output.png b/Modules/IGT/Documentation/doxygen/IGTTutorialStep1_output.png new file mode 100644 index 0000000000..0b91cc16dd Binary files /dev/null and b/Modules/IGT/Documentation/doxygen/IGTTutorialStep1_output.png differ diff --git a/Modules/IGT/Documentation/doxygen/IGTTutorialStep2.dox b/Modules/IGT/Documentation/doxygen/IGTTutorialStep2.dox index 9eba724f43..4f5fd6532a 100644 --- a/Modules/IGT/Documentation/doxygen/IGTTutorialStep2.dox +++ b/Modules/IGT/Documentation/doxygen/IGTTutorialStep2.dox @@ -1,11 +1,11 @@ /** \page IGTTutorialStepVisualization IGT Visualization Filter and MITK Concepts The following code shows how to insert IGT tracking data into an mitk::DataStorage and render the data with the mitk::NavigationDataObjectVisualizationFilter in an mitk::RenderWindow. The full code is shown below and can be found in MITK-Source/Modules/IGT/Tutorial/mitkIGTTutorialStep2.cpp. This tutorial is an extra target which can be build separately. \include mitkIGTTutorialStep2.cpp \ref Return to the \ref IGTTutorialOverview "[IGT Tutorial Overview]" -*/ +*/ \ No newline at end of file diff --git a/Modules/IGT/Documentation/doxygen/IGTTutorialStep3.dox b/Modules/IGT/Documentation/doxygen/IGTTutorialStep3.dox index 73ea0dfe8d..7e0d8c95eb 100644 --- a/Modules/IGT/Documentation/doxygen/IGTTutorialStep3.dox +++ b/Modules/IGT/Documentation/doxygen/IGTTutorialStep3.dox @@ -1,13 +1,13 @@ /** \page IGTTutorialStepSimplePlugin Qt Gui Tutorial This tutorial shows how to integrate IGT in your plugin. You can enable this example in CMake with the option: MITK_BUILD_org.mitk.gui.qt.igtexamples. The code of the plugin/view is located in: MITK-Source/Plugins/org.mitk.gui.qt.igtexamples/src/internal/QmitkIGTTutorialView The plugin will automatically be lodaed in the mitkWorkbench. More information can be found in the user manual: \ref org_imageguidedtherapytutorial "User manual" \ref Return to the \ref IGTTutorialOverview "[IGT Tutorial Overview]" -*/ +*/ \ No newline at end of file diff --git a/Modules/IGT/Documentation/doxygen/IGTTutorialStep4.dox b/Modules/IGT/Documentation/doxygen/IGTTutorialStep4.dox index 62f5c738e2..722a4a481b 100644 --- a/Modules/IGT/Documentation/doxygen/IGTTutorialStep4.dox +++ b/Modules/IGT/Documentation/doxygen/IGTTutorialStep4.dox @@ -1,13 +1,13 @@ /** \page IGTTutorialStepTrackingLab Tracking Lab The tracking lab is an IGT plugin containing various functions. You can enable this example in CMake with the option: MITK_BUILD_org.mitk.gui.qt.igtexamples. The code of the plugin/view is located in: MITK-Source/Plugins/org.mitk.gui.qt.igtexamples/src/internal/QmitkIGTTrackingLabView The plugin will automatically be lodaed in the mitkWorkbench. More information can be found in the user manual: \ref org_igttrackinglab "Tracking Lab User Manual" \ref Return to the \ref IGTTutorialOverview "[IGT Tutorial Overview]" -*/ +*/ \ No newline at end of file diff --git a/Modules/IGT/Documentation/doxygen/IGTTutorialStep5.dox b/Modules/IGT/Documentation/doxygen/IGTTutorialStep5.dox index 0293e3d035..0cc5359246 100644 --- a/Modules/IGT/Documentation/doxygen/IGTTutorialStep5.dox +++ b/Modules/IGT/Documentation/doxygen/IGTTutorialStep5.dox @@ -1,17 +1,16 @@ /** \page IGTTutorialStepAdvanced A deeper look into the IGT Plugins Please have a look at each of these plugins: \li \ref org_mitk_views_igttrackingtoolbox - Connect your tracking device and start tracking \li \ref org_mitk_views_igtnavigationtoolmanager - Edit your tool storage \li \ref org_mitk_views_navigationdataplayer - Play your navigation data, e.g. recorded with the tracking toolbox \li not available yet: tutorial to calibration tool manager. Will follow soon. - \ref Return to the \ref IGTTutorialOverview "[IGT Tutorial Overview]" -*/ +*/ \ No newline at end of file diff --git a/Modules/IGT/Documentation/doxygen/IGTTutorialStep6.dox b/Modules/IGT/Documentation/doxygen/IGTTutorialStep6.dox index 6f3a11f435..664f5d7186 100644 --- a/Modules/IGT/Documentation/doxygen/IGTTutorialStep6.dox +++ b/Modules/IGT/Documentation/doxygen/IGTTutorialStep6.dox @@ -1,11 +1,10 @@ /** \page IGTTutorialStepOpenIGTLink OpenIGTLink Tutorial \li \subpage org_openigtlinkexample \li \subpage org_openigtlinkproviderexample \li \subpage org_openigtlinkplugin - \ref Return to the \ref IGTTutorialOverview "[IGT Tutorial Overview]" -*/ +*/ \ No newline at end of file diff --git a/Modules/IGT/Tutorial/mitkIGTTutorialStep1.cpp b/Modules/IGT/Tutorial/mitkIGTTutorialStep1.cpp index 2416e2e18f..8065f8392f 100644 --- a/Modules/IGT/Tutorial/mitkIGTTutorialStep1.cpp +++ b/Modules/IGT/Tutorial/mitkIGTTutorialStep1.cpp @@ -1,185 +1,204 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include #include #include #include #include #include "mitkNavigationDataDisplacementFilter.h" #include #include #include //##Documentation //## \brief A small console tutorial about MITK-IGT int main(int /*argc*/, char* /*argv*/[]) { + //! [What we will do] //************************************************************************* // What we will do... //************************************************************************* //In this tutorial we build up a small navigation pipeline with a virtual tracking device //which produce random positions and orientation so no additional hardware is required. //The source of the pipeline is a TrackingDeviceSource object. This we connect to a simple //filter which just displaces the positions with an offset. After that we use a recorder //to store this new positions and other information to disc in a XML file. After that we use //another source (NavigationDataPlayer) to replay the recorded data. + //! [What we will do] + + //! [Part I Basic 1] //************************************************************************* // Part I: Basic initialization of the source and tracking device //************************************************************************* //First of all create a tracking device object and two tools for this "device". //Here we take the VirtualTrackingDevice. This is not a real tracking device it just delivers random //positions and orientations. You can use other/real tracking devices if you replace the following //code with different tracking devices, e.g. mitk::NDITrackingDevice. The tools represent the //sensors of the tracking device. The TrackingDevice fills the tools with data. std::cout << "Generating TrackingDevice ..." << std::endl; mitk::VirtualTrackingDevice::Pointer tracker = mitk::VirtualTrackingDevice::New(); tracker->AddTool("tool1"); tracker->AddTool("tool2"); + //! [Part I Basic 1] + //! [Part I Basic 2] //The tracking device object is used for the physical connection to the device. To use the //data inside of our tracking pipeline we need a source. This source encapsulate the tracking device //and provides objects of the type mitk::NavigationData as output. The NavigationData objects stores //position, orientation, if the data is valid or not and special error informations in a covariance //matrix. // //Typically the start of our pipeline is a TrackingDeviceSource. To work correct we have to set a //TrackingDevice object. Attention you have to set the tools before you set the whole TrackingDevice //object to the TrackingDeviceSource because the source need to know how many outputs should be //generated. std::cout << "Generating Source ..." << std::endl; mitk::TrackingDeviceSource::Pointer source = mitk::TrackingDeviceSource::New(); source->SetTrackingDevice(tracker); //here we set the device for the pipeline source source->Connect(); //here we connect to the tracking system //Note we do not call this on the TrackingDevice object source->StartTracking(); //start the tracking //Now the source generates outputs. + //! [Part I Basic 2] + //! [Part II: Create a NavigationDataToNavigationDataFilter] //************************************************************************* // Part II: Create a NavigationDataToNavigationDataFilter //************************************************************************* //The next thing we do is using a NavigationDataToNavigationDataFilter. One of these filter is the //very simple NavigationDataDisplacementFilter. This filter just changes the positions of the input //NavigationData objects with an offset for each direction (X,Y,Z). The input of this filter is the //source and the output of this filter is the "displaced" input. std::cout << "Generating DisplacementFilter ..." << std::endl; mitk::NavigationDataDisplacementFilter::Pointer displacer = mitk::NavigationDataDisplacementFilter::New(); mitk::Vector3D offset; mitk::FillVector3D(offset, 10.0, 100.0, 1.0); //initialize the offset displacer->SetOffset(offset); //now set the offset in the NavigationDataDisplacementFilter object //Connect the two filters. You can use the ConnectTo method to automatically connect all outputs from one filter // to inputs from another filter. displacer->ConnectTo(source.GetPointer()); // Alternatively, you can manually connect inputs and outputs. // The code below shows what the ConnectTo Methods does internally: // //for (unsigned int i = 0; i < source->GetNumberOfOutputs(); i++) //{ // displacer->SetInput(i, source->GetOutput(i)); //here we connect to the displacement filter //} + //! [Part II: Create a NavigationDataToNavigationDataFilter] + //! [Part III: Record the data with the NavigationDataRecorder] + //************************************************************************* // Part III: Record the data with the NavigationDataRecorder //************************************************************************* //The next part of our pipeline is the recorder. The input of the recorder is the output of the displacement filter //and the output is a XML file with the name "Test Output-0.xml", which is written with a NavigationDataSetWriter. std::cout << "Start Recording ..." << std::endl; //we need the stringstream for building up our filename std::stringstream filename; //the .xml extension and an counter is NOT added automatically anymore -- that was the case in an earlier version filename << itksys::SystemTools::GetCurrentWorkingDirectory() << "/Test Output-0.xml"; std::cout << "Record to file: " << filename.str() << " ..." << std::endl; mitk::NavigationDataRecorder::Pointer recorder = mitk::NavigationDataRecorder::New(); //now the output of the displacer object is connected to the recorder object recorder->ConnectTo(displacer); recorder->StartRecording(); //after finishing the settings you can start the recording mechanism //now every update of the recorder stores one line into the file for //each added NavigationData for (unsigned int x = 0; x < 100; x++) //write 100 datasets { recorder->Update(); //the update causes one line in the XML file for every tool //in this case two lines itksys::SystemTools::Delay(100); //sleep a little } recorder->StopRecording(); //to get proper XML files you should stop recording //if your application crashes during recording no data //will be lost it is all stored to disc //The IO-System needs a filename. Otherwise the output //is redirected to the console. See MITK-Concepts page for more details on IO in MITK mitk::IOUtil::SaveBaseData(recorder->GetNavigationDataSet(), filename.str()); + + + //! [Part III: Record the data with the NavigationDataRecorder] + + //! [Part IV: Play the data with the NavigationDataPlayer] + //************************************************************************* // Part IV: Play the data with the NavigationDataPlayer //************************************************************************* //The recording is finished now so now we can play the data. The NavigationDataPlayer is similar //to the TrackingDevice source. It also derives from NavigationDataSource. So you can use a player //instead of a TrackingDeviceSource. The input of this player is a NavigationDataSet, which we //read with a NavigationDataReader. std::cout << "Start playing from file: " << filename.str() << " ..." << std::endl; mitk::NavigationDataSequentialPlayer::Pointer player = mitk::NavigationDataSequentialPlayer::New(); mitk::NavigationDataSet::Pointer naviDataSet = dynamic_cast (mitk::IOUtil::LoadBaseData(filename.str()).GetPointer()); player->SetNavigationDataSet(naviDataSet); //From now on the player provides NavigationDatas in a sequential order. The next position is given, as soon as "update" is called, so this player is not in real time. //If you need the correct time of your tracking Data, use the NavigationDataPlayer instead and call "StartPlaying" and "StopPlaying". //this connects the outputs of the player to the NavigationData objects mitk::NavigationData::Pointer nd = player->GetOutput(); mitk::NavigationData::Pointer nd2 = player->GetOutput(1); for (unsigned int x=0; x<100; x++) { if (nd.IsNotNull()) //check if the output is not null { //With this call, we go to the next recorded data set. player->GoToNextSnapshot(); MITK_INFO << "Time Step " << x; MITK_INFO<< "Tool 1:" << nd->GetPosition(); MITK_INFO << "Tool 2:" << nd2->GetPosition() ; itksys::SystemTools::Delay(100); //sleep a little like in the recorder part, just for nice reading... } } itksys::SystemTools::Delay(2000); std::cout << "finished" << std::endl; + + //! [Part IV: Play the data with the NavigationDataPlayer] } diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking.dox b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking.dox index ee044a325b..7fcaa565d5 100644 --- a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking.dox +++ b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking.dox @@ -1,14 +1,17 @@ /** \page org_mitk_gui_qt_igttracking The IGT Tracking Plugin This plugin offers basic tracking functionalities. This includes connecting to a tracking system, logging and recording of tracking data, managing tracking tools and playing recorded tracking data. -The plugin includes different views, which are described in different pages in detail: +The plugin includes different views, which are described on different pages in detail:
    -
  • \subpage org_mitk_views_igttrackingtoolbox : Allows for connecting to a tracking system and logging/recording of the tracked data. -
  • \subpage org_mitk_views_igtnavigationtoolmanager : Navigation Tool Manager: This view offers functionality to manage tool storages. Each tool storage holds a preconfigured tool collection. Once saved you can load a tool storage in the Tracking Toolbox and don't need to add every tool seperately. -
  • \subpage org_mitk_views_navigationdataplayer : Navigation Data Player: Plays navigation data which was recorded with the Tracking Toolbox for example. +
  • \subpage org_mitk_views_igttrackingtoolbox : Allows for connecting a tracking system and logging/recording the tracked data. +
  • \subpage org_mitk_views_igtnavigationtoolmanager : This view offers functionality to manage tool storages. Each tool storage holds a preconfigured tool collection. Once saved you can load a tool storage in the Tracking Toolbox and don't need to add every tool seperately. +
  • \subpage org_mitk_views_navigationdataplayer : Plays navigation data which was recorded with the Tracking Toolbox for example. +
  • \subpage org_mitk_views_calibrationtoolmanager Calibration Tool Manager. Will follow soon.
-*/ +\ref Return to the \ref TrackingPlugins "[IGT Tutorial Overview]" + +*/ \ No newline at end of file diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_ConfigurationWidget.png b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_ConfigurationWidget.png index 124576ec53..758804b206 100644 Binary files a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_ConfigurationWidget.png and b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_ConfigurationWidget.png differ diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_IconNavigationDataPlayer.png b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_IconNavigationDataPlayer.png deleted file mode 100644 index 52f0fa42df..0000000000 Binary files a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_IconNavigationDataPlayer.png and /dev/null differ diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_LogFile.png b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_LogFile.png new file mode 100644 index 0000000000..64ee634a39 Binary files /dev/null and b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_LogFile.png differ diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_LoggingWidget.png b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_LoggingWidget.png new file mode 100644 index 0000000000..0b55bb9108 Binary files /dev/null and b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_LoggingWidget.png differ diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_NavigationToolManagementAddTool.png b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_NavigationToolManagementAddTool.png index c6214c0764..5686a31d9e 100644 Binary files a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_NavigationToolManagementAddTool.png and b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_NavigationToolManagementAddTool.png differ diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_NavigationToolManagement_TrackingTools.png b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_NavigationToolManagement_TrackingTools.png new file mode 100644 index 0000000000..8a7f178294 Binary files /dev/null and b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_NavigationToolManagement_TrackingTools.png differ diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_Options.png b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_Options.png new file mode 100644 index 0000000000..2f88a8574b Binary files /dev/null and b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_Options.png differ diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_ScreenshotMitk.png b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_ScreenshotMitk.png index 06df765e73..1ec5a78af7 100644 Binary files a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_ScreenshotMitk.png and b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_ScreenshotMitk.png differ diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_ScreenshotMitk.svg b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_ScreenshotMitk.svg new file mode 100644 index 0000000000..289e9e72a0 --- /dev/null +++ b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_ScreenshotMitk.svg @@ -0,0 +1,1397 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + Tool visualization + + Tracking volume + Tool information + + diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_TrackingControl.png b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_TrackingControl.png new file mode 100644 index 0000000000..805a5d8e0d Binary files /dev/null and b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_TrackingControl.png differ diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_TrackingToolsWidget.png b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_TrackingToolsWidget.png index fa1f304e46..9e0722b241 100644 Binary files a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_TrackingToolsWidget.png and b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_TrackingToolsWidget.png differ diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkMITKIGTNavigationToolManager.dox b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkMITKIGTNavigationToolManager.dox index 06f62d7dd4..dd73cd5f6c 100644 --- a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkMITKIGTNavigationToolManager.dox +++ b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkMITKIGTNavigationToolManager.dox @@ -1,54 +1,53 @@ /** \page org_mitk_views_igtnavigationtoolmanager The MITK-IGT Navigation Tool Manager -\imageMacro{QmitkIGTTracking_IconNavigationToolManager.png,"Icon of the Navigation Tool Manager",2.00} +\imageMacro{../resources/QmitkIGTTracking_IconNavigationToolManager.png,"Icon of the Navigation Tool Manager",2.00} \section QmitkMITKIGTNavigationToolManager Introduction This view allows for creating and editing NavigationToolStorages. These storages contains naviagtion tools of a tracking device, can be saved permanently and used later for any other IGT application. \tableofcontents \section QmitkMITKIGTNavigationToolManagerToolOverview Navigation Tools Overview A navigation tool of MITK-IGT represents a tracking tool (e.g. an emt sensor or an optically tracked tool) and it's corresponding data, like it's name and it's surface. A navigation tool is a generalized container for any trackable object in combination with it's additional information. Every navigation tool has different properties which are:
  • Name
  • Unique identifier
  • Tool definition file
  • Serial number
  • Surface for visualization
  • Type of tracking device
  • Type of the tool
  • Tool landmarks
Note that not all properties are needed for all types of tools. A tool definition file, for example, is only needed by optical tracking tools (e.g. a .rom file for Polaris or a toolfile for the MicronTracker). A tool associated with the aurora system is alwalys identified by it's serial number. You can also detect Aurora tools automatically with the TrackingToolbox view and edit the automatically detected tool storage later with this view. \section QmitkMITKIGTNavigationToolManagerManagingNavigationToolStorage Managing Navigation Tool Storage In order to create edit a tool storage container, you can select one of the available tool storages listed in the upper part of the UI. The list shows all tool storages which are available throug the micro services concept of MITK. The list also shows the current tool storage of the IGT tracking toolbox view if it is active. In addition to the listed tool storages, you can load new storages from the hard disc which will then appear in the list and might be edited as all other storage by simply selecting it in the list. You may also save a selected tool storage to the hard disc or create a new one. In the lower part of the UI you always see the list of tools of the tool storage which is currently selected in the upper part. Use the buttons "add", "edit" and "delete" to manage the contained navigation tools. If you click "edit" or "delete" the operation is applied on the currently selected tool, as shown in the screenshot below. \imageMacro{QmitkIGTTracking_NavigationToolManagemantStartScreen.png,"Screenshot of the main view of NavigationToolManagent",10.90} \section QmitkMITKIGTNavigationToolManagerAddingEditingNavigationTools Adding / Editing Navigation Tools -If you add or edit a navigation tool, an input mask, as shown in the screenshot below, appears. The tool identifier is filled automatically, if you change it, remember that it is unique in the current storage. Also, choose a valid surface for every tool, this is nessesary for correct tool visualization. The other information depends on the tracking system type. So choose a tool file for the Polaris or the MicronTracker system and type in a serial number for the Aurora system. Two identical tools with the same serial number are also possible, they are assigned by the order in which they are attached to the device. As long as they also have the same surface as representation, this should not be a problem for most of the use cases. +If you add or edit a navigation tool, an input mask, as shown in the screenshot below, appears. The tool identifier is filled automatically, if you change it, remember that it is unique in the current storage. Also, choose a valid surface for every tool, this is nessesary for correct tool visualization. By default, a cone is displayed. The other information depends on the tracking system type, e.g. choose a tool file for the Polaris or the MicronTracker system and type in a serial number for the Aurora system. Two identical tools with the same serial number are also possible, they are assigned by the order in which they are attached to the device. As long as they also have the same surface as representation, this should not be a problem for most of the use cases. The tool type is additional information which is not needed by the tracking device but might be needed by further IGT applications. The same applies to the tool landmarks which might be defined for a tool. There are two different types of landmarks which are designed as described here:
  • Tool Calibration Landmarks: These landmarks may be used clearly define the tools pose only by using landmarks in the tool coordinate system. E.g., two landmarks for a 5DoF tool and three landmarks for a 6DoF tool. These landmarks may be used, e.g., for a point based registration of a tool from image space to tracking space.
  • Tool Registration Landmarks: These landmarks are designed for representing defined landmarks on a tools surface. The number of these landmarks might exeed the number of tool calibration landmarks for reasons of redundancy and averaging. They are used for, e.g., manually registering the pose of a tool by visual markers in a CT scan. If you would use these landmarks to do a point based registration from image space to tracking space later, you might overweight the tool because of two many landmarks compared to other markers.
\imageMacro{QmitkIGTTracking_NavigationToolManagementAddTool.png,"Screenshot of add/edit navigation tool screen",9.19} +Return to the Tutorial Step: \ref IGTTutorialStepPluginIntroduction -Return to the Tutorial overview: \ref IGTTutorialStepAdvanced - -*/ +*/ \ No newline at end of file diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkMITKIGTTrackingToolbox.dox b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkMITKIGTTrackingToolbox.dox index 29dadc708d..e1208f1de3 100644 --- a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkMITKIGTTrackingToolbox.dox +++ b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkMITKIGTTrackingToolbox.dox @@ -1,59 +1,93 @@ /** \page org_mitk_views_igttrackingtoolbox The MITK-IGT Tracking Toolbox -\imageMacro{QmitkIGTTracking_IconTrackingToolbox.png,"Icon of the MITK-IGT Tracking Toolbox",2.00} +\imageMacro{../resources/iconTrackingToolBox.png,"Icon of the MITK-IGT Tracking Toolbox",2.00} \tableofcontents \section QmitkMITKIGTTrackingToolboxIntroduction Introduction -The MITK-IGT Tracking Toolbox is a view which allows you to connect to a tracking device, track and visualize navigation tools and write the tracked data into a log file. Currently the devices Polaris, Aurora (both Northern Digital Inc. (NDI); Waterloo, Ontario, Canada) and MicronTracker (Claron Technology, Inc.; Toronto, Ontario, Canada) are supported. The MicroBird family (Ascension Technology Corporation, Inc.; Burlington, USA) will hopefully follow soon since it is already supported by the tracking layer of IGT. The logging feature of the Tracking Toolbox supports logging in XML or CSV format. +The MITK-IGT Tracking Toolbox is a view which allows you to connect to a tracking device, track and visualize navigation tools and write the tracked data into a log file. +This page gives an overview of the view and is at the same time part of the IGT tutorial step \ref IGTTutorialStepPluginIntroduction. All parts containing constructions +for the tutorial begin with the bold printed label Tutorial. \imageMacro{QmitkIGTTracking_ScreenshotMitk.png,"MITK Screenshot with the TrackingToolbox activated",16.00} \section QmitkMITKIGTTrackingToolboxWorkflow General workflow Introduction +Currently the devices Polaris, Aurora (both Northern Digital Inc. (NDI); Waterloo, Ontario, Canada), MicronTracker (Claron Technology, Inc.; Toronto, Ontario, Canada) and Optitrack (NaturalPoint) are supported (see Hardware Tracking Device Support). Different tracking hardware can be used via OpenIGTLink connections (see \ref IGTTutorialStepOpenIGTLink "Open IGT Link tutorial" +). For this Tracking Toolbox tutorial, we will use a virtual tracking device, which allows you to use simulated tracking data. This is very helpful if you want to test or implement some tracking application and don't have the hardware always available. + A general Workflow with the Tracking Toolbox may be:
  • Configuration of a tracking device -
  • Loading a toolfile which holds tool definitions +
  • Adding or loading a toolfile which holds tool definitions
  • Start tracking
  • Logging tracked data
+Tutorial: In the following sections, we will get familiar with each of these points using the Virtual Tracking Device. + \section QmitkMITKIGTTrackingToolboxConnecting Tracking Device Configuration -The tracking device can be specified in the tracking device configuration section located in the upper area of the tracking tab. As shown in the screenshot below, you choose your tracking device in the drop down menu. If you use a tracking system connected to a serial port, like Aurora or Polaris, you then need to specifiy the serial port. In case of the MicronTracker you only need to ensure that all drivers are installed correctly and integrated into MITK. If you want to check the connection, press "test connection". The results are displayed in the small black box on the right. +The tracking device can be specified in the tracking device configuration section located in the upper area of the tracking tab. As shown in the screenshot below, you choose your tracking device in the drop down menu. + +If you use a real tracking system, you might need to set some parameters like the serial port for Aurora or Polaris or the host name for your OpenIGTLink connection. Most implemented tracking device include an option to test your conection. Therefore you just need to press the button "test connection". The results are displayed in the small black box on the right. + +Tutorial: For a first introduction, please select the virtual tracking device in the drop-down-menu. You should see an option to add some jittering to the simulated data. \imageMacro{QmitkIGTTracking_ConfigurationWidget.png,"Tracking Device Configuration",8.55} -\section QmitkMITKIGTTrackingToolboxLoadingTools Loading tools +\section Tracking Tools -To load tools which can be tracked you need a predefined tracking tool storage. If you use the Aurora system you also have the possibility to automatically detect the connected tools. In this case a tracking tool storage is created by the software (see section below). Otherwise you can use the MITK view NavigationToolManager to define a navigation tool storage. There you can create navigation tools with the corresponding toolfiles, visualization surfaces and so on. Please see NavigationToolManager manual for more details. +For tracking, you need information about your tools. You can either add single tools, load previously created tool storages or for some devices auto-detect all available tools. The best way to edit tools after creation/loading is \ref org_mitk_views_igtnavigationtoolmanager view. Creation of new tools or loading of existing tool storages can be done within the Tracking Tool Widget -Navigation tool storages can be loaded by pressing the button "Load Tools". Please ensure that the tracking device type of the tools matches the chosen tracking device, otherwise you will get an error message if you try to start tracking. All loaded tools will then be displayed in grey as shown in the screenshot below. If you start tracking they will become green if the tools were found and red if they were not found inside the tracking volume. +\imageMacro{QmitkIGTTracking_NavigationToolManagement_TrackingTools.png, "The tracking tool widget for adding or loading tools.",9.00} -\imageMacro{QmitkIGTTracking_TrackingToolsWidget.png,"Tracking Tools",9.08} +All added or loaded tools will then be displayed in grey as shown in the screenshot below. If you start tracking they will become green if the tools were found and red if they were not found inside the tracking volume. +\imageMacro{QmitkIGTTracking_TrackingToolsWidget.png,"Added Tracking Tools",9.08} -\section QmitkMITKIGTTrackingToolboxAutoDetection Auto detection of tools (only Aurora) +\subsection QmitkMITKIGTTrackingToolboxAddingTools Adding tools +The most simple step to begin with is to add new tools with this widget. The same widget is also available within \ref org_mitk_views_igtnavigationtoolmanager view and the single parameters are explained there in more detail. +\imageMacro{QmitkIGTTracking_NavigationToolManagementAddTool.png,"Adding a new tool", 9.00} -If the Aurora tracking system is used, a button "Auto Detection" appears. If you press this button the software connects to the system and automatically detects all connected tools. You will then be asked whether you want to save the detected tools as a tool storage to the hard drive. You might want to do this if you want to use or modify this tool storage later. In the automatically detected tool storage the tools are named AutoDetectedTools1, AutoDetectedTools2, and so on. Small spheres are used as tool surfaces. After autodetection the detected tools are loaded automatically even if you did not save them. +Tutorial: Please click the "Add single tool" button and make sure, that the Virtual Tracker is selected in the drop-down-menu (the tracking device configured in the first step must always match your tools!). You might want to give your tool a new name in the "Basic Information" section and load a surface for visualization in the "Tool Visualization" section (a surface file can be found in your binary folder if you did compile MITK by yourself: MITK-superbuild\MITK-Data\IGT-Data\ClaronTool.stl). If you don't have any surface data, you can just select "use simple cone". Click on "Finished" and repeat this step to add a second tool. -\section QmitkMITKIGTTrackingToolboxStartTracking Start/stop tracking +\subsection QmitkMITKIGTTrackingToolboxLoadingTools Loading tools +To load tools which can be tracked you need a predefined tracking tool storage. You can use the MITK \ref org_mitk_views_igtnavigationtoolmanager view to define a navigation tool storage or to save the tools created within the last step in a toolstorage. -Tracking can simply be started by pressing "Start Tracking". Note that options may not be changed during tracking. Once tracking has started the tracking volume (only if the option is on) and the tools are visualized in the 3D view of MITK. +Navigation tool storages can be loaded by pressing the button "Load Tools". Please ensure that the tracking device type of the tools matches the chosen tracking device, otherwise you will get an error message if you try to start tracking. -\section QmitkMITKIGTTrackingToolboxLogging Logging features +\subsection QmitkMITKIGTTrackingToolboxAutoDetection Auto detection of tools (only Aurora) +If you use the Aurora system you also have the possibility to automatically detect the connected tools. In this case a tracking tool storage is created by the software. +In the Tracking Device Configuration widget, a button "Auto Detection" appears. If you press this button the software connects to the system and automatically detects all connected tools. You will then be asked whether you want to save the detected tools as a tool storage to the hard drive. You might want to do this if you want to use or modify this tool storage later. In the automatically detected tool storage the tools are named AutoDetectedTools1, AutoDetectedTools2, and so on. Small spheres are used as tool surfaces. After autodetection the detected tools are loaded automatically even if you did not save them. -If your device is tracking, you are able to log the tracking data by using the logging tab. You first must define a file name. You can then choose whether you want comma seperated (csv) or xml format. Press "Start Logging" to start logging. You can also limit the number of logged frames, which will cause the logging to stop automatically after the given number. +\section QmitkMITKIGTTrackingToolboxStartTracking Start/stop tracking +To start tracking, you first need to connect to your tracking device ("connect" button). If your tools or tool storage don't match the tracking device or if no connection can be established, this might give an error message here. +\imageMacro{QmitkIGTTracking_TrackingControl.png,"Tracking Control to start tracking.", 9.00} +If connected succesfully, the start tracking button is enabled. As soon as you clicked this button, the tool information and tools will be highlighted red or green (un-/successful tracking) and in case of successful tracking, it's position will be updated and the tools are visualized in the 3D view of MITK. +Note that options may not be changed after connecting the tracking device. + +You can start, freeze, unfreeze and stop the tracking as long as you are connected. If you want to finish your tracking, please stop an disconnect your tracking device. + +Tutorial: Please click "connect" and "start tracking". Both tools should move within the tracking volume, the position data should be updated in the tool widget and be highlighted green. You can freeze, unfreeze and stop/restart the tracking as often as you like. When finished, please stop and disconnect. \section QmitkMITKIGTTrackingOptions Options -In the options tab you can enable or disable the visualization of the tracking volume and of the tool quaternions. If enabled, the tool quaternions are shown in the tool information. You can also define the update rate of the tracking data. The update rate should not be set higher than the update rate of the tracking system. +In the options tab you can enable or disable the visualization of the tracking volume and of the tool quaternions. If enabled, the tool quaternions are shown in the tool information. You can also define the update rate of the tracking data. The update rate should not be set higher than the update rate of the tracking system. Other options might be available here depending on the newest developement within MITK-IGT. +\imageMacro{QmitkIGTTracking_Options.png,"Recorded logging data.", 9.00} + +\section QmitkMITKIGTTrackingToolboxLogging Logging features +The logging feature of the Tracking Toolbox supports logging in XML or CSV format. +If your device is tracking, you are able to log the tracking data by using the logging tab. You first must define a file name. You can then choose whether you want comma seperated (csv) or xml format. Press "Start Logging" to start logging. You can also limit the number of logged frames, which will cause the logging to stop automatically after the given number. + +\imageMacro{QmitkIGTTracking_LoggingWidget.png,"Tracking options.", 9.00} +Tutorial: Please connect and start tracking as you already did in the last step, change to the logging tab, specify a csv file and start logging for a view seconds. Stop the tracking after a short period of time. You should now find the specified file which should look similar to the following screenshot and contain position data for both tools: +\imageMacro{QmitkIGTTracking_LogFile.png,"Recorded logging data.", 9.00} -Return to the Tutorial overview: \ref IGTTutorialStepAdvanced +Return to the Tutorial Step: \ref IGTTutorialStepPluginIntroduction -*/ +*/ \ No newline at end of file diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkNavigationDataPlayer.dox b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkNavigationDataPlayer.dox index 8dcf5e1caf..fa967d668f 100644 --- a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkNavigationDataPlayer.dox +++ b/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkNavigationDataPlayer.dox @@ -1,27 +1,28 @@ /** \page org_mitk_views_navigationdataplayer The NavigationData Player -\imageMacro{QmitkIGTTracking_IconNavigationDataPlayer.png,"Icon of the NavigationData Player",2.00} +\imageMacro{../resources/iconNavigationDataPlayer.png,"Icon of the NavigationData Player",2.00} \tableofcontents \section NavigationDataPlayerOverview The navigation data player plays recorded or artificial navigation data of one ore more tracking tools and visualizes their trajectory. It can also make the data available als a NavigationDataSource to Plugins that require a stream of tracking data, without having to create a tracking device. \imageMacro{QmitkIGTTracking_NavigationDataPlayer.png, "The Navigation Data Player", 7} To use it, select a set of recorded navigation data using the "Open File" button. The Player will show the number of tools and the number of frames in the file. Select the sequential player if you want to play the data with a specified tempo (set the update Interval accordingly). Use the Time-based player to play the data in the speed they were originally acquired in.
  • Check "Repeat" to repeat the data as a loop indefinitely.
  • Check "Register as Microservice" to make the data available as a microservice TrackingDataSource. Other Filters can then be connected to it from other plugins. This is useful for development purposes or to replay previously recorded Situations.
  • Check "Display" to render the data in the render Window.
-Return to the Tutorial overview: \ref IGTTutorialStepAdvanced +Tutorial: As part of the IGT tutorial, you might try to replay your recorded data from step \ref org_mitk_views_igttrackingtoolbox +Return to the Tutorial Step: \ref IGTTutorialStepPluginIntroduction -*/ +*/ \ No newline at end of file diff --git a/Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_IconNavigationToolManager.png b/Plugins/org.mitk.gui.qt.igttracking/resources/QmitkIGTTracking_IconNavigationToolManager.png similarity index 100% rename from Plugins/org.mitk.gui.qt.igttracking/documentation/UserManual/QmitkIGTTracking_IconNavigationToolManager.png rename to Plugins/org.mitk.gui.qt.igttracking/resources/QmitkIGTTracking_IconNavigationToolManager.png diff --git a/Plugins/org.mitk.gui.qt.igttracking/resources/iconTrackingToolBox.png b/Plugins/org.mitk.gui.qt.igttracking/resources/iconTrackingToolBox.png new file mode 100644 index 0000000000..af308c7b4b Binary files /dev/null and b/Plugins/org.mitk.gui.qt.igttracking/resources/iconTrackingToolBox.png differ