예제 #1
0
    def connectToMotive(self, host, port):

        # QLineEdit has input validation methods that can be implemented here for more robustness
        try:
            connectorNode = slicer.vtkMRMLIGTLConnectorNode()
            connectorNode.SetTypeClient(host, int(port))
            slicer.mrmlScene.AddNode(connectorNode)
            connectorNode.Start()

        except:
            slicer.util.errorDisplay("Unexpected hostname or port number")

        self.connection = slicer.mrmlScene.GetNodeByID(
            'vtkMRMLIGTLConnectorNode1')
        status = self.connection.GetState()

        if status == 0:
            slicer.util.errorDisplay(
                "Connection to Motive Optical Tracker is off.")
        elif status == 1:
            slicer.util.errorDisplay("run the PlusServer.")
        elif status == 2:
            print("Successfully connected to Motive Optical Tracker")

        else:
            slicer.util.errorDisplay(
                "unexpected error connecting to Motive Optical Tracker")
 def onConnectButtonClicked(self):
     if self.connectorNode is not None:
         self.connectorNode = None
     else:
         self.connectorNode = slicer.vtkMRMLIGTLConnectorNode()
         slicer.mrmlScene.AddNode(self.connectorNode)
         self.connectorNode.SetTypeClient('localhost', 18944)
         self.connectorNode.Start()
         self.connectCheck = 0
예제 #3
0
 def onConnectButtonClicked(self): 
   if self.connectorNode is None:
     if self.connectCheck == 1: 
       if self.imageNode or self.imageNode2 or self.transformNode is None: 
         if self.imageNode is None: 
           print('Please select an US volume')
         if self.transformNode is None:
           print('Please select the tip to probe transform')
         if self.imageNode2 is None: 
           print('Please select the right volume')
       if self.imageNode and self.imageNode2 and self.transformNode is not None:
         if self.fiducialNode is not None: 
             self.fiducialNode.RemoveAllMarkups()
         self.numFid = self.numFid +1
         self.numFidLabel.setText(str(self.numFid))
         slicer.modules.markups.logic().StartPlaceMode(0)
         self.redWidget.setCursor(qt.QCursor(2))
         self.yellowWidget.setCursor(qt.QCursor(2))
     else:
       self.connectorNode = slicer.vtkMRMLIGTLConnectorNode()
       slicer.mrmlScene.AddNode(self.connectorNode) 
       self.connectorNode.SetTypeClient('localhost', 18944)
       self.connectorNode2 = slicer.vtkMRMLIGTLConnectorNode()
       slicer.mrmlScene.AddNode(self.connectorNode2)
       self.connectorNode2.SetTypeClient('localhost',18945)
       self.connectorNode.Start() 
       self.connectorNode2.Start()
   else: 
     if self.connectorNode.GetState() == 2: 
       self.connectorNode.Stop()
       self.connectorNode2.Stop()
       self.connectButton.text = "Connect"
       self.freezeButton.text = "Unfreeze"
       self.numFid = self.numFid + 1
       self.numFidLabel.setText(str(self.numFid))
       slicer.modules.markups.logic().StartPlaceMode(0)
       self.redWidget.setCursor(qt.QCursor(2))
       self.yellowWidget.setCursor(qt.QCursor(2))
     else: 
       self.connectorNode.Start() 
       self.connectButton.text = "Disconnect"
       self.freezeButton.text = "Freeze"
     if self.fiducialNode is not None: 
       self.fiducialNode.RemoveAllMarkups() 
예제 #4
0
 def createWebcamPlusConnector(self):
     try:
         webcamConnectorNode = slicer.util.getNode('WebcamPlusConnector')
     except slicer.util.MRMLNodeNotFoundException:
         webcamConnectorNode = slicer.vtkMRMLIGTLConnectorNode()
         webcamConnectorNode.SetName('WebcamPlusConnector')
         slicer.mrmlScene.AddNode(webcamConnectorNode)
         hostNamePort = "localhost:18944"
         [hostName, port] = hostNamePort.split(':')
         webcamConnectorNode.SetTypeClient(hostName, int(port))
         logging.debug('Webcam PlusConnector Created')
     return webcamConnectorNode
예제 #5
0
def make_igtl_node(ip, port, name):
    """ Creates an IGT_link node in Slicer that can be used to communicate with e.g. ROS
    INPUT: ip   [str]  - IP address, (accepts 'localhost')
           port [int]  - Port number
           name [str]  - Connector name
    OUPUT: igtl_connector [vtkMRMLIGTLConnectorNode] """
    igtl_connector = slicer.vtkMRMLIGTLConnectorNode()
    slicer.mrmlScene.AddNode(igtl_connector)
    igtl_connector.SetName(name)
    igtl_connector.SetTypeClient(ip, port)
    igtl_connector.Start()
    return igtl_connector
