Category Archives: 3D Scanner

The Form 1 might need calibration after all…

July 12th edit : I have now a Form1 Calibration procedure.

These past few days some very nice Form 1 tests have been publish by TJ and Gregg. These tests have been concentrating on the shape and small features. I’ve not yet seen a test on accuracy / linearity.

The Form1 is supposed to have a 300 microns (0.3mm) diameter laser spot which limits the size of individual features but the galvanometers (galvos) can be oriented very precisely. I think I recall reading that someone in Formlabs was talking about a few micron of positioning accuracy (position of the center of the spot on the bottom of the vat). The galvos are a dynamic system using PID controllers and tuning them to get a perfect positioning takes time (see my post on the ILD test cases).

Recently I had to print a mechanical assembly for someone and even with the 300 microns tolerance, it was difficult to slide the cylinder into the tube. So I decided to investigate a bit more: I was also wondering if the peeling was not introducing some deformation in the piece.

Simple Linearity Test

The test I designed is simple: It’s a series of 20mm cylinders that are horizontal/vertical and with a 45 degrees angle. The piece is placed perpendicular to the platform to measure independently the X and Y galvo. As any mechanical system, the mirrors are not jumping from one location to the next instantly. So even if the calibration is perfect in static condition (after some resting time), the dynamic properties (damping and oscillations) might be off. These configurations are also axis dependent as the mirrors might have a different shape/mass and each axis has his own amplifier. In the ILDA test, this dynamic behavior is checked with the circle inside the square.
Male_torture_test

And the results are not as expected… As you can see the cylinders are not really round! So either the preform sampling space is too large (not enough points on the path / movement too fast) or my ‘peel’ axis amplifier board needs some adjustment.

Linearity_measure_XY

My caliper measurements are:

Horizontal cylinder:
Peel axis = 19.52 mm
Orthogonal axis = 19.99 mm

Vertical cylinder:
Peel axis = 19.5 mm
Orthogonal axis = 19.87 mm
Vertical axis = 19.96 and 19.92 mm

45 degrees cylinder:
Peel axis = 19.51 and 19.71 mm
Orthogonal axis = 19.91 and 19.75 mm

So conclusion while the Z (thickness) and Y (orthogonal to peel) axis seems to be close, my printer seems to have an issue on the third dimension. I hope Formlabs will have a calibration procedure to correct this issue.

Location Influence on the Print Quality

The other main issue I’ve encountered while printing technical piece was reliability of the print quality. In some occasions the peel process is making loud “clacks” noise when the surface to remove is large. As the tilt is starting from one side, the strength created on the prints is different depending where the geometry is placed  on the base.

The picture under is showing two pieces that I had to reprint twice to get an acceptable result. The peel strength issue triggers supports break and non printed/delaninated walls.

Location_print_error

The only difference between the two prints is the location on the platform. I didn’t had to regenerate the supports nor changed the material setting (grey resin 50 microns). On my first print (left side), only the C part came out well. So for the second try I removed the C part and moved back A and B as far away from the peel side as possible. Note that I had to print the pieces horizontal as it’s not possible to generate internal supports yet and any other orientation would have resulted in non supported features…

Prefom_locations

I’m not sure what to think about this issue, maybe reducing the peel speed when there is a large area to remove could help? If this issue is proven, that will mean the silicon layer will get damaged faster on one side triggering a replacement more often due to fogging…

Anyway I’ll keep on exploring the Form1, if you have any question please ask I’ll make more tests. Cheers!

[<<Prev. - Preforn 0.8.1 Evaluation]    [3D Printer articles]   [Extract STL data - Next>>]

3D Printing ecosystem

Today let’s have a look at the 3D printing ecosystem. In previous posts, I’ve covered specific points like online communities, 3D scanners and the evolution of manufacturing that led to 3D printing. This will be a global overview of all important actors that have stakes in additive manufacturing.

An Ecosystem, Really?

An interesting aspect of 3D printing is that it’s spreading everywhere. Individuals and businesses are exploring and using it alike. Individuals population is restricted right now to makers/hackers/doers but it will hopefully change overtime.

Speaking of makers, we went to the Maker fair this weekend in the bay area. And this year Formlabs was participating, and I have to say the quality of the prints was stunning! And this morning I just received the confirmation that my printer is being shipped so I’ll post update as soon as I get it.

Now let’s start with this ecosystem! I’ve split it in 4 areas with:

  1. The needs : why would you even consider it?
  2. The software : How to do generate the input data file?
  3. The hardware : Nature of the beast!
  4. The users : with a distinction between Individuals and the business side.

3dPrinting_ecosystem

