androidcloudanchorarcorepersistent

Advice about geometric aspects behind Cloud Anchor quality in ARCore


I'm looking for some advices about interpretation of the several geometric entities involved in the visual representation for quality, within the Persistent Cloud Anchor example.

This functionality is encapsulated in the form of the class FeatureMapQualityUi, where we can find out that:

  1. Here (and also in the CloudAnchorActivity from this same project) we find that 0.6 is the threshold value in order to have a tracking acceptable quality. More info about this "magic "number?

  2. An angular range of 180º (defined by arcStartRange and arcEndRange) is considered here. Is possible to go further? I mean even covering a whole circle. Or maybe, this range is a forecast of the reasonable amount of area the user can cover meanwhile is capturing 3D features within the 30'' limit that ARCore is (at the moment) limited to use?

  3. Also, a 7,5º angular step is considered along the 180º aforementioned. Again, is this a number obtained by Google by testing this functionality? Is this again related with the 30'' limit? (that is, 180º/30=6º coverage per second, that is rounded up to 7.5º).

  4. Finally, how can affect to the Cloud Anchoring experience the difference in heights between a "holder" user and a "resolver" user? I mean, the height from which the capture device is held meanwhile focussing on the point of interest?

Thanks for your time.


Solution

  • session.estimateFeatureMapQualityForHosting will give you three possible enum values: INSUFFICIENT, SUFFICIENT, AND GOOD. This function looks at all the features in every image (upto the max 30s in the past) and computes their quality using some metric that Google hasn't explained. I think the Persistent Cloud Anchor app is just to show you one possible way you could compute feature qualities to decide whether to host a cloud anchor or not. In your own app, you should experiment and come up with a method that you think suits you.

    So, the threshold should be decided by you. You can look at an anchor from behind as well as front (try to look at it from as many perspectives as possible), and the person who hosts the anchor gets a string value from Google which they can then pass onto any other person. That other person will use the string value to resolve and rediscover that anchor from their perspective.