예제 #6
0
 def onConnectButtonClicked(self):
   # Creates a connector Node
   if self.connectorNode is None:
     if self.connectCheck == 1: 
       if self.imageNode or self.transformNode is None: 
         if self.imageNode is None: 
           print('Please select an US volume')
         if self.trandformNode is None:
           print('Please select the tip to probe transform')
       if self.imageNode is not None and self.transformNode is not None:
         if self.fiducialNode is not None: 
           self.fiducialNode.RemoveAllMarkups()
         self.numFid = self.numFid+1 
         self.numFidLabel.setText(str(self.numFid))
         self.manualOutputRegistrationTransformNode = slicer.vtkMRMLLinearTransformNode()
         slicer.mrmlScene.AddNode(self.manualOutputRegistrationTransformNode)
         self.manualOutputRegistrationTransformNode.SetName('ImageToProbeMan')
         slicer.modules.markups.logic().StartPlaceMode(0)
         slicer.app.layoutManager().sliceWidget('Red').setCursor(qt.QCursor(2))
     else:
       self.connectorNode = slicer.vtkMRMLIGTLConnectorNode()
       # Adds this node to the scene, not there is no need for self here as it is its own node
       slicer.mrmlScene.AddNode(self.connectorNode)
       # Configures the connector
       self.connectorNode.SetTypeClient(self.inputIPLineEdit.text, int(self.inputPortLineEdit.text))
       self.connectorNode.Start()
   else:
     if self.connectorNode.GetState() == 2:
       # Connected
       self.connectorNode.Stop()
       self.connectButton.text = "Connect"
       self.freezeButton.text = "Unfreeze" 
       if self.imageSelector.currentNode() or self.TransformSelector.currentNode() is None: 
         if self.imageNode is None: 
           print('Please select an US volume')
         if self.transformNode is None:
           print('Please select the tip to probe transform')
       if self.imageNode is not None and self.transformNode is not None:
         self.numFid = self.numFid + 1 
         self.numFidLabel.setText(str(self.numFid))
         self.manualOutputRegistrationTransformNode = slicer.vtkMRMLLinearTransformNode()
         slicer.mrmlScene.AddNode(self.manualOutputRegistrationTransformNode)
         self.manualOutputRegistrationTransformNode.SetName('ImageToProbeMan')
         slicer.modules.markups.logic().StartPlaceMode(0)
         slicer.app.layoutManager().sliceWidget('Red').setCursor(qt.QCursor(2))
     else:
       # This starts the connection
       self.connectorNode.Start()
       self.connectButton.text = "Disconnect"
       self.freezeButton.text = "Freeze"
     if self.fiducialNode is not None:
       self.fiducialNode.RemoveAllMarkups()
예제 #7
0
 def createWebcamPlusConnector(self):
     webcamConnectorNode = slicer.util.getNode('WebcamPlusConnector')
     if not webcamConnectorNode:
         webcamConnectorNode = slicer.vtkMRMLIGTLConnectorNode()
         webcamConnectorNode.SetLogErrorIfServerConnectionFailed(False)
         webcamConnectorNode.SetName('WebcamPlusConnector')
         slicer.mrmlScene.AddNode(webcamConnectorNode)
         # hostNamePort = self.parameterNode.GetParameter('PlusWebcamServerHostNamePort')
         hostNamePort = "localhost:18944"
         [hostName, port] = hostNamePort.split(':')
         webcamConnectorNode.SetTypeClient(hostName, int(port))
         logging.debug('Webcam PlusConnector Created')
     return webcamConnectorNode
    def setupOpenIGTLinkConnectors(self, rgbPort, depthPort):
        try:
            self.rgbConnectorNode = slicer.util.getNode('RGBConnector')
            self.rgbConnectorNode.SetTypeClient('localhost', int(rgbPort))
        except slicer.util.MRMLNodeNotFoundException:
            self.rgbConnectorNode = slicer.vtkMRMLIGTLConnectorNode()
            self.rgbConnectorNode.SetName('RGBConnector')
            slicer.mrmlScene.AddNode(self.rgbConnectorNode)
            self.rgbConnectorNode.SetTypeClient('localhost', int(rgbPort))
            logging.debug('RGB Connector Created')
        self.rgbConnectorNode.Start()

        try:
            self.depthConnectorNode = slicer.util.getNode('DepthConnector')
            self.depthConnectorNode.SetTypeClient('localhost', int(depthPort))
        except slicer.util.MRMLNodeNotFoundException:
            self.depthConnectorNode = slicer.vtkMRMLIGTLConnectorNode()
            self.depthConnectorNode.SetName('DepthConnector')
            slicer.mrmlScene.AddNode(self.depthConnectorNode)
            self.depthConnectorNode.SetTypeClient('localhost', int(depthPort))
            logging.debug('Depth Connector Created')
        self.depthConnectorNode.Start()
