Augmented reality is a form of technology that was created to create a computer generated overlay on top of the real world view of the user. This is usually accomplished through a phone or large glasses that can hold a camera and a small processing to find markers in the camera frame and produce an image. While this method is effective it is difficult to share among multiple users with a single device.
The focus of this project was to create a handheld AR device that could be portable and easily shared. It would read a video input from the camera and pull up relevant information based on the ID of a marker within that frame. The device would generate a graphic based on the returned data and would finally project the graphic back into the world positioned relative to the marker.
To accomplish this, our team utilized Python OpenCV and ArUco (Augmented Reality University of Cordoba) markers alongside the inexpensive hardware afforded by a Raspberry Pi computer. The Raspberry Pi camera module was used to take in video input and read the ArUco markers found in the frame. The device would then use a homography (a 3x3 matrix that could be used to understand the change in distance due to perspective) to correct the graphic. The ArUco markers found through OpenCV are excellent for this and would allow for the projection of certain graphics in a predictable location relative to the ArUco marker.
An example of this device in use would be in situations where a visual representation might be helpful, such as in a construction site. This device could be programmed to show anything from pipes, wiring, or studs behind a wall to a proposed design for a building.
During our time with this project our scope has changed, and we are no longer trying to create a complicated graphic that is projected. Instead, we have spent our time creating a simple image that is placed in the correct location and warps properly with perspective.