OceanClub AR · Site Anchoring

Keeping the building locked in place on-site

Why the 3D building drifts as you walk, what we can do about it, the decisions we need from you, and what each option costs.

Contents
  1. The problem
  2. Why it's hard
  3. What we need from you
  4. Options at a glance
  5. The solution — RTK GNSS
  6. The three routes & cost
  7. Rover form factor (3 ways)
  8. Size & mounting (3D)
  9. Who operates it
  10. How many devices
  11. Development & logistics

1 The problem

The 3D building must appear locked at its exact real-world position and scale, and stay put as the viewer walks around it. Today the app uses the phone's GPS + camera/IMU tracking. This drifts: GPS is off by several meters, and camera tracking accumulates error as you move — so the building slowly slides out of place. We need a drift-free, "stuck-to-the-ground" anchor.

2 Why it's hard

The two best markerless, no-extra-hardware methods are both blocked at this site:

① Matching the camera to the real building — this needs the building to physically exist so the phone can recognize it. The building is not built at the site yet, so there is nothing real to match against.
② Google Visual Positioning (ARCore Geospatial / VPS) — only works where Google has driven Street View. We checked the site: no Google Street View coverage (only a single user-uploaded 360° photo, which VPS cannot use). Same at the Da Nang test site.

That leaves two honest choices:

3 What we need from you

These answers decide which path we take and how many devices we buy:

Q1 · Who will actually be viewing on-site?
Your own sales staff / a trained operator, or end clients using it themselves? One person at a time, or several at once? (The single most important question — see §7.)
Q2 · Is the viewer OK holding a device with the phone?
A small receiver mounts on top of the phone, plus a small base unit placed on-site. Or must it be just-the-phone, nothing extra?
Q3 · Can we purchase equipment?
One-time hardware, roughly $900–$6,000 depending on the route (§6). No monthly fee if we run our own base.

4 Options at a glance

OptionWorks at this site?MarkerlessDrift-free
Match camera to the splat❌ building not built
ARCore Geospatial (Google VPS)❌ no Street View
Apple ARGeoAnchor❌ not covered
Physical markers⚠ can't cover 200 m✅ near marker
RTK GNSSyes
UWB beacons⚠ needs install
Bluetooth / WiFi❌ 2–8 m
GPS + VIO (current)⚠ drifts

5 The solution — RTK GNSS

RTK ("Real-Time Kinematic") is survey-grade GPS. A fixed base on a known point measures the live satellite error and streams a correction to a rover mounted on the phone, which subtracts it → 1–2 cm position, continuously, anywhere outdoors. No real building or Street View needed.

drag to orbit · scroll to zoom
1 BASE serves any number of rovers · 1 rover per phone
Route: Emlid
1 viewer~$4,000
3 viewers~$8,500
Dev time~3–4 wks (incl. QA)
Battery~8–10 h
Accuracy1–2 cm

Interactive 3D (Three.js — needs internet to load). Toggle Emlid / SparkFun Facet below the scene to swap the actual device models and per-part prices. Toggling also changes the rig: Emlid & Facet ride a short pole (receiver on top, phone clamped below — too bulky to clip on the phone), while DIY-small clips onto the phone (no pole). Either way it's one rigid unit (fixed antenna↔camera offset). One base broadcasts corrections to all rovers at once; each phone in use at the same time needs its own rover (see the price panel).
3D device models: Emlid Reach RX by Strumenti Topografici & Reach RS2 by INGEN Innovations (Sketchfab, CC-BY). The Facet is a stylized SparkFun RTK Facet look-alike (its real model is view-only).

Setup on-site (≈15–30 min, done by an operator)

  1. Set up the base on a tripod at a fixed point; power it on.
  2. Establish the base position — survey it once for true accuracy, or let it self-average (relative cm; absolute may be off ~1–2 m — usually fine for a demo).
  3. Radio link base↔rover connects automatically (no internet).
  4. Pair the rover to the iPhone over Bluetooth.
  5. Wait ~1–2 min for "Fix" → centimeter accuracy → open the app; the building stays put as you walk.

