MapPilot
Turn any Android phone into a georeferenced mobile-mapping and Visual-Inertial SLAM rig.
- Status
- Live
- Version
- 0.2.0
- Platform
- Android app
- License
- Not specified
Most mapping apps either stream raw video to a server or fabricate plausible-looking results when a sensor is missing. MapPilot runs on the device, reports UNAVAILABLE or DEGRADED instead of inventing values, and never lets perception, upload or thermal pressure block the capture path.
How it is put together.
MapPilot (in the MobileSLAM repository) records time-synchronized camera, IMU and GNSS, tracks the device in 3D with ARCore VIO, fuses it to real-world coordinates with a Umeyama GNSS-to-VIO alignment, and detects road assets on-device with YOLO11n on the LiteRT GPU delegate. Everything is written to MCAP and MP4 and indexed in an on-device spatial and vector database, with map, 3D point-cloud and export views. It runs on the edge; the cloud is an optional documented contract. The README reports field testing on a Galaxy A17 and sample sparse point clouds in the local VIO frame (not georeferenced).
- 1
Sensors
Camera, IMU and GNSS capture modules
sensors/ - 2
Recording
MCAP writer and MP4 video
recording/ - 3
SLAM and fusion
ARCore VIO backend, Umeyama GNSS fusion
slam/ - 4
Perception
YOLO11n detection, depth, embeddings
perception/ - 5
Asset extraction
Back-projection, tracking and de-duplication into georeferenced assets
assets/extraction/ - 6
Spatial + vector database
Room with R-Tree and cosine search
core/database/ - 7
Visualisation
MapLibre map and GLES3 point-cloud renderer
viz/
Specification.
- Capture
- Synchronized camera + six IMU streams + GNSS (per-satellite C/N0, raw measurements) with per-stream health monitoring
- SLAM
- ARCore VIO 6-DoF pose, sparse point cloud and depth; motion/time keyframe selection
- Georeferencing
- Umeyama GNSS–VIO similarity solve → local ENU and WGS84; degenerate alignments rejected
- Perception
- YOLO11n via LiteRT GPU delegate with CPU/XNNPACK fallback; depth back-projection to georeferenced assets; MobileNetV3 embeddings for similarity search
- Recording
- Custom Kotlin MCAP writer (chunked, indexed, CRC, segmented, protobuf schemas) + H.264 MP4; crash recovery
- Storage and export
- Room + R-Tree spatial index + cosine vector search; PLY, PCD, GeoJSON, CSV
- Sample capture
- Sparse cloud of 47,839 points from a ~1.2 km walk on a Galaxy A17 (local VIO frame, not georeferenced)
- Platform
- Android 12+ (minSdk 31, compileSdk 35); ARCore-capable device recommended
- Runs on
- Android APK built with Gradle and installed via adb; Android 12+ and ARCore device
Releases.
- v0.2.0MobileSLAM v0.2.0 - georeferencing works on-device
More systems.
Turn dash phones into a live, city-scale map of where camera-based autonomy can see
Mapping and localization · LiveODYXOn-device Visual-Inertial SLAM with GNSS fusion. Your own localization core, no ARCore.
Next systemDriveLoggerAndroid app that turns phones into autonomous-vehicle data-acquisition devices