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 quickly became a difficult but exciting challenge. The interlocking details on the sticks were located on different sides and angles. This required a bit of Grasshopper and a bit of Kuka-PRC exercise and many dead ends in coding. 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 the intersection surfaces of the sticks, which form parallelograms. Doing this for a single stick was 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. We grouped all the sticks together with their intersecting ones and move them to the calibrated position in Rhino. 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 in the robot operation. The reason for this complex code was that after thinking a setup worked fine for one case, errors and collision issues appeared with other sticks, requiring patches to the Grasshopper code.


What I learnt was 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 try to designate that paralellogram surface between two sticks. If a plane passes right through the middle of the intersection, you can join them by removing equal amounts of material from each. Again, this is very easy for ninety degree interlockings. But when these joints have three-dimensional angles, defining that planar 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.






