Inspiration
As frequent travelers, we enjoy exploring new places and seeing what the world has to offer. However, these explorations often lead to us getting lost, so we were inspired to create a program that will help users become un-lost if they have a physical map with them (but may not necessarily know how to use it). We hope that Navify will help others retain the knowledge of their surroundings and help people feel more comfortable when traveling and exploring new places.
What it does
Navify takes an image of a physical map provided by the user and returns the same image but with a marked route that displays the shortest traversal between 2 chosen coordinates. This helps users navigate their way when lost in unfamiliar spaces.
How we built it
Our program has 3 main steps, explained below: 1) Image Processing - The program took in a png file and converted it into a 2D array for pathfinding. The image processing involved converting all the pixels into their respective color values, then greyscaling them, then determining a threshold for where certain values would be considered paths (and the rest would be considered obstacles). This component was implemented using the OpenCV library. 2) Pathfinder - Built using C++, our pathfinder uses the A* algorithm, a variation of Dijkstra's algorithm, to find the shortest route between two coordinates in the map. 3) Web Application - Our web application is how the user interfaces with our program and was constructed using React and Firebase. Users upload pictures that are then converted into their respective 2D arrays before the pathfinding algorithm takes over.
Challenges we ran into
Our biggest challenge was linking the front end and the back end, which was mostly due to our choice of programming language (C++ and Firebase). We also had a bit of a challenge delegating work tasks and assigning responsibilities at the very beginning of the project. We didn't have a full foundation of the idea yet, so it was difficult. Eventually, we pulled through and it became smooth sailing after that.
Accomplishments that we're proud of
We are very proud that we finished a successful project and that it works well enough to test it with people outside of our group. We worked great as a team as well, with specific members focusing on Figma, algorithm development, web application development, and video production/submission details. We were also able to survive for 36 hours on mostly pizza, coffee, and very little sleep. What a crazy weekend!
What we learned
We learned how to use React to build web applications, helping us visualize how our app will be deployed. It also helped us store the data the users provided us (in the form of pictures). We also became a LOT more familiar with GitHub and learned how to consolidate a GitHub workflow between members (pushing and pulling), which allowed us to finish our project in an organized and timely manner.
What's next for Navify
Our next steps for Navify are to build and launch a fully-functional mobile app that can accept user input from both uploads and directly from the camera. We are also planning on using more complex and unclear maps, as real-world maps are unlikely to be as simple and well-defined as the ones we worked with this weekend. Thanks for a great Hackathon!
Built With
- c++
- cmake
- figma
- firebase
- javascript
- opencv
- react
Log in or sign up for Devpost to join the conversation.