RoboRouter

Kuka End Effector and Grasshopper UI

Fall, 2018


The RoboRouter is a custom end effector and Grasshopper user interface I developed for the Kuka robotic arm. The RoboRouter was designed for three-dimensional vector cutting of curves generated with Rhino and processed in the KukaPRC plugin for Grasshopper. With the addition of Fusion 360 (or some heavy-lifting in Grasshopper) the capabilities of this tool can easily be expanded to 3d surface milling.


Tool

The design consists of a single 24” x 4” x 4” x 3/8” T generated from a scrap section of aluminum I beam. The web at one end of the beam is tapered to avoid fouling the materials being worked while allowing the beam to resist vibration. The router is a 1 1/4 hp hand router purchased at a local hardware store and secured with a modified router clamp sourced from a defunct hobbyist CNC / laser combo. The beam was drilled with through holes to match the existing pneumatic gripper mounted to the Kuka.

2018-09-27 14.15.48.jpg
2018-09-28 15.07.40.jpg
2018-09-28 15.07.56.jpg
2018-10-16 18.40.22.jpg

The tool was used by a robotics class to cut and engrave thermo-formed plastic sheets. After all designs were cut I used the engraved spoil board as a base for an augmented reality projection of my SpaceFrame Grasshopper script.

2018-12-10 13.48.07.jpg
 

Grasshopper UI

RoboRouter_ScriptSmall.png
RoboRouter_RobotAll.jpg

The Grasshopper script is designed to produce a series of directional coordinates for KukaPRC from an input surface, curve, and desired resolution. This is accomplished by first populating a curve with a number of evenly spaced points; this becomes the resolution of the final output as the Kuka will travel from point to point. The closest surface UV coordinate is determined for each point and a plane normal to the direction of the surface is defined for each initial point. This information finally fed into the KukaPRC plugin to define tool XYZ and ABC (rotation). That information is finally output as a series of robotic positions that represent the initial input curve.