Azure / azure-spatial-anchors-samples

Azure Spatial Anchors sample code
Other
293 stars 139 forks source link

Documentation of Microsoft.Azure.SpatialAnchors.SessionStatus #268

Closed mrwellmann closed 3 years ago

mrwellmann commented 3 years ago

Description

I would like to have a better understanding of the values ReadyForCreateProgress and RecommendedForCreateProgress from Microsoft.Azure.SpatialAnchors.SessionStatus.

From what I've tested:

Questions

  1. Is there is difference between using ReadyForCreateProgress and RecommendedForCreateProgress except that they have a different scale?
  2. Can you explain how the values connect to tracking accuracy? E.g.: Is the scale linear so a if I have RecommendedForCreateProgress of 2 instead of 1 it will be double as good for recognizing it again?
  3. Is it possible to increase the maximum to increase recognition?
  4. We have a procedure in place that after a important anchor was created it has to be found again multiple times. This is to check if it works but also to improve the recognition rate. Has finding an Anchor the same effect as having a higher ReadyForCreateProgress when Saving, especial if the environment, like lighting stays the same?

Development information

//Edit the maximum values of ReadyForCreateProgress and RecommendedForCreateProgress where switched up I corrected this

mrwellmann commented 3 years ago

One more question:

  1. When the maximum for ReadyForCreateProgress or RecommendedForCreateProgress is reached will the point cloud data still be refined or will the algorithm just stop?
mrwellmann commented 3 years ago

Cross posted this to https://docs.microsoft.com/en-us/answers/questions/458231/looking-for-information-on-the-quality-of-an-ancho.html

msftradford commented 3 years ago

Hi @mrwellmann, thanks for reaching out! Questions are answered below:

Is there is difference between using ReadyForCreateProgress and RecommendedForCreateProgress except that they have a different scale?

ReadyForCreateProgress tells you if an anchor creation operation will succeed or not. RecommendedForCreateProgress is a higher bar to meet and requires the collection of more environment data.

Can you explain how the values connect to tracking accuracy? E.g.: Is the scale linear so a if I have RecommendedForCreateProgress of 2 instead of 1 it will be double as good for recognizing it again?

It is challenging to come up with a single metric to represent expected anchor pose accuracy given the variety of environment conditions that a device may come across. In general, I would want to maximize the RecommendedForCreateProgress value before creating an anchor. This will give the system the most environment information possible which in turn can help improve anchor pose accuracy.

Is it possible to increase the maximum to increase recognition?

No, there is a hard limit on the amount of environment data that is uploaded to the service during anchor creation. If you are experiencing issues with recognition, I would recommend reading the guidelines for effective anchor experiences.

We have a procedure in place that after a important anchor was created it has to be found again multiple times. This is to check if it works but also to improve the recognition rate. Has finding an Anchor the same effect as having a higher ReadyForCreateProgress when Saving, especial if the environment, like lighting stays the same?

Maximizing the value of progress is the right thing to do during single anchor creation. I strongly recommend reading the "Various viewing perspectives" and "Multiple anchors" sections of the guidelines.

When the maximum for ReadyForCreateProgress or RecommendedForCreateProgress is reached will the point cloud data still be refined or will the algorithm just stop?

The underlying data continues to be captured (similar to circular buffer), so it is important to maximize both the progress value and the variety of viewing perspectives captured during the lead up to the anchor creation call.

mrwellmann commented 3 years ago

Thanks for these valuable answers.

There is one thing I do not understand if

RecommendedForCreateProgress is a higher bar to meet and requires the collection of more environment data

Why does it correlate so much with ReadyForCreateProgress. When the one is at it's maximum with 2,5 the other is at its maximum with 2.

From what I understand you suggest to rather use RecommendedForCreateProgress, if maximization of recognition is the priority.

SatishBoddu-MSFT commented 3 years ago

Tagging @msftradford for attention!!!

msftradford commented 3 years ago

Yes, that is correct. Using RecommendedForCreateProgress is better for maximum recognition. They correlate because they are based on similar metrics.