Introduction: T-hook: Prosthetic Design for 3D Printing

About: Married to Domestic_Engineer (but I call her Meghan).

Purpose:
Build a printable version of the Trautman Hook, an out-of production prosthetic device. 

Overview:
This is derived from work by the  the Open Prosthetic Project. Here is the description from their webpage:

The Open Prosthetics Project is producing useful innovations in the field of prosthetics and freely sharing the designs. This project is an open source collaboration between users, designers and funders with the goal of making our creations available for anyone to use and build upon. Our hope is to use this and our complementary sites to create a core group of “lead users,” and to speed up and amplify the impact of their innovations in the industry.

http://openprosthetics.org/

This instructable will start with some information on their design, then we will make modifications to create a version that can be built using low cost 3D printing technology. 

Hopefully, we will end up with a robust working model that can be easily reproduced.  I probably won't get there with just this instructable, but I hope that this will be useful to others with the same goal.

I should note that I don't represent any of these groups.  I also make alot of mistakes.

Attributions:
This is entirely built on the work of the open source community, including:

OpenProsthetics http://openprosthetics.org/
Makerbot       http://www.makerbot.com/
RepRap        http://reprap.org/
Thingiverse   http://www.thingiverse.com/
OpenSCAD    http://openscad.org/
Blender          http://www.blender.org/
Skeinforge     http://blog.makerbot.com/2009/11/03/skeinforge-0006/
Replicator G  http://replicat.org/



Step 1: Collect Resources

  There has already been alot of work done by the Open Prosthetics group.  It is documented here.  http://openprosthetics.org/concepts/55/the-trautman-hook.  

Open Prosthetics as already done design and prototyping work.  I am just building off their work in a way that seems compatable with the MakerBot 3D printing equipment.

Bre Prettis at Makerbot pointed me towards this project, he posted STL files here: http://www.thingiverse.com/thing:2114

