Potential bug in Anchor updates on visionOS using the ARKit C API

I have an application running on visionOS 2.0 that uses the ARKit C API to create anchors and listen for updates.

  • I am running an ARKit session with a WorldTrackingProvider (and a CameraFrameProvider, if that is relevant)
  • Then, I am registering a callback using ar_world_tracking_provider_set_anchor_update_handler_f
  • When updates arrive I iterate over the updated anchors using ar_world_anchors_enumerate_anchors_f.

Then, as described in the https://developer.apple.com/documentation/visionos/tracking-points-in-world-space documentation, I walk around and hold down the Digital Crown to reposition the current space. This resets the world origin to my current position.

When this happens, anchor updates arrive. In most cases, the anchor updates return the new transform (using ar_world_anchor_get_origin_from_anchor_transform) but sometimes I get an anchor update that reports the transform of the anchor from before the world origin was repositioned. Meaning instead of staying in place in the physical world, the world anchor moves relative to me.

I can work around this by calling ar_world_tracking_provider_copy_all_world_anchors_f which provides me with the correct transform, but this async method also adds some noticeable delay to the anchor updates.

Is this already a known issue?

Potential bug in Anchor updates on visionOS using the ARKit C API
 
 
Q