82 std::vector<mitk::ClaronTool::Pointer> returnValue;
83 std::vector<claronToolHandle> allHandles = m_Device->GetAllActiveTools();
84 for (
auto iter = allHandles.begin(); iter != allHandles.end(); ++iter)
86 ClaronTool::Pointer newTool = ClaronTool::New();
87 newTool->SetToolName(m_Device->GetName(*iter));
88 newTool->SetCalibrationName(m_Device->GetName(*iter));
89 newTool->SetToolHandle(*iter);
90 returnValue.push_back(newTool);
100 if (!m_Device->IsMicronTrackerInstalled())
105 itksys::SystemTools::RemoveADirectory(m_ToolfilesDir.c_str());
106 itksys::SystemTools::MakeDirectory(m_ToolfilesDir.c_str());
109 for (
unsigned int i=0; i<m_AllTools.size(); i++)
111 itksys::SystemTools::CopyAFile(m_AllTools[i]->GetFile().c_str(), m_ToolfilesDir.c_str());
113 this->SetState(Tracking);
114 this->m_StopTrackingMutex.lock();
115 this->m_StopTracking =
false;
116 this->m_StopTrackingMutex.unlock();
119 m_Device->StopTracking();
120 m_Device->Initialize(m_CalibrationDir,m_ToolfilesDir);
122 if (m_Device->StartTracking())
161 itksys::SystemTools::MakeDirectory(m_ToolfilesDir.c_str());
163 m_Device->Initialize(m_CalibrationDir,m_ToolfilesDir);
164 returnValue = m_Device->StartTracking();
168 this->SetState(Ready);
173 if (m_Device.IsNull())
175 m_Device = mitk::ClaronInterface::New();
176 m_Device->Initialize(m_CalibrationDir, m_ToolfilesDir);
178 m_Device->StopTracking();
179 this->SetState(Setup);
219 std::lock_guard<std::mutex> trackingFinishedLockHolder(m_TrackingFinishedMutex);
221 bool localStopTracking;
222 this->m_StopTrackingMutex.lock();
223 localStopTracking = this->m_StopTracking;
224 this->m_StopTrackingMutex.unlock();
226 while ((this->GetState() == Tracking) && (localStopTracking ==
false))
228 this->GetDevice()->GrabFrame();
230 std::vector<mitk::ClaronTool::Pointer> detectedTools = this->DetectTools();
231 std::vector<mitk::ClaronTool::Pointer> allTools = this->GetAllTools();
232 std::vector<mitk::ClaronTool::Pointer>::iterator itAllTools;
233 for(itAllTools = allTools.begin(); itAllTools != allTools.end(); itAllTools++)
235 mitk::ClaronTool::Pointer currentTool = *itAllTools;
237 std::vector<mitk::ClaronTool::Pointer>::iterator itDetectedTools;
238 bool foundTool =
false;
239 for(itDetectedTools = detectedTools.begin(); itDetectedTools != detectedTools.end(); itDetectedTools++)
241 mitk::ClaronTool::Pointer aktuDet = *itDetectedTools;
242 std::string tempString(currentTool->GetCalibrationName());
243 if (tempString.compare(aktuDet->GetCalibrationName())==0)
245 currentTool->SetToolHandle(aktuDet->GetToolHandle());
251 currentTool->SetToolHandle(0);
254 if (currentTool->GetToolHandle() != 0)
256 currentTool->SetDataValid(
true);
258 std::vector<double> pos_vector = this->GetDevice()->GetTipPosition(currentTool->GetToolHandle());
261 pos[0] = pos_vector[0];
262 pos[1] = pos_vector[1];
263 pos[2] = pos_vector[2];
264 currentTool->SetPosition(pos);
266 std::vector<double> quat = this->GetDevice()->GetTipQuaternions(currentTool->GetToolHandle());
268 mitk::Quaternion orientation(quat[1], quat[2], quat[3], quat[0]);
269 currentTool->SetOrientation(orientation);
276 mitk::Point3D origin;
278 currentTool->SetPosition(origin);
279 currentTool->SetOrientation(mitk::Quaternion(0,0,0,0));
280 currentTool->SetDataValid(
false);
284 this->m_StopTrackingMutex.lock();
285 localStopTracking = m_StopTracking;
286 this->m_StopTrackingMutex.unlock();
291 this->StopTracking();