DIY: How to Make a Low Cost 3D Scanner

18,182

64

47

For this tutorial I am assuming you have both math and coding knowledge!

Also for this tutorial you will need Mat Lab computer vision toolbox, an Arduino, a laser line and a webcam.

UPDATE:

Due to popular demand I bring you the official publication: https://www.researchgate.net/publication/321668948...

HUGE thanks to my great friend Bryer C. Sousa for making this possible. I hope this helps everyone who is interested in computer vision projects!

Step 1: Building the Turn Table

The first difficulty I had making this 3D laser scanner was finding a rotating platform I could control with MatLab. Instead of spending lots of money or time I went to eBay and bought 5v Stepper Motor 28byj-48 With Drive Test Module Board Uln2003 @ http://www.ebay.com/itm/like/371474310734?lpid=82&chn=ps&ul_noapp=true For almost no money at all. I included the 3D models of the turn table I created using the stepper motor and marbles i bought at the dollar store. Just hot glue the platform to the shaft of the stepper motor and place the stepper motor in the slot within the holder. The platform should be level with marbles but be aware the cheaper the marbles the more inconsistent the diameters which may make things not level.

Step 2: Onerot() Function

The function onerot(Arduino, PauseTime, #of loops) does a basic full step sequence. If you are using the platform and stepper motor within this tutorial use a pause time of 0.005 for smooth rotation.

Code for the stepper motor found at : http://pastebin.com/7KVBUrvK

Step 3: Finishing the Setup

Once you have a method of getting an accurate rotation that can be controlled within Mat Lab set up a camera at any distance and height away from the turn table and a laser line to either the left or right of the camera at a similar distance away from the turn table. The angle of the laser should be placed optimally to cover as much of the turntable as possible but nothing has to be exact we will handle model scale difference within the code.

Step 4: Calibrate the Camera

The most important part to make this work accurately is to calibrate the camera properly. Using the MatLab computer vision toolbox I was able to obtain a accurate focal length and optical center of my camera within 0.14px accuracy. Keep in mind changing the the resolution of the camera will change the values of the calibration process.

The main values we are looking for are focal length measured in pixel units and the pixel coordinates of the optical center of the image plane.

Step 5: First Equation

Lets see how if this is true

Step 6: Converting to Camera Coordinates

In MatLab an image is represented as a matrix starting from 1,1 to max resolution. However we need to represent points in terms of camera coordinates with the optical center points at [0,0]

Step 7: Using the Basic Pinhole Equation

As we can see it works well and can be very useful if we do not know the initial value of the laser angle.

Step 8: How the Scanner Model Is Represented

As we can see lots of triangles to analyize

Step 9: Using the Law of Sin

Step 10: Equations

xiaomaxiao:
Ao=90 - atan(xo' / F) = 90 - atan( -225/919) = 90 - (-13.75) = 103.757

not 90-(-15.508) .

Thank you for catching that Xiaomaxiao!

Step 11: Main Algorithm

Step 12:

Step 13:

Step 14: NewFilter Function

Probably the hardest part of this scanner and the one thing i hope continues to work but this filter will do the trick to get a nice single laser line in most conditions regardless of light. The less ambient light the better.

Step 15: Variables to Change

Modify these variables in the top of the calibration script to get the script to work accurately for you

Calibration code : http://pastebin.com/CCD6bdt7

Step 16: OutPut of the Last Script

The last script generates the 2D points cloud of the scene in the steps in the image.

Step 17: Adjust the Y Axis Values

Step 18: Adjust the Y Axis Values

Step 19: Transforming the Points

Step 20: Determine Your Turntable Platform Center

Step 21: Determine How Many Loops for 360 Degrees

Step 22: Main Laser Scanner Code

Modify the top line of the code to fit your model and adjustments.

Step 23: Scan Your First Object

At this point you should be scanning models

Step 24: Creating Mesh From Point Cloud Step 1

Step 25: Creating Mesh From Point Cloud Step 2

Step 26: Creating Mesh From Point Cloud Step 3

Step 27: Creating Mesh From Point Cloud Step 4

Step 28: Creating Mesh From Point Cloud Step 5

Step 29: Creating Mesh From Point Cloud Step 6

Step 30: Congratulations You Have Successfully Created Your Own 3D Scanner!

Share

    Recommendations

    • PCB Contest

      PCB Contest
    • First Time Author

      First Time Author
    • Toys Contest

      Toys Contest

    47 Discussions

    0
    None
    MaciejK39

    4 days ago

    Hi! Nice one! I cant understand two things.
    y_trans = 14; % Transform value for Y
    z_trans = -315; % Transform value for Z

    Can you explain me this two? Why -315? Why 14? How did you calculate that?

    0
    None
    microchip.space

    9 months ago

    Hello, thank you for publishing this project. I wanted to ask you if you could suggest a book where I can learn more about the concepts you have described in this wonderful project.

    Thank you

    1 reply
    0
    None
    johnl375microchip.space

    Reply 3 months ago

    I found documentation on this very difficult to find. I wrote this tutorial because I wanted to add what I could to help those trying to learn.

    0
    None
    hacker0722

    1 year ago

    Hi John, I am having some project in university about building microscope and optical instrument. Now that we have further goal to make a whole system using 3D scanner Structured light, Laser depth scanning. Can you send me more detail about your files? Wish I can more contact with you:") thanks.

    Call me Hacker, thanks. hacker0722@gmail.com

    3 replies
    0
    None
    jakhongirm

    1 year ago

    Hello John.

    Great job! really inspired me.

    I am doing a graduation project. İt is 3D foot laser scanner.And i need your help. Can you send me the specific documents on your 3D scanner. I would be very grateful. Thanks!

    mail; jakhongir.mamadov@gmail.com

    1 reply
    0
    None
    byron.cuscoquinde

    1 year ago

    Hello, how are you? I am doing a similar project in the university and I would serve yours as a reference, if you are kind enough to send me the documents to my email byronkuzco@hotmail.com. Thank you

    2 replies
    0
    None
    johnl375byron.cuscoquinde

    Reply 1 year ago

    This is the documentation so far, but I will be producing a written document sooner than later.

    0
    None
    PavleR

    1 year ago

    Hi I am doing M.sc project with 3D Scanner as a thesis, have you finished writing your documentation, I'd really like to read it once before and to include your reference. Thanks, email jopica123@gmail.com

    1 reply
    0
    None
    PARULAMBASTHA

    1 year ago

    Hey John,hope you are well.Your project is very interesting,i am doing a similar project for my final year.Can you please send me the documentation of your project for my reference.Thanks

    Email- parul.ambastha@gmail.com

    1 reply
    0
    None
    _alpaygokce

    11 months ago

    Hi john, can you send me documentations about this project? I'll make similar project for my graduation...

    1 reply
    0
    None
    thanh hav

    1 year ago

    I am doing a project in my university. It is the integration between 3D printers and 3D scanners. can you send me the specific documents on your 3D scanner. it will be a source of useful references for me. I would be very grateful to you and will share all process projects after completion. my email is vothanhha1994@gmail.com . thanks for reading.

    1 reply