We tend to think that software, and compilers in particular, are concerned with other software rather than the real world. The Carpentry Compiler is different – its target really is wood.
Researchers at the University of Washington created Carpentry Compiler and presented it at SIGGRAPH Asia. The idea is simple to understand. If you want to make something in wood then you can describe the end result and the Carpentry Compiler will output instructions on how you can make it – taking into account the resources you have to hand.
“This paper presents HL-HELM, a high-level, domain-specific language for expressing abstract, parametric fabrication plans; it also introduces LL-HELM, a low-level language for expressing concrete fabrication plans that take into account the physical constraints of available manufacturing processes. We present a new compiler that supports the real-time, unoptimized translation of high-level, geometric fabrication operations into concrete, tool-specific fabrication instructions; this gives users immediate feedback on the physical feasibility of plans as they design them.“
For me the interesting features are the way it uses a range of possible starting materials and the complex mix of tools available with which you have to work out how to make the object. It even works out a cutting plan that minimizes your work. If you play around with such things you might share my feeling that this spoils a lot of the fun. There is nothing so good as planning how to make something using what you have – but I can also see the attraction of automating the process if fun isn’t your only concern.
To see some of the detail check out the video:
Here are some of the things it was able to make:
You can find out exactly what each one is by consulting the paper, but I can tell you that the only really difficult one, i.e. C, is a bookcase.
As well as regarding software as mostly just about other software when we do think about using it to create real things we tend to think about using a single do-it-all machine like a 3D printer or a milling machine. The idea of compiling to a sequence of tasks using different tools is generalizable.
“Our key insight is that fabrication plans are programs.”
What about jewellery compiler, metal small part, scale model compiler and so on…