1/ The Needs

For professionals rapid prototyping is a great way to visualize early in the development process any design. But in some case it ca also be used to manufacture one of a kind mechanical piece that would be impossible or too expensive to mold or machine from a piece of metal.

Because 3D printer are not yet main stream, right now only technical inclined individuals (doers/makers) will have the patience to tweak a printer. They will use it to create things like games, repair household, learning tools, arts or even print any crazy projects! Note that manufacturers are really trying hard to make these printer easy to use, so the population capable of using one will increase.

needs_pictures
Sources [1], [2], [3], [4], [5], [6]

2/ Software

Without models, a 3d printer is not really useful. Professionals have access to complete CAD software or modelers that costs thousands and need an extensive training. They can also acquire a scene/object using 3D scanners.

Individuals have simpler and mostly free tools available, some of then browser base to create new shapes. Some services like 123D let them rebuild a geometry from a series of picture. Note that most of the pro software are available for free or cheap provided you are or know a student willing to lend his name :)

software_pictures

3/ Hardware

Now the range of printer available is only limited by your budget. Each printer can go from $100ks to a few hundreds for the cheap FDM kits.

Professional have access to cindering machine that can print metal/ceramic on very large volumes. The cheap printers are today limited to filament extrusion but there is a intermediate class of device (for prosumer) few $k offers very nice accuracy like the Form 1 stereolithography printer.

printer_pictures
Sources [1], [2], [3], [4]

4/ Users

As for the 3D printing world actors, there is a consolidation going on to group the resources.  Some R&D centers that have a printer for themselves but, like machine shops, it does not make sense (yet) for every business to have a printer in house. So website are proposing a printing service on a large selection of material. These website are even trying to attract casual/pro designers that can expose their creation and let people order them with a markup. Printer manufacturers are also creating online communities to let user upload design. Thingiverse is one of the biggest community and very useful to find preexisting models.

users_pictures

Here is my view of the 3D printing ecosystem, if you have any comments please comment!

[<<Prev. - Mass customization Age]    [3D Printer articles]   [Giant Dice! - Next>>]

Differential Amplifier for the galvos

I’ve made some research on how to convert a single ended analog signal to a differential output to drive the galvos for the scanner. The requirements are:

  • Galvos input voltage range is +/- 15V (and there is a +-15V power supply connector available on the driver board to pick)
  • Signal bandwidth is limited to audio range, so no need to use very high speed products
  • DIP package would be great for breadboard prototyping
  • The sound card level has probably a limited voltage output so some amplification would be good to get a nice mirrors angle deviation
  • Cheap and in stock in local store

I’ve found quite a few full differential amplifiers but the best match so far is the DRV124 from TI. Not only it seems simple to use and compatible with my available power source, but the DIP package is convenient. It’s not available locally, but you can request free sample on TI website, so that’s perfect to try :)

Companies like TI are publishing very nice white papers on the theory of fully differential amplifiers (Here and there). I’ve added a few more amplifiers in the sampling cart so I might be able to use some of this information.

Web review : 3D scanners

Today’s topic is 3D scanner with a few products of page that I’ve collected these past few weeks.

My interest for 3D scanners was the normal follow-up to my investment in the Form1 printer. While Formlab (builder of the printer) has been hit by a Patent troll suit and the updates are rare since the project is funded I’m still hoping to get it before summer. But what good is a printer without the ability to reproduce complex shapes, especially considering that stereo lithography offers a stunning accuracy? The only issue is that I’m not an artist and I won’t be able to model organic shapes any time soon unless I want to start an horror gallery. So I took the other options:

  1. Learn to use modern CAD software, an thanks to the student licenses it can be really cheap (I will do a post on that topic in the near future). But that’s really oriented toward modeling relatively geometric shapes like my puzzles and the whole process is lengthy.
  2. The other option is to capture the data from the real world, thus the 3D scanner. And this is opening a whole new big world as XKCD perfectly capture it.

The hobby and academic scene has been on the subject with various approaches and it seems the number of solution is exploding these days. I’m sure it’s correlated to the 3D printing trend as as most of the world is not artist nor has the time to wait for a manual modeling.

I will start with the maker/hacker site Hackaday that propose articles on how to tweak anything to enhance the functionality or even in this case how to build a simple but effective 3D scanner in a Day! It’s an amazing feat using some ‘junk’ (including a tv rotary table and a barcode scanner) to reach this functionality. It gives me hope on my own project, even if I’m aiming to a more complex measuring scheme.

On the theory side entire courses with the scanning theory are available with a nice difference between the structural line scanning (projecting a gray code pattern with a projector) or the split scanner type (projecting a laser line or a shadow on the object).