6 The three routes & cost

Route A · Emlid

FAST · PLUG-AND-PLAY
Reach RX MFi-certified → iOS reads cm directly

Emlid's Reach RX is Apple MFi-certified — once paired, iOS reports centimeter position to any app, so our app needs almost no code change. Tidy, wireless, reliable.

Item~ USD
Reach RX (rover, MFi)$2,000
Reach RS3 / RS2+ (base)$2,000–3,800
Tripod + phone bracket$150
Nassau (base + rover)~$4,150–6,000
~$4,150–6,000
Da Nang test only (with an NTRIP service): just the rover ≈ $2,000, no base.
  • App barely changes (MFi → iOS CoreLocation)
  • Wireless, ~8–10 h battery, fast to deploy
  • Resellable, well supported
  • Higher upfront cost
Buy: Reach RX · Reach RX2 (rover) · Reach RS3 / RS2+ (base) · bracket SP-Connect

Route B · SparkFun Facet

ALL-IN-ONE · NO ASSEMBLY
Enclosed · battery + BT — ready to go

The SparkFun RTK Facet is a complete, enclosed all-in-one: a surveyor-grade antenna, a 6 Ah all-day battery and Bluetooth inside an IP53 dome. No assembly, no 3D-printing — it streams centimeter NMEA to the phone over Bluetooth, far cheaper than Emlid.

Item~ USD
SparkFun RTK Facet (base)$740
SparkFun RTK Facet (rover)$740
Short pole + phone clamp (rig — Facet on top, phone below)$50
Tripod (base) + power bank$45
Nassau hardware (Facet path)~$1,575
~$1,575
Too bulky to clip on the phone — ride it on a short pole (Facet on top, phone clamped below); see "Rover form factor" below. Da Nang test: one Facet ≈ $740 + NTRIP, no base.
  • Enclosed all-in-one — no assembly, no 3D-print
  • All-day battery · same cm accuracy
  • Far cheaper than Emlid
  • Not MFi → app must parse the feed (~4–6 days with an open-source parser)

Route C · DIY small rover

SMALLEST · WE BUILD IT

A Facet as the base + a self-built tiny rover (a small ZED-F9P board + a small antenna) that clips onto the phone — no pole. The only way to get a small, cheap, phone-clipped rover — but we design + 3D-print the bracket, assemble it, and parse NMEA. Full build steps in “Rover form factor” below.

ItemQtyBuy / Build~ USD
SparkFun RTK Facet (base)1buy$740
ZED-F9P board + small antenna + battery (rover)1buy + build$375
Printed phone bracket1printincl.
Tripod (base)1buy$30
Nassau (base + 1 rover) · + build / print / code~$1,150
~$1,150 + build labor
  • Smallest rover — clips on the phone, no pole
  • Cheaper hardware than Emlid
  • We build it: board + small antenna + 3D-print bracket + assemble
  • Small antenna → slightly lower accuracy near buildings & trees
  • Not MFi → parse NMEA (~4–6 days with an open-source parser)
Common to all three: a rover alone is ~1 m — it needs corrections. At Nassau (no public network) we run our own base (included above, no subscription). In Da Nang, a single rover + an NTRIP subscription (a few hundred $/yr) may suffice, skipping the base.
Optional: heading/orientation hardware (dual antenna) ≈ +$200 — otherwise we derive heading from two points + phone tracking. One-time survey of the base point ≈ a few hundred $.

Rover form factor — 3 ways the viewer carries it

The base is always a Facet on a tripod; only the rover that goes with the phone changes shape. The Facet is a bulky dome — it can't clip onto a phone — so there are three ways to carry the rover:

