Final Project: The F-ABB Digitizer
This project aims to explore CNC fabrication performance. The intent is to develop new methodologies for CNC fabrication by using a low-cost custom made 5-axis digitizing arm in tandem with the ABB-IRB140 Robot in order to streamline the fabrication process. In current practice, a lot of time is spent developing CAD/CAM workflows. The proposed scanning a fabrication process would literally eliminate the time needed to take digital information into physical prototype.
Each leg of the digitizing arm has been calculated using the same proportions and axis configurations as the ABB-IRB140 robot. High precision potentiometers can be used to determine the angular position of each joint and a forward kinematic simulation model can be made using Grasshopper (a plug-in for Rhinoceros) and Firefly (a comprehensive set of software tools dedicated to bridging the gap between Grasshopper and the Arduino micro-controller). Two digital sensors (push buttons) are built into the tool-tip to record and reset the digitizing information as needed.
The digitizing arm communicates its movements via Rapid Code - the programming language used by all ABB robots. When the record button on the tool-tip is engaged, the Rapid movements (along with axis configurations, tool center point velocity, and other parameters) are streamed in realtime to a directory on the computer. Three files are created in this process: the CalibData module, the 'main' module, and the PGF file. The CalibData module contains all of the custom information needed to define the specific tool being used and the work object reference coordinate system. The main module (also known as Module1) contains all of the target points, configuration data, and move commands. Lastly, the PGF file is used to load the file onto the Robot and calls the other two modules at instantiation.
The ideal situation for this setup would be to simultaneously stream the Rapid code to the robot as the digitizing arm is moving, however that step has not exactly been achieved. Instead, the Rapid movements are recorded to a disk (a USB flash drive) and transferred to the robot (which does delay the process a few seconds) but which is still relatively quick given the premise of the project to expedite the fabrication process. The process has been tested and the robot does follow the exact same movements as the digitizing arm, which proves that this low-cose solution could save valuable time and offer new possibilities for digital fabrication.
Below are the files I used to create the custom circuits for the FABB Digitizing Arm:
- F-ABB Digitizing Arm - Eagle Board File
- F-ABB Digitizing Arm - Eagle Schematic File
- F-ABB Tool Tip - Eagle Board File
- F-ABB Tool TIp - Eagle Schematic File
A forward kinematic model of the robot simulation was created using Grasshopper (ver 0.8.0004) and Firefly (ver 1.004). In order to increase calculation speeds, the entire definition (including the Rapid Code generation) was scripted using a few custom VB.NET components. Given my current computer configuration (Vista w/ Intel Core2 Duo 2.53 Mhz and 4Gb of RAM) I was getting a solution cycle time of roughly 125ms (not ideal, but not horrible either). I was also able to test the accuracy of the digitizing arm. Because each potentiometer sends an 10-bit analog value between 0-1024, there always exists a situation where one or more of the potentiometers might be in-between a single value (causing slight variations in each joint position). However, after testing the setup, I found that the digitizing arm has less than 1/32" deviation. A screenshot of the Grasshopper definition is shown below (Click to Enlarge).
Admittedly, this is not the most compelling video... but it is the only footage I have (currently) which shows the F-ABB Digitizer and ABB robot in action. I increased the speed in the middle section of the video (for time sake) but the entire process took less than 3 mins. I plan on re-shooting a more thorough video this week and re-upload this video soon.