Inspiration
There are a lot of dark spots on campus “for the peace of mind” - LUX slogan
What it does
- lx is a measured night-light map of Texas A&M's main campus
- iPhone app (Walker UI) — walkers survey assigned routes; logs light, GPS and a photo every second
- Survey Control website — dispatches walkers live, shows coverage, suggests the next routes to walk
- Light Map — every footpath colored by measured lux, street lamps, possibly-out lamps, low-light warnings
- Light View — walk any route in 3D through a point cloud built from our own photos
The dataset (collected by us)
- When: night of Nov 7, 2026 · 6:40–9:00 pm · 3 walkers · ~7hrs of data
- Light: front camera pointed up through a paper diffuser → converted to lux (~15 Hz)
- Photos: back camera, 1 per second, with GPS and exposure
- 284,086 raw light readings → 17,715 clean 1-per-second readings
- 3,622 footpath stretches with measured lux
- 721 street lamps located ·
- 1,648 trees · 507 low-light warnings (121 high)
- Light model check: median error 1.38 lux on held-out readings
How we built it
Vultr Cloud GPU (NVIDIA A16)
- Privacy blur + object detection (YOLOv8x + YOLOv8-Face): 17,607 photos in 18 min
- Lights, trees, emergency phones (YOLO-World): 26,430 objects found
- Depth + scene (Depth Anything V2 + SegFormer): 17,607 photos in 59 min
- Lamp mapping (triangulation + OpenStreetMap): 284k readings in 2 min
- 3D point cloud (depth fusion): 44M points → 2.5M from 5,874 frames
- Job runner pulled scripts from GitHub, ran them in order, pushed results back
MongoDB Atlas — database + live API
- 72,758 documents · 18.72 MB in database
lux_survey - Collections: readings, segments, routes + bins, walks, photos, detections, walkers
- 31 indexes, incl. 2dsphere geo indexes for
$near/$geoNearlocation queries - Powers: map stats, route scoring, coverage of each route, route suggestions, live walker tracking
App + web
- iPhone app: SwiftUI (iOS 17)
- Website: three.js + ES modules (static), hosted on Netlify
- API: Netlify Functions (Node) + MongoDB driver
Challenges we ran into
- Car headlights and passing lights spiking readings — filtered 18,175 + 8,146 moments
- Privacy — every face and number plate blurred before anything was used
Accomplishments that we're proud of
Optimized workflow
Part 1: Collecting the Data
- Build the app — built the app and the live dashboard
- Walk and record
- Watch live
Part 2: Processing the Data
- Queue jobs — GitHub
- Blur · clean · map
- Store the dataset
- Website — results back every 30 s to the Control Center
Walker UI
- Navigation: turn-by-turn directions with voice prompts
- Route progress for the current part and the whole route
- "Guide me back" leads walkers to missed pieces
- Resume picks up at the first gap
- Live capture: live light reading (lux) in the corner, back-camera view
- Stats: photo count, GPS accuracy, battery and time left
- Mark button to flag a blocked path
- Route indicators: red = still to record · orange with red stripes = captured · faded = missed
- Route calculation: each loop cut into 4 parts, with checkpoints
- Route divided into 10 m pieces; each needs 3 light readings and 1 photo
- Records only within 20 m of the route with a GPS fix
Command UI
- Live map: every walker's position and direction
- Progress drawn over the planned routes
- Walker cards: % captured, current part, gaps, lux
- Battery, GPS, storage and uploads
- Problems feed: phones report in every 2 seconds
- Flags "no signal" after 20 seconds
What we learned
- Real-world sensor data is messy — cleaning is most of the work
- Geo indexes in MongoDB make location queries simple and fast
- A single cloud GPU can process a whole night of photos in about an hour
What's next for lx
- Survey more nights and the rest of campus
- Share possibly-out lamps with campus facilities
- Turn-by-turn best-lit walking directions for students
Links
- Live site: https://tamu-lux-map.netlify.app
- GitHub: https://github.com/shourjomajumder/tamu-lux-survey
Team
- Shourjo Majumder · Jonathan Kolagani · Rhett Rangel · Raman Jamal