So about a year ago I decided to build a 3D scanner and I spent a couple of month building a prototype (shown in the picture below), but the project was put on the shelf after that due to my final project at university. Now that I have some more free time I have started to build on my scanner again. I have built a proper version of the scanner that is more refined and less of a quick prototype. The only thing missing is the motherboard and a rewritten software. I will try to give a quick description of the hardware and software in the following sections.
I have built the scanner using mainly plywood for the simpler parts and then used a 3D printer for the more complicated parts. The scanner has got a removable lid to make it easier to transport and store without the risk of damaging the more sensitive parts.
The scanner is using a Logitech C920 web-cam to capture the images of the object. I would probably choose a different camera if i were to redesign the scanner, this mainly due to the auto focus function of the camera which i have not found a good way to control from the OpenCV library. The camera also buffers the images which makes it a bit tricky to get the timings right.
There are two line lasers mounted on either side of the camera at an angle of 30 degrees, this makes it possible to triangulate the position of the generated line. The lasers are a couple of cheap line lasers I found on eBay, the main criteria i had when choosing the laser was that it should be bright enough for the camera to be able to see it but not so bright that it would burn the object or my eyes.
The lasers and camera are then pointed at a rotary table where the sample is placed. The table is rotated with a stepper motor that is controlled by the easy-driver from Sparkfun. I might change it for a spare driver from my 3D printer since it runs a bit cooler (and has a smaller footprint).
All the hardware (except the web-cam) are controlled with a teensy 3.1 board that communicates with the computer over usb.
The software is currently being written in C++ with the OpenCV library for image processing and the HidAPI for communicating with the teensy board. I am currently looking into the point cloud library for processing the scanned cloud.
If you have any questions don't hesitate to write a comment below.