3D Printing and Scanning
This week’s goal was to model and 3D print as well as scan an object. I explored the possibility of merging these tasks by using a robot arm to manually sample a surface for 3D scanning in Blender, then generating 3D printing (3DP) toolpaths with Blender Geometry Nodes, leveraging attributes as explained in week 3.
Objectives
- 3D scan a surface using a robot.
- Develop 3DP toolpaths in Blender.
- #d print on the scanned surface.
- Blender for modeling and toolpath generation.
- KukavarProxy for robot communication.
- KUKA KR10-R1100 robot.
- Animaquina: A custom addon for robot toolpathing.
- Massive Dimension Pellet Extruder for 3D printing.
- Adafruit QTPY ESP32 for controlling the extruder steps.
Process
The KR-10 robot, equipped with KukavarProxy, allows for near real-time communication. I wrote a Python script to read the robot’s TCP position and generate a marker in Blender, effectively digitizing points to create a mesh/surface. This script was linked to a Blender UI button for easy operation, updating the virtual robot’s armature via Blender’s IK solver.
I first digitized a table surface as a base by jogging the robot to each of its four corners and adding a marker with the UI button i created, generating a point cloud to identitfy the corners:
Then, I mapped a non-planar printing bed, from a flat wood surface with random positioning and orientation:
Using a hand-drawn bezier curve, resampled and repeated in the Z-axis, I converted it into KRL code for 3D printing, employing the same strategy as the week 3 laser cutting project:
Here’s the result:
Conclusion
Despite initial challenges, such as selecting the correct robot tool and base and mistakenly using a model with a different reach, the interactive toolpathing workflow showed promising potential. While the final object was simple, this workflow demonstrates the feasibility of 3D printing on non-standard surfaces—a task challenging for other manufacturing methods.
Files
- KRL file generated in Blender