Introduction: IPad Typing Steampunk Robot - ROBOLED
As a student assistant at FabLab Aachen (Germany) it was - for the last 3-4 month - part of my job to create an exciting and challenging exhibit which demonstrates the “maker-way” of opening a closed product to be used for not intended purposes (and in this case even without violating its warranty ;-) ).
The “product” here is a Philips Organic LED (OLED) wall, which is now installed in the newly build German Ministry of Science and Education (BMBF) building in Berlin to demonstrate this new kind of technology.
The idea was to let some maker figure out applications for this exhibit, the only way to control this device is via an iPad-app. With this app you can either choose one of several demo modes (like audio or video mode, where it reacts to signals from build in microphones or a camera), or you could enter text to scroll on the OLED wall.
What the robot effectively does:
Using the Ethernet port of its Galileo board, it gets weather data from the Internet and types these as short text messages into the iPad (also using an ArduinoUno and Pololu Mini Maestro Servo Board).
Since this – typing short messages on a keyboard – is a rather well known method of communication, it was decided to give the robot an antique look.
I was “chosen” for this – among other things – because of my prop making skills, which I developed as a hobby over the last few years.
Due to the extend of this project this is rather an overview than a step-by-step guide, but I will try to give you some insight into the procedures and methods I used to build this robot.
Step 1: Mechanics
From the beginning it was very clear, that a Cartesian robot with x- and y-axis would not look “steampunky” enough and hence the design would ask for a more elegant approach, like an actual robot arm. Having in mind that I would have to construct, build, control and finish not only the robot itself, but also the display cabinet, I decided to use as few actuators as possible. Therefore a parallel-kinematic system on top of a rotating platform seemed reasonably simple.
A quick lasercut cardboard prototype was used to check for the desired functionality and to determine the right dimensions (the reaching distance should cover the complete surface of the iPad, but also the overall size of the robot was restricted).
This design enables the robot to – theoretically – work in a 3D space, but I decided to use it only in a 2,5D sense, which made the programming much easier and faster (first rule of effective engineering: make it “good enough” instead of “as good as possible”).
The functions are as follows:
Turning left <-> right: Base Servo
Extending/contracting: turn both arm-servos in opposite directions (which actually means sending the same signal to both servos because of their mirrored orientation – except for trimming values, but more about that a little later)
This should – in theory – make the tip of the robot arm move parallel to the iPads surface.
Typing: turning both arm-servos in the same direction
[skizze der Drehrichtungen]
Step 2: Firmware
At the beginning, I planned on programming all servo controls myself using an arduino and the standard servo library, but then stumbled over the Pololu Mini Maestro servo controllers and decided to use one of those. Otherwise programming slow motion servo movements would probably have taken far to long. With these controllers you can set a speed and acceleration, send the PWM-value (in 1/4th millisecond resolution) and via serial protocol and wait for the “done” signal. Then you send the next value, and so forth.
The robot itself is working in a polar coordinate system, being able to rotate (angle) and extend/retract (radius) the arm. The screen of the iPad is – on the other hand – a pretty good example of a Cartesian System (x- and y-coordinates). So how do we get from one to the other?
Answer: MATH! (Or geometry, if you find that less intimidating ;-) )
Sir Pythagoras was kind enough to let us know how to calculate the relations between all angles in a right-angled triangle. And since every arbitrary triangle can be divided into 2 right-angled triangles, combined with some knowledge of sinuses/cosines, etc. and the dimensions of the robot, this gives us the ability to:
- First transform x- and y-coordinates of the iPad into angle- and radius-values for the robot arm (the angle goes directly to the base-servo)
- Then translating the radius of the polar coordinate system into angle-values for the two arm-servos.
The fact that I decided early on NOT to go full 3D, but only 2,5D, made this part much easier, since I could avoid stuff like inverse kinematics.
The value for how high the tip of the robot hovers above the iPads surface is not controlled and calculated as an angle, but simply in a ms (milliseconds) value which gets added to/substracted from the servos PWM signal.
Step 3: Working Prototype
Before designing the robot completely, I did build a prototype, which had all the correct dimensions, ball bearings, servos, etc. but without the steampunk elements, since I wanted to check for mechanical problems with the design.
This lead to some changes, the most notable one being a much thicker and hence stiffer version of the arm-parts, enhanced by using PCB-material (fiberglass board). This also gave me the opportunity to include some otherwise very time consuming detailing into the milled PCBs. A very kind colleague of mine (janth on instructables) did spend some hours producing these parts on the FabLabs PCB-router.
Others changes, like adding an extra strut to the lower-limb and a guidance ring around the base were necessary to keep this thing stable while typing over a long period of operation.
The prototype also had a basement with included push buttons, so my boss and FabLab-Master René Bohne could start programming the high-level software.
Step 4: Steampunk Design
After doing some tests with the prototype and some small changes on the mechanics-side, the next task was to pack this thing up in something that would give the impression of an antique apparatus.
I deliberately chose not to use the often seen “gears”-motive, but went for more victorian, floral motives.
The decision to use SketchUp as a modeling software might not exactly be the best choice ever, since I was aiming for organic, curved shapes and strength of this software lies more on the “straight-lines” approach (yes, I know there are a lot of addons which help with curves, but it’s still not like working with NURBS, etc.) The one addon, which basically save my life and sanity (to a certain degree) is called “solid inspector”. When dealing with Boolean operations, SketchUp doesn’t seem to care much about little details like holes and creates surfaces on top of other surfaces (even up to seven or more layers on the same triangle…) and this plugin shows you exactly where there’s trouble with your geometry. This is also VERY important when dealing with 3D-printing since you HAVE to have a watertight geometry and SketchUp doesn’t necessarily produces such with Boolean operations. (Still, the two-part dome with all recesses, screw connections and not to forget about a certain wall thickness, took me about a week of manually correcting and painting triangles…for hours…and hours…v.e.r.r.y…e..x..a..u..s..t..i..n..g…!!!)
Step 5: Printing Fake Steel
All right, all parts were designed, exported as STL files and printed on the Dimension Elite 3D-printer at FabLab Aachen. The BIG advantage is, that it prints with a soluble support material so I did not have to worry about undercuts and that sort of thing while designing.
But how do you make black printed ABS-parts look like old, cast iron piece?
1) Rough sanding
3) A little finer grid sanding (no need of getting rid of ALL the printing-lines)
4) Use lots of black acrylic paint, stippled on with a brush. This covers the remaining unwanted structures and giving a very nice hammered iron surface
5) Stainless steel spray paint
6) Several washes with black acrylic paint (cover it completely with paint and IMMIDIATELY wipe most of it off)
On the copper-parts you can use acrylic paint in the color “turquoise-green” to simulate oxidized copper.
Step 6: The Display Cabinet
All right, now we have build ourselves a nice robot, but we can’t hang it on the wall by itself, can we? And what about that iPad it supposed to type on?
Oh, almost forgot about those visitors who want to interact with the robot, but can’t be trusted to touch it ;-)
Well, it’s time to build a cabinet for the display of our creation and also to enhance the “steampunk-experience”.
1) Export 3-side views of the robot from Sketchup. I added copies of the arm-pieces in different positions to make sure there will be enough space in the cabinet to move around in.
2) Import 3-side views into vector-graphics software (in my case Adobe Illustrator) and draw ALL pieces which need to be lasercut. I call this my construction file
3) Copy all parts, grouped in a way that makes sense to you, into several other vector-graphic files and arrange/optimize them for lasercutting.
4) Cut all the parts. If you put a bit of thought into how you group your parts in step 3), you can start gluing pieces together while the other parts are being cut.
5) Since I used MDF as my main building material, I got some MDF-filler and filled in all gaps, which would be visible later on.
6) Sand down all excess material and round off the corners you want to be softer.
7) Paint all fake-metal parts using the same method used on the 3D-printed parts. The rivets on the “metal frame” are nails like you would use them in upholstery.
8) Paint a fake wood grain by starting with a base brown color using a coarse brush. Try to make each stroke across the whole piece so you would not see either start or and of individual strokes. You can also turn the brush slightly while paining, so the brush stroke varies in width, emulating natural variety in the wood grain.
Repeat this step 2-3 times with slightly watered-down and brightened or darkened paint of the same brown. This will enhance the illusion of natural wood grain.
9) Glue some red velvet to the inside of the cabinet (I use white wood glue, but you have to be careful not to use too much, since it could show)
10) Glue the acrylic windows in place with some hot glue and cover the seam with some black acrylic paint to imitate a grout.
11) Tadaaa, you’re done! Wasn’t THAT EASY? :-D
Step 7: Conclusion
When dealing with a project where you basically have to design and build everything from scratch… as much as you think you figured everything out in beforehand…you ARE WRONG! ;-)
It is always the things you did not expect that cost the most time and nerves, so do not try to plan everything completely from beginning to end. Instead work in iterations and make some cheap prototypes. Creating a 3D model can also help a lot when dealing with complex geometrics and mechanics. This is why I modeled every screw, nut and washer virtually to make sure not to miss anything. But still there were some issues where I had to make alterations and without the time to redesign some details I had to improvise on several occasions.
So, do your planning and do it precise, but at a certain point you need to start MAKING STUFF!