Here’s a concrete marker strategy for AR navigation in a mall (optimized for real-world occlusion, long corridors, and re-acquisition).

1) Use 3 layers of references
Layer A — World anchors (primary, for accurate navigation)
Mount large AprilTag/ArUco tags on fixed, hard-to-move structures:
- Elevator cores (elevator bank centerline) — 1 set per core per floor
- Stairwell landing corners — 1 set per stair cluster per floor
- Main junction pillars/wayfinding pillars at corridor intersections
- Main entrances/lobby “origin” points (per floor, if applicable)
Goal: “world lock” so arrows/labels don’t drift onto the wrong storefront.
Layer B — Local anchors (secondary, for turn/door accuracy)
Mount medium tags near:
- Food court entrances
- Restroom zones
- Major store clusters where the user must make a turn
- Information desk/kiosk (optional but great for calibration)
Goal: keep turn guidance stable when global anchors are temporarily occluded.
Layer C — Marker-less fallback (must-have)
Enable SLAM/feature tracking so navigation continues when markers are hidden.
- Your UI should degrade gracefully (next section).
2) Tie markers to a state machine (so UX is safe)
Your app should behave differently based on tracking confidence:
- WORLD_LOCKED: marker detected with good quality → show precise step arrows, distance-to-turn.
- LOCAL_LOCKED: only local anchors visible or SLAM confidence moderate → show direction but reduce “snap/precision”.
- SLAM_ONLY: no markers visible → show high-level guidance (e.g., “approaching restroom area”) and avoid claiming exact alignment.
- RECOVERY: markers were lost → guide user to a nearby anchor zone (“look toward pillar signage”).
This prevents the classic mall problem: occluded tags, SLAM drift, and an arrow that “floats” incorrectly.
3) Placement rules that work in malls
A) Redundancy over density
- Put anchors in pairs/triads within a zone (e.g., two elevator-related anchors per elevator bank).
- Avoid “single points of failure” where the user must see exactly one tag.
B) Height & orientation
- Mount large anchors around 1.7–2.2 m height.
- Keep the tag plane facing the expected camera view direction (generally front-facing relative to where users walk).
C) Coverage logic (practical heuristic)
Per floor, ensure that along the main walking areas:
- Every major corridor section between junctions has at least one chance for a world anchor to be visible
- Every turn decision point has at least one local anchor opportunity
4) Concrete starting counts (per floor)
As a starting design before field testing:
- Large anchors: 6–12 per floor
- Medium anchors: 8–16 per floor
- Then add based on walk-test failures (don’t over-install everywhere up front).
5) Field test acceptance criteria (what to measure)
Perform a “walk-through" for each route and record:
- Re-lock time: how long it takes to return to WORLD_LOCKED after occlusion
- Arrow stability: jitter in position during 30–60 seconds of tracking
- Wrong precision rate: percentage of time you display “exact” overlays without being world-locked
- Detection reliability: success rate of marker detection by zone and distance