For a personal project I recently found that I needed some 3D printed parts. Since I have access to 3D printers at a hackerspace, I decided to give them a whirl today. Here’s what I learned:

What is 3D Printing?

TL;DR you make objects by laying down layers of a material that is not solid until it dries / cools / etc. It’s also known as additive manufacturing. This is in contrast to traditional manufacturing which uses carving, milling, and grinding to make parts out of blocks of material.

The main benefit of 3D printing at the hobby scale is that it’s great for prototyping! You can take a 3D model built in CAD or something else and turn it into a physical object (relatively) quickly.

It’s apparently also used for large-scale production but those 3D printers are much more intense. For example the material they lay down in those settings can even be thick lines of metal instead of a very thin line of plastic.

The 3D printers that are affordable enough for hobby usage are pretty much like a calibrated robot arm + an extruder (think of the extruder like a hot glue gun – it has solid input, viscous output, and ultimately solid output after the glue cools). The idea is the arm moves in programmed ways defined primarily by your 3D model!

Types of 3D Printing

Selective Laser Sintering (SLS)

Uses nylon powder and lasers and is capable of printing in midair via self-supporting powder. This is the most expensive kind of 3D printing right now (generally $10k+).

Summary: Top-end 3D printing.

Stereolithography (SLA)

This form of 3D printing uses light to cure the medium and a UV-curable resin as the material. Photopolymerization is the process by which light causes chains of molecules to link, forming polymers. Price range is generally < $5,000.

Summary: It is a fast process but can be expensive.

Fused Filament Fabrication (FFF) / Fused Deposition Modeling (FDM)

This is the most common kind of hobby 3D printer. It uses a spool of “filament” which is just lines of plastic that get melted and then placed onto a heated bed. The arm of this kind of 3D printer has a heated tip and is literally like a precision glue gun. It’s priced around / less than $1,000 – you can get a decent one these days for just $300-400.

This is the kind of 3D printer I had access to! So I gave it a try.

Making your 3D Model

I still don’t know much about CAD or 3D modeling, but I assume you make your model in a program like AutoCAD, Maya, or Blender. What I do know is that the format you need is .stl which actually stands for Stereolithography! The format seems to be the accepted common exchange format for 3D printable objects. Once you have a model in that format, you need to get it converted into a format your 3D printer can understand: gcode. If .doc files are analogous to .stl, then printer postscript is analogous to g-code. I found that lots of objects are availble for free, designed by various people on sites like Thingiverse. If you are too lazy to print your design yourself or don’t have access to a printer, they have services to print and mail you things based on the STL you provide.

Lulzbot Cura

Cura is a 3D printing software that can take STL files and convert them into the 3D printing standard g-code.

In Cura you can set operating parameters such as the temperature of the printing bed (the metal bed on which your object is being deposited), the height of the filament layers, the printing speed, and the printing temperature. You can also define what’s called a support -> extra filament that is laid down to make your prints go smoother. If you use a support, when your model is done you need to tear it off your completed model.

The stl to g-code conversion is interesting! There are two parts:

  1. Slicing: First the model is converted into a series of layer shapes that the printer can draw.
  2. Generate Instructions: Next the slices need to be converted to a series of instructions that the printer understands (g-code). These instructions are really robot instructions (move arm, move platform, extrude).

You can see that if you wanted to build your own 3D printer it’s not actually that hard. You’d just need to calibrate servos and have digitally controlled heaters w/ accurate temperature sensors. Then you do exactly what the g-code says to do. I’m sure slicing has some canonical algo as well.

Not all smooth sailing

Some problems I ran into

  1. The arm moved too fast and pulled a part of my model up off the bed. It started printing noise after that.
  2. The first few extrusions weren’t hot enough or something and wouldn’t stick. I found that preheating the bed helped.
  3. Print time was really long (5 hours) for my part. These things are not fast, and even if you try to make it “fast” you risk your model being screwed up. I got a tip that you can increase the layer size if you don’t need lots of precision – the printer just lays on thicker lines so it’s done faster.

Conclusion

3D printers are fun but I’ll order my parts from now on. It’s a lot of work to print things yourself unless they’re very small. They’re very interesting devices though.

One thing this whole experience reminded me of is how much of modern robotics assumes that machines can’t see. In a world where every robot arm / servo is somehow fed via a vision model, you could perhaps create more educated movements. For example, instead of g-code that says exactly how the 3D printing extruder should move, it might say which locations the plastic need to be laid down, and the arm could re-do parts that got messed up, could optimize for not making mistakes, could use some optimization strategy to be more efficient, etc. Maybe when reinforcement learning is better we’ll get there.