A new digital tool called Carpentry Compiler allows users to design woodworking projects and then gives them optimized fabrication instructions based on the materials and equipment they have available.
“To make a good design, you need to think about how it will be made,” says senior author Adriana Schulz, an assistant professor in the Paul G. Allen School of Computer Science & Engineering at the University of Washington.
“Then we have this very difficult problem of optimizing the fabrication instructions while we are also optimizing the design. But if you think of both design and fabrication as programs, you can use methods from programming languages to solve problems in carpentry, which is really cool.”
For Carpentry Compiler, the researchers created a system called Hardware Extensible Languages for Manufacturing, or HELM. HELM is composed of two different programming languages: a high-level language for designing an object, and then a low-level language for the fabrication instructions.
“Say I want to make a piece of wood that’s cut at a 45-degree angle,” Schulz says. “In the design user interface, I create a box and then I draw a line where I want the cut to be and tell the computer ‘Remove this part.’ That’s the high-level language. Then the low-level language says ‘Take a two-by-four, take your chop saw, set up your chop saw for a 45-degree angle, align the lumber to your chop saw, and chop.'”
As the user designs an object using the high-level language, which looks similar to standard CAD software, a compiler verifies that the design is possible based on what tools and materials the user has specified they have. Once the user is finished designing, the compiler comes up with a set of optimal fabrication instructions based on different costs.
“If you want to make a bookcase, it will give you multiple plans to make it,” Schulz says. “One might use less material. Another one might be more precise because it uses a more precise tool. And a third one is faster, but it uses more material. All these plans make the same bookcase, but they are not identical in terms of cost. These are examples of tradeoffs that a designer could explore.”
The compiler has to sift through a huge space of possible combinations of instructions to find the best ones. But if it treats fabrication instructions like a program, then it can use programming tricks to simplify its search and select promising candidates.
“One program might have a good way to make the edge of the table; another one finds a good way to make the legs,” says coauthor Zachary Tatlock, an associate professor in the Allen School. “And we can find those and recombine them to make the best overall plan.”
Currently Carpentry Compiler optimizes fabrication plans based on fabrication time and precision. In the future, the team would like it to take into account grain orientation and uncertainty in using specific types of tools. From there, the team hopes to expand this idea to more complex projects—such as a project that requires woodworking and 3D printing.
“The future of manufacturing is about being able to create diverse, customizable high-performing parts,” Schulz says. “Previous revolutions have been about productivity mostly. But now it’s about what we can make. And who can make it.”
The team presented their work at SIGGRAPH Asia in Brisbane, Australia. Additional coauthors are from Tsinghua University and the University of Washington.
Funding for the research came from the National Science Foundation, an Adobe Research fellowship, and a Tsinghua scholarship for overseas graduate students.
Source: University of Washington