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:
-
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).
-
Subsequent navigations in the same session: Drift is significantly reduced, and objects often appear at their correct positions almost immediately.
-
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.
-
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
-
Is there a recommended way to improve initial WPS convergence speed for outdoor placement at known GPS coordinates?
-
Does
AddOrUpdateObject()benefit from being called repeatedly as WPS refines, or is a single call sufficient since the system-level alignment updates automatically? -
Are there any WPS configuration parameters or API calls that can hint the system to prioritize convergence speed over other factors?
-
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!
