Goal
This week's goal is to plan and document the final project integrating the range of units covered.
What will it do?
Fab Arm is a parametrical robot arm designed and made using processes available in any Fab Lab. Even though it's a multifunctional device and can serve many purposes, for Fab Academy I will program it as a time-lapse video arm and as a light painting device.
![Light painting, MIT style](images/week16-lightpainting.jpg)
Who's done that beforehand?
There are hundreds of DIY robot arm hardware designs but not so much about control systems. A good source of theory and information about robotic arms is Society of Robots, where you can find all the theory behind torques, direct and inverse kinematics, motors and so on.
What materials and components will be required?
Components
The components required are:
- Steppers motors
- Electronics boards (for steppers,
- Nuts and bolts
Materials
You could use wide range of materials depending upon the local availability. But for my final project I am using acrylic as the frame material.
Where will they come from?
Most of the components are salvaged from old electronics junk. The boards will be fabricated. Spacers come from the microcontroller tubes that Digikey ships, so technically speaking, it is part of the inventory. They fit perfectly a M3 screw. All the frame comes from acrylic leftovers from other students.
How much will it cost?
One of the main goals of this project is to reduce the cost of the arm to the cost of the electronic boards. The rest of the parts should be obtained from local waste. We are surrounded with trashed electronics that contain very valuable and expensive parts inside: precision bearings, shafts, motors and sensors. And also we trash a lot of valuable materials everyday. Some parts have been salvaged from an old Epson Stylus 440 printer, an old ball mouse and other electronics waste. All the acrylic was obtained from other students leftovers stored under the Epilog (hence the different colours) so I did not use any new materials. Also, since the design is parametrical anyone can adapt the parameters in order to fit the design with the materials that are available in their local area.
Qty | Item |
1 | 6x4" single sided copper board |
4 | Attiny44 |
2 | ATtiny85 |
4 | 20 MHZ Resonator |
8 | IC H-Bridge |
8 | Capacitors |
8 | Capacitors |
1 | LED RGB |
2 | SMD Resistor 1001 |
1 | SMD Resistor 4990 |
5 | LED Green |
5 | SMD Resistor 1001 |
6 | ISP header 6 pin |
6 | SMD Resistor 1002 |
6 | Capacitor |
1 | FTDI header connector male |
All these item are available in the inventory and altogether, assuming unit prices for inventory quantities, they have an estimated cost of less than 15 USD.
If you can't manage to salvage the motors then you
have to add the price of the motors to it, add 30 USD for
the four steppers.
What parts and systems will be made?
- Electronic boards will be made
- Stickers will be made
- Frame will be made
What processes will be used?
- Stickers: Designed in Inkscape. Multilayer Vinyl stickers sent to Roland Vinyl via fab modules connected via USB cable.
- Frame: Designed in kokopelli. Sent to the Epilog via network straight away from kokopelli/fab modules. (No PNG creation required)
- Electronics: Designed in kokopelli. PNG's sent with fab modules to the Roland Modela. Stuffed with patience.
What tasks need to be completed?
- Lasercutting the frame parts
- Assemble motors and hinges (mechanical arm)
- Mill and stuff the boards
- Program the boards
- Make the ribbon cables and connectors
- Connect all the nodes
- Have fun sending instructions to the arm in the python script
What questions need to be answered?
Related to design
- What material will I use?
- What arm size is required?
- What is the payload?
- What motors can carry this payload and the weight of the arm?
- How much power is required? How will you power it?
Related to software
- How will you find the correct PWM and coil delays for every motor and load?
- What will be your strategy of movement? (no, solution is not unique, you need an strategy)
- How will you control two or more motors at the same time?
- How will you code a path for the time lapse video or light painting?
- How will you decode an image into coordinates in order to paint it with light?
What is the schedule?
It took me a lot of time of research for making the first version. But now to replicate the arm I planned a schedule that allows you to make it in under a week:
Electronics (2.5 days)
- Milling the 5 boards: Half a day using fab modules and a Roland Modela.
- Stuffing the 5 boards: Half a day with items from the inventory.
- Making cables and connectors: Half a day
- Electronics testing and debugging: Includes loading software Allocate a full day for possible problems.
Mechanical parts (3 days)
- Analysis of materials: Using the kokopelli CAD file find materials and motors suitable for your frame (acrylic, plywood, cardboard). One day
- Lasercut all the parts. Half day
- Assemble the arm. Half day
- Assemble the motors and LED. Half day
- Wire it all and make some tests. Half day
Coding in python environment (1 day)
- Code a set of movements for your robotic arm. One full day
Generation next
The arm has some limited movements. A 7 DOF arm (excluding the end effector) would be desirable for being able to perform all the tasks needed. The project could be completed adding a wrist left-to-right movement and wrist rotation.
A great field of improvement is replacing the serial communication (which is very limited in terms of speed and reliability) with another networking technology.
Finally in the CAD field, it would be so awesome if someone finds a way to modify the kokopelli script so that you can integrate physics simulation inside. That is, you enter your material properties and loads, and the design adapts the geometry to resist those forces with the available material. It's not difficult, but you need to compute some easy things that kokopelli doesn't allow you at the moment. So either you are hammering everyday Matt Keeter, or do it yourself if you are so smart. I found a workaround for integrating physics simulation that you will find in my script but it is very limited.
How will it be evaluated?
The arm is a machine, so it could be assessed in stages. There could be a basic level:
- Did you stuff, mill and tested the electronics and they are working ? +1.5 points
- Is the mechanical frame made and can you can manually move it? +1.5 points
- Did you assemble hardware and software all together and be able to make basic movements? +2 points
That would be the minimum 5 points to pass. Then extra features could be evaluated:
- Did you took a time-lapse video with the arm? +1.5 points
- Could you draw a geometrical figure with light? +1.5 points
- Could you draw an image with light? +2 points
Finally super extra points if any of these conditions are met:
- Did you improve the arm (electronics, mechanical, or software)? +1.5 points
- The arm has some limited movements. Did you add new DOF to the arm? +1.5 points
- Did you use the arm for something that could replace another machine (3d print, vinyl cut, etc.)? +2 points
What I learned
Do not underestimate the value of this assignment. For me it shares equal importance with the product itself. This is the documentation of your final project, fabbers should be able to replicate your project with your notes, and it is not only addressed to the people who doesn't know anything about it. It is also for you. They say that your memory has no limits but in a year you probably won't remember most (if any at all) of the details. Also, documenting is not a one shot process. It is a continuous and iterative process. I keep adding, removing and modifying content all the time till I am satisfied (which actually, never occurs).