DirectionSize / how you carry itBuild (assemble · print · code)AccuracyRover ~$
1 · Emlid Reach RXsmall puck — clips right on top of the phonenone (MFi, plug-and-play)high$2,000
2 · SparkFun Facet on a short polebulky dome — Facet on top of a ~30–50 cm rod, phone clamped below itnone (just configure)high$740
3 · DIY small roversmall — a board + small antenna on the back of the phoneYES — we build ita bit lower (small antenna → more multipath)$300–400

Rule of thumb: small + cheap + accurate — pick two. Reach RX = small + accurate (pricey). Facet-on-pole = cheap + accurate (bulky). DIY-small = small + cheap (we build it, antenna a bit weaker).

How each one rigidly couples to the phone (it must — if the receiver moves relative to the phone, the model shifts by that much): Pole rig = off-the-shelf, no printing (mini monopod + pole phone clamp ≈ $40–50): monopod · pole clamp. Only DIY-small needs 3D-printing (its bracket). Toggle the 3D scene above: Facet/Emlid ride a pole, DIY-small clips on the phone.

Direction 3 · DIY small rover — what we'd actually do

Compact enough to sit on the phone, but it is a full in-house build. The steps:

StageWhat~ Effort / $
BuyZED-F9P board (credit-card size, e.g. a SparkFun breakout) · small multiband antenna (patch / helical) + small ground plane · SMA cable · small LiPo or mini power bank · filament~$300–400
Design & 3D-printa slim enclosure for the board + battery, and a bracket that clips to the iPhone and holds the antenna above the camera at a fixed offset (print + iterate the fit)~2–4 days
Assembleconnect the antenna (SMA) + battery, fit into the printed case, mount it on the phone bracket~1 day
Configureu-center: enable the NMEA messages + rate, set rover mode + correction input (NTRIP via the phone, or radio from the base)~0.5 day
Code the appBLE transport + NMEA parser + position integration + (single-rover) NTRIP client + status UI + QA — the same parsing work the Facet needs~4–6 days
Honest take: this is the only way to get small + cheap on the phone, but it brings back all the mechanical + electronics work on our side. Worth it only if owning in-house hardware / 3D is part of the plan.

Size & mounting — to scale (3D)

Why DIY-small can clip on the phone while the others ride a pole: it's the device + antenna size. (Approximate — verify on the datasheet before ordering.)

Board / moduleSize ~Note
u-blox ZED-F9P chip (module)17 × 22 mmtiny
SparkFun GPS-RTK2 board~41 × 38 mmcredit-card-ish
ArduSimple simpleRTK2B~51 × 53 mm
Unicore UM980 / UM982 (module)~30 × 40 mmUM982 = built-in heading
AntennaSize ~Trade-off
Helical multi-band~Ø18 × 45 mmcompact — best for phone-mount
Patch + ground plane~35–60 mm + basebetter multipath, too big for phone
u-blox ANN-MB puckØ60 mmtoo big for phone-mount
Whole rover unitSize ~Mounting
DIY small (board + helical)~matchboxclips on the phone — no pole
Emlid Reach RXØ64 × 95 mmshort pole
SparkFun Facetdome ~Ø115 mmpole (bulky)
drag to orbit · real rigs, to scale

Emlid & Facet ride a short pole (receiver on top, iPhone clamped below); DIY-small clips onto the iPhone (no pole). Same scale throughout — the Facet dome is huge, the Reach RX a chunky puck, the DIY board + helical antenna tiny.
iPhone model: iPhone X low-poly by Fred Drabble (Sketchfab, CC-BY).

SparkFun Facet — the one thing the app still does

How the data flows (who parses what)

There are two separate streams — we only touch one:

StreamWhat it carriesWho handles it
base ↔ roverRTK corrections (RTCM)the receivers themselves — not our code
rover → iPhonethe cm position (NMEA text, over Bluetooth)parsed on the iPhone — this is the only work

Who parses the rover → iPhone NMEA: Emlid (MFi) → iOS does it automatically (zero code). Facet / DIY (not MFi) → our app does it (see the table below).

