Tracking loss in AR applications on monotone shelving or in long corridors is a problem of SLAM map consistency. SLAM (Simultaneous Localization and Mapping) simultaneously builds a map of unknown space and determines the device's position within that map. Standard ARKit uses Visual-Inertial Odometry (VIO), which works well with good lighting and texture but critically fails on white walls, in large spaces (drift up to 5 meters per 100 meters of travel), and in dynamic scenes. When built-in tracking is insufficient, we implement custom SLAM based on ORB-SLAM3, LiDAR+IMU, or ArUco markers. Our experience includes over 50 projects with AR navigation in challenging conditions: warehouse facilities, shopping centers, industrial sites. Custom algorithms are five times more accurate than standard VIO in large spaces, confirmed by ATE (Absolute Trajectory Error) metrics. We use a modern stack: Swift 5.9, Kotlin, Flutter, C++. Time savings on tracking development amount to up to 40%, significantly reducing time-to-market and allowing focus on application business logic. We guarantee tracking stability 95% of the time.
Limitations of Standard ARKit in Challenging Conditions
ARKit uses VIO: feature points from camera + IMU data. It works excellently with good lighting and rich texture. However, failures occur in four typical scenarios:
- Dynamic scenes: people create false feature points, drift increases.
- Monotone surfaces: a long white corridor without anchors.
- Large spaces: on 200+ meters, accumulated VIO error becomes unacceptable.
- Low lighting: night warehouses, dark corridors.
For such scenarios, we apply custom algorithms or additional sensors.
Main SLAM Options for Mobile AR
| Technology | Accuracy | Complexity | Implementation Time |
|---|---|---|---|
| ORB-SLAM3 (C++ Monocular/Stereo/RGB-D) | 0.1–0.5 m | High (NDK/JNI) | 8–16 weeks |
| ARKit + Core Location (GPS+IMU+Barometer) | 1–5 m | Medium | 4–6 weeks |
| LiDAR + IMU (iOS Depth+RGB+ICP loop closure) | 0.05–0.2 m | Medium | 6–10 weeks |
| ArUco markers + PDR (Indoor, offline) | 0.5–1.5 m | Low | 2–4 weeks |
ORB-SLAM3 — open-source, compiled via CMake for iOS (Metal) and Android (NDK). On iPhone 13 Pro we achieve 25–30 FPS, which is acceptable for AR. Requires C++ bridging: ObjectiveC++ wrapper for iOS, JNI for Android. We use it when full control over the algorithm is needed.
ARKit + Core Location fusion — for outdoor/large-scale indoor: we integrate GPS (CLLocationManager), compass, and barometer with ARKit tracking via Extended Kalman Filter. Drift is corrected every N meters when GPS signal is available. Filter implemented on C++ via Eigen or on Swift via Accelerate framework.
LiDAR + IMU SLAM (iOS) — ARWorldTrackingConfiguration with sceneReconstruction provides depth data from LiDAR. The combination of depth + RGB + IMU is RGB-D SLAM. We build dense map from ARMeshAnchor, use ICP for loop closure. This gives centimeter-level accuracy indoors.
How Loop Closure Solves the Drift Problem?
The main issue with VIO without loop closure: the user walks around a hall in a circle and returns to the start, but SLAM thinks start and finish are different places. Drift accumulated. Loop closure detects a return to a known place (by feature descriptors — ORB, SIFT, SuperPoint) and closes the loop, correcting the entire map. In ARKit, loop closure happens automatically via relocalization — if tracking is lost and restored in a known location. For custom systems, we use bag-of-words (DBoW2, FBoW) for fast keyframe indexing.
What is Visual-Inertial Odometry and When Does It Fail?
VIO combines camera visual data with IMU inertial measurements. It is the foundation of ARKit and ARCore. VIO works well with sufficient feature points and stable lighting. But it fails in three cases: complete lack of texture (white walls), rapid movements (blur), and prolonged travel without return (accumulated drift). In these situations, custom SLAM with loop closure and additional sensors provides stability.
Practical Case: AR Navigation in a 8000 sqm Warehouse
For a warehouse of 8000 sqm, we built AR navigation for pickers. Standard ARCore lost tracking on monotone shelving after 40–60 seconds. Our solution: a grid of ArUco markers every 15m as relocalization anchors + PDR between markers via Android Step Counter API. Positioning accuracy — 0.5–1.5 m, sufficient to indicate a specific shelf. The system works offline without a server — the marker map is embedded in the app and updated via an internal CMS when layout changes.
Accuracy comparison: custom ArUco+PDR solution is 3 times more stable than VIO on area over 1000 sqm.
Step-by-Step Setup of ORB-SLAM3 on iOS
- Compile ORB-SLAM3 for iOS via CMake with Metal backend.
- Create Objective-C++ wrapper for Swift integration.
- Camera calibration: intrinsics matrix, distortion coefficients.
- Start tracking: configure ORB parameters (number of features, scale).
- Enable loop closure: bind to DBoW2 vocabulary.
- Performance optimization: frame filtering (skip on small motion), reduce RGB resolution.
Accuracy Comparison of Different SLAM Approaches
| Approach | ATE (average error) | Drift per 100 m | Required Sensors |
|---|---|---|---|
| VIO (ARKit) | 0.5–2 m | 2–5 m | Camera + IMU |
| ORB-SLAM3 (mono) | 0.1–0.5 m | 0.2–1 m | Camera (monocular) |
| ORB-SLAM3 (stereo) | 0.05–0.2 m | 0.1–0.5 m | Two cameras |
| LiDAR + IMU | 0.02–0.1 m | 0.05–0.2 m | LiDAR + IMU |
| ArUco + PDR | 0.5–1.5 m | 1–3 m | Markers + IMU |
More about SLAM can be read on Wikipedia.
What Is Included in the Work
We analyze operating conditions and select a SLAM architecture. We implement or integrate the algorithm (ORB-SLAM3, OpenVSLAM, custom), provide fusion with additional sensors (GPS, UWB, barometer). We tune tracking parameters for the specific environment and evaluate accuracy using ATE and RPE (Relative Pose Error) metrics.
Timelines: integration of a ready SLAM SDK with customization — 4–8 weeks. Custom SLAM module from scratch plus environment tuning — 3–6 months. Cost is calculated individually.
We use a modern stack (Swift, Kotlin, Flutter, C++) and conduct stress testing in real conditions. All solutions undergo stability verification in dynamic scenes and low lighting. Over 5 years on the market — over 50 successful AR projects. Contact us for a consultation — we will assess your project. Order a pilot project — we will demonstrate accuracy on your site.