예제 #9
0
 def setupIGTLinkConnectors(self, incomingHostname, incomingPort,
                            outgoingPort):
     try:
         self.outgoingConnectorNode = slicer.util.getNode(
             'OutgoingPlusConnector')
         self.outgoingConnectorNode.SetTypeServer(int(outgoingPort))
     except slicer.util.MRMLNodeNotFoundException:
         self.outgoingConnectorNode = slicer.vtkMRMLIGTLConnectorNode()
         self.outgoingConnectorNode.SetName('OutgoingPlusConnector')
         slicer.mrmlScene.AddNode(self.outgoingConnectorNode)
         self.outgoingConnectorNode.SetTypeServer(int(outgoingPort))
         logging.debug('Outgoing Connector Created')
     try:
         self.incomingConnectorNode = slicer.util.getNode(
             'IncomingPlusConnector')
         self.incomingConnectorNode.SetTypeClient(incomingHostname,
                                                  int(incomingPort))
     except slicer.util.MRMLNodeNotFoundException:
         self.incomingConnectorNode = slicer.vtkMRMLIGTLConnectorNode()
         self.incomingConnectorNode.SetName('IncomingPlusConnector')
         slicer.mrmlScene.AddNode(self.incomingConnectorNode)
         self.incomingConnectorNode.SetTypeClient(incomingHostname,
                                                  int(incomingPort))
         logging.debug('Incoming Connector Created')
예제 #10
0
 def createLabelConnector(self):
     try:
         labelConnectorNode = slicer.util.getNode('LabelClassifierPlusConnector')
     except slicer.util.MRMLNodeNotFoundException:
         # if not webcamConnectorNode:
         labelConnectorNode = slicer.vtkMRMLIGTLConnectorNode()
         # webcamConnectorNode.SetLogErrorIfServerConnectionFailed(False)
         labelConnectorNode.SetName('LabelClassifierPlusConnector')
         slicer.mrmlScene.AddNode(labelConnectorNode)
         # hostNamePort = self.parameterNode.GetParameter('PlusWebcamServerHostNamePort')
         hostNamePort = "localhost:18947"
         [hostName, port] = hostNamePort.split(':')
         labelConnectorNode.SetTypeClient(hostName, int(port))
         logging.debug('Label Classifier Connector Created')
     return labelConnectorNode
예제 #11
0
 def onConnectButtonClicked(self):
   if self.connectorNode is None:
       self.connectorNode = slicer.vtkMRMLIGTLConnectorNode()
       # Adds new MRML node, note there is no need for self here as it is its own node
       slicer.mrmlScene.AddNode(self.connectorNode)
       # Configures the connector
       self.connectorNode.SetTypeClient(self.inputIPLineEdit.text, int(self.inputPortLineEdit.text))
   if self.connectorNode.GetState() == slicer.vtkMRMLIGTLConnectorNode.STATE_CONNECTED:
     # Connected
     self.connectorNode.Stop()
     self.connectButton.text = "Connect"
     self.freezeButton.text = "Unfreeze" 
   else:
     # This starts the connection
     self.connectorNode.Start()
     self.connectButton.text = "Disconnect"
     self.freezeButton.text = "Freeze"
예제 #12
0
    def onConnectButtonClicked(self):
        #creates a connector Node
        if self.connectorNode is None:
            self.connectorNode = slicer.vtkMRMLIGTLConnectorNode()
            #Adds this node to the scene, not there is no need for self here as it is its own node
            slicer.mrmlScene.AddNode(self.connectorNode)
            # Configures the connector
            self.connectorNode.SetTypeClient(self.inputIPLineEdit.text,
                                             int(self.inputPortLineEdit.text))
            if self.imageSelector.currentNode() is not None:
                slicer.app.layoutManager().sliceWidget('Red').sliceLogic(
                ).GetSliceCompositeNode().SetBackgroundVolumeID(
                    self.imageSelector.currentNode().GetID())
                # Configure volume reslice driver, transverse
                self.resliceLogic.SetDriverForSlice(
                    self.imageSelector.currentNode().GetID(),
                    slicer.mrmlScene.GetNodeByID('vtkMRMLSliceNodeRed'))
                self.resliceLogic.SetModeForSlice(
                    self.resliceLogic.MODE_TRANSVERSE,
                    slicer.mrmlScene.GetNodeByID('vtkMRMLSliceNodeRed'))
                slicer.app.layoutManager().sliceWidget(
                    "Red").sliceController().fitSliceToBackground()
        if self.connectorNode.GetState() == 2:
            # Connected, disconnect
            self.connectorNode.Stop()
            self.connectButton.text = "Connect"
            # self.freezeButton.text = "Unfreeze"
            slicer.modules.markups.logic().StartPlaceMode(0)
            slicer.app.layoutManager().sliceWidget('Red').setCursor(
                qt.QCursor(2))

        else:
            # This starts the connection
            self.connectorNode.Start()
            self.connectButton.text = "Disconnect"
            self.freezeButton.text = "Freeze"

        if self.fiducialNode is not None:
            self.fiducialNode.RemoveAllMarkups()
