Low Framerate streaming NDI Lyra Transforms in Plus Server

Hello

My project is to track Telemed ultrasound using a recently purchased NDI Polaris Lyra tracker.

So far PlusServer connects well with Telemed and the tracker, Images are moving in my Slicer scene. But the refreshment rate is very low (3 - 4 Hz) compared to Lyra acquisition rate (10 - 120 Hz).

My config is Windows 11 / Slicer 5.6.2 / PlusApp-2.8.0.20191105-Telemed-Win32

Firmware of the Lyra is 008.010.017

What I’ve tried to speed up refreshment rate :

  • Set up only Telemed in config XML : images refresh at 30 Hz- 40 Hz indicating NDI cause the latency
  • Set up only NDI Lyra in config XML with 4 tools (passive) transforms : rate decrease to 3 Hz in Slicer
  • Set up only 1 tool in config XML : same
  • Tried PlusApp-2.9.0.20251125-Telemed-Win64 : same

My last config file looks like this :

<DataCollection StartupDelaySec="1.0" >
    <DeviceSet 
      Name="TEST FRAMERATE NDI ONLY REF ONLY" 
      Description="TEST FRAMERATE NDI ONLY REF ONLY" />
	 
    <Device
      Id="TrackerDevice"
      Type="NDITracker"
	  NetworkHostname="PB-00525.local"
      ToolReferenceFrame="Tracker" 
	  AcquisitionRate="60"
	  TrackingFrequencyNumber="0">
      <DataSources>
		<DataSource Type="Tool" Id="Reference" RomFile="PHToolDefinitions/Reference.rom"/>
      </DataSources>
      <OutputChannels>
        <OutputChannel Id="TrackerStream" >
		  <DataSource Id="Reference"/>
        </OutputChannel>
      </OutputChannels>
    </Device>
    </DataCollection>

   <PlusOpenIGTLinkServer
    MaxNumberOfIgtlMessagesToSend="1"
    MaxTimeSpentWithProcessingMs="50"
    ListeningPort="18944"
    SendValidTransformsOnly="false"
    OutputChannelId="TrackerStream" >
    <DefaultClientInfo>
      <MessageTypes> 
        <Message Type="TRANSFORM" />
      </MessageTypes>
      <TransformNames> 
		<Transform Name="ReferenceToTracker" />
	  </TransformNames>
    </DefaultClientInfo>
  </PlusOpenIGTLinkServer>

I’ve played with Parameters like AcquisitionRate , TrackingFrequencyNumber , MaxNumberOfIgtlMessagesToSend , SendValidTransformsOnly but still same result in Slicer.

Reading this post : Polaris Vega Device - CRC Error upon Averaging Feature Activation on the Device · Issue #1110 · PlusToolkit/PlusLib · GitHub , I have checked that the camera does not average frames (NDI is configured with Data Averaging Depth set to 1)

Any hints ?

Thanks a lot !

I don’t see any issue with the config file, but I also don’t have much experience (at least from the last decade) with PLUS performance issues. The only thing that occurs to me is trying with SendValidTransformsOnly=”TRUE”?

By the way 5.6.2 is more than a year and a half old. Generally, before trying to help, we tend to ask people to use at least the latest stable version. It is currently 5.10. I find it unlikely that it will make a difference, but better be safe. Can you please try?

Hi Csaba,

Thanks for your reply !

I think I have found the problem which was not related to Plus but to Slicer : I displayed way too large STL models in my transfoms causing Slicer to overload and then decrease IGT client refreshment rate. So I reduced the size of STL files (10 fold) and displayed only required models in the scene. Now framerate for both Ultrasound and Tranforms is about 30 Hz !!

I will follow your advice to install Slicer 5.10. If you have any other suggestions to optimize resources within Slicer let me know… (In particular, I have seen that Resclice driver and 2D vidibility of models are quite costly reducing framerate from 60 Hz to about 40 Hz)