From RepRapWiki
Jump to: navigation, search

This page is a development stub. Please enhance this page by adding information, cad files, nice big images, and well structured data!

Crystal Clear action run.png

Release status: unknown

No image available.png
Description DIY 3D Photo scanner
License GPL
Author Midge
Based-on Carapace-Copier
Categories Java, Needs Parts List, Needs Build Instructions, Needs Render, 3D scanning
CAD Models none
External Link none



What is Harvester?

Harvester is the name given to a project to develop a low cost DIY 3D photo scanner whilst exploring Multiview Geometry and photogammetry to capture 3D models from photos for printing on a 3D Printer. This project will build upon and adapt the Carapace-Copier work that was already started by Reece Arnott.

The name Harvester has come about due to its nature of gathering and collating images for processing and because of its expected future connections with Huxley Seedling i.e harvest the seed to grow the seedling!

The aim is to develop a prototype or working model within the next three months and for it to be demonstrated at MakerFaire UK in March 2011 alongside Huxley Seedling.

Contributors to this project will include myself and my partner Bodgeit. Feedback, discussion and other constructive input from those on the RepRap forum will be most welcome.

Files - Coming Soon!

Your-File-Name SOLID MODEL ASSEMBLY These are CAD files for the Solid Model Assembly .xml.zip, .stl.zip --Example User 12:00, Today's Date 20xx (UTC)
Your-File-Name CAD FILES FOR PARTS These are CAD files for each part. .xml.zip, .stl.zip --Example User 12:00, Today's Date 20xx (UTC)
Your-File-Name EVEN MORE FILES These are are even more files. .xml.zip, .stl.zip --Example User 12:00, Today's Date 20xx (UTC)|-
Your-File-Name SOLID MODEL ASSEMBLY This is the final finished machine N/A --Example User 12:00, Tomorrow's Date, 20xx (UTC)
Please edit this and click the links to put in your own files! --Sebastien Bailard 08:34, 10 September 2010 (UTC) 

Scope of the Project

The scope of the project is to be able to scan and print small objects up to approximately a 10” (reduced from 12" due to availability and choice of materials) cubed object from a series of photographs. It is also hoped that providing a system which helps to simplify some of the mathematics involved in the processing of photo's to create 3D images will make for a more efficient and accurate system.

It is advisable for interested parties to read and be familiar with the primer “The Basics of Photogrammetry” and Multiview Geometry by RJ Radke which further explains and describes many of the terms, principles, maths and design considerations referred to in this project. A more simplified explanation is provided by T Darrell

It is also assumed readers will be familiar with RepRap 3D printing

Main Features & High Level Requirements

For the purpose of this project the high-level requirements to be considered are:

1) A moveable platform or base (e.g. turntable) upon which objects can be placed to be photographed from a variety of orientations (i.e. angles and positions). This platform should also cater for the ease of camera calibration.

2) A camera which can be easily positioned to provide acceptable field of view (FOV), focus, calibration and orientation needed for nearest accuracy of image capture and 3D object generation. The main aim here will be to have a system whereby camera positioning will be known to the software.

3) A PC or laptop with photogrammetry software to easily collate and process the captured images (e.g. JPEG or AVI format) into one or more 3D file formats such as PLY, OBJ or STL

The initial aim will be to get the main concepts of the above process working and in the future to integrate these together as one cohesive system alongside 3D printing.

Preliminary Design Considerations

Based on the high-level requirements and research the following design decisions and requirements were considered and identified for this project:

1) Make the platform in the form of a turntable that can rotate an object to any specified angle, thus simulating X-axis functionality. This will eliminate the need for the camera to rotate around an object to capture images on all sides and at different orientations i.e. the object will be centred and rotated a full 360° on the platform.

2) To ease positioning an object centrally on the turntable, it should be engraved, marked or etched with ruler or grid type measurements (in cm/inches) along 4 axis’s at every 90° from the central point. It is considered mm measurements at intervals of 5mm should be ideal and sufficient for the purpose of this project.

3) The rotation of the turntable will be facilitated by a stepper motor controlled by Arduino with the minimum capability of 7.5° turns (approximately 1 step) i.e. ideal accurate image capture is at every 30°, however every 15° is desired for a more improved accuracy.

4) It should be possible to mount most common types of digital cameras at a suitable focus, field of view (FOV) and orientation needed for image capture. This can be achieved by providing a special camera holder unit or cradle to hold and secure the camera in position. The cradle should be adjustable in order to accommodate most common types and sizes of digital cameras or webcams.

5) It should be possible to rotate the camera cradle a full 90° (azimuth angle) to assist with self-calibration and meet the requirements to have at least one photo taken rolled at 90°.

