Introduction: Adaptative Robotic Sculpture
With the rise in accessibility and low costs of contemporary robots many tasks that were previously hard or unprofitable to automate can benefit from the advantages of digital fabrication.
However, despite the flexibility and interdisciplinary benefits, the use of robotics in more craft-oriented practices has been rightfully criticised. Digital processes lack the analoguous adaptability that human showcase. Craftmen in traditional fields display an historically unmatched efficiency/quality. However, many of those crafts still have lost marketshares and popularity to lesser versions that could be automated. A simple example of this is the extensive and fine decorative aspect of plastering works thorought houses in the world, mostly replaced by drywall.
Hence why both crafts and technologies can benefit from processes inspired by the other. For this, we need to clearly identify which are the qualities and best applications of each tools.
- Robots are incredibly good at repeating predetermined actions at high speed, which means scalability.
- Humans craftmen are good at adapting to their material, and handling their tools accordingly.
What if we could teach a robot how to use a tool like a human does, and let the robot reproduce and scale that application?
Supplies
Motion Tracking Sensor (e.g LeapMotion, Kinect)
A Human Hand (5 fingers are better but less is okay)
KUKA 240 R3100 Industrial Robot (easy to find)
3D printed End-Effector (see parts light)
for the Base :
- 1x MDF plate to flange size
- 1x M4 square nut
- 1x M4x4cm Bolt
- 4x 3cm wood screw
for the tool Holder:
- 2x F608ZZ Ball-bearing
- 3-6x M6 nuts and bolts
- 1x 8mm diameter Spring (optional)
for the haptic spool (optional)
- 1x Rotary Potentiometer
- 1x Belt clip reels (extensible key-holders)
Clay Sculpting Tool (anything with with < 3cm diameter handle, cutelry works)
Sculpting Clay / Soft material (> 5kg)
Step 1: End-Effector Printing Mount
The end effector has 3 main parts :
- Mount
- Tool Holder
- Haptic Spool
It is possible to print the base and the tool holder and a single unit for solidity, chose the corresponding .stl file.
Otherwise, print the base mount first, it will be screwed in a MDF plate meant to be attached to the flange (see your robot's flange design), and the other parts will attach to it.
The base mount has a space for a square nut in the middle, to insert it you have to stop the printer at the corresponding height, when the hole starts to close. To do this, either pay attention to the printer and stop it manually, or insert a G-Code line after slicing, telling your printer to stop at a specified layer/height. In cura this can be done in :
Extensions tab - Post Processing - Modify G-Code - Add a Script - Pause at Height (see screeshot)
Step 2: End-Effector Printing Tool Holder Ring
The same nut insersion technique is used on the adjustable ring of the tool-holder. Slice it, add the "Pause at Height" script, and be around during printing. With the size of the nuts on this one, the printer might have a harder time going around the metal elements. Make sure you printer is equipped with a nozzle with a steep angle (see diagram by Moritz Walter) to ensure your carrier won't bump into to much obstacles.
Attachments
Step 3: End-Effector Printing the Haptic Spool (optional)
If you want to include a sensing feedback routine in the robot programming, you will want to print the haptic spool module.
Inspired by the lucidgloves project (learn more on github), we convert a simple potentiometer into a spring loaded pull sensor, perfect for those applications.
First, print the parts you will need:
- A tensioner
- A spool
- A spool cover (optional)
- A sensor Mount
Then, disassemble the extendable key ring in order to salvage the coiled spring inside of it. Then screw the potentiometer with its associated nut in the tensionner. The spring will fit inside the tensionner, and you can coil in inside and then slide it in the slot of the potentiometer's shaft. For a stronger feedback, make some additional turns with the spring and slide it back into the slot.
From the key holder, you can salvage the string too, and attach this to the spool. The spool then goes on top of the tensioner, fitting on the potentiometer. Feel free to wind the string a little.
Finally, the cover and be placed on top of the previous parts. It both makes the assembly look pretty, and ensures the spool will not get of the potentiometer. The cover snaps onto place on the tentioner.
The potentiometer can be hot-glued into the sensor mount, that can then be screwed/bolted into the main end-effector mount. The string, that lets the sensor translate movement into voltage, will later be attached to the tool.
Step 4: End-Effector Assembly
- Prepare the MDF plate for being bolted onto the robot's flange.
- Screw the mount onto the MDF plate (note: here we added an extra plywood piece to account for the length of the screws)
- Add the haptic spool and secure it in place
- Add the tool holder and bolt in in place through the hole that goes into the imbedded mount nut.
- (optional) Use hot-glue to place the spring in the small holder for it.
- Insert the tool ring between the two bearing holders
- Push press the ball bearings into the circular holders. The tool ring should in the holde inside.
- Add the desired amount of bolts into the tool ring to secure the object.
- Bolt the end-effector to the Robot flange.
And extra tool holder file is available if you intend on using tool with flat handles such as cuttlery. Like the bigger ring, it requires a nut to be fitted inside during printing for proper securing of the piece.
Once the tool as been fitted onto the robot, it is important to calibrate it into the robotic system, and register both the TCP and the joint positions for proper behaviour later on.
Step 5: Prepare Hand-Tracking
To do the hand-tracking, multiple options are available. After trying Kinect and machine vision through OpenCV, we settled on using the sensor LeapMotion. It can be easily interfaced through Rhino Grasshopper and the firefly plugin.
To make it work, you need to aquire this older version of the LeapMotion SDK. It is the latest one compatible with the Firefly plugin.
Then install the Firefly plugin in Grasshopper for Rhino. This will directly communicate with the sensor, and transform it into usable 3D data.
Step 6: Prepare Material
Prepare the material you want to be interacting with.
We are using a clay-based mix with fibers and sand.
Fill an appropriate container with the material, ensuring the it won't spill or move, then make the surface as even as possible. This is necessary to have results as close to the simulation as possible.
After this, you can survey 3 corners of the box and adapt the grasshopper script accordingly.
Step 7: Movement to Pattern Translation
Using this grasshopper script, it is possible to translate a small recorder sequence of movement into an infinitely scalable pattern to be sculpted by the robot. This pattern translation process extends and augments the creativity of the physical sculpting stage by allowing makers to parametrically generate more designs that are impossible during the sculpting process. On aspect that makes this possible is the additional transformations that can be added such as gradient scaling of the individual patterns, resolutions, or overall dimensions.
To implement the haptic spool, an arduino will have to be connected to the potentiometer, as well as to firefly and the robot's controller. Through KukaVarProxy, it is possible to update a variable while the robot operates. In our case, that variable would be the Z depth replaced by the movement of the tool, aka the pressure on the material. (see diagram)
Do not forget to simulate the robotic toolpath before sending it to the controlling system, as this could become a safety hasard.
Step 8: Let the Machine Sculpt
The process is finished, and you can generate patterns with your hands to be directly transferred to a robotic system that can sculpt them!