On the free as in beer option, David 3D scanner offers a full reconstruction software that could work with a minimal investment. After printing a calibration background and a line scanner you can use your PC webcam to start scanning.

An other relatively cheap alternative could be to have a look at the new software library package (see at minute 50 in the video) that will be released for the Kinect sensor by Microsoft. Or the reconstruction from real pictures with 123D software.

After there are “key in hand” solutions around a few k$  that flourish on Kickstarter. Lynx A camera for example is really a Kinect mounted in big fablet (acronym for fat-tablet). I have to say seeing the size of this thing the real benefit is really only the ease and the fact that you can capture a room/object with texture in one swipe. For more accuracy on small object you can go with the desktop scanner from CADScan…

And now, the best (sic) for the end. Where the crazy meets the hype! Who has never dream to have his own action figure on his desk? But I’d rather have my scan translated to a gummy bear so that I could eat the shameful evidence as soon as I receive it :)

[<< prev - 3D Scanner introduction] [3D Scanner articles] [Scanner architecture - Next>>]

It’s alive! And first blood…

A few days ago I received the galvo kit and tonight the laser arrived with a USB sound card and my new soldering iron. So I’ve decided to give a try and check if I could make the thing move.

With a signal generator I tried to draw lines as I could only drive one channel at a time. The lasers worked between 3 to 5V as advertised and the luminosity is somehow decreasing until 2.5V. It will probably be relatively easy to do a blanking mechanism, but controlling the power might be tricky. Also the first lesson was theses beasts are very sensitive, as I fried one without any real obvious mistakes… First conclusion: I will order some cheap heads to tune everything before switching to the small spot laser.

Here are some boring single axis tests, changing the frequency makes the spot appears as a continuous line or a moving dot.Drive_frequency_tests

Also I’ve tried to see how fine the beam could be focused at a 50cm distance. I’m quite satisfied to see that if everything goes right, the line could be around 1/2 mm wide. This picture was taken with a flash, so most of the speckle is gone. The apparent width of the beam with naked eye is much larger. That probably mean I will have to find a filter to put in from of the webcam.

beam_width Anyway I think the next step for this weekend is to build a Sound-card to galvo driver adapter to be able to draw some figures!

[<<Prev. - First steps]    [3D Scanner articles]   [TBD - Next>>]

Web review – 3D online communities

When scouring the web searching information I usually spot interesting articles or web sites so I’ve decided to make a recurring series with mostly links and comments.  Some of these articles are not ‘fresh’ from last week I’m just pushing them as I find them!

For the first review I will concentrate on the big 3D printing communities. Most of them are centered around a commercial product or service (Note that I’m not affiliated to any of these service)

- http://www.3ders.org/ seems to be one of the largest news aggregator around 3D printing, they also have a nice section on printer and filaments.

- There is a multitude of online 3D printing services (like shapeways and ponoko) where anyone can upload their design and have it printed in multiple materials (plastics/metal/ceramic) and colors. This online 3D printer store has a great table that list most of these service. To attract creators these sites let anyone create a ‘shop’ where one can share their designs and decide the price markup for each item. Supposedly this is the new gold rush where designers are pushing to build up a name and earn millions

- An other type of communities are built by companies in the business. Examples are Thingiverse (selling the maker bot printer) or 123D app by Autodesk to promote their 3D modeling from pictures. I personally uses Thingiverse as it’s a convenient way to share my designs and find ideas or ready made/shares models.

- The last kind of communities and the less commercial oriented are the Makers/Hackers. These are individual that are doing things on their own for fun and profit. Build things for their family and friends or maybe just themselves and more importantly share their passion. It can range from needle works and crafts with Etsy to hacker spaces where a community is assembling heavy industial machines, train their members and run workshops to learn new skills. Everyone is encouraged to do their own project and learn from other fellow members.  There are also place like techshop that are a large warehouse with basically anything to build your stuff (for quite a healthy monthly fee…). This community reunites during the maker faires events.

That’s all for this week, if you have any other site to recommend please post a comment!

First steps of the scanner building

After looking at what it would take to build a 3D scanner,  the most complex HW element is probably the galvanometer scanner. Nicely there are kits sold on Ebay that includes power supply, galvo mount, 2 * (PID driver, galvo) and cables for less than $120. It seems a safe bet to have a working system faster.

galvo

The kit is a based on a close loop PID controllers/galvo that apparently allow a 20k points performances at an opening of 20degrees. I’m not sure about the real perfomances of these cheap parts, but as I won’t be trying to get a very fast and complex animation they should do the job.

