Despite their power and precision, making with digital fabrication machines can be incredibly frustrating. Yet, we can help makers out by using the same computer-supported reasoning that lets programmers work quickly and accurately. Even as researchers in human-computer interaction have explored many new interactions and pipelines for fabrication, makers will always have to know how to select and use machines appropriately. If a maker doesn't already have personal experience with a machine, the resources that can help them are quite scattered. It's an awful lot of work not only to find this information, but also to know how to interpret it. It would be helpful if we could distill some of this informal knowledge to a more accessible form. To do this, we built Taxon, a language that encodes machines, workflows, and rules of thumbs as programs.
System Architecture
system diagram
We implemented Taxon in a web interface where makers can browse a database of machines that are all represented programmatically as machine plans. These are loaded into the scene which provides a simulation of the physical version of the machine. Then, makers write workflows which control the simulation. Crucially, they can browse and apply rules of thumb, which either filter the list of machines based on requirements, or apply safety checks to workflow code
Language Details
Here we describe Taxon's syntax is Backus-Naur form. For concrete examples of Taxon code, please see the paper.
taxon grammar
Reading bottom-up, a Taxon program consists of a machine-plan and a workflow. A workflow is a list of zero or more actions. An action consists of a selector and a method to be called on the component returned by the selector. The selector returns a component of the machine-plan (which could be a block or the entire machine plan). Examples of methods are MoveTo which moves a component to a position (possibly extruding material at a rate indicated by the third argument) and Actuate which actuates a block by some amount given as the second argument. A machine plan consists of metrics and blocks. Metrics are a collection of innate properties of a machine, and blocks represent volumetric and kinematic properties of machine components.