Dynamixel XL330 horns
$fn=32;
inner = 6; // 6mm inner empty space for front hornet screw outer = 8.25; // 8.25mm outer radius of XL330 servo hornet
r = 0.7; // d=1.6mm pins on the XL330 servo hornet (inlet) l = 2.5; // l=2.5mm, how deep the inlet travel in the hornet -- 2.5mm t = 2; // t=2mm, global thickness d = 17; // d=16mm, front/back hand distance h = 29; // h=30mm, upper hand distance fac = 1.5;
module pins(r, l, t){
/* r: radius, l: length, t: thickness */ translate([inner,0,t]) cylinder(l, r, r); translate([-inner,0,t]) cylinder(l, r, r); translate([0,inner,t]) cylinder(l, r, r); translate([0,-inner,t]) cylinder(l, r, r); }
module disc(thichness=t){
difference(){
union(){
cylinder(t, outer, outer);
cylinder(t, t, t);
}
cylinder(t, inner/2, inner/2);
}
}
module frontArm(d, t){
difference(){
translate([-outer/2, 0, 0]) cube([outer, d, t]);
cube([2*inner,2*inner,2*t],true);
}
}
module upperArm(d, h, t){
rotate([90,0,0]) translate([-outer/2, 0, -d]) cube([outer, h, t]); }
module backArm(d, h, t){
union(){
translate([-outer/2, -(2*t), h]) cube([outer, d+(2*t), t]);
translate([0, 0, h-(fac*t)]) cylinder(fac*t, inner/2, inner/2);
}
}
// union(){
union(){
union(){
union(){
pins(r, l, t);
disc(t);
}
frontArm(d, t);
}
upperArm(d, h, t);
}
backArm(d, h, t);
}