Now with steering arms at approximately correct ackerman angle.

This commit is contained in:
Simon Brooke 2026-09-14 16:46:59 +01:00
parent 01d92421cf
commit d20ecb005a
3 changed files with 29 additions and 15 deletions

View file

@ -30,7 +30,7 @@ caster_angle = 7;
// TODO: should be calculated from hub width and wheel radius?
camber_angle = 10;
module kingpin( h = 300, r = 12.5,
module kingpin( aa=0, h = 300, r = 12.5,
cmb = camber_angle, cst = caster_angle,
al = 100) {
kl = h * (1/cos(90 - cmb)) * (1/cos(90 - cst));
@ -44,17 +44,22 @@ module kingpin( h = 300, r = 12.5,
camber_offset = aof/tan(90-cmb);
caster_offset = 0 - aof/tan(90-cst);
// axle itself
translate([caster_offset, al + camber_offset, 0-aof])
rotate([ 90, 0, 0])
cylinder( h=al, r=r);
rotate([ 90, 0, 0])
cylinder( h=al, r=r);
// steering arm
translate([caster_offset, camber_offset, 0-aof])
rotate([ aa, -90, 0])
cylinder( h=al, d=r);
translate([caster_offset, al, 0-aof])
wheel();
wheel();
}
// kingpin();
// TODO: still need steering rack and track rods.
module lug() {
difference() {
@ -145,7 +150,7 @@ module wishbone(l, w, skew = 0, is_upper = true) {
}
}
module suspension( l = 300, w = 300, h = 300,
module suspension( aa = 7, l = 300, w = 300, h = 300,
track = 1400, hub_width = 135, wheel_diameter=600,
cmb=camber_angle, cst=caster_angle) {
subframe(l,w,h);
@ -187,11 +192,11 @@ module suspension( l = 300, w = 300, h = 300,
translate([caster_offset/2,
wishbone_length + (stock_section * 4), 0])
kingpin(cst=cst);
kingpin(aa=aa, cst=cst);
mirror([0,1, 0])
translate([caster_offset/2,
wishbone_length + (stock_section * 4), 0])
kingpin(cst=cst);
kingpin(aa=aa, cst=cst);
}
// suspesion()