Introduction: 3d Print an Artificial Muscle Robot Hand
While most makers are not likely to want do duplicate this hand, some of the techniques used here might be found to be useful for other kinds of robots and casting.
Intro pic shows the hand holding a raspberry.
At this point, the soft robot fingers are a bit wobbly. I am working on adding an arm that will have room for more hand muscles. They would use tendons to open the fingers and balance the grasping muscles. This should stabilize the fingers and give a more natural movement.
The short video shows some of the movements of the robot hand.
Step 1: How It Works
Ideally, the whole thing would be printed completely in a 3d printer that printed a hard plastic and a soft rubber that holds air pressure. Since I have no access to such a machine, the soft silicone parts had to be cast in 3d printed molds.
This is an open source project. Version 1.0 is mainly a proof of concept--prototype and there is lots of room for improvements. While not near as strong as a human hand, it is strong enough to hold a cup of coffee or carry a briefcase.
Step 2: Materials
Dragon Skin 20 pourable silicone from Smooth-On.com. Other kinds of silicone can be used, but this has very good flexibility and pour ability for casting the artificial muscles and skin.
100% silicone caulk
Corn starch to make Oogoo
1/8" silicone tubing and 1/8"PVC tubing and fittings-available from: http://www.usplastic.com
Parts for air muscle controller, see here: https://www.instructables.com/id/Air-Muscles-Make-an-Artificial-Muscle-Robot-Contr/
Parts for robot neurons, see here: https://www.instructables.com/id/Tinkertrons-Make-Artificial-Neurons-For-Robots/
6 4-40 x 3/4" round head screws and nuts
Step 3: 3d Printing the Hand Bones
All 3d printed pieces were printed using PLA in a Makerbot Replicator 2 with the following settings:
Standard resolution with a raft
10% infill
2 shells
.2mm layers-standard resolution
There are two different bones that hold the thumb muscles and thumb. They are thumb1.stl and thumb2.stl
Step 4: Casting Artificial Muscles in Break-Apart Molds
Three fingers are all the same size. The pinky finger is scaled down to 90 per cent of full size.
Break-Away Molds
The finger molds are designed to break apart into several pieces (pic 4) in order to make it easier to de-mold the silicone fingers. I first experimented with thicker reusable molds, but found that no matter what kind of release I used, it was extremely difficult to remove the cast silicone from the mold. They just have too much surface area. Half the time, I had to destroy the mold to get the casting out. So I ended up making very thin molds with break lines to make it easier to de-mold. No release is necessary.
Three Part Molds
The two lower thumb muscles were cast in two bottom molds that are taped together. A top piece with separator fins completes the mold.
Casting Silicone With A Vacuum Chamber
Unfortunately a vacuum chamber is required to cast good silicone artificial muscles. Without it, the muscles would have bubbles that leak air even under low pressure. A vacuum pump is used by subjecting the silicone mix to a vacuum for 2 or three minutes before it is poured into a mold.
Using MoldsThat Dissolve
I also experimented with 3d printed molds made of HiPS filament that dissolves in Limonene. While it dissolves well enough, the Limonene shrinks and hardens the silicone to an unacceptable degree. It also permanently saturates the silicone making it impossible to glue to it. Acetone works better, but to a lesser degree, it also shrinks and hardens the silicone.
I have begun experimenting with PVA filament that dissolves in water, but have not fully worked it out yet.
Step 5: Thumb Muscles
Step 6: Casting the Removeable Robot Skin
The skin on the back of the hand is designed to slot into grooves in the bone structure. This makes it possible to peel it back to access the inner muscles and bones.
Skinmold.stl is used to cast the skin. A piece of acrylic sheet is put on top of the mold and weighted after pouring to keep the skin thin.
The skin pads were cast in forms and were later glued to the PLA palm plate and thumb muscles using Oogoo. To get good adhesion a thin coat of pure silicone caulk has to first be put on the PLA where the pads go. Let it dry overnight and then use Oogoo to glue the pads on. Oogoo by itself will not stick very strongly to the PLA.
Step 7: The Artificial Muscle Controller
The pneumatic muscle controller consists of 13 solenoid valves and a 12 volt air compressor. It allows for the control of 11 muscles. They can be pressurized at 9 psi or a vacuum can be applied.
I have given details on how to build it in a previous instructable: https://www.instructables.com/id/Air-Muscles-Make-an-Artificial-Muscle-Robot-Contr/
If you just want to test some air muscles without a controller, a 60cc syringe with tubing works well. It can provide up to 30 psi.
Step 8: The Robot Neuron Schematics
Here is the schematic for the the master robot neuron that controls the pneumatic valves that power the artificial muscles. There are basically three Picaxe micro-controllers that are serially networked. A master neuron sends commands to the two actuator neurons that control the valves.
Pic 3 shows the schematic for the two activator neurons.
For more details on the robot neurons, see here: https://www.instructables.com/id/Tinkertrons-Make-Artificial-Neurons-For-Robots/
Step 9: The Robot Neuron Code
Here is the code for the 3 Picaxe controller neurons:
'20m2 master neuron-hand
b1=1
pause 100
serout c.0,t4800,(1,11) 'open intake
pause 40
serout c.0,t4800,(1,11) 'open intake
pause 40
serout c.1,t2400,(170,9,$0C,127) 'clock m1 24-127, 84-2/3 speed, 127default
pause 100
loop1:
low c.7
' debug b1
irin [1000,loop1],b.5, b6
if b6 = 0 then send1 'valve1 button1=0
if b6 = 1 then send2 'v2
if b6 = 2 then send3 'v3
if b6 = 3 then send4 'v4
if b6 = 4 then send5 'v5
if b6 = 5 then send6 'v6
if b6 = 6 then send7 'v7
if b6 = 7 then send8 'v8
if b6 = 8 then send9 'v9
if b6 = 9 then send10
if b6 = 59 then send11 '(-)
if b6 = 11 then send12 'enter
if b6 = 14 then send13 'guide
if b6 = 21 then send14 'power
if b6 = 16 then send16 'ch+-vid1
if b6 = 17 then send17 'ch--vid2
if b6 = 116 then send116 'closehand
goto loop1
send1:
'serout c.0,t4800,(1,13) 'guide
'pause 40
serout c.0,t4800,(1,1) 'send 1 byte with 1, as qualifier
pause 40
goto loop1
send2:
serout c.0,t4800,(1,2)
pause 40
goto loop1
send3:
serout c.0,t4800,(1,3)
pause 40
goto loop1
send4:
serout c.0,t4800,(1,4)
pause 40
goto loop1
send5:
serout c.0,t4800,(1,5)
pause 40
goto loop1
send6:
serout c.0,t4800,(1,6)
pause 40
goto loop1
send7:
serout c.0,t4800,(1,7)
pause 40
goto loop1
send8:
serout c.0,t4800,(1,8)
pause 40
goto loop1
send9:
serout c.0,t4800,(1,9)
pause 40
goto loop1
send10:
serout c.0,t4800,(1,10)
pause 40
goto loop1
send11: '(-)
serout c.0,t4800,(1,11)
pause 40
goto loop1
send12: 'enter
serout c.0,t4800,(1,12)
pause 40
goto loop1
send13: 'guide
serout c.0,t4800,(1,13)
pause 40
goto loop1
send14: 'power send 21
serout c.0,t4800,(1,21) 'send 21
pause 40
goto loop1
send16: '
serout c.0,t4800,(1,16)
pause 40
goto loop1
send17: '
serout c.0,t4800,(1,17)
pause 40
goto loop1
'18x activator neuron one-hand
'picaxe 18x
low 1
low 2
low 3
low 7
low 6
low 5
low 4
loop1:
'serin 0,t4800, b1
serin 0,t4800,(1),b1 'receive 1 byte after receiving 1
pause 30
'debug b1
'valves 1-7
if b1 = 1 then act1
if b1 = 2 then act2
if b1 = 3 then act3
if b1 = 4 then act4
if b1 = 5 then act5
if b1 = 6 then act6
if b1 = 7 then act7
if b1 = 16 then vid1
if b1 = 17 then vid2
if b1 = 116 then closehand
if b1 = 21 then openhand 'pressurev1v2 'power
goto loop1
vid1:
high 7
pause 800
low 7
high 4
pause 70
low 4
pause 2000
high 7 'vac
pause 1000
high 4
pause 1000
low 4
low 7
high 1
high 2
'high 3
high 4
high 5
high 6
'high 7
pause 4000
low 1
low 2
low 4
low 5
low 6
'high 3
pause 3000
high 3
'low 7
pause 3000
pause 4000 'midpause
'open thumb index
'high 3
high 4
pause 4000
high 3
low 4
pause 2000
low 3
goto loop1
vid2:
pause 1200
high 3
pause 500
low 3
pause 200
goto loop1
pause 3000
goto loop1
act1: 'v1
high 1
pause 20
low 1
goto loop1
act2: 'v2
high 2
pause 20
low 2
goto loop1
act3:
high 3
pause 20
low 3
goto loop1
act4:
high 7
pause 20
low 7
goto loop1
act5:
high 6
pause 20
low 6
goto loop1
act6:
high 5
pause 20
low 5
goto loop1
act7:
high 4
pause 20
low 4
goto loop1
closehand:
high 1
high 2
high 3
high 4
high 5
high 6
high 7
pause 2000
low 1
low 2
low 3
low 4
low 5
low 6
low 7
goto loop1
openhand:
high 1
high 2
high 3
high 4
high 5
high 6
pause 4000
low 1
low 2
low 3
low 4
low 5
low 6
high 7
pause 4000
low 5
low 6
low 7
goto loop1
pressurev1v2: 'ch+
high 1 'v1 arm down
high 2 'v2
pause 800
low 1
pause 1500
low 2
high 1
high 2
pause 700
low 1
low 2
pause 60
high 4 'v7
pause 1440
low 4
pause 20
'goto loop1
pause 1600 'close gripper
high 1 'v1 up arm
high 2 'v2
pause 2200
low 1
low 2
'arm left
high 5 'v6
pause 1200
low 5
'arm down
high 1 'v1
high 2 'v2
pause 800
low 1
low 2
goto loop1
vacv1v2: 'vac ch-
pause 3000
high 1 'v1 vac valves
high 2 'v2
high 6 'v5
high 5 'v6
high 3
high 7
pause 3500
low 1
low 2
low 6
low 5
low 3
low 7
pause 20
high 4 'v7
pause 3000
low 4
high 1 'release vac inline
high 2
high 4
high 6
high 5
pause 2000
low 1
low 2
low 4
low 6
low 5
high 3
high 7
pause 1000
low 3
low 7
goto loop1
'18x activator neuron two- hand
low 1
low 2
low 3
low 7
low 6
low 5
low 4
loop1:
'serin 0,t4800, b1
serin 0,t4800,(1),b1 'receive 1 byte after receiving 1
pause 30
'debug b1
'valves 8-14
if b1 = 1 then act13
if b1 = 2 then act13
if b1 = 3 then act13
if b1 = 4 then act13
if b1 = 5 then act13
if b1 = 6 then act13
if b1 = 7 then act13
if b1 = 8 then act8
if b1 = 9 then act9
if b1 = 10 then act10
if b1 = 11 then act11
if b1 = 12 then act12
if b1 = 13 then act13
if b1 = 14 then act14
if b1 = 16 then vid1
if b1 = 17 then vid2
if b1 = 116 then closehand
if b1 = 21 then powervac5
goto loop1
vid1:
pause 2850
low 5 'vac
low 7
high 6
pause 2000
high 7
low 6
high 5
high 5
high 1
high 2
pause 4000
low 1
pause 4000
low 2
low 5
pause 2000
pause 4000 'midpause
'open thumb index
low 5
low 7 'vac intake off
high 6
high 1
pause 4000
high 7
low 6
low 1
high 5
goto loop1
vid2:
high 2
high 5
pause 900
high 1
pause 1000
low 1
low 2
low 5
goto loop1
pause 2000
high 7 'low vac
high 6
low 5
pause 1000
low 6
high 5
goto loop1
act8:
high 1
high 5
pause 20
low 1
low 5
goto loop1
act9:
high 2
high 5
pause 20
low 2
low 5
goto loop1
act10:
high 3
high 5
pause 20
low 3
low 5
goto loop1
act11: 'v11 intake
high 7
goto loop1
act12:
high 6
high 5
pause 20
low 6
low 5
goto loop1
act13:
high 5
pause 20
low 5
goto loop1
act14: 'stop
high 4
pause 5000
low 4
goto loop1
closehand:
high 5
high 1
pause 2000
low 5
low 1
goto loop1
powervac5: 'power vac 5 sec
low 7 'up arm intake off
low 5
high 6
high 1
high 2
high 3
pause 8000
high 7
low 6
low 1
low 2
low 3
high 5
goto loop1
pressurev1v2: 'ch+
high 5 'arm down
pause 3160
high 1 'v8
pause 1200
low 1
pause 200
'goto loop1
vacv1v2: 'ch-
low 7 'intake off
high 6 'vac in
high 2 'open gripper
pause 1500
high 3 'grip
pause 1500
high 1 'v8
pause 3520
pause 3000
low 6
high 7
low 1
Step 10: Other Possibilities
Foot Powered Compressor
One of the advantages of using air powered muscles is that it should be possible to design an air pump that fits in or on a shoe. This could be used to pressurize a small flat backpack tank while walking. This could keep a prosthetic hand and arm powered in a fairly unobtrusive way.
Finger Tendons
One thing lacking in this first version of a robot hand is tendons and muscles to pull the fingers open. Right now it relies on the stiffness of the fingers, so it is a bit floppy. I experimented with various tendons (silicone elastic bands) and ligaments to open the fingers. Unfortunately, they severely hampered the grasping power of the fingers.
Once an arm is built, it could house four or five air muscles that pull on tendons to open the fingers. I have also been working on pull type muscles that use tendons.
Higher Pressures
I used surplus valves for the muscle controller and they can only hold about 9 psi. I am currently testing some 3d printed valves I designed that will work up to 30 psi. This will increase the grasping power and speed of the fingers considerably.
Robot Prosthetic Arm
I have started working on a human sized arm, but it is not yet ready. I am working on making my own lightweight valves that will fit in the arm.