Augmented Reality Product Viewer

January 2020

At the college I went to every student in the computer science program had to complete a capstone project on a team with a few other students and a project supervisor over the course of two semesters. The capstone project I worked on was with a local company called METER that makes weather sensors intended for industrial agriculture, and our project was to make an iOS application that would display their products in an augmented reality viewport.

This is what the final application looked like:

As you can see the main view is mainly a camera viewport, with the 3D model of the product in the view. This would allow possible customers to see what one of their products would look like before they buy it, close to its real size. It also allows a representative from the company to go to a convention and bring an iOS device that can show off their whole catalog instead of bringing all of their products with them.

For the first semester we focused on developing the iOS app. Fortunately XCode, the IDE for iOS applications, has a library called ARKit that made it a lot easier to develop this kind of app. At the end of the semester it was at an 80% functional state, which fit our intended schedule. The second semester we focused on backend development as we needed a way to distribute the 3D models to the application. This was our first time making a backend application so we ended up with something simple using Flask, Nginx, and PostgresQL.

This is what the backend interface looked like:

This interface allowed someone from the company to control what products could be seen in the bottom of the application. A user would then pick which product they wanted to see, it would download to their device and then they could view it.

We were also required to use CI/CD tools to automatically build and test our project while we worked on it. This also meant implementing tests to make sure it didn't break when we would push new code which was great for reinforcing professional coding practices.

Since this project took place over the course of two semesters it gave me an experience that no other class had given me. A lot of classes we would spend half of the semester learning a new technology and the other half making a project with that technology. This one was much closer to working on a real world project, because it basically was one. On top of that our first supervisor left the company between semesters and we had two people leave our team so we had to add someone new to the project halfway through it, so learning how to deal with that gave me an experience that most college students don't have.