Top chair view
Illustration of assembled chair with the Kuka robot

The massage chair is an experiment in digital fabrication and hybrid workflows, using computational design, CNC milling, 6-axis robotic milling, and human assembly and finishing, to understand how different subtractive manufacturing processes can be combined to balance speed, precision, and material expression in digital fabrication.

Materials

  • 2 sheets plywood
  • 54 dowels
  • Wood glue
  • Linseed oil finish

Tools Used

  • Rhino and grasshopper
  • CNC
  • 6-axis robot
  • Manual assembly, sanding, and finish

Early Designs

Early explorations of designs in Rhino emphasized challenging patterns for robotic milling to understand how to optimize for edge cases.

Our selected design incorporated the accordion folds for the front and the back of the chair and the irregular “massage” surface for the seat.

Render Analysis

We used a variety of analytical tools to preview the compatibility and performance of our designs in the manufacturing process.

Zebra Analysis

Zebra Analysis was used as an iterative design refinement tool in our model twice.

The major area of improvement it allowed was in the time milling the base of our chair which in our iterative designs before zebra was flat. By using zebra to analyse the continuities we could see the hard crease at the base meant that the robot would have to make a large number of steps within a very small distance, which would mean a large quantity of meaningless mill jobs including the robot constantly having to return to a home position for what was not an important design aspect. By continuing the folds of wood on both the front and back the mill pieces path was much more continuous but also a larger rotation to make the steps. In short, a much easier and quicker process.

Zebra analysis and the adjustments made as a result

Patch Analysis

To help minimize the robot’s toolpath run time we used KNN clustering and machine learning to divide the chairs according to two neighbourhoods/ cluster typologies between positions and vectors.

Using Voronoi cells and colour randomisers we can clearly see when the Vector anchoring meant it made more sense for the robot continue with a continuous angle approach or when positional anchoring meant it would be better to divide spaces by proximity even if this required the robot minorly returning to its home position to change angle. An issue we found with the seat and “massage roller” aspect of our design was the hemispheres lumps the path was reading have vectors in polar arrays around each bumps centre.

In hand with the density and concentration of the bumps it meant that if the were to manoeuvre positionally it would constantly have to return to a home position and make the area extremely time-heavy to mill. In the end we resolved this by positioning the robot arm at a heavy angle but treating the seat as one position by stating the patch as both with bumps and as a smooth area. In future, if we were reconsidering a similar design style it would be better to increase the depth of the clustering to a two-step solution, using a second calculation of an average vector unit within areas that are not clearly clustered by KNN models.

View of patch analysis of the seat
Before and after of our patch strategy
Before and after of our patch strategy

Thickness Analysis

Thickness analysis was used to assess how well spaced and stable the material would be once milled.

Angle Analysis

An incredibly important step for our learning was the final KUKA simulations in grasshopper before running the code on the actual KUKA robot.

By incrementing X/Y Euler rotations in the robots arm and wrist we could ensure the robot would not face collisions when milling deep aspects between different patches of the design. One particular moment as shown by the graphic was the need to use a heavy Y-Euler rotation when completing the seat.

These realisations also made us aware of thinking of the design not just as a step by step process we had participated in through the workshop but treating the design, simulating and milling as a feedback loop for design iterations. For example, if the Y-Axis could not be rotated we could introduce design resolutions including rotating the chair’s backrest further away to make the robots allowance more obtuse; design undulations in the backrests for the same reason for the same reason, although this would have structural implications.

Alternatively, a third radical solution could be to remove the backrest although and mill the parts separately and then with a post production step of assembling the parts back to a whole.

Diagram of robotic angle analysis to simulate KUKA robot milling.
Angle analysis diagram

CNC Milling

Placeholder for axo gif of assembly?

Script for Nesting


Using a grasshopper script, our 3D design was nested into cuts for CNC milling, optimizing placement on the two plywood sheets to minimize waste, and drilling dowel holes to ensure alignment.

Axo drawing
Nested CNC file

CNC Milling

We then used the CNC milling machine to cut out each piece, making sure to number the pieces before removing them from the plywood sheets.

Assembly

We assembled the milled plywood pieces using dowels, glue, and clamps.

CNC-ed pieces lined up
Assembled chair drying with clamps

6-axis Robotic Milling

After assembling the chair, we fixed it to the table on an angle for the robotic milling.

Illustration of assembled chair with the Kuka robot

Sanding and Finish

Human collaboration was a critical component of creating a polished, sanding topographic surface and cutting or filling the cuts made in error by the robot.

Final Product

Side and top view
Top of the chair
Top chair view
Back view of the chair

Credits

Massage Chair is a project of IAAC, Institute for Advanced Architecture of Catalonia developed jointly at Masters in Ecological Buildings and Biocities and Masters in Robotics and Advanced Construction (2025/2026) by students: Sam Holcombe, Madeleine Choné, Fátima Gómez Rodríguez, Alexandra Velle Loach, Heleri Koltsin, and Eitan Cohen and faculty: Pit Siebenaler, Ignacio Fuentes, and Neil Trouw.