Availble resources include:
Previus work (drawings, photos) -     http://openprosthetics.org/concepts/55/the-trautman-hook
    (they have also posted their design files, but I can't seem to open them)
STL files   - http://www.thingiverse.com/thing:2114
Patents    - http://www.google.com/patents?  id=Asx5AAAAEBAJ&printsec=drawing&zoom=4#v=onepage&q&f=false

Step 2: Equipment and Software


Physical:
Makerbot      http://www.makerbot.com/


Software:
OpenSCAD    http://openscad.org/
Blender          http://www.blender.org/
Skeinforge     http://blog.makerbot.com/2009/11/03/skeinforge-0006/
Replicator G  http://replicat.org/

Step 3: Top Finger - in OpenSCAD

Now it is time to start designing -     
 You could work from several points.
-Build a physical model from pictures
-try to print STL files as they are
-Modify the STL files to make them printable
-Modify the CAD files to make them printable
-Build a new CAD file

I chose to build the design using OpenSCAD.  This program allows you to write code for physical objects.  It is growing in popularity and is used heavily on thingiverse.com

OpenSCAD is documented here - http://openscad.org/
With a wiki here - http://en.wikibooks.org/wiki/OpenSCAD_User_Manual

I'm working with primative solids that will be manupulated with tranformations and CSG modeling.

The basic steps are:
     -define a simple obect (primative solid) and put it somewhere (transform)
    -define another obect and then add, subtract or overalap it with the other object

Doing this you can build anything you want
Open SCAD hints:
  • Build part using primatives, tranformations, and combinations
  • Compile to view part with solids and cuts shown(F5)
  • Comple and Render to show the final part (F6)
  •   Export as STL after rendering 
         Note: Don't press F4


////////////// Open SCAD code  ///////////////////

/*

Make each piece as a seperate module, then join them all together.

Units are in mills - scalled at the end

*/

//ARC

module arc(){

difference(){

cylinder(h=200, r=1400);

cylinder(h=200, r=1200);

translate( [-1500,-1400,0]){

cube(size = [3000,2050,200], center =false);}

translate([-1400,600,0]){

cube(size=[800,200,200], center= false);}

}

}

//FingerTip

module tip(){

rotate([90,0,0])

translate([875,0,-800]){

intersection(){

cube(size=[700,700,150]);

cylinder(h=150,r=700);

}

}

}

//Joint

module joint(){

translate([-800,1000,0]){

difference(){

cylinder(h=200, r=180);

cylinder(h=200, r=90);

}

}

translate([-1050,805,0]){

cylinder(h=200, r=100);

}

}

//draw the whole thing

scale([0.0254,0.0254,0.0254]){ //this scale seems correct in blender

union(){

arc();

tip();

joint();

}

}

Step 4: Use Blender - Check Size and Clean Up

The process of taking a part from a design to a print are here:  http://wiki.makerbot.com/how-to-print  As far as I can tell, this is the best place to start.

What I have here are pretty much notes to myself.

**
Next I opened the STL in Blender.

I've had some trouble telling what scale I am in using openSCAD.  So I imported the STL we just generated along with an STL of a know size.  I used a 3cm snowflake from thingiverse(attribution).

My first scale was way, way off.  The finger was so big blender seemed to be having trouble displaying it.

Luckily in openSCAD rescalling is easy.  [descripion ]

Next - Makerbot recomends deleting multiple vertices
                                       Tab-> A-> mesh ->delete multiple vertices        [check]

Now we can export another cleaned up version of the STL.

Step 5: Use Skeingforge to Make G-code


Skeingeforge slices up the SLA and produces the path that the extruder will follow.  This software has many settings.  I am lucky that the default has been working well. 

Again the real info is here: http://wiki.makerbot.com/how-to-print#toc9

Here are some images.

Step 6: Setup and Print Using ReplicatorG

To drive the machine we will use ReplicatorG.  This will take the Gcode generated from the STL file, which was output from openSCAD code, and acutually tell teh machine what to do. 

Read more and get it here:  http://replicat.org/

Setup machine
     center platform
     position nozzle
     preheat nozzle
     test extrude



Import Gcode into replicatorG
Build!!

Again - I am just folliwing the steps here:  http://wiki.makerbot.com/how-to-print

Step 7: Take a Look at What You Have

Now we have gone from some info on the internet to a physical part on the workbench. 

If you think about it it, this is a bit mind blowing. 

If you look at the actuall part, you will see room for improvement.

So, what are the problems?
     - I lost the hole, it is filled in thicker then any other part of the peice.
     -I have know idea if this will fit with the other pieces, as they don't exist yet.

Should we fix stuff now or move ahead?
    - I'm going to plow ahead, then go back and fix everthing at once (or give up and go to bed).
    - The whole can be drilled out for now, there must be something off in the software chain.
    - Once we make the other pieces we can see what fits and what doesnt.



Step 8: The Other Parts: Bottom Hook



Now, got back to openSCAD and code up the next part.  Alot of what I have done in this version is based on measuring a 2D print out adn then guessing.  I'm sure there is a better way to do this, but here we are. 

You can import multiple STLs into Blender put them together to see if they fit.  This is a good way to check for major errors, such that one part is 100x's to big.  But I personally can't really tell if there are little prolblems.  I find that I am very good at pretending they will fit together. 

Once the rendering looks like it might work.  Follow same steps as before, to build the part:
  •    openSCAD -> export STL
  •     Blender -> open STL  -> clean -> export STL
  •     Skeinforg -> open clean STL -> export G-code
  •     ReplicatorG -> import G-code -> setup -> build!



//////// openSCAD  CODE  ////////////////////

/*

Make each piece as a seperate module, then join them all together.

Units are in mills - scalled at the end

*/

//ARC

//started with finger_top

//translate and flip the arc

//translate and flip the joint, modify to approximate the picture

module arc(){

translate([0,1450,200]){ //shift

rotate([180,0,0]){ //rotate

difference(){ //same as finger_top

cylinder(h=200, r=1400);

cylinder(h=200, r=1200);

translate( [-1500,-1400,0]){

cube(size = [3000,2050,200], center =false);}

translate([-1500,600,0]){

cube(size=[800,475,200], center= false);}

}

}

}

}

//FingerTip

module tip(){

rotate([90,0,0])

translate([875,0,-800]){

intersection(){

cube(size=[700,700,150]);

cylinder(h=150,r=700);

}

}

}

//Joint

module joint(){

union(){

/* translate([0,1450,200]){ //shift

rotate([180,0,0]){ //rotate

translate([-800,1000,0]){

cylinder(h=200, r=180);}

}

}

*/

translate([-1175,275,0]){ //reinforce pivot

cube(size=[560,320,200]);}

}

translate([-1550,125,0]){ //tail

rotate([0,0,20])

cube(size=[650,200,200]);}

}

module hole(){

translate([-880,650,0]){

cylinder(h=250,r=175);}

}

// draw the solids

module solid(){

union(){

arc();

tip();

joint();

}

}

//draw the whole thing and scale

scale([0.025,0.025,0.025]){ //scale to 0.0254 when done drafting

//scale([1,1,1]){

difference(){

solid();

hole();

}

}

Step 9: The Other Parts: Anchor


This Anchor piece is where it all comes together.  All the parts will need to interact with the anchor.  There is no way I am going to get this right the first time.  So I did what I could and printed it up.


///////////////////         openSCAD    ////////////////////////
/* ANCHOR

*/

scale([0.025,0.025,0.025]){

union(){

//rounded end with hole

translate([1000,0,0]){

difference(){

cylinder(h=190, r=160);

cylinder(h=190,r=80);

}

}

//big piece

translate([0,0,0]){

cube(size = [900,300,190], center=false);

}

//rect upright

translate([800,80,0]){

rotate(4,0,0){

cube(size = [250,450,190], center=false);

}

}

//shark fin

difference(){

translate([0,0,0]){

cube(size=[550,400,190],center=false);

}

translate([550,425,0]){

cylinder(h=190,r=125);

}

}

translate([300,400,0]){

cylinder(h=190,r=125);

}

//thicker base to the left

translate([-150,0,0]){

cube(size=[250,400,300],center=false);

}

//threaded portion (place holder)

translate([-500,0,0]){

cube(size=[500,300,190],center=false);

}

}

}

Step 10: Side Brackets


Ideally the side brackets would be printed up as part of the bottom finger.  But this looks like it will require a filler material (or something).  You can print one bracket, but then everything else will be floating in space in bad ways.

The bracket without the bottom finger is a pretty simple part.  So I gave it a go.  We will have to figure out how to attach the peices later.


//////////////////////////// open SCAD Code /////////////////////////////////
//side bracket

scale([0.025,0.025,0.025]){

difference(){

intersection(){

cube(size = [725,1300,200], center = false);

translate([1000,0,0]){

cylinder(h=200, r = 1400);

}

}

translate([350,300,0]){

cylinder(h=200,r=60);

}

translate([500,1100,0]){

cylinder(h=200,r=60);

}

}

}

Step 11: All the Parts


Now we have a nice pile of plastic parts.

I took a bunch of pictures to show how everthing almost fits together. 

Now we have a first draft of the assembly.  This took me two evenings and a morning to do,  Thsi is my first design done like this so that time includes installing all the software and reading some instructions.     Thanks to the Open Source community, this cost almost nothing.

The next step, is to get the part to actually work!!




Step 12: THE FILES - T-hook_X01.zip

Here are all the files I have generated for version X01 

This includes:

  • OpenSCAD source -                *.scad
  • OpenSCAD STL ouput -          *.stl
  • Blender STL output                  *_cleaned_x01.stl
  • Skeiforge Gcode ouput           *_export.gcade

Step 13: Make It Work Then Update the Code and Try Again!


This instructable might end here.  But here are the next few steps that are needed.
  1. Make it work - drill holes, file, glue, whatever
  2. Re-design - rework the code based on what we have learned
  3. Try it again!  - Print everthing out and see if it works
Points that will need attention:
  1. Will these be strong enough for any practical use?  - maybe HDPE is a better material then ABS?
  2. Thread - how to get a thread on the base of the anchor
  3. How to attach the side brackets?
  4. Optimize printing - can the whole thing be printed at once?
  5. Size - does the whole thing need to be bigger?
  6. Alternatives - instead of working from an existing design that might not be printable, build up a similair assembly using parts known to be printable



Humana Health by Design Contest

Participated in the
Humana Health by Design Contest