The manual is not very detailed on the tuning of the system, but once again with some search, the online community is very helpful. There are multiple tutorials (A or B) on the principles and what all each element of the ILDA test vector is testing.

For the laser, I have no experience on what would work better so, I found that Quarton offers relatively cheap modules with a specified divergence (Most of the no-name have no datasheet available). I’ve selected 2 modules to start:

  • A small dot module (VLM-650-11 LPA) with a 2.5mm dot at 5m and a 0.25mRad of divergence which should give me a ~1mm dot at 50cm
  • A adjustable focus module (VLM-650-02 LPA) to see if I can get a better dot size for the laser

The module here is very convenient to compute the diameter size.

In a future post I will explore the driving signal generation for the galvos and the laser command.

[<<Prev. - ILD file format]    [3D Scanner articles]   [TBD - Next>>]

Scanner 3D Architecture

Let go over the scanner architecture in more details and try to lay a framework for the task.

Note that I have never built anything like this and all these notes are preliminary. I’m sure many challenges will show up and I may change completely my plans mid-way. But that’s the nature of the beast with technical projects. If anyone would like to share the adventure with me and try to build the scanner and solve the challenges please comment!

The principle is to use two galvanometers (galvos) to control a laser spot position and project lines on the object being scanned. The lines will follow the shapes of the object and their deformations are recorded by a camera. Once acquired an algorithm process the images to extract the lines and reconstruct the object geometry.

The diagram under shows the relation between all the pieces.scanner_architecture

I’ve not yet talked about this Fesnel lens in the middle. The role of the lens is to project parallel laser rays on the object. I actually don’t know yet if the lens is required to ease the reconstruction task, maybe the software could compensate for the divergence? Fresnel lens can be cheap even for a large diameter, but they may introduce too much artifacts on the line projections to be usable. We will see at the build…

Also the object could be placed on a motorized rotary table (not in the schematics) to scan multiple angles automatically.

Now let’s see what pattern we could use with the scanner. One great challenge is how we can keep the scanning time low. So we can try to use the video capability of the camera to acquire as many frames/line position per second. The idea I have is described under. The duration for one line position is timed to last ~2 frames (1000 * 2 / 24 = 83ms). During the time the same path can be repeated multiple time depending on the speed of the galvos. Also multiple horizontal and vertical lines could be projected at the same time to reduce the total scan time. The last element is a ‘code-bar’ that can be decoded by the software to mark the line position. Think of it as a counter to uniquely tag the frame. To avoid confusion of the software, the laser should be blanked during the transitions.scan_frame_structure

The reason this frame code is interesting is that it allows a complete resynchronization of the laser movement and the camera video. So the scan sequence after calibration could go like:

  1. Build the glavo movement and blanking sequence
  2. Launch recoding of the camera
  3. Play the laser movement file
  4. Stop camera recoring
  5. Go though the video and using the frame codes to resynchonize and modelize the object (could be done in parallel of 3 if processing power requirement is not too large)
  6. Rotate the table and restart at 2 for the new angle

During a frame scan, the horizontal lines and vertical line will sweep across the field area to cover the whole object:

sweep_scan

One parameter difficult to judge before hand is how many line the galvos will be able to display correctly. As it’s a mechanical device with inertia, the maximum speed while keeping strait lines is limited. So it might be needed to make a tradeoff between accuracy and total scan speed.

Scan_Speed_change

From this architecture we can already see challenges an maybe start mitigation actions:

  1. Overall scanner principal is wrong/not working [low risk]: there is quite a lot of literature on the subject that describes exactly this methodology.
  2. Galvos cannot draw the lines properly [low risk]: one again, the online laser show community is a great source of information. The patterns are not too complexes and should be achievable.
  3. Reconstruction is difficult : see point 1, as we are not using exactly the same setup details may vary like ray divergence, camera lens correction…
  4. Cost too high : at this point I have no idea what will be the final BOM cost of the scanner, but if we can keep away from complex optics we should be good. The goal shoud be well under $1k.
  5. Poor accuracy : I’ve not talked about the performances of the scanner, but as it’s oriented toward the scan of small objects, the reconstruction has to be quite accurate to be useful (mm range?). Things like the laser speckle (size of the dot) will limit the scale of the details the system can capture. I’m not sure if the laser will require focalization or the use of special filter in front of the camera to reduce the visible speckle.
  6. Schedule slip [no risks!]: yeaah for once there is no project leader and gantt diagram so this project will go at its own pace!

That’s all for now, if you have any remark, comments or question ask away!

[<<Prev. - Introduction]    [3D Scanner articles]   [ILD File reader - Next>>]

