Unlabeled markers are not streamed

NatNet, VRPN, TrackD, and Plugins
matthew
Posts: 10
Joined: Fri Sep 08, 2017 3:47 pm

Unlabeled markers are not streamed

Post by matthew »

I can't get unlabeled marker streaming to work.

I'm using Motive 2.0.0 Beta 1 and the "SampleClient" sample from NatNet SDK 3.0.0 (both on the same PC). In Motive, I have one rigid body with five markers, and one marker which is not part of a rigid body. SampleClient receives one rigid body (correct), five labeled markers (correct), and five unlabeled markers (!). Both lists of markers contain the five markers from the rigid body, and the sixth marker is not streamed.

Is this intended behavior? I would expect the unlabeled markers list to contain only the sixth marker.

Cheers,
Matthew :)
steven.andrews
NaturalPoint Employee
NaturalPoint Employee
Posts: 738
Joined: Mon Jan 19, 2015 11:52 am

Re: Unlabeled markers are not streamed

Post by steven.andrews »

Hi Matthew,

Thank you for reaching out to the community regarding your streaming experience.
I believe the Unlabeled Markers may show up in the Labeled list, but from the count it does sound like your marker is not present in the stream.

In the early Betas we did have an issue in which Unlabeled Markers would not stream out if a Rigid Body was present. You may be encountering this issue, which was fixed for Beta 3. I would definitely recommend that you use the latest version currently available on our website.

If this does not help you to stream the Unlabeled Markers, please feel free to reach out to Support, directly, for further assistance.

Cheers!
Steven
--
Steven Andrews
OptiTrack | Senior Customer Support Engineer
help.naturalpoint.com
support@optitrack.com
matthew
Posts: 10
Joined: Fri Sep 08, 2017 3:47 pm

Re: Unlabeled markers are not streamed

Post by matthew »

Hi Steven,

Thanks for pointing out the update, I missed the announcement for that one. The new behavior is usable, but still unexpected.

With only labeled markers enabled, I get only five labelled markers (correct).
With only unlabeled markers enabled, I get nothing (incorrect).
With labeled and unlabeled marker enabled, I get five unlabeled markers and six labeled markers, with the sixth marker having a model ID of zero (incorrect).
Enabling rigid bodies with each combination adds one rigid body (correct).

I can work around this, but it'd be good to see more consistent behavior in future releases.

Cheers,
Matthew :)
steven.andrews
NaturalPoint Employee
NaturalPoint Employee
Posts: 738
Joined: Mon Jan 19, 2015 11:52 am

Re: Unlabeled markers are not streamed

Post by steven.andrews »

Thanks Matthew,

We were not aware of some of the inconsistencies you pointed out, but will look into this to hopefully make improvements for the 2.0 Final build.

Cheers,
Steven
--
Steven Andrews
OptiTrack | Senior Customer Support Engineer
help.naturalpoint.com
support@optitrack.com
steven.andrews
NaturalPoint Employee
NaturalPoint Employee
Posts: 738
Joined: Mon Jan 19, 2015 11:52 am

Re: Unlabeled markers are not streamed

Post by steven.andrews »

Hi Matthew,

Our QA looked into this, and it does seem that the streamed data is as expected. In this screenshot, the data highlighted in pink is what you would want to look at, as the Other marker data is legacy information that was left for compatibility.
1-label-unlabeled.png
1-label-unlabeled.png (77.22 KiB) Viewed 9648 times
Any markers in the Labeled Markers list that have a Model ID of 0 would be an unlabeled marker.
I hope this helps. If you have additional questions, feel free to open a Support ticket with us.

Cheers,
Steven
--
Steven Andrews
OptiTrack | Senior Customer Support Engineer
help.naturalpoint.com
support@optitrack.com
matthew
Posts: 10
Joined: Fri Sep 08, 2017 3:47 pm

Re: Unlabeled markers are not streamed

Post by matthew »

Hi Steven,