Division of labour: the rover gives only position (cm — the thing the phone is bad at). Orientation (which way you face) + smooth motion come from the iPhone's own sensors via ARKit (camera + gyro), which are far better — and a single-antenna rover can't give heading anyway. So the rover needs no orientation sensors: rover = position · ARKit = orientation → combined = full pose.

"Not MFi → the app must parse the feed" — what we'd code

With Emlid (MFi) iOS reports the centimeter position automatically — zero parsing. The Facet instead streams raw NMEA text over Bluetooth that the app has to ingest itself:

Code pieceWhat it doesEffort
BLE transport (CoreBluetooth)scan, connect & subscribe to the receiver's serial data service~1 day
NMEA parser (open-source)use a Swift library — NMEAParser — to read $GNGGA (lat/lon/alt + RTK fix quality) & $GNGST (accuracy) → decimal degrees. Mostly wiring, not writing a parser~0.5 day
Position-source integrationinject the cm fixes into the app's anchor pipeline (replacing the GPS origin); trust only quality = RTK-fixed~1 day
NTRIP client (single-rover only)pull RTCM3 corrections from a caster & forward to the receiver — not needed with our own base + radio, or if the device firmware does NTRIP~1–2 days
Fix-status UIshow fix type (none / float / fixed), satellite count, accuracy~0.5 day
Self-test, QA & hardeningauto-reconnect on dropout, parse edge-cases, on-device integration testing + bug-fix iteration~2–3 days
Facet total (incl. self-test, open-source parser)~4–6 days

With Emlid this whole block collapses to ~2–3 days (incl. self-test): iOS CoreLocation already delivers cm — we just trust it, show status, and QA it.

Setup — no assembly, no printing

The Facet is a finished device — nothing to build. The only setup is a one-time firmware configuration via its on-device menu: base mode (survey-in or fixed coordinates) on one unit, rover mode + NTRIP/radio correction input on the other. The Facet is too bulky to clip on the phone, so the rover rides on a short pole (Facet on top, phone clamped below — see "Rover form factor"). After that, daily use is just power-on → wait for "Fix".

7 Who operates it — your customers don't need to be technical

The viewer is not the operator. For luxury viewings there is normally a sales agent present. Your staff (trained once) handles the technical part — sets up the base, gets a "Fix", pairs Bluetooth. The customer simply holds the ready rig and looks, or the agent holds it for them. No customer ever touches survey gear, waits, or configures anything.
Viewing modelDoes RTK work?
Agent-led (customer just watches)✅ Yes — staff handles everything; customer needs zero skill
Customer self-service, own phone, nobody assisting❌ No hardware fits → accept drift (GPS+VIO)

This is exactly why Q1 (§3) is the deciding question.

8 How many devices

ComponentHow manyWhy
Base1 per siteOne base serves unlimited rovers; set up once, leave running
Rover1 per phone used at the same timeThe rover measures its own position and must travel with that phone — it can't be shared over Bluetooth from afar
Simultaneous viewersBaseRovers~ Cost (Emlid)~ Cost (Facet)
1 at a time (pass the rig)11~$4,000~$1,575
2 at once12~$6,000~$2,355
3 at once13~$8,500~$3,135

For sales demos, one viewer at a time (1 base + 1 rover) is usually enough — pass the same rig to each guest.

9 Development process & timeline

Rough plan once hardware is in hand. Emlid is faster (MFi feeds the app directly); the Facet adds time to parse the position feed (not MFi).

  1. Order & ship hardware — ~1–2 weeks (vendor + customs)
  2. App integration — Emlid (MFi): ~3–5 days · Facet (parse NMEA over BLE, open-source parser): ~4–6 days
  3. Bench test with the device — confirm cm fix feeds the app, building anchors — ~2–3 days
  4. Field test (Da Nang) — real-world drift check & tuning — ~1–2 days on site
  5. Heading solution (two-point or dual antenna) so orientation is locked too — ~2–3 days
  6. Self-test & QA iteration — bug-fix cycles across integration, bench and field results; stability/drift soak — ~3–5 days
  7. On-site deployment (Nassau) — base setup procedure + operator training — ~1 week (+ travel)

