PlusToolkit / PlusLib

Software library for data acquisition, pre-processing, and calibration for navigated image-guided interventions.
http://www.plustoolkit.org
Other
130 stars 102 forks source link

Problem with downloading image from stealthstation (StealthLink) #1106

Open FaizanSiddiqui91 opened 11 months ago

FaizanSiddiqui91 commented 11 months ago

Hello, I am working with stealthstation and trying to establish a link with Slicer. I managed to get the tool transforms "StylusToTracker" and others. However, I am not able to download the image from the strealthlink. I am using OpenIGTLink remote and using ht command:

PlusServerRemoteControl.exe --command=GET_EXAM_DATA --device=SLD --dicom-directory="C:\StealthLinkDicomOutput\" --volumeEmbeddedTransformToFrame="Ras" --keepReceivedDicomFiles

However, I am getting this response from the server:

Command ID: 1692268493 Status: FAIL Error: Message: vtkPlusStealthLinkCommand::Execute: failed, failed to receive image

The tracking works fine, the problem is just with the image data. Do I need to do anything else as well?

Sunderlandkyl commented 11 months ago

Has the patient registration been completed?

It's been a while since I've used the StealthStation, but if I recall correctly the image could not be downloaded unless registration was complete.

FaizanSiddiqui91 commented 11 months ago

Yes it has been completed. I am getting the following message / response:

image

On the plus server log, it says:

image

Am I missing something? I am getting the transforms, but what I need is StylustoRAS which will only be available when the image is downloaded. Are there any other ways to get the required transform? Thanks for the response.

Sunderlandkyl commented 11 months ago

This is using a custom module in Slicer?

Can you try using the OpenIGTLink Remote module in SlicerOpenIGTLink to query for the image?

FaizanSiddiqui91 commented 11 months ago

This is not the custom module, I am using OpenIFTLink Remote module.

image

FaizanSiddiqui91 commented 11 months ago

Btw this is my config file.

  <DataCollection StartupDelaySec="1">
    <DeviceSet Name="StreamStealth" Description="Broadcasting tool tracking data through OpenIGTLink Tools: Stylus (Passive Planar, Blunt) , Reference (Small Passive Cranial Frame) hahah" />
    <Device
      Id="SLD"
      Type="StealthLinkTracker"
      ServerAddress="192.168.1.2"
      ServerPort="6996"
      RegistrationUpdatePeriod="0.0"
      ToolReferenceFrame="Tracker">
      <DataSources>
        <DataSource Type="Tool" Id="Stylus" PortName="Passive Planar, Blunt" BufferSize="150">
          <CustomProperties>
            <AlwaysTrack>
              FALSE
            </AlwaysTrack>
          </CustomProperties>
        </DataSource>
        <DataSource Type="Tool" Id="Reference" PortName="Small Passive Cranial Frame" BufferSize="150">
          <CustomProperties>
            <AlwaysTrack>
              FALSE
            </AlwaysTrack>
          </CustomProperties>
        </DataSource>
        <DataSource Type="Tool" Id="Ras" PortName="RasRegistration" BufferSize="150">
          <CustomProperties>
            <AlwaysTrack>
              FALSE
            </AlwaysTrack>
          </CustomProperties>
        </DataSource>
      </DataSources>
      <OutputChannels>
        <OutputChannel Id="TrackerStream">
          <DataSource Id="Stylus" />
          <DataSource Id="Reference" />
          <DataSource Id="Ras" />
        </OutputChannel>
      </OutputChannels>
    </Device>
    <Device
      Id="CaptureDevice"
      Type="VirtualCapture"
      BaseFilename="RecordingTest.igs.mha"
      EnableCapturingOnStart="FALSE"
      EnableCapturing="FALSE"
      EnableFileCompression="FALSE"
      EnableCaptureOnStart="FALSE"
      RequestedFrameRate="15">
      <InputChannels>
        <InputChannel Id="TrackerStream" />
      </InputChannels>
    </Device>
  </DataCollection>
  <CoordinateDefinitions>
    <Transform From="Ras" To="Lps"
      Matrix="
        -1  0   0   0
        0   -1  0   0
        0   0   1   0
        0   0   0   1"
       Date="2022.05.12 16:01:47" />
  </CoordinateDefinitions>
  <PlusOpenIGTLinkServer MaxNumberOfIgtlMessagesToSend="1" MaxTimeSpentWithProcessingMs="50" ListeningPort="18944" OutputChannelId="TrackerStream">
    <DefaultClientInfo>
      <MessageTypes>
        <Message Type="TRANSFORM" />
      </MessageTypes>
      <TransformNames>
        <Transform Name="StylusToTracker" />
        <Transform Name="ReferenceToTracker" />
        <Transform Name="RasToReference" />
        <Transform Name="StylusToReference" />
        <Transform Name="StylusToRas" />
      </TransformNames>
    </DefaultClientInfo>
  </PlusOpenIGTLinkServer>
</PlusConfiguration>
Sunderlandkyl commented 11 months ago

Ah, sorry. I didn't recognize the module from the image.

Have you tried the "Query Data" section?

FaizanSiddiqui91 commented 11 months ago

Yes, I did. The list is empty.

image

FaizanSiddiqui91 commented 11 months ago

Now I am also getting this message on plus server log:

|ERROR|16584.296000| Failed to acquire the current exam: Buffer underflow: not enough data |INFO|16584.297000|SERVER> There are currently no images on the devices that are connected through plus.

Its a bit strange. Thanks a lot for helping me out

FaizanSiddiqui91 commented 11 months ago

An update:

I re-did the registration in stealthstation. the behavior is different now. I am still able to get the transformation but as soon as I query the images from the dataQuery section of IGTLink Remote. Slicer crashes.

Sunderlandkyl commented 11 months ago

Do you know what software version the StealthStation is using? Plus is currently built using StealthLink 2.1.0.

Can you upload the full Plus and Slicer logs somewhere and post a link?

FaizanSiddiqui91 commented 11 months ago

The current version of Stealth is 2.0.1-7. Btw, I was able to get the image data last year with the same method. The problem just arises.

Here is the complete log

https://docs.google.com/document/d/1YGMpZY2GfZQGFlcnCl6DLbnIaCjZxt25gukcGu0NUwQ/edit?usp=sharing

FaizanSiddiqui91 commented 11 months ago

Hi, are there any updates on this? Thanks

lassoan commented 11 months ago

Buffer underflow error may indicate incompatibility between StealthStation software version and StealthLink version in PLUS. You can try rebuilding PLUS with the StealthLink SDK you received from Medtronic for your current StealthStation software version.

FaizanSiddiqui91 commented 11 months ago

Hi Lassoan,

Thanks for the reply. I managed to get the tool transforms "StylusToTracker" and others. In this case, do you think it is still the incompatibility issue? Moreover, my colleague has managed to get the "Exam_Data" with the same version of Stealthstation and PLUS. Can it be the issue on the PLUS side?