two finger picking mod

For design validation in preparation for merging into publicly released devices
TecDroiD
Posts: 1
Joined: Wed Mar 09, 2016 7:24 pm

two finger picking mod

Postby TecDroiD » Wed Mar 09, 2016 7:36 pm

Hi, i'm the new one :)
Had some idea about a hand which can set rellative finger positions by bending the wrist aside. on G+ they told me to show it here for some input..
Have to confess, I don't have any experience printing these hands but maybe someone of you can build something..

I append a small openSCAD-sketch and some SCAD renderings

Code: Select all

FDIM = [12,30,12];
TILT = 0;
PAN  = 0;

function disp(dim) = (dim[1]-dim[0]);

module chuckle(dim=[12,30,12], hole=4, end=false ) {
   disp = (dim[1]-dim[0]);
   difference() {
      hull () {
         translate([0,0,0])cylinder(d=dim[0],h=dim[2], center=true);
         translate([0,disp,0])cylinder(d=dim[0],h=dim[2], center=true);
      }
      translate([0,0,0]) {
         cylinder(d=hole, h=dim[2]+1, center=true);
         translate([0,0,dim[2]/2])cylinder(d=dim[0]+.2, h=(dim[2]), center=true);
         translate([dim[0]/2,0,dim[2]/2]) cube([dim[0]+.2,dim[0]+.2,dim[2]],center=true);
      }   
      if(end == false) {
         translate([0,disp,0]) {
            cylinder(d=hole, h=dim[2]+1, center=true);
            translate([0,0,-dim[2]/2])cylinder(d=dim[0]+.2, h=(dim[2]), center=true);
            translate([dim[0]/2,0,-dim[2]/2]) cube([dim[0]+.2,dim[0]+.2,dim[2]],center=true);

         }
      }
      
   }
   
}

module finger(ccount=3, cdim=[12,30,12],hole=4, rchucke = 0 ) {
   if (ccount > 0) {
      rotate([0,0,-rchuckle]) {
         if (ccount == 1) {
            chuckle(dim=cdim, hole=hole, end=true);
         } else {
            chuckle(dim=cdim, hole=hole, end=false);
         }
         translate([0,disp(cdim),0])
               finger(ccount=ccount - 1, cdim=cdim, hole = hole, rchuckle = rchuckle);
            
      }
   }
}


module joint_a(length=30) {
   hlen = length/2;
   difference() {
      union() {
         cube([12,length,2],center=true);
         translate([0,-hlen,0])rotate([0,90,0])cylinder(d=2,h=12,center=true);
      }
      translate([-4.5,-hlen,0])cube([5,3,5],center=true);
      translate([ 4.5,-hlen,0])cube([5,3,5],center=true);
      translate([0,-hlen,0])rotate([0,90,0])cylinder(d=1,h=12,center=true);
   }

}

module joint_b(length=35) {
   hlen = length / 2 + 12;
   $fn=20;
    difference(){
      union() {
         translate([0,0,-0.5])   cylinder(d=15,h=1,center=true);
         translate([0,12,0])   cube([12,length,2],center=true);
         translate([0,hlen ,0]) rotate([0,90,0]) cylinder(d=2,h=12,center=true);
      }

      translate([0,0,0.5])   cylinder(d=15,h=1,center=true);
      cylinder(d=4,h=3,center=true);
      translate([0,hlen,0]) cube([5,3,5],center=true);
      translate([0,hlen,0]) rotate([0,90,0]) cylinder(d=1,h=15,center=true);

   }
   
}

module outer_drawer(pan=0, tilt=0) {
   rotate([0,0,tilt/2]) {
      translate([0,22,0])rotate([-pan/2,0,0])translate([0,20,0])joint_a(length=40);
      joint_b(length=20);
   }
   rotate([180,0,-tilt/2]) {
      translate([0,22,0])rotate([-pan/2,180,])translate([0,20,0])joint_a(length=40);
      joint_b(length=20);
   }

}

module inner_drawer(pan=0, tilt=0) {
   rotate([0,0,tilt/2]) {
      translate([0,19,0])rotate([-pan/2,0,0])translate([0,15,0])joint_a();
      joint_b(length=14);
   }
   rotate([180,0,-tilt/2]) {
      translate([0,19,0])rotate([-pan/2,180,])translate([0,15,0])joint_a();
      joint_b(length=14);
   }

}

module hand () {
   rotate([TILT/2, 0, PAN/2 ]) {
      translate([5,70,0]) {
         translate([-FDIM[2]*2,0,0])
            rotate([0,90,0])finger(cdim=FDIM, rchuckle=TILT);
         translate([-FDIM[2]*.66,0,0])
            rotate([0,90,0])finger(cdim=FDIM, rchuckle=TILT + .2 * PAN);
         translate([ FDIM[2]*.66,0,0])
            rotate([0,90,0])finger(cdim=FDIM, rchuckle=TILT + .4 * PAN);
         translate([ FDIM[2]*2,0,0])
            rotate([0,90,0])finger(cdim=FDIM, rchuckle=TILT + .6 * PAN);
      }
      translate([50,30,0]) rotate([0,90,-90])finger(ccount=2, cdim=FDIM, rchuckle=2*TILT);
   }
}

TILT = 40 * sin(90*$t);
PAN  = 30 * cos(180*$t);
translate([ 30,0,0])rotate([0,90,0])outer_drawer(pan=PAN,tilt=TILT);
translate([-30,0,0])rotate([0,90,0])inner_drawer(pan=PAN,tilt=TILT);


hand();
Attachments
30pan30tilt.png
30pan30tilt.png (11.81 KiB) Viewed 667 times
30pan0tilt.png
30pan0tilt.png (11.53 KiB) Viewed 667 times
0pan30tilt.png
0pan30tilt.png (10.55 KiB) Viewed 667 times

Return to “Beta Testing”

Who is online

Users browsing this forum: No registered users and 0 guests