Carpentry Compiler

ACM Transactions on Graphics (SIGGRAPH Asia 2019)

Chenming Wu (Tsinghua and University of Washington)   Haisen Zhao (University of Washington)  
Chandrakana Nandi (University of Washington)   Jeffrey I. Lipton (University of Washington)   
Zachary Tatlock (University of Washington)   Adriana Schulz (University of Washington)  

Our carpentry compiler converts high-level geometric designs made by users to low-level fabrication instructions that can be directly followed to manufacture parts. The compiler performs multi-objective optimization on the low-level instructions to generate Pareto-optimal candidates.



Dec. 2019: The source codes will be publicly available on Github Repository around the end of Janurary, thanks for your interest!


Traditional manufacturing workflows strongly decouple design and fabrication phases. As a result, fabrication-related objectives such as manufacturing time and precision are difficult to optimize in the design space, and vice versa. This paper presents HL-HELM, a high-level, domain-specific language for expressing abstract, parametric fabrication plans; it also intro-duces 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. HELM offers novel optimizations to improve accuracy and reduce fabrication time as well as material costs. Finally, optimized low-level plans can be interpreted as step-by-step instructions for users to actually fabricate a physical product. We provide a variety of example fabrication plans in the carpentry domain that are designed using our high-level language, show how the compiler translates and optimizes these plans to generate concrete low-level instructions, and present the final physical products fabricated in wood.



More results

Design process: First, users import a library of materials and tools so that the compiler can map design features to fabrication operations. Second, they create a design in an intuitive interface. Third, at each step of the design process, our verifier checks the manufacturability of the design; for example, in (c), the maximal radius of curvature is too big for the part to be fabricable using any of the available processes in the library. Fourth, the compiler generates a set of fabrication plans with different trade-offs. The instructions generated without optimization are shown in orange, and the outputs of our system (i.e., optimized instructions) are shown in green.

System pipeline. The input to our system is a HL-HELM program designed by a user in our IDE. The verifier first checks if the design is manufacturable. The compiler converts the verified HL-HELM program to a LL-HELM program. Then the various optimizers populate an e-graph by finding various equivalent optimal programs. Finally, the extractor performs a multi-objective optimization to find the most optimal programs from the e-graph.

A gallery of carpentry designs modeled in our proposed system. The design time for each model is as follows. (A) Adirondack chair: 3:30 hr; (B) Drafting table: 2:16 hr; (C) Book case: 1:00 hr; D) Bird house: 1:38 hr; E) Toy car: 0:45 hr; F) Dining room chair: 1:20 hr; (G) Bench: 2:02 hr; (H) Coffee table: 0:56 hr; (I) Flower pot: 2:00 hr; (J) Z-table: 1:34 hr.

Results of the Pareto-fronts discovered by our system (red) as compared to fabrication instructions hand-written by experts (green). For each example,we highlight a point in our discovered front that Pareto-dominates the expert fabrication plan. In addition to the 3D plots, we show 2D projections on the three main axis for better visualization of the different trade-offs.

The visualization results of our auto-generated LL-HELM programs and the fabrication plans hand-written by experts. Colors identify the process and numbers the order of cuts. The costs are shown in the order: square brackets below each figure.




1 1 1 1 1
Paper Supplementary Slides Code Bibtex

@article {wu_siga19,
author = {Chenming Wu and Haisen Zhao and Chandrakana Nandi and Jeffrey I. Lipton and Zachary Tatlock and Adriana Schulz},
title = {Carpentry Compiler},
journal = {ACM Transactions on Graphics},
note = {presented at SIGGRAPH Asia 2019},
volume = {38},
number = {6},
pages = {Article No. 195},
year = {2019}



The authors would like to thank anonymous reviewers for their helpful feedback; Dan Grossman and Benjamin T. Jones for insightful discussions; Colin Topper, Victor Wu, Mary Mattsen, Guoxin Fang, Liang He for helping the experiments; Max Willsey and Yuxuan Mei for feedback on the draft. The work is supported by the National Science Foundation by Grant No.: 1813166 and 1644558, and an Adobe Research Fellowship. Chenming Wu is partially supported by Tsinghua Scholarship for Overseas Graduate Studies.