Inspiration
Navigating campus buildings and finding specific classrooms on time has always been a frustrating challenge for the incoming freshmen. Standard map applications completely lack indoor floor plans, turning a simple walk to class into a guessing game. Trying to locate a room like ENG 107 becomes an uphill battle when rooms 105 and 106 are mysteriously located on the complete opposite side of the building. We built KnightMaps to solve this campus navigation problem once and for all.
What it does
KnightMaps is an advanced indoor and outdoor hybrid navigation system designed to help students seamlessly navigate campus buildings and classrooms. It tracks the user's real-time position across both environments, providing turn-by-turn indoor routing, room search, voice guidance, and different localization systems depending on if you are inside or outside a building.
How we built it
We engineered a robust hybrid architecture combining backend intelligence with a custom mobile application:
- Localization via Nearest Router (LVNR): We captured and stored RSSI (Received Signal Strength Indicator) and BSSID data points across key building nodes. Using a k-nearest neighbors (KNN) algorithm with a weighted average of the top three matches, boosted by device accelerometer data for dead reckoning, we achieve smooth, accurate indoor tracking.
- Visual Place Recognition (VPR): Powered by computer vision and a VLAD (Arandjelović et al., Keetha et al.) aggregator (
vpr/network.py), the system recognizes locations to assist with exterior and hybrid positioning. - Backend & Frontend Stack: Built with a Flask backend (
app.py) for localization and routing logic, paired with an Android app built using Capacitor, Vite, and custom native Java plugins (WifiScanPlugin.java) to handle Wi-Fi scanning, step-counting, compass tracking, and GPS.
Challenges we ran into
- Distorted Floor Plans: The floor plan section we chose was unfortunately not drawn to scale and featured significant spatial distortions. This led to initial localization errors where the model miscalculated the user's relative position inside the building.
- Server Latency: Relying on a local server for computation initially hampered our ability to process and stream locational data quickly. We had to optimize our data structures and scanning logic to ensure smooth performance.
- Domain Gap: Our initial dataset for VPR consisted of google maps street view, however the cameras used were extremely different from the camera of a regular phone which caused lots of errors. We solved this by going outside and collecting our own data.
Accomplishments that we're proud of
- Successfully designing and executing a functional hybrid indoor/outdoor localization pipeline (LVNR + VPR) from scratch.
- Building a working proof-of-concept Android app that bridges native hardware sensors (Wi-Fi, accelerometer, compass) with a clean, interactive floor plan interface.
What we learned
- Deep practical knowledge of how Wi-Fi fingerprinting and RSSI datasets can be leveraged for indoor positioning.
- Real-world experience integrating hardware sensor data with software algorithms for dead reckoning.
- Valuable troubleshooting skills in handling spatial assumption errors and optimizing local computation latency.
What's next for KnightMaps
We are working on scaling the architecture, getting rid of errors in localization, optimizing server performance and cloud integration, with the ultimate goal of allowing universities and communities worldwide to deploy KnightMaps for their own local campuses.
Log in or sign up for Devpost to join the conversation.