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
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()
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
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
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()
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()
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')
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
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"
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()
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)