vtkMRMLTransPerinealProstateRobotNode.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef __vtkMRMLTransPerinealRobotNode_h
00015 #define __vtkMRMLTransPerinealRobotNode_h
00016
00017 #include "vtkOpenIGTLinkIFWin32Header.h"
00018 #include "vtkMRML.h"
00019 #include "vtkMRMLRobotNode.h"
00020 #include "vtkMRMLStorageNode.h"
00021
00022 #include "vtkCylinderSource.h"
00023 #include "vtkTransformPolyDataFilter.h"
00024 #include "vtkTransform.h"
00025 #include "vtkAppendPolyData.h"
00026
00027 #include "vtkObject.h"
00028 #include "vtkProstateNavWin32Header.h"
00029
00030 #include "vtkMRMLIGTLConnectorNode.h"
00031 #include "vtkMRMLBrpRobotCommandNode.h"
00032
00033 #include "vtkMRMLLinearTransformNode.h"
00034 #include "vtkMRMLModelNode.h"
00035
00036 class vtkTransform;
00037 class vtkIGTLToMRMLCoordinate;
00038 class vtkIGTLToMRMLBrpRobotCommand;
00039 class vtkSlicerApplication;
00040
00041 class VTK_PROSTATENAV_EXPORT vtkMRMLTransPerinealProstateRobotNode : public vtkMRMLRobotNode
00042 {
00043
00044 public:
00045
00046
00047
00048
00049
00050 static vtkMRMLTransPerinealProstateRobotNode *New();
00051 vtkTypeMacro(vtkMRMLTransPerinealProstateRobotNode,vtkMRMLRobotNode);
00052
00053 void PrintSelf(ostream& os, vtkIndent indent);
00054
00055 virtual vtkMRMLTransPerinealProstateRobotNode* CreateNodeInstance();
00056
00057
00058
00059 virtual void ReadXMLAttributes( const char** atts);
00060
00061
00062
00063 virtual void WriteXML(ostream& of, int indent);
00064
00065
00066
00067 virtual void Copy(vtkMRMLNode *node);
00068
00069
00070
00071 void UpdateReferenceID(const char *oldID, const char *newID);
00072
00073
00074
00075
00076 void UpdateReferences();
00077
00078
00079
00080
00081 virtual void UpdateScene(vtkMRMLScene *);
00082
00083
00084
00085 virtual const char* GetNodeTagName()
00086 {return "TransPerinealProstateRobot";};
00087
00088
00089 virtual void ProcessMRMLEvents ( vtkObject *caller, unsigned long event, void *callData );
00090
00091
00092
00093
00094
00095
00096
00097 virtual int Init(vtkSlicerApplication* app, const char* moduleShareDir);
00098
00099 vtkGetStringMacro(RobotCommandNodeID);
00100 vtkMRMLBrpRobotCommandNode* GetRobotCommandNode();
00101 void SetAndObserveRobotCommandNodeID(const char *nodeID);
00102
00103 vtkGetStringMacro(RobotConnectorNodeID);
00104 vtkMRMLIGTLConnectorNode* GetRobotConnectorNode();
00105 void SetAndObserveRobotConnectorNodeID(const char *nodeID);
00106
00107 vtkGetStringMacro(ScannerConnectorNodeID);
00108 vtkMRMLIGTLConnectorNode* GetScannerConnectorNode();
00109 void SetAndObserveScannerConnectorNodeID(const char *nodeID);
00110
00111 vtkGetStringMacro(ZFrameModelNodeID);
00112 vtkMRMLModelNode* GetZFrameModelNode();
00113 void SetAndObserveZFrameModelNodeID(const char *nodeID);
00114
00115 vtkGetStringMacro(WorkspaceModelNodeID);
00116 vtkMRMLModelNode* GetWorkspaceModelNode();
00117 void SetAndObserveWorkspaceModelNodeID(const char *nodeID);
00118
00119 vtkGetStringMacro(ZFrameTransformNodeID);
00120 vtkMRMLLinearTransformNode* GetZFrameTransformNode();
00121 void SetAndObserveZFrameTransformNodeID(const char *nodeID);
00122
00123 virtual int MoveTo(const char *transformNodeId);
00124
00125 virtual void SwitchStep(const char *stepName);
00126
00127 virtual int OnTimer();
00128
00129
00130 virtual std::string GetTargetInfoText(vtkProstateNavTargetDescriptor *targetDesc, NeedleDescriptorStruct *needle);
00131
00132
00133 virtual const char* GetCalibrationObjectModelId() { return GetZFrameModelNodeID(); };
00134 virtual const char* GetCalibrationObjectTransformId() { return GetZFrameTransformNodeID(); };
00135 virtual const char* GetWorkspaceObjectModelId() { return GetWorkspaceModelNodeID(); };
00136
00137 virtual int PerformRegistration(vtkMRMLScalarVolumeNode* volumeNode);
00138 virtual int PerformRegistration(vtkMRMLScalarVolumeNode* volumeNode, int param1, int param2);
00139
00140 virtual const char* GetWorkflowStepsString()
00141 {return "SetUp ZFrameCalibration PointTargeting PointVerification TransperinealProstateRobotManualControl"; };
00142
00143 protected:
00144
00145 vtkMRMLTransPerinealProstateRobotNode();
00146 virtual ~vtkMRMLTransPerinealProstateRobotNode();
00147 vtkMRMLTransPerinealProstateRobotNode(const vtkMRMLTransPerinealProstateRobotNode&);
00148 void operator=(const vtkMRMLTransPerinealProstateRobotNode&);
00149
00151
00152 int SendZFrame();
00153
00154 vtkGetMacro ( Connection, bool );
00155 vtkGetMacro ( RobotWorkPhase, int );
00156 vtkGetMacro ( ScannerWorkPhase, int );
00157
00158 const char* AddWorkspaceModel(const char* nodeName);
00159 const char* AddZFrameModel(const char* nodeName);
00160
00161
00162
00163
00164
00165
00166
00167 int ScannerConnectedFlag;
00168 int RobotConnectedFlag;
00169
00170 private:
00171
00172
00173
00174 vtkSetReferenceStringMacro(RobotCommandNodeID);
00175 char *RobotCommandNodeID;
00176 vtkMRMLBrpRobotCommandNode* RobotCommandNode;
00177
00178 vtkSetReferenceStringMacro(RobotConnectorNodeID);
00179 char *RobotConnectorNodeID;
00180 vtkMRMLIGTLConnectorNode* RobotConnectorNode;
00181
00182 vtkSetReferenceStringMacro(ScannerConnectorNodeID);
00183 char *ScannerConnectorNodeID;
00184 vtkMRMLIGTLConnectorNode* ScannerConnectorNode;
00185
00186 vtkSetReferenceStringMacro(ZFrameModelNodeID);
00187 char *ZFrameModelNodeID;
00188 vtkMRMLModelNode* ZFrameModelNode;
00189
00190 vtkSetReferenceStringMacro(ZFrameTransformNodeID);
00191 char *ZFrameTransformNodeID;
00192 vtkMRMLLinearTransformNode* ZFrameTransformNode;
00193
00194 vtkSetReferenceStringMacro(WorkspaceModelNodeID);
00195 char *WorkspaceModelNodeID;
00196 vtkMRMLModelNode* WorkspaceModelNode;
00197
00198
00199
00200 vtkIGTLToMRMLCoordinate* CoordinateConverter;
00201 vtkIGTLToMRMLBrpRobotCommand* CommandConverter;
00202
00203 bool Connection;
00204 int RobotWorkPhase;
00205 int ScannerWorkPhase;
00206
00207 };
00208
00209 #endif
00210