예제 #13
0
    def __init__(self, parent=None):
        ScriptedLoadableModuleLogic.__init__(self, parent)

        self.resliceLogic = slicer.modulelogic.vtkSlicerVolumeResliceDriverLogic(
        )

        # Find or create the 5DOFCalculatedTo6DOF transform
        self.FiveCalculatedToSixTransform = slicer.util.getNode(
            "FiveCalculatedToSixTransform")
        if self.FiveCalculatedToSixTransform == None:
            # Create the node
            self.FiveCalculatedToSixTransform = slicer.vtkMRMLLinearTransformNode(
            )
            self.FiveCalculatedToSixTransform.SetName(
                "FiveCalculatedToSixTransform")
            self.FiveCalculatedToSixTransform.SetHideFromEditors(True)
            slicer.mrmlScene.AddNode(self.FiveCalculatedToSixTransform)

        self.base5DOFTo6DOFZOffset = 0.0
        self.imageObserverTag = None
        self.sixDOFObserverTag = None

        self.iceVolumeNode = None
        self.maskedICEVolumeNode = None
        self.maskVolumeNode = None
        self.sixDOFTransformNode = None
        self.fiveDOFTransformNode = None
        self.sixDOFModelTo6DOFTransformNode = None
        self.fiveDOFModelTo5DOFCalculatedTransformNode = None
        self.jawModelNode = None
        self.noseModelNode = None

        self.guidanceOn = False

        self.imageToStencil = vtk.vtkImageToImageStencil()
        self.imageToStencil.ThresholdByUpper(254)

        self.imageStencil = vtk.vtkImageStencil()
        self.imageStencil.SetStencilConnection(
            self.imageToStencil.GetOutputPort())
        self.imageStencil.SetBackgroundValue(0)

        self.teeConnectorNode = slicer.util.getNode(self.moduleName +
                                                    'TEEServerConnector')
        if self.teeConnectorNode == None:
            self.teeConnectorNode = slicer.vtkMRMLIGTLConnectorNode()
            slicer.mrmlScene.AddNode(self.teeConnectorNode)
            self.teeConnectorNode.SetName(self.moduleName +
                                          'TEEServerConnector')

        self.teeConnectorNode.SetTypeClient("localhost", 18945)
        self.teeConnectorNode.Start()

        self.iceConnectorNode = slicer.util.getNode(self.moduleName +
                                                    'ICEServerConnector')
        if self.iceConnectorNode == None:
            self.iceConnectorNode = slicer.vtkMRMLIGTLConnectorNode()
            slicer.mrmlScene.AddNode(self.iceConnectorNode)
            self.iceConnectorNode.SetName(self.moduleName +
                                          'ICEServerConnector')

        self.iceConnectorNode.SetTypeClient("localhost", 18944)
        self.iceConnectorNode.Start()
slicer.mrmlScene.AddNode(camera_transform)

# Get Right camera handle
camera_right = slicer.modules.cameras.logic().GetViewActiveCameraNode(
    view_node_right)
# camera_right.GetCamera().Azimuth(1.5)
camera_right.SetName('CameraRight')
camera_right.SetAndObserveTransformNodeID(
    camera_transform.GetID())  # Assign Transform for the Camera
camera_right.GetCamera().SetPosition((43, 498, 0))
camera_right.GetCamera().SetRoll(-90)
# Get Left camera handle
camera_left = slicer.modules.cameras.logic().GetViewActiveCameraNode(
    view_node_left)
# camera_left.GetCamera().Azimuth(-1.5)
camera_left.SetName('CameraLeft')
camera_left.SetAndObserveTransformNodeID(
    camera_transform.GetID())  # Assign Transform for the Camera
camera_left.GetCamera().SetPosition((-43, 498, 0))
camera_left.GetCamera().SetRoll(90)

print 'Creating OpenIGTLinkIF connector'

igtl_connector = slicer.vtkMRMLIGTLConnectorNode()
slicer.mrmlScene.AddNode(igtl_connector)

igtl_connector.SetName('DVRK_IGTL_CONNECTOR')
igtl_connector.SetTypeClient('localhost', 11344)
igtl_connector.Start()
igtl_connector.RegisterOutgoingMRMLNode(camera_transform)