$fn = 32; width = 20; hei = 7; length = 120; hole = 4.2; small_hole = 3; wheel_dia = 40; wheel_thick = 25; linkage(hei); //translate([0,cos(20)*length,0]) //linkage(hei); translate([width*3,0,25]) plate(); translate([width*3,0,25]) anchor(); translate([width*3,-length,25]) anchor(); translate([width*3,-length,25]) push(); //wheels //1 translate([-20,0.7*length,-10]) wheel(); //2 translate([-20,-0.7*length,-10]) wheel(); //3 translate([180,0.7*length,-10]) wheel(); //4 translate([180,-0.7*length,-10]) wheel(); translate([-20,73.5,-10]) steering_linkage(); mirror([0,1,0]) translate([-20,73.5,-10]) steering_linkage(); translate([-20,73.5,0.6]) spacer(); //translate([-20,80,0]) //axle(); module axle(){ difference(){ union(){ //axle rotate([0,90,90]) cylinder(d = 6.4, h = wheel_thick+12, center = true); translate([0,-18,0]) rotate([0,90,90]) cylinder(d = 9, h = 2, center = true); } //through hole for bolting on wheel to axle rotate([0,90,90]) cylinder(d = 1.4, h = wheel_thick+15, center = true); } } module spacer(){ difference(){ //axle holder - vertical cylinder translate([0,-17,0]) cylinder(d = 12, h = 5, center = true); //chasis connector translate([0,-17,0]) cylinder(d = 3, h = 20, center = true); } } module steering_linkage(){ difference(){ union(){ //axle holder translate([0,-6,0]) rotate([0,90,90]) cylinder(d = 12, h = 23, center = true); //axle holder - vertical cylinder translate([0,-17,0]) cylinder(d = 12, h = 16, center = true); //linkage translate([-10,-22,0]) rotate([50,90,90]) cylinder(d = 6, h = 18, center = true); //linkage translate([-13,-24.5,0]) rotate([50,90,90]) cylinder(d1 = 10, d2 = 6, h = 5, center = true); translate([-16.49,-27.42,0]) rotate([50,90,90]) cylinder(d = 10, h = 4.2, center = true); } //axle through hole rotate([0,90,90]) cylinder(d = 6.6, h = wheel_thick+12, center = true); //chasis connector translate([0,-17,10]) cylinder(d = 3, h = 20, center = true); //allowance to push through axle translate([0,-18,0]) rotate([0,90,90]) cylinder(d = 9.2, h = 10, center = true); //steering linkage rod hole translate([-15.5,-26.7,5]) cylinder(d = 3.5, h = 20, center = true); } } module wheel(){ color("gray", 1) difference(){ rotate([0,90,90]) cylinder(d = wheel_dia, h = wheel_thick, center = true); translate([0,-15,0]) rotate([0,90,90]) cylinder(d = 0.8*wheel_dia, h = wheel_thick, center = true); rotate([0,90,90]) cylinder(d = 6.4, h = wheel_thick+4, center = true); } } module push(){ difference(){ union(){ //Arm 1 translate([0.61*width,0.7*length,0]) cube([0.2*width,0.4*length,0.5*width], center = true); translate([0.51* width,0.9*length,0]) rotate([0,90,0]) cylinder(d = 0.5*width, h = 0.4*width, center = true); //pivot point 1 translate([0.61*width,0.5*length,0]) rotate([0,90,0]) cylinder(d = 0.5 * width, h = 0.2*width, center = true); //Arm 2 translate([-0.61*width,0.7*length,0]) cube([0.2*width,0.4*length,0.5*width], center = true); translate([-0.51* width,0.9*length,0]) rotate([0,90,0]) cylinder(d = 0.5*width, h = 0.4*width, center = true); //pivot point 1 translate([-0.61*width,0.5*length,0]) rotate([0,90,0]) cylinder(d = 0.5 * width, h = 0.2*width, center = true); //pivot point bushing translate([0,0.5*length,0]) rotate([0,90,0]) cylinder(d = 0.5 * width, h = 0.54*width, center = true); } //holes translate([0,0.5*length,0]) rotate([0,90,0]) cylinder(d = hole, h = width + 10, center = true); //hole for slider translate([-0.61* width,0.9*length,0]) rotate([0,90,0]) cylinder(d = hole, h = width + 50, center = true); } } module anchor(){ difference(){ union(){ translate([0,0.5*length,0]) rotate([0,90,0]) cylinder(d = hole, h = 0.7*width, center = true); //pivot point translate([0,0.5*length,-1]) rotate([0,90,0]) cylinder(d = 0.75 * width, h = width, center = true); //base translate([0,0.5*length,-10]) cylinder(d = width, h = hei + 2, center = true); //stop point base translate([0,0.44*length,-10]) cube([width,0.4*width, hei+2], center = true); } //slot for movement translate([0,0.5*length,9.5]) cube([0.5*width + 1,width + 4,width + 10], center = true); //pivot pin through hole translate([0,0.5*length,0]) rotate([0,90,0]) cylinder(d = hole, h = 2*width, center = true); //linkage attachment through hole translate([0,0.5*length,0]) cylinder(d = hole, h = 2*width, center = true); //linkage attachment through hole counterbore translate([0,0.5*length,0]) cylinder(d = hole+ 4, h = width, center = true); } } module plate(){ //main body difference(){ union(){ //linkage translate([0,9,0]) cube([0.5*width,0.85*length,0.5*width], center = true); translate([0,0.5*length,0]) rotate([0,90,0]) cylinder(d = 0.5 * width, h = 0.5*width, center = true); translate([0,-0.5*length+18,0]) rotate([0,90,0]) cylinder(d = 0.5 *width, h = 0.5*width, center = true); //plate for electronics translate([0,0,10]) cube([80,length - 10, 5], center = true); } //holes //pivot pin hole translate([0,0.5*length,0]) rotate([0,90,0]) cylinder(d = hole, h = 0.7*width, center = true); //plate connector hole translate([0,0.43*length,0]) cylinder(d = small_hole, h = 2*width, center = true); //plate connector hole translate([0,-0.31*length,0]) cylinder(d = small_hole, h = 2*width, center = true); //slot hull(){ translate([0,0.37*length,0]) rotate([0,90,0]) cylinder(d = hole, h = 0.7*width, center = true); translate([0, -0.25 * length ,0]) rotate([0,90,0]) cylinder(d = hole, h = 0.7*width, center = true); } } } module linkage(hei){ for( n = [0:4]){ translate([n * 40,0,0]) rotate([0,0,-20]) link(hei); } for( n = [0:4]){ translate([n * 40,0,hei]) rotate([0,0,20]) link(hei); } } module link(hei){ //main body difference(){ union(){ cube([width,length,7], center = true); translate([0, 0.5*length, 0]) cylinder(d = width, h = hei, center = true); translate([0, -0.5*length, 0]) cylinder(d = width, h = hei, center = true); } //holes translate([0, 0, -1]) cylinder(d = hole, h = hei+3, center = true); translate([0, length/4, -1]) cylinder(d = small_hole, h = hei+3, center = true); translate([0, -length/4, -1]) cylinder(d = small_hole, h = hei+3, center = true); translate([0, -.5*length, -1]) cylinder(d = hole, h = hei+3, center = true); translate([0, .5*length, -1]) cylinder(d = hole, h = hei+3, center = true); } }