Thanks for following up on that, I'll ignore "Other Markers" then. Just so we're clear:
  • In the NatNet SDK, a "labeled marker" is a marker with an ID, size, residual etc.
  • In the NatNet SDK, an "unlabeled marker" is a marker with only a position.
  • In Motive, a "labeled marker" is a marker which is part of a rigid body (in Live Mode every marker has an ID).
  • In Motive, an "unlabeled marker" is a marker which is not part of a rigid body.
If that's correct, then with only unlabeled markers enabled I should see one marker being streamed (the sixth, which is not part of a rigid body) but I see none.

Cheers,
Matthew :)
steven.andrews
NaturalPoint Employee
NaturalPoint Employee
Posts: 738
Joined: Mon Jan 19, 2015 11:52 am

Re: Unlabeled markers are not streamed

Post by steven.andrews »

That's right Matthew,

For the time being, Labeled Markers need to be enabled in order for Unlabeled Markers to stream. I have pointed this out to our development previously, and we hope this will be fixed in a future build.

Cheers,
Steven
--
Steven Andrews
OptiTrack | Senior Customer Support Engineer
help.naturalpoint.com
support@optitrack.com
matthew
Posts: 10
Joined: Fri Sep 08, 2017 3:47 pm

Re: Unlabeled markers are not streamed

Post by matthew »

Hi Steven,

Sorry to resurrect this thread, but I've just noticed some changes in SDK 3.0.1.

In the direct depacketization client, when parsing the labelled marker parameters, two of the parameters are bHasModel ("marker has an associated model") and bUnlabeled ("marker is an unlabeled marker"). I'll ignore the fact that allowing labeled markers to be streamed with an "unlabeled" flag is a pretty confusing decision. Here's my assumption about what these parameters mean, could you please confirm this?
If a marker is not part of a rigid body, the modelID will be 0, bHasModel will be false, and bUnlabeled will be true. If a marker is part of a rigid body, the modelID will be the rigid body's ID, bHasModel will be true, and bUnlabeled will be false.
Cheers,
Matthew :)
steven.andrews
NaturalPoint Employee
NaturalPoint Employee
Posts: 738
Joined: Mon Jan 19, 2015 11:52 am

Re: Unlabeled markers are not streamed

Post by steven.andrews »

Hi Matthew,

Basically, the "Labeled Markers" data type was made before we decided it would hold all markers. We are sort of stuck with that naming for the time being, because it would break older applications if we changed it. We try to preserve backwards compatibility as much as possible.

It might help you to take a look at the SampleClient.cpp example. It gives a pretty good description of what all the components here do. Here is a snippet from the SampleClient.

Code: Select all

    // labeled markers - this includes all markers (Active, Passive, and 'unlabeled' (markers with no asset but a PointCloud ID)
    bool bOccluded;     // marker was not visible (occluded) in this frame
    bool bPCSolved;     // reported position provided by point cloud solve
    bool bModelSolved;  // reported position provided by model solve
    bool bHasModel;     // marker has an associated asset in the data stream
    bool bUnlabeled;    // marker is 'unlabeled', but has a point cloud ID that matches Motive PointCloud ID (In Motive 3D View)
    bool bActiveMarker; // marker is an actively labeled LED marker
From the snippet, I would say your understanding of the different flags seems to be correct :)

Cheers,
Steven
--
Steven Andrews
OptiTrack | Senior Customer Support Engineer
help.naturalpoint.com
support@optitrack.com
matthew
Posts: 10
Joined: Fri Sep 08, 2017 3:47 pm

Re: Unlabeled markers are not streamed

Post by matthew »

Hi Steven,

Thanks for your help. I can see why you have 'unlabeled' markers sent using LabeledMarker type, I just thought the naming was a bit confusing.

So just to be clear: two of the new flags added in 3.0.1, bHasModel and bUnlabeled, are exact opposites of each other?

Cheers,
Matthew :)
Post Reply