T-hook: Prosthetic Design for 3D Printing

by marc.cryan in Workshop > 3D Printing

9468 Views, 14 Favorites, 0 Comments

T-hook: Prosthetic Design for 3D Printing

DSCF4668.JPG
DSCF4648.JPG
DSCF4624-1.JPG
ScreenShot1007-1.jpg
ScreenShot1002-1.jpg
DSCF4638-1.JPG
DSCF4628.JPG
DSCF4632.JPG
ScreenShot2.jpg
ScreenShot1001.jpg
DSCF4640.JPG
DSCF4641.JPG
ScreenShot1005-1.jpg
ScreenShot1008.jpg
DSCF4653.JPG
DSCF4643.JPG
DSCF4650.JPG

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/


 


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

Equipment and Software

DSCF4624-1.JPG

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/

Top Finger - in OpenSCAD

ScreenShot1007.jpg
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();

}

}
 

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.
 

Use Skeingforge to Make G-code

ScreenShot1002.jpg

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.

Setup and Print Using ReplicatorG

DSCF4638-1.JPG
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

Take a Look at What You Have

DSCF4628.JPG
DSCF4632.JPG
DSCF4630.JPG
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.



The Other Parts: Bottom Hook

ScreenShot1001-1.jpg
DSCF4642.JPG
ScreenShot1002-1.jpg
ScreenShot2-1.jpg
DSCF4625.JPG
DSCF4640.JPG


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();

}

 

 

}

 

 

 

 

 

 

The Other Parts: Anchor

DSCF4660.JPG
ScreenShot1009-1.jpg
ScreenShot1010.jpg
ScreenShot1005-1.jpg
DSCF4662.JPG
DSCF4663.JPG

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);

}

}

 

}

Side Brackets

ScreenShot1008-1.jpg
ScreenShot1006.jpg
DSCF4665.JPG

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);

}

 

 

}

}

 

All the Parts

DSCF4664.JPG
DSCF4643.JPG
DSCF4648.JPG
DSCF4650.JPG
DSCF4653.JPG
DSCF4660.JPG
DSCF4673.JPG
DSCF4671.JPG
DSCF4672.JPG
DSCF4668.JPG
DSCF4667.JPG

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!!




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

Downloads

Make It Work Then Update the Code and Try Again!

DSCF4645.JPG
DSCF4664.JPG
DSCF4667.JPG
DSCF4673.JPG
DSCF4672.JPG
DSCF4665.JPG
DSCF4671.JPG
DSCF4668.JPG
DSCF4666.JPG
DSCF4663.JPG
DSCF4662.JPG
DSCF4660.JPG

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