Eva and Ultimaker: 3D printer machine tending

Posted by Edd White on Aug 7, 2019 5:58:41 PM


Picture this - it’s Thursday and an important customer has just put in an order which needs to be delivered Monday. There’s no way to fit it into Friday’s production schedule. You’re going to have to pull a double shift. Probably will have to cancel your weekend plans as well.

We had a similar situation in the office recently with our 3D printers - I needed to do a large batch print over the weekend, so would have to be there to manually remove them from the print bed. However, I didn’t fancy spending my weekend in the office, so I got Eva, our simple affordable robot, to do it. Below is a short video of the result, followed by an overview of how I set it up.

For Eva to remove the print from the 3D printer, it needs to know when the print is finished. Many industrial machines use digital outputs to communicate this information and Eva can easily integrate with them. Whilst the Ultimaker 3 doesn't have this functionality, it does have an open REST API.

Using Python, it didn’t take long until I was able to start prints and get the status of the print job. So now I can control the printer programmatically, I need to teach Eva how to clear the print bed. Using the two buttons on the head to add waypoints and backdrive, which allows me to move Eva around freely, I quickly got a first draft of the toolpath.


Now I have the rough motion required, I made accurate adjustments to important waypoints, such as where Eva grabs the print. This is where the waypoint gizmo and ‘move to waypoint’ features are super useful. By moving the waypoint with sub-millimetre precision (drag the arrow or double clicking it) and then sending Eva to the updated point, it is easy to get Eva in the exact right place.


Now Eva can clear the print bed, the final step is to make sure this only happens when the Ultimaker has finished printing. For this, I used the ‘wait’ toolpath condition and configured it to wait for Eva’s first digital output to go high. So now when I run the toolpath, Eva won’t move until I set the correct digital output high. You can do this in two ways: via the dashboard (accessed by expanding the advanced section), or through the API. It is the latter which allows me to connect the Ultimaker to Eva.


Using the Python SDK is relatively straightforward. For the latest information, including how to get started, check out our github and the docs. I’ve included the full source code for this project.

And that’s it - one weekend later and I now have lots of … dice! Okay, so maybe this situation wasn’t super urgent, but at Automata we love to test Eva to make sure it can be quickly deployed to automate dull, repetitive tasks and stop you cancelling your (and your employees’) weekend plans.

Dice in bin

If you want to know more about Eva or simply want a free Automata die, fill in the form below:

Topics: Machine Tending, 3D printing, Ultimaker 3, API