/3D-scanner

Cheap 3D scanner based on Arduino and Processing

Primary LanguageAGS ScriptGNU Affero General Public License v3.0AGPL-3.0

3D-scanner

13 February 2015 -Done-

GCode-like interpreter DONE for Arduino. The code AND the readme are in /scanner_bed
Finalizing QT program config, as Arduino code is done.

-Working on now-

Working with QT and OpenGL for 3d rendering of said pointcloud. OpenGL confuses me. More learning experience.
Makefile still borked. 

========== 29 October 2014

-Done-

Calibration is nearing completion!
Camera calibration is now applied across all relevant screens.
Ellipse detection has low error.
More settings added appropriately to override my detected answers. We don't want the computer to be too smart...

-Working on now-

Makefile is broken, badly. Was brought to my atention. Will collaborate to fix quick.
Determining how to do accurate line detection. I have a few methods. 
Thinking how to present scanner GUI for users.
Re-writing Arduino to work better and more GCode-like. Will work with QT program to make ideal config.
Simplyifying GUI so it works on little configuration, and catches errors. Easier for end-user, the better.

29 September 2014

QT program nearly functional for scanning! What is done?

GUI done.	
Basic configuration.
Camera lens calibration!

In the works (actively)?

Laser line detection
Ellipse detection (Yes, both of these will auto-calibrate the camera)
Scanner.
Algo's to increase accuracy and pointcloud generation.

Slightly future Goals?

Implementation of PointCloud Library.
Implement more than flat text file for data saving. Looking at .OBJ

Previously...

Cheap 3D scanner based on Arduino and Processing

I used the base project seen on http://www.instructables.com/id/Lets-cook-3D-scanner-based-on-Arduino-and-Proces/?&sort=ACTIVE&limit=40&offset=40#DISCUSS

If you want to use these programs, you will need the Arduino IDE (for compiling and uploading), and an Arduino Uno compatible devel board for the hardware. For the Processing program, you will need the Arduino up and running to execute the 3d-scanner. I set up the line_processor as a stand-alone. Just dump the sample images with the program and run it in Processing. It doesnt display content, but it does generate line drawings for each image, and generates a pointcloud file that MeshLab can read.

Changes 4 August 2014:

Scrapped Java for QT5, C++ and OpenCV.
GUI mostly complete.
Multiple video sources will not open concurrently, yet...
Working on Calibration now.
Alpha code for handling Android running IP Webcam

Changes 28 July 2014:

 Still learning Java - Now have GUI and basic webcam viewing set up.
 Looking at changing my Line and scanner sketch to display 3d point data instead. 

Changes 20 July 2014:

 Correct math for angled camera placement - Mostly correct
 Found better camera than my Sony PS2 Eyetoy. I was gifted a Logitech HD webcam!
 More sample data in /3D-scanner/sample_images/

Todo:

 Better project box enclosure
 Implementation of 2 line lasers I bought for $2.50 each on ebay
 Use Makerbot Digitizer technique of dual line lasers at x degrees from camera and -x degrees from camera and do a dual sweep.
 Make Processing programs Usable.
 Include circuit diagrams, per user's requests.
 Figure out technique to include color data with depth data
 Currently looking in Java for multiplatform and nice GUI options
 Implement a GCode-like system for the 3D scanner arduino hardware ~ looking at Fabscan arduino code..

Initial Changes:

Changes:

 Cleaned up variable names
 Configured my stepper.
 Set up a ping/pong system so the Processing program knows when a step increment is done. We do this for non-jerky pictures.
 Created a separate Processing program to handle image->pointcloud handling. This sped up dev time.
 Added a variable to account for vertical placement of camera. Original project assumes a 0 degree inclination respect to platter. Mine is at an angle.

Todo:

 Correct math for angled camera placement
 Better project box enclosure
 Implementation of 2 line lasers I bought for $2.50 each on ebay
 Find better camera than my Sony PS2 Eyetoy.
 Use Makerbot Digitizer technique of dual line lasers at x degrees from camera and -x degrees from camera and do a dual sweep.
 Make Processing programs Usable.

Pie in the sky Todo:

 Camera calibration code, including lens calibration
 Possibly implement 2 cameras, with one at 0deg and other at 45deg.
 Laser calibration code
 Table Calibration code
 Use PCL library to output pointcloud OR STL