WorldAnchorTransferBatch failures`

I'm using WorldAnchorTransferBatch to share WorldAnchors across devices, but I'm seeing some unexpected errors during the import process. The import/export process is more or less the same as outlined here. We export the anchors, load them up to an Azure webservice, download on the alternate device, and attempt to import.

The import only works about 25% of the time. Even when exporting and importing to the same device, and skipping the web service. To be sure, I've tried deleting any anchors with the same name, clearing the world anchor store, renaming the anchor every time I export, and reacquiring a world anchor store in between imports, and tested with checksums of the export data on either end. Renaming the anchors seemed to improve things a bit, but that may be subjective. I've noticed the imports fail with one of two conditions: the import complete delegate is called with SerializationCompletionReason.UnknownError, or the delegate is called with SerializationCompletionReason.Success, but the array of anchor IDs retrieved from deserializedTransferBatch.GetAllIDs() is empty. Are these known issues? If not, is there anything I might be doing that is causing this behaviour? Perhaps there is a race condition I'm creating due to the async nature of the import/export processes?

I've also noticed that sometimes the anchors do import correctly but the position can be up to a foot or so off. I would guess this is because of a poor quality spatial map on the exporting device. Is there any sort of metric that we can use to determine the quality of the spatial map, particularly for shared experiences

Best Answer


  • edited June 2016

    @Caleb_Cannon typically if you feel the anchor is off then perhaps you have not locked onto the same coordinate system as you expected. Moving around the world and looking in the direction when the anchor was first created typically helps with that. Things should ideally snap into place then.

    Which HoloLens build are you on? I certainly know that import works better on the May flight rather than the RTM builds. Please try moving forward to that build and see if it helps.

    Something else to try might be the ImportExportAnchorManager.cs in HoloToolkit-Unity Sharing test scene. See if that helps with anything.

  • Hey Neeraj,

    Thanks for getting back to me. I am using the latest HL builds and Unity b20.

    I looked at ImportExportAnchorManager and did borrow some of the code there. One thing that caught my eye is that that script retries the import process up to three times before finally calling it a failure. I've done the same with my scripts and I've seen that it does actually help some times, but most of the time it will run through all three import attempts, failing each one. That makes me feel like the transfer batch is delicate. Maybe the 4th or 5th import would succeed, but that's not a very sound approach. Another thing I should note is that I'm trying multiple import/export operations per session. The first import/export has a much higher success rate, but is not 100%.

    I have seen the snapping behavior for successfully imported anchors and have started to put UI elements in place to guide users after an import. There have been at least two times when I was able to successfully import an anchor and use it to lock the object position, but found the position to be off by a foot or so. I did try to poke around the room, expecting them to snap into place, but no amount of scanning the surrounding helped. I am also serializing these anchors with WorldAnchorStore. Both times I tested the placement by relaunching the app and when it restored the anchor the holograms went to the same location. If I were to guess I would say the problem actually came from the export in this case. I'm not certain how the spatial maps work but it seems to me there are a great deal of probabilities involved. If that is the case then it might be possible to come up with a metric for a spatial anchor confidence level. I'm just not sure what data I would use to calculate such a metric.

  • @Caleb_Cannon I'm wondering if you've had any success with this. I too am getting SerializationCompletionReason.Success on my DeserializationCompleteDelegate, but no anchors or elements in GetAllIds() in my WorldAnchorTransferBatch.

  • @neerajwadhwa can you provide any help?

Sign In or Register to comment.