Development after hardware arrives, including self-test/QA: ~3–4 weeks (Emlid) or ~4–5 weeks (Facet), excluding shipping and on-site travel.

Hardware logistics — do we ship one device back and forth?

The developer needs a physical device to build and test. Two models:

ApproachHardwareProsCons
Ship one set back & forth1 base + 1 rovercheapest hardwareslow; customs each way; no dev rig afterward; single point of failure
Buy 2 rovers + 1 base (recommended)+1 roverno shipping ping-pong; developer keeps a permanent test/support rig; spare/backup+1 rover cost
Recommended: buy 2 rovers + 1 base. One rover stays with the developer (Da Nang) as a permanent test rig — in Vietnam it can use an NTRIP correction service, so it needs no base there. The client keeps 1 base + 1 rover for Nassau. This avoids shipping the device back and forth, lets development and on-site use run in parallel, and leaves a spare for support.
Extra rover cost: Emlid +$2,000 · Facet +$780. (Assumes an NTRIP service is available in Da Nang — to confirm.)

Procurement & shipping — China · US · Vietnam · Nassau

Shipping times (approximate, express courier)

LegVia~ Time
China → Vietnamcross-border express (SF / J&T) · AliExpress Choice~2–5 days
Hong Kong → VietnamEmlid HK store~3–7 days
US → NassauFedEx Intl Priority / DHL Express~1–3 days
Vietnam → NassauDHL/FedEx express + Bahamas customs~3–7 days
EU (ArduSimple) → either~1–2 weeks

Bahamas customs for electronics: register Click 2 Clear + file a C44 form so the courier clears it for you.

The key rule — "finished" vs "DIY" changes the route

A bare board is not a usable rover. It needs an antenna + a 3D-printed enclosure/bracket + assembly + firmware config — all done in Vietnam (our side). So a DIY Nassau unit is built in Vietnam, then shipped VN → Nassau (the slow leg + customs). You cannot buy a board in the US and have it work at Nassau — nobody there assembles it.
RouteThe Nassau unitShip to Nassau
Emlid / Facet (finished)buy from a US source, plug-and-playUS → Nassau ~1–3 days ✅
DIY (we build it)built in Vietnam (board + antenna + print + assemble + config)VN → Nassau ~3–7 days + customs ⚠️
So DIY's cost saving shrinks for Nassau: the Nassau DIY unit carries 2× builds + the slow VN→Nassau ship + customs + the parsing code. Finished products skip the build and ship US→Nassau fast — a strong reason to use a finished product (Emlid/Facet) for the on-site Nassau unit even if it costs more.

Sourcing per route (fast on both legs)

RouteDev unit → VietnamNassau unit → Nassau
EmlidEmlid HK store (~3–7 d)US Emlid dealer → FedEx (~1–3 d)
SparkFun FacetSparkFun / Mouser (slower to VN)SparkFun US → FedEx (~1–3 d)
DIY (ZED-F9P)AliExpress board (~2–5 d)built in VN → ship VN→Nassau
Use the SAME chip on both units (both ZED-F9P, or both UM982) so the app integrates one NMEA path. The board vendor can differ per leg; don't mix chips (that forces two integrations). The Nassau base must be the same chip family too.

Cheaper China / Vietnam options

Cleanest fast path: Emlid — dev unit HK → Vietnam, Nassau unit US dealer → Nassau. Both legs fast, no build, MFi (no NMEA code). DIY is cheaper hardware but the Nassau unit is built in VN and rides the slow leg.
Recommended next step: to prove RTK removes the drift quickly, start with one Emlid Reach RX (~$2,000) and test in Da Nang — the MFi rover feeds our app with almost no code change. If it performs, scale to a base + rover for the site (Emlid for speed, or the SparkFun Facet to cut cost). In parallel, confirm Q1–Q3 so we size it correctly.