Robots That Make Things

Laser Scan to Print

Jul 21, 2010

Many of you have been asking for a laser scanner that can turn your CupCake CNC into a 3D copier. Thingiverse user tc_fea (aka my dad) is hard at work making that a reality. Using Visual Basic, ANSYS and a lot of math, tc_fea has gone from scan to print. Leave a comment if you’d like to see the source code and we’ll be sure to post it online.

Required Equipment

  • Chessboard
  • Laser-line level
  • Web camera
  • Windows PC with Visual Basic

Step 1 – Scan the Object

Actual Scan Object (drill)

First, tc_fea puts the scan object in front of a known, calibrated background – in this case an antique chessboard. He manually moves the laser line level incrementally across the image, taking a picture after each move.

Step 2 – Compute the Point Cloud

Point cloud

Tc_fea feeds the multiple scan images into his Visual Basic software for processing. The software does the following:

  1. Subtracts each scan image from a baseline image (with no laser line). This produces a very high contrast scan line.
  2. Subtracts the RGB component colors separately from the scan line, pixel-by-pixel (using Bresenham’s Algorithm). This allows a color scan.
  3. Applies a threshold filter to isolate the scan line from the background.
  4. Assemble the scan lines into a point cloud by performing a number of image transformation routines based on OpenCV methods
  5. Renders an image of the 3D point cloud in color

Step 3 – Mesh and Create an STL file in ANSYS

ANSYS photo

Next, tc_fea meshes his point cloud in ANSYS, a analysis package used, among other things, to analyze fighter jets and certify nuclear reactors. Overkill? Absolutely. Expensive? You bet. Fortunately, tc_fea is using an affordable demo version called ANSYS ED, which has many of the features in the full version, but limits the number of nodes and elements. Tc_fea’s program kicks out a pretty good point cloud, so you could probably accomplish the same thing in MeshLab or Blender (both free).

Step 4 – Print!

p100719_scanned_drill (2)

Finally, tc_fea prints the scanned part using his CupCake CNC running ReplicatorG! Homemade scan to print for less than $100!

For more things designed by tc_fea, go to http://www.thingiverse.com/tc_fea/things

by Sam | Categories: Scanner |

Share with others

7 Responses so far | Have Your Say!

  1. Jeff Keegan
    July 21st, 2010 at 5:02 pm #

    And of course there’s this, and this made from it..

  2. bre
    July 21st, 2010 at 8:29 pm #

    yup, Andy’s doing amazing work!

  3. Lane
    July 21st, 2010 at 8:33 pm #

    Do you have to ask? Of course people want to see the code. Even if I am the only people.

  4. DStaal
    July 23rd, 2010 at 7:52 am #

    One thought: Visual Basic limits anything he develops to Windows. It might be worth looking at Real Basic instead: It’s 90+% compatible, but it can produce Windows/Mac/Linux applications.

  5. ecahseb14
    July 27th, 2010 at 2:19 am #

    check out the david 3D scanner…it’s pretty much the same concept, just a better result if you ask me.

  6. sarkem.org
    July 29th, 2010 at 6:45 pm #

    The Top Ten Recommended Registry Cleaners…

    I found your entry interesting thus I’ve added a Trackback to it on my weblog :)

  7. Reece Arnott
    August 1st, 2010 at 8:04 pm #

    Probably a good time to mention that I am hoping to have my own 3d scanning Java project released, at least as a beta version, probably in the reprap sourceforge repositiory as I hope to eventually integrate it into the reprap host software, in a couple of weeks time.

    It is designed to be very easy to use:
    – print out the calibration sheet (optionally design one yourself with nothing more complicated than MS-Paint)
    – place your object on it
    – take pictures with a handheld camera
    – give the computer the pictures, what calibration sheet you used, and how big the paper was you printed it on, and the output file name (currently only outputs as STL file)
    – Watch the blue bars
    – Done.

Leave a Feedback

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>