6) The camera cradle ideally should be mounted on the Y, Z axis’s each of which can be driven by individual stepper motors controlled by Arduino. The horizontal X-axis should provide the ability to adjust the distance from the centre point of the turntable so that a full 10” high/wide (reduced from 12" due to restrictions for materials to be used) object can fit into the field of view of the camera. The vertical Z-axis will enable positioning the camera at the correct height so that it can be positioned centre to the height of an object or to capture images at various vertical elevation points. Positioning the camera directly above an object on the turntable may also need to be considered.

7) It should be possible to combine the turntable and camera cradle mounting into one unit that can be easily transported and sit comfortably on a standard table or desktop.

8) Based on preliminary line of sight calculations the dimensions between camera lens and the centre of the turntable should have a minimum measure 32” (5” turntable + 23” ideal minimum focal distance from the edge of the turntable + 4” manoeuvrable space to account for different lens protrusions). Hence the overall internal length of any container unit should at a minimum be 38” (32” + 5” for rest of turntable + 1” perimeter space around the turntable) along the line of sight between the turntable and camera.

9) It should be considered to develop the unit so that it can be expanded or collapsed to make it more portable/transportable.

10) It should be possible to shield the object being photographed from harsh or artificial lighting or under/overexposure to light. It is also ideal to block shadows. This could be achieved by providing a cover or external walls that facilitate diffused lighting (like that used in usual studio photographic situations). This could be provided with apertures in the roof or walls covered with tissue or other semi-transparent materials or attachable/detachable diffusers that can be positioned above and around the object to be photographed.

11) It should be possible to photograph the object against a dim background (e.g. black) which should also have a scale bar or rule zeroed with the turntable top (e.g. etched or marked at equal 5mm intervals in the background should be sufficient).

Design Overview

Given the previously outlined design considerations and requirements, the overall design for the 3D photo scanner comprises of:

1) A container unit providing a dim and scale rule or grid background with diffused lighting

2) A turntable that is stepper motor driven providing 15° turns

3) A camera cradle that can hold and rotate the camera 90°

4) The camera cradle mounted on moveable Y, Z axis with each axis being stepper motor driven

5) A digital camera (preferably high-resolution)

6) PC software to enable capture and processing photographic images into 3D image files

7) PC software to view a 3D image file viewer e.g. STL file viewer for testing (optional and out of scope of this document as there are many CAD applications available that provide this functionality)

8) PC Software to load and print a scanned object on a 3D printer (optional and out of scope of this document as this is already catered for by ReplicatorG, etc. for testing

The scope of the design focuses primarily on items 1) to 4) and 6) above. For the case of 5) at least three most common models of camera or webcam will be considered and tested.

Container Unit Design


Turntable Design


Camera Cradle Design


Camera Cradle Mounts & Axis's Design


Photogammetry PC Software Design

The PC software will provide the following functionality:

1) Handle photoshoot mode to drive the turntable and handle camera positioning and orientation (i.e. control Arduino)

2) Enable selection of two or more photo image files to be processed. This may be via user manually selecting or by the user specifying a drive/path to monitor for file changes (i.e. new photo taken). Later on this functionality may be extended to handle remote image capture (which is only supported by some more expensive DSLR type cameras e.g. Nikon, Canon etc) as a future enhancement.

3) Manually or automatically selecting a device configuration for the camera used (will needed for camera positioning and orientation in addition to information for calculations during processing). Device used can in some cases be detected from the photo files. As an extension at a later date may include automatic loading / configuring of various devices (optional).

4) Selecting or configuring a preferred 3D file viewer to show the processed 3d image

5) Ability to specify known Camera orientation (angle and position) for each image. Even though this will be determined at the time of doing the photo shoot the user may wish to alter or change images e.g. something went wrong or image not come out right for a particular orientation etc.

6) Ability to specify known scanned object maximum dimensions if known by the user. This will help in processing the image i.e. make it more efficient and accurate.

7) Display selected photos and allow the user to remove, add, or move/change order of photos again mainly to allow user to correct or override photos before processing due to errors etc.

8) Process selected photos to generate 3D model whilst showing progress and notifying user when processing is complete or of any errors that occur with help on how to resolve issues etc.

9) Launch a 3D file viewer (optional). It may be considered to provide the viewing feature into the software at a later date i.e. java software for loading an STL file has already been provided by Carlos Pedrinaci.


For Harvester any combination of the existing "Official" Electronics can be used.

If you have not got any electronics Harvester has its own Low cost solutions.

These are the three variations one using the Arduino Mega, Arduino UNO/Arduino Demiglove and Harvesters' CNCduino controller.

Software Development

At this stage of the project I am considering using Java (jdk1.6.0_23) combined with Java3D for the software development of the PC application. I have chosen to use the free IDE JBuilder.

As a starting point I am investigating the use or reuse of parts of Reece Arnott's application CarapaceCopier-0.8-beta-src. On first review there appears to be some overlap of implementation, functionality and naming conflicts with Java3D which will first need to be resolved. The code also includes a huge chunk of work for camera calibration using a points reference photo which may not be needed for this project and thus will be disabled as necessary.

Coming Soon - Things to be done!

1) Sort out some diagrams and photos for each section of the design

2) Complete update of design sections

Further reading