Inspiration

I spent a week learning the layout of my high school. I've gotten better over time, but I still struggle to find the right room now at university. Indoor spaces like hospitals, schools, or large event venues can be hard to navigate. We lack good indoor mapping, and a large part of that is because it is expensive and inefficient. I wanted to make it accessible to anyone with a phone.

What it does

Open a website on an Android phone and walk around to scan a space. The scans are uploaded to a viewer that builds the 3d map and plans routes. Multiple short scans combine into a cohesive building map with room labels. A small 3d printed car (wip) can also carry the phone and conduct scans remotely.

How we built it

Scanning: WebXR in Chrome, using a 28-ray "fake lidar" fan and depth sensing if available. Mapping: Occupancy grids with floor height, traversability tiers (walked path, seen floor, blocked), A* and path smoothing, and three.js for graphics. Backend: Python/FastAPI. Car: ESP32, stepper motors, 3d printed chassis. Teleoperation using BLE.

Challenges we ran into

I flew in, so I was pretty ill-prepared to do a hardware hack. I had to switch from DC motors to stepper motors, which significantly limited the speed of the car. The venue being somewhat crowded and full of obstacles that aren't walls also confused the AR, which was fixed by comparing frames at different times and object heights.

Accomplishments that we're proud of

Anyone can port it themselves -- it's a website, and the hardware is simple. The graphical rendering of the obstacles and photos is also pretty impressive and accurate. And of course, this is my first solo hack and hardware hack.

What we learned

AR: what makes a good scan, how to cheese uncertainties, limits around matching several scans, and the processing power required for a phone to run it smoothly. I've done some CV but AR is new. Hardware: power constraints :( and how time-consuming it is to CAD and print.

What's next for Labyrinth

iPhone alternative with lidar, filtering people out of scans, making the robot autonomous.

Built With

Share this project:

Updates

Submission history