cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mtsMicronTracker.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3 
4 /*
5 
6  Author(s): Ali Uneri
7  Created on: 2009-11-06
8 
9  (C) Copyright 2009-2012 Johns Hopkins University (JHU), All Rights Reserved.
10 
11 --- begin cisst license - do not edit ---
12 
13 This software is provided "as is" under an open source license, with
14 no warranty. The complete license can be found in license.txt and
15 http://www.cisst.org/cisst/license.txt.
16 
17 --- end cisst license ---
18 */
19 
39 #ifndef _mtsMicronTracker_h
40 #define _mtsMicronTracker_h
41 
42 #include <vector>
51 #include <sawClaronMicronTracker/sawClaronMicronTrackerExport.h> // always include last
52 
53 #include <MTC.h>
54 
55 
57 {
59 
60  protected:
61  class Tool
62  {
63  public:
64  Tool(void);
65  ~Tool(void) {};
66 
67  std::string Name;
68  mtHandle Handle;
69  std::string SerialNumber;
75 
78  std::vector<vct3> MarkerTemplateProjectionLeft;
79  std::vector<vct3> MarkerTemplateProjectionRight;
80 
82  };
83 
84  public:
85  mtsMicronTracker(const std::string & taskName, const double period) :
86  mtsTaskPeriodic(taskName, period, false, 5000) { Construct(); }
88  mtsTaskPeriodic(arg) { Construct(); }
90 
91  void Construct(void);
92  void Configure(const std::string & filename = "");
93  void Startup(void);
94  void Run(void);
95  void Cleanup(void);
96 
97  size_t GetNumberOfTools(void) const {
98  return Tools.size();
99  }
100  std::string GetToolName(const unsigned int index) const;
102  return ImageBufferLeft;
103  }
105  return ImageBufferRight;
106  }
107 
108  protected:
109  enum { LEFT_CAMERA, RIGHT_CAMERA, MIDDLE_CAMERA };
110 
111  Tool * CheckTool(const std::string & serialNumber);
112  Tool * AddTool(const std::string & name, const std::string & serialNumber);
113 
114  vctFrm3 XfHandleToFrame(mtHandle & xfHandle);
115  mtHandle FrameToXfHandle(vctFrm3 & frame);
116 
117  void InitComponent(void); // called from constructor
118 
119  void ToggleCapturing(const bool & toggle);
120  void ToggleTracking(const bool & toggle);
121  void Track(void);
122  void TrackXPoint(void);
123  void CalibratePivot(const std::string & toolName);
124  void ComputeCameraModel(const std::string & pathRectificationLUT);
125  void SetJitterFilterEnabled(const mtsBool & flag);
126  void SetJitterCoefficient(const double & coefficient);
127  void SetKalmanFilterEnabled(const mtsBool & flag);
128 
129 
132 
133  std::string CameraCalibrationDir;
134  std::string MarkerTemplatesDir;
135 
138 
141 
143  std::vector<vct3> XPoints;
144  std::vector<vct3> XPointsProjectionLeft;
145  std::vector<vct3> XPointsProjectionRight;
146 
147  mtHandle CurrentCamera;
150  mtHandle PoseXf;
151  mtHandle Path;
153 
160 };
161 
163 
164 #endif // _mtsMicronTracker_h
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
~mtsMicronTracker(void)
Definition: mtsMicronTracker.h:89
std::string CameraCalibrationDir
Definition: mtsMicronTracker.h:133
mtsDoubleVec MarkerProjectionRight
Definition: mtsMicronTracker.h:74
Definition: mtsMicronTracker.h:61
mtHandle IdentifiedMarkers
Definition: mtsMicronTracker.h:149
Typedef for different transformations.
mtHandle IdentifyingCamera
Definition: mtsMicronTracker.h:148
svlBufferSample * ImageBufferLeft
Definition: mtsMicronTracker.h:158
mtsMicronTracker(const std::string &taskName, const double period)
Definition: mtsMicronTracker.h:85
std::vector< vct3 > XPointsProjectionLeft
Definition: mtsMicronTracker.h:144
std::string SerialNumber
Definition: mtsMicronTracker.h:69
Definition: mtsTaskPeriodic.h:38
Typedef for fixed size vectors.
CMN_DECLARE_SERVICES_INSTANTIATION(mtsMicronTracker)
Declaration of vctDynamicNArray.
svlSampleImageRGB * RGB
Definition: mtsMicronTracker.h:157
mtHandle CurrentCamera
Definition: mtsMicronTracker.h:147
int FrameHeight
Definition: mtsMicronTracker.h:131
std::vector< vct3 > MarkerTemplateProjectionRight
Definition: mtsMicronTracker.h:79
const int CMN_DYNAMIC_CREATION_ONEARG
Definition: cmnClassRegisterMacros.h:333
std::vector< vct3 > MarkerTemplateProjectionLeft
Definition: mtsMicronTracker.h:78
mtHandle PoseXf
Definition: mtsMicronTracker.h:150
virtual void Startup(void)
Definition: mtsComponent.h:262
~Tool(void)
Definition: mtsMicronTracker.h:65
mtsDoubleVec MarkerProjectionLeft
Definition: mtsMicronTracker.h:152
Implementation of a fixed-size vector using template metaprogramming.
Definition: vctFixedSizeVector.h:52
Definition: mtsMicronTracker.h:56
int FrameWidth
Definition: mtsMicronTracker.h:130
virtual void Configure(const std::string &CMN_UNUSED(filename)="")
Definition: mtsTask.h:218
bool IsTracking
Definition: mtsMicronTracker.h:140
mtHandle Handle
Definition: mtsMicronTracker.h:68
Definition: mtsStateTable.h:67
std::vector< vct3 > XPoints
Definition: mtsMicronTracker.h:143
std::string MarkerTemplatesDir
Definition: mtsMicronTracker.h:134
svlBufferSample * GetImageBufferRight(void)
Definition: mtsMicronTracker.h:104
prmPositionCartesianGet MarkerPosition
Definition: mtsMicronTracker.h:72
svlBufferSample * GetImageBufferLeft(void)
Definition: mtsMicronTracker.h:101
mtsInterfaceProvided * Interface
Definition: mtsMicronTracker.h:70
#define CMN_DECLARE_SERVICES(hasDynamicCreation, lod)
Definition: cmnClassRegisterMacros.h:116
svlBufferSample * ImageBufferRight
Definition: mtsMicronTracker.h:159
prmPositionCartesianGet TooltipPosition
Definition: mtsMicronTracker.h:71
Definition: svlBufferSample.h:37
Defines a periodic task.
Definition: mtsInterfaceProvided.h:96
int XPointsMaxNum
Definition: mtsMicronTracker.h:142
virtual void Run(void)=0
mtsUCharVec ImageRight
Definition: mtsMicronTracker.h:156
vct3 TooltipOffset
Definition: mtsMicronTracker.h:81
mtsDoubleVec MarkerProjectionLeft
Definition: mtsMicronTracker.h:73
ToolsType Tools
Definition: mtsMicronTracker.h:137
mtsStateTable * ImageTable
Definition: mtsMicronTracker.h:154
Declaration of osaGetTime.
mtsUCharVec ImageLeft
Definition: mtsMicronTracker.h:155
mtHandle Path
Definition: mtsMicronTracker.h:151
size_t GetNumberOfTools(void) const
Definition: mtsMicronTracker.h:97
std::vector< vct3 > XPointsProjectionRight
Definition: mtsMicronTracker.h:145
Definition: mtsTaskPeriodic.h:80
Definition: mtsGenericObjectProxy.h:45
mtsDoubleVec MarkerTemplatePositions
Definition: mtsMicronTracker.h:77
mtsMicronTracker(const mtsTaskPeriodicConstructorArg &arg)
Definition: mtsMicronTracker.h:87
Definition: mtsMicronTracker.h:109
bool IsCapturing
Definition: mtsMicronTracker.h:139
virtual void Cleanup(void)
Definition: mtsComponent.h:267
mtsDoubleVec MarkerTemplateTrackingPositions
Definition: mtsMicronTracker.h:76
#define CMN_LOG_ALLOW_DEFAULT
Definition: cmnLogLoD.h:76
cmnNamedMap< Tool > ToolsType
Definition: mtsMicronTracker.h:136
Definition: prmPositionCartesianGet.h:37