Intro: Rasmus Klump - Pixel Art Pancakes
Have you ever wanted to have a robotic arm make you pancakes? Do you like pixel art? Now you can have both! With this fairly simple setup, you can make a robotic arm draw pixel art pancakes for you and even flip them.
The idea is to use kinematic and a coordinate system, to make the robotarm draw the pancakes. In this case, we are drawing 8x8 pixel pancakes, but you can make as many pixel as you want.
We are using 4 different fruit colors to dye the pancake dough, and 1 tube for each color. You can do as many colors as you want
Step 1: Components
- We are using the WidowX robotic arm (http://www.trossenrobotics.com/widowxrobotarm)
- 4 dispensers that fit in the WidowX’s grip (https://www.amazon.com/Refill-Empty-Tubes-Cosmetic-Containers/dp/B00NZRCCO2)
- A 50x4cm piece of scrap oak wood as dispenser holder
- A 40x60cm piece of ply wood as base for the WidowX and dispenser holder
- a 4x8cm piece of scrap wood for the palet knife
- 1 portable hob
- Frying pan
- Arduino IDE 1.0.6
- Arbotix library
Step 2: Setup
First, we need to fix our WidowX to the plywood, for a solid base (see fig1). Then we are going to fix the oak wood to the plywood. Then drill 4 holes with at least 5 cm between them, to makes sure the WidowX doesn’t knock other dispensers over, when grabbing a new dispenser (see fig2. Now make a slot in the 8x4cm wood, for the spatula (see fig3). The spatula needs to be in a position, were the WidowX can grab it. All that is left now, is to place the hob and frying pan in reach of the WidowX.
We found that our pincher motor couldnt stand the heat, so we had to make a small heatshield (see fig4). Its made from cardboard and tinfoil, but it works like a charm.
Step 3: Calibrating
Now that we have set up all of the components, its time to
calibrate the WidowX. This will take some time, but its very important to get consistent results in the end. We learned that you might need to recalibrate through out the process. This might be due to the WidowX hitting stuff, the heat expanding components or other variables.
The way we calibrate the WidowX, is by using the Arm Link program, to find our fixed points. Use the auto update function to get near a fix point. Then make small adjustments and update, until you are satisfied with a fix point. Now repeat for every fix point.
We need to find all our fixed points. We got
· the 4 dispensers
· right above the 4 dispensers
· the spatula (when it is in its slot)
· the spatula (when it is right above its slot)
· were our coordinate system starts on the frying pan.
The reason we need 2 points for the spatula, is because the WidowX is programmed to take the easiest route between 2 points. This means you can’t be sure it will slide the spatula into its slot just right, unless there is a point right before the slot too. This also means you might want to add points right above the dispensers, to make sure the WidowX doesn’t hit them on its way to grab them.
If the arm hits something moving from one position to another, you need to add a point between the two positions, to make sure it is clear of other objects (frying pan, hob etc.)
When you got all your points, you’re ready to do the programming part.
Step 4: Programming
Our base program is called interbotiXArmPlayback, which is a program for Arbotix. It is able to run a sequence made in Armlink.
Inside interbotiXArmPlayback we define that we use a widowX robot, and that we don’t have a button attached. Inside the program there is 3 libraries’, globalArm.h, which have the length for each joint, for the Kinematic.h page to use. The last library is ArmSequence.h where the Sequence is written. We use interbotiXArmPlayback, because it already has the kinematics to be able to use X, Y and Z axis, to control the robot. Then we use Armlink to find the waypoints to grab the tubes with dough, gran the spatula, find starting point for the 8x8 coodinate system etc (see fig1). We used trial and error to estimate the space between the dots in our coordinate system. You will have to match this distance, with the amount of dough being dispensed at each point.
We made a page for each picture, blomst.h which is a flower, fugl.h which is a bird and Pokeball.h which is a Pokeball, with the 64 places in our 8x8 picture with the 4 different colors, so we only needed to delete or add the “//” where we wanted the robot to place some dough (see fig2).
The code we made is in the RAR file.
Step 5: Some Inspiration
Here are some examples of pixel art pancakes. But remember, your imagination is the limit :)