Matlab ILD Files Format Reader (laser show animation)

When I started looking at how to find galvanometers for the scanner I quickly realized that my best chance would be to explore the laser show community to learn more about the subject. One of the topic that was coming back often was that the tuning of the “galvos” is an involved operation and to reach a good rendering one has to spend time learning hoe to do it.

Digging a bit more I discovered that the International Laser Display Association (ILDA) has defined a standard exchange format file (ILD extension) to ease the sharing of laser animations between the laserists.The association is closed to the public and most of the freely info available can be found in communities like the photolexicon site forum. The forum is really handy to grasp most of the aspects of laser shows: sample data files, home build setup, configuration and tuning, advices on the hardware…

theRiddle2
One frame decoded with Matlab of “the Riddle” animation found in the Photolexicon site.

On this post I will concentrate on the ILD file format as it’s the main way the galvo movements data, color and blanking information are stored and transmitted. I found the latest ILD file format description that includes all the types of frames commonly used in the wild. The file format is pretty simple and mostly just a collection of coordinates stored with a header. This web page describes graphically all the frame format and also points at a internal feud in the community going on for years.

All comes from the fact that the color information was poorly integrated in the original format so most of the old files rely on some default palette to choose the color of each point. These default palettes are not completely standard and can change with the software implementation. So to solve the issues the ILDA introduced new format (Frame types 4  & 5) that define 24bits full color for each point.

laserboy trueColor
8bit Palette Frame (left) and true color palette on the right (source)

Long story short, I’ve created a ILD file decoder for Matlab with a few examples data files (see at the bottom of the post). I’ve not tested it with Octave but as I’m not using any specific functions it should be pretty much portable. The reader has been optimized to load all the points/colors of a frame with one “fread” call. This enable a very fast decoding (The Riddle file ~20Mb for 5120 images is decoded on my PC in less than 4 seconds).

In an future article I will explore more the galvo tuning principles using the ILDA test patern (available here). The interesting part is that the blue circle is defined outside the square but with a proper tuning is should appears tangent inside the circle. The ILDA used this trick to standardize the dynamic behavior of the scanners mirror servos.

ILDATest               Ilda_c2_proper
The left picture is the content of the ILDA test frame.
The right picture is the proper result expected from a well tuned scanner (source)

Note: All ILD pictures in this post were generated using the Matlab decoding package available HERE, all code are copyrighted, only usable for non-commercial purpose and provided as is with no guaranty of any sort,

[<<Prev. - Scanner Architecture]    [3D Scanner articles]   [First Steps: the galvo & laser - Next>>]

Introduction to 3D scanners

Our brain is able to reconstruct volumes and perceive the shape of an object by relying on multiple sets of clues:

  1. Motion parallax  and perspective give a relative sense of the position of objects in the scene
  2. Focus and field of view
  3. Stereoscopic effect (slight view difference between two eyes)
  4. Experience and familiarity with the object fills the remaining gaps (by recognizing an object we expect it to have a given shape)

[Click on the image to see the animation]
narita13
This couple of stereo-images gives enough information for the brain to reconstruct the depth of the scene. (source: http://www.stereomaker.net/sample/ani/ani_e.htm)

As a side note, the fact that all these simultaneous information are used by the brain means that, beside holography, there is no possibility to display great 3D information without causing motion sickness or nausea to some people.

A 3D scanner using all these passive clues would be complex to build and probably not very accurate. So most of the current scanner rely on active methods.

Active scanners can use laser for direct distance measurements:

  1. Time of flight: these videos shows how to use laser to scan the Sphinx or drive autonomous cars in the DARPA challenge
  2. Or displacement in the case of some industrial sensors. These sensors can achieve amazing accuracy in micro-meters over a range of a few centimeters

sensor_configuration(source http://www.measurecentral.com/technology/semiconductor.php)

These sensors are unfortunately very expensive and not accessible to the hobbyist, so, to build a home scanner we have to rely on triangulation. The principle is to send a coherent pattern on a object to extract its shape from the deformation of the shadow. A great introductory course is available here.

shadow-2
(Source http://mesh.brown.edu/byo3d/source.html)

After examining all the 3D scanner option I’ve chosen to use a laser to project a line and cameras will capture the line deformation. The line sweep will be performed using two galvanometers used in the laser show business. This is the perfect occasion to go and explore the world of laserists…

galvanometer
Two galvos are used to deflect the laser beam on the X and Y axis
(Source: http://www.zamisel.com/SSpostavka2.html)

[3D Scanner articles]  [3D scanner webReview - Next>>]