Page MenuHomePhabricator

Adding NDI Aurora support for 5DoF tools (two tools per physical port)
Closed, ResolvedPublic

Description

The current tracking device for NDI Aurora supports simple 5DoF and 6DoF tools (one tool per physical port). However, it does not support two 5DoF tools connected to one physical port. NDI differentiates between ports, port handles and channels. A port is meant in the sense of physical port. A port handle represents a connected tool. A standard tool only occupies one channel. Some tools occupy two channels. Currently, only the first channel is checked, which finds one tool per physical port. The second one is not found.

Event Timeline

klemmma triaged this task as Normal priority.Apr 19 2018, 1:15 PM
klemmma created this task.

Added a patch for mitkNDITrackingDevice.cpp. The only changes necessary were in the DiscoverWiredTools() method. The implementation of the NDI protocol was not 100% correct. The PHSR(OCCUPIED, &portHandle) method has to be called two times (one time per channel). Subsequently, PHSR(ALL, &portHandle) is called to retrieve all port handles.

So the protocol is like this:

  1. PHSR(OCCUPIED, &portHandle)
  1. for all port handles: PINIT(&ph)
  1. PHSR(OCCUPIED, &portHandle) //this automatically initializes the tools but portHandle is empty
  1. PHSR(ALL, &portHandle)
  1. Process all port handles, create mitk tools and enable them

I was testing these changes with an Aurora device with the following configurations:

  1. No tools
  2. Port 1: 1x 6DoF; Port 4: 1x 5DoF
  3. Port 1: 1x 6DoF; Port 2: 2x 5DoF; Port 3: 2x 5DoF
  4. Port 1: 1x 6DoF; Port 2: 2x 5DoF; Port 3: 2x 5DoF; Port 4: 1x 5DoF