LANYX

Live, on-device, top-down lane mapping from a dash-mounted phone

Status
Live
Version
0.1.0
Platform
Android app
License
Not specified
01 · Problem

Turning a phone pointed at the road into a lane map and HD-map export without dedicated hardware or a cloud service, with recordable drives so detection settings can be tuned offline without re-driving.

02 · Architecture

How it is put together.

LANYX detects lane markings in a phone's camera feed, lifts them onto the ground plane using ARCore's tracked pose, and accumulates a growing top-down lane map in real time, fully on-device. It then vectorises the map into lane centerlines with colour, width and dashed/solid attributes and exports them to GIS and HD-map formats. Raw drives can be recorded, replayed through the same pipeline and swept over parameters offline. The README scopes it as a lane-mapping and HD-map data-export research tool, not a self-driving stack.

AR sessionapp/src/main/java/com/lanyx…Lane detectionapp/src/main/java/com/lanyx…Ground liftingapp/src/main/java/com/lanyx…Top-down mapapp/src/main/java/com/lanyx…Vectoriserapp/src/main/java/com/lanyx…Georeferencerapp/src/main/java/com/lanyx…Exportsapp/src/main/java/com/lanyx…latest framelatest framemarking pixelsmarking pixelsground pointsground pointsdensity griddensity gridlocal trajectorylocal trajectorylane geometrylane geometryWGS84 transformWGS84 transformAR sessionapp/src/main/java/com/lanyx…Lane detectionapp/src/main/java/com/lanyx…Ground liftingapp/src/main/java/com/lanyx…Top-down mapapp/src/main/java/com/lanyx…Vectoriserapp/src/main/java/com/lanyx…Georeferencerapp/src/main/java/com/lanyx…Exportsapp/src/main/java/com/lanyx…latest framelatest framemarking pixelsmarking pixelsground pointsground pointsdensity griddensity gridlocal trajectorylocal trajectorylane geometrylane geometryWGS84 transformWGS84 transform
FIG. 01Modules and data flows, from the repository layout and documentation.
  1. 1

    AR session

    ARCore session lifecycle, VIO pose and YUV frames

    app/src/main/java/com/lanyx/mapper/ar/
  2. 2

    Lane detection

    LaneDetector interface: Classical (HSV+Otsu+CCL) and LiteRT

    app/src/main/java/com/lanyx/mapper/detect/
  3. 3

    Ground lifting

    Pixel-to-ground ray lifting, ground plane, intrinsics

    app/src/main/java/com/lanyx/mapper/geometry/
  4. 4

    Top-down map

    Density grid, cells, trajectory

    app/src/main/java/com/lanyx/mapper/map/
  5. 5

    Vectoriser

    Centerlines with colour, width, dashed/solid

    app/src/main/java/com/lanyx/mapper/vector/
  6. 6

    Georeferencer

    Rigid GPS-track fit

    app/src/main/java/com/lanyx/mapper/geo/
  7. 7

    Exports

    GeoJSON, OpenDRIVE, Lanelet2, KML, ML dataset, map JSON/PNG

    app/src/main/java/com/lanyx/mapper/export/
03 · Capabilities

Specification.

Detectors
Classical pure-Kotlin (HSV + Otsu + connected components) or LiteRT/TFLite segmentation with GPU → NNAPI → CPU fallback
Mapping
Flat-ground homography lift into a memory-bounded density grid; white vs yellow markings per cell
Vectorisation
Zhang-Suen thinning, skeleton trace, Douglas-Peucker; per-lane colour, width, dashed/solid
Exports
GeoJSON, OpenDRIVE (.xodr), Lanelet2 (.osm), KML, map JSON, PNG, ML dataset (frames + per-pixel labels + manifest)
Georeferencing
Rigid 2D Procrustes fit of local path to GPS track with quality gates; falls back to local frame
Offline tuning
Record clips, replay through the live pipeline, parameter sweep that proposes best settings
Tests
63 JVM unit tests covering codec, grid, vectoriser, georeferencer, exports, detector, lifter
Platform
ARCore-supported Android device, OpenGL ES 3.0; fully on-device
Runs on
Android app built with Gradle and installed on an ARCore-supported device
Stack
  • Kotlin
  • Kotlin coroutines
  • ARCore
  • LiteRT (TensorFlow Lite)
  • OpenGL ES 3.0
  • Jetpack DataStore
  • Play Services Location
  • Material 3
04 · Changelog

Releases.

  1. v0.1.0