WPS Object Placement Drift — Long Convergence Time and Inconsistent Stabilization

Include the following details (edit as applicable):

  • Platform category: Unity / Lightship ARDK / World Positioning / WPS

  • Device Model & OS version: Android

  • NSDK or Scaniverse version: Lightship WPS before Migration

    I developed an Outdoor AR campus navigation app using Lightship ARDK with ARWorldPositioningManager and ARWorldPositioningObjectHelper for outdoor object placement at fixed GPS coordinates. The app spawns directional arrows along a computed path to guide users across a university campus. This is already finished and working but I encountered an issue about localization. Note that I currently don’t need to use VPS and scanned environment since our scope was only focus on using GPS and raw data, I also can’t do migration now since the app is already at it’s final phase.

    The issue

    After spawning, placed objects/arrows shows noticeable drift before settling into their correct positions. The behavior varies significantly between sessions:

    1. First navigation after app launch: Objects often spawn with a 3-8m or 15-20m offset and take 20-40+ seconds of visible drift before settling. Sometimes they appear behind the user or on the wrong side of the path, or sometimes upon spawning, they are do not drift instantly and stays within their misaligned position for about 1-2 minutes max, but still they drift eventually into correct positions (This might be related to internet connectivity and gps reading).

    2. Subsequent navigations in the same session: Drift is significantly reduced, and objects often appear at their correct positions almost immediately.

    3. Overheating: After extended use in direct sunlight, objects that were previously stable can suddenly jump or shift to incorrect positions, even without the user moving.

    4. Stuck positions: Occasionally, objects drift partway toward their correct position and then stop, remaining offset by 2-4 meters indefinitely with no further correction.

What I’ve observed

  • The improvement between the 1st and subsequent navigations suggests that WPS convergence benefits from accumulated tracking data within a session.

  • The drift appears to be system-level WPS refinement (the AR coordinate system itself shifting), not an issue with the GPS coordinates being passed, those are fixed and accurate.

  • Standing still seems to slow convergence. Moving and pointing the camera at buildings appears to help WPS lock on faster.

Now for my Questions

  1. Is there a recommended way to improve initial WPS convergence speed for outdoor placement at known GPS coordinates?

  2. Does AddOrUpdateObject() benefit from being called repeatedly as WPS refines, or is a single call sufficient since the system-level alignment updates automatically?

  3. Are there any WPS configuration parameters or API calls that can hint the system to prioritize convergence speed over other factors?

  4. For apps that spawn multiple objects along a path, is there a best practice for timing the spawn relative to WPS confidence level beyond checking WorldPositioningStatus.Available?

Any insights or recommendations would be greatly appreciated. Happy to share more technical details or logs if helpful.

Thanks!

Below is a detailed screen record flow of the app and the issue I’m talking about,

As you can see from the start of the video, the app’s first launch and first session. Once on the camera scene, the arrows/objects are placed incorrectly. It just drifts on around 1:20-1:22 of the video, so that’s about 1 minute. That’s the only problem we are facing right now since the objects tend to only drift to their correct places after a long wait. You can also see that after repeated sessions, it become much more faster on placing them correctly. Any insight would help!

Hi Karl,

Thank you for the detailed write-up; your observations around WPS behavior are accurate and align with how the system typically converges over time.

What you’re seeing during the first navigation is expected. WPS requires a short “priming” period to stabilize its coordinate system, which is why subsequent navigation within the same session show significantly improved placement accuracy. Movement, especially scanning the surrounding environment, helps accelerate this convergence, while remaining stationary can slow it down.

  1. Before placing objects, have the user move around and scan the environment for ~60 seconds. This helps WPS establish a more stable frame of reference and reduces initial drift.
  2. You do not need to repeatedly call AddOrUpdateObject() during convergence unless the object’s underlying data has changed. WPS will automatically refine object positions as the world coordinate system stabilizes.
  3. You can increase the update frequency of the ARWorldPositioningManager to allow more frequent measurement updates, which may help convergence occur slightly faster.
  4. Since WPS does not currently expose a direct “confidence” metric beyond availability, a common approach is to monitor the camera’s geo-pose (via ARWorldPositioningCameraHelper) and detect when position/orientation changes fall within a defined tolerance. This can be used to gate object placement more reliably.

Let me know if you have further questions or need clarification.

Kind regards,
Maverick L.

Hello, sir!

I will apply those instruction as you said. Also about the project not being visible in the dashboard, it is visible now in my Service Accounts. Thank you for your assistance in resolving this matter so efficiently.

I only have one last question now, I’ve been reading the VPS2 documentation and noticed that Coarse Localization now operates through two methods: Local Sensor Fusion (WPS) and Cloud-based Geopositioning. Since my current setup relies solely on the legacy Lightship WPS for outdoor object placement, I wanted to ask: does the addition of Cloud-based Geopositioning alongside WPS in VPS 2.0 provide a noticeable improvement in coarse localization accuracy and convergence speed compared to using WPS alone? Would you recommend to migrate my project to this new version?

Hi Karl,

Yes, I’ve just received confirmation that accounts affected by the internal migration issue should have all their Lightship projects available in the portal. I’m glad to hear you’re seeing that on your end.

If you aren’t targeting Meta Quest 3 and don’t need removed features such as navigation meshes, an upgrade to 4.0 is strongly recommended. VPS2 offers improved tracking, accuracy, stabilization, and tolerance for non-ideal environmental conditions. In your particular scenario, you will benefit from faster convergence while using world placement features.

Kind regards,
Maverick L.

Hi sir! One last question regarding the increasing of update frequency of ARWorldPositioningManager, is it this one here in the inspector, the Framerate? or I should be adjusting it in the code?

You can edit the frame rate in the Inspector or through code. Up to you and what fits your use case the best.