Robotic Milling for a Reciprocal Structure
The 2025 IAAC Istanbul Summer school was conducted at İstanbul Bilgi University last year. Yesterday, a video was published about it on YouTube. It was prepared by Arkitekt. Here is the video:
This reminded me the workshop and I decided to write about my side of the study. The reciprocal structure was designed by Gamze Gündüz, where she finalized it using a Grasshopper code. Then, the timber elements were labeled and sized with the help of Grasshopper again and integrated into my robotic fabrication code. My task here was carving out the notch details on each wooden stick. Carving these notches, which were two, three, or four per stick on a total of 97 sticks, located on different surfaces and set at different angles, required using a bit of Grasshopper and a bit of Kuka-PRC. On this project, I had the opportunity to mount the milling spindle on the robotic arm for the first time.

First, we made the necessary calibrations, coded the sticks, and cut each one to its length. We made a custom clamp to secure them in front of the robot. Since milling introduces vibration and mechanical load, it was crucial for the sticks to be fixed on the designated plane. What I wanted Kuka-PRC to do was scan these intersections of the sticks, which form parallelograms. Doing this for a single stick is easy, you can draw the path and define the planes. However, doing it for a large number of sticks requires abstract thinking. In fact, these abstractions are what attract me to this kind of work in the first place. The first task was to group all the sticks together with their intersecting ones and move them to the calibrated position. If I remember correctly, this part was done manually, unfortunately. Last year, I only had three days to complete the fabrication, so the code turned out much more complex and longer than necessary. Meryem Yabanigül ve Almir Sinanoğlu helped me a lot. The reason for this complex code was that after thinking a setup worked fine for one case, errors and collision issues appeared when moving to other sticks, requiring continuous control and collision-avoidance patches to the code.


This process doesn’t work simply by subtracting two sticks from each other because, in the real world, the edges of those notches need to be ninety degrees so they can actually interlock. As soon as you realize this, you understand that the robotic milling code won’t be that simple. You get why interlocking systems are usually ninety degrees and end up getting annoyed at your designer! Right after that, the second shock comes when you calculate how much material needs to be removed from each stick at the joint detail. If a plane passes right through the middle of the intersection object of both sticks, you can join them by removing equal amounts of material from each. But when these joints have three-dimensional angles, defining that interface requires a whole separate level of geometric acrobatics.

We were a crowded group of instructors and students. I particularly enjoyed the robotic fabrication part and working with wood. In this post, published exactly one year later, I am sharing an instructional demo of the Grasshopper definition. The Kuka-PRC addon must be installed for the code to run. In our project, this turned into an extremely complex because of the issues I summarized above. In the attached file, however, there is a simplified demo for you to examine. I usually don’t like sharing such long and messy scripts, but cleaning it up would have meant starting completely from scratch.

