Thursday, July 30, 2015

Add a 3D scanner to a 3D printer to make... Wait for it -- a 3D copier!

I have not made too many efforts to hide my enthusiasm for what I feel is the culmination of inexpensive hardware, cheap or free software combined with what must be an unprecedented social upheaval in creativity.  One such project that caught my eye was a KickStarter project, cleverly engineered by Uriah Liggett from Murobo.com.  At its heart, it is a compact 3D scanner server.  Here was his pitch:



I was sold.  I had a $30 Raspberry Pi computer and a $30 Raspberry Pi camera, so I supported his KS campaign to the tune of $150, knowing that it would take a bit of labor and discovery to make it happen.  The trick about it was that the entire frame of the 3D scanner would need to be 3D printed.  Since I happened to have a 3D printer, I was able to print the parts -- usually before bed -- for pennies.  After a few months (and less than 30 days overdue -- which is fantastic by KS standards), I was sent the remaining hardware and was pointed to the software.  I couldn't wait to get started.  Upon coming home from work, my wife immediately took note of the chaotic dinner table and the glazed look in my eyes and was both insightful and kind enough to realize that I was in a frenzy.  She owned the kids for that night and the next.  This was what I had after day 1:


 The instructions were perfect and by day 2, the structure was done.  By day 3 I had it working:


Here is how it works:  You place an object to be scanned on the turntable.  You then access the scanner on the network from its web-based interface (I can do it from a tablet in another room!).  You then have to define various variables like laser visibility thresholds, etc.  When you finally tell it to scan, it draws laser lines over the object and takes photos of it with its camera.  Its Raspberry Pi computer then analyses those lines and infers the shape of the object.  Here it is imaging a figurine:


Here it is in action:


I'm only a couple of days in but I am tweaking the variables and getting some results with my scans:




I'm not there yet, but getting there.

Of course, the grand goal is to be able to say "So terrible that your chess set is missing a rook.  How about letting me make a copy of your other rook?"