BluePrint is my senior project for my Computer Science undergrad degree. It is an Indoor Navigation System using Bluetooth LE beacons. I could not be more excited about working on such a complex and unique idea with three other friends.


The goal of BluePrint is to create a system which is built entirely around simplicity for our users.Those who use our system to navigate buildings will already compare it to common GPS and expect it to behave as easily. It will. But to make our system flawlessly simple for building administrators/owners to augment their structures with BluePrint is something very new. To make a marketable product, people are going to have to enjoy setting it up.

Successful Prototype

My team and I had the opportunity to demo our prototype to our professor and our entire class of another 14 teams. In short, things went very well! We were able to quickly calibrate the demonstration environment and have our team’s four iOS devices displaying their current location. Although each device showed only its location, we created a little AJAX web service connected to our API and were able to show all devices on one computer screen.

In addition to position, we were able to demonstrate our pathfinding implementation by having each device create a new path from its current location in the room to the door. Our demo screen was also able to show the paths for all four devices.

My Contributions

Being on a team of four means divvying out the work and sharing responsibility. With such an ambitious project, there is certainly a lot to divvy out. Personally, I love working in teams, especially when everyone works as hard as we are together. It has made all of our pieces come together very nicely so far.


Andres is writing our API and database while Jared and Seth are writing the end-user navigation and the admin/calibration apps respectively. My responsibilities so far have been to:

[1] Write an image processor for floor plans. It can interpret walls/boundaries and “walkable” area and converts this into a data array which we can use for pathfinding and navigation.

[2] Implement pathfinding. I tweaked typical pathfinding in that this does a pretty good job at padding our path away from walls to give a more natural appearance. Typical “shortest path” algorithms hug walls and corners which, in my opinion, did not look good in our initial tests for a navigation path. Currently, pathfinding works in single-level environments. The next step is to enhance it to work in multi-level environments. Multi-level pathfinding now works! It is not quite at the level that I want it to be yet, but I will get a chance to during the next several weeks. My new idea for multi-level pathfinding should be very fast, even for large buildings where multiple floors would have to be traversed in a single route.

[3] Create demo page. As I mentioned above, our prototype demo hinged on conveying a functioning system. To do this I created our demo page (standalone html page) and a mini API to show all devices in an environment and their current navigation path. Our audience could then stand at the desktop and watch four little dots moving around the room. I think this helped them realize this was a scalable system instead of seeing only one device navigating at a time.

Leave a Reply

Your email address will not be published. Required fields are marked *