Ackermann Steering Most vehicle steering systems use some form of the Ackermann Steering model. For turning stability tires will turn on different radii.
Ackermann Steering
Research First step was to research steering geometries and types of mechanism suitable for our requirements. – Cheap – Rugged – Easily maintained – Readily available parts
Mechanism Selection Mechanism should provide moderate responsiveness and ease of operation – Best choice – Recirculating Ball Steering Mechanism
Mechanism Elimination Hydraulic – Failed Ease of Maintenance and availability of parts. Rack and Pinion – Failed ease of operation at low speeds
Rough Geometry Due to the suspension design I was required to follow the following setup.
Geometry
Equations
Left Side Equations
Right Side Equations
Equations VariableDescription aDistance from knuckle to center link bTravel of center link cDistance from center link to axis of rotation xLength of steering knuckle yTie rod length Angles between steering knuckle and tire Angle between knuckle and axis of rotation on the left side Angle between knuckle and axis of rotation on the right side Left turn angle Right turn angle
Program #include int main(){ float y, c, b; double x= 6.403; double P, Q, R, Theta1, Gamma1; double I, J, K, Theta2, Gamma2; printf("Input value for y: "); scanf("%f", &y); printf("Input value for c: "); scanf("%f", &c); printf("Input value for b: "); scanf("%f", &b); printf("The values entered are: %f, %f, %f\n", y, c, b); float a = ; float g = ; float pi = ; printf("a equals: %f\n", a); printf("g equals: %f\n", a); R = pow(y,2) - pow(x,2) - pow(b,2) - pow(a,2) - pow(c,2) - 2*a*b; Q = 2*x*c; P = 2*x*(a+b); K = pow(y,2) - pow(x,2) - pow(b,2) - pow(g,2) - pow(c,2) + 2*g*b; J = 2*x*c; I = 2*x*(g-b);
Program I = 2*x*(g-b); printf("P equals: %f\n", P); printf("Q equals: %f\n", Q); printf("R equals: %f\n", R); printf("I equals: %f\n", I); printf("J equals: %f\n", J); printf("K equals: %f\n", K); double den1, den2; double den3, den4; den1 = sqrt( pow(P,2) + pow(Q,2) ); //denominator den2 = den1; //both denominators are the same den3 = sqrt( pow(I,2) + pow(J,2) ); //denominator den4 = den3; //both denominators are the same Theta1 = ((1 / cos((R/den1)*(-1)) - 1 / cos(P/den2))*(180/pi)); Theta2 = ((1 / cos((K/den3)*(-1)) - 1 / cos(I/den4))*(180/pi)); printf("Theta1 equals: %f\n", Theta1); printf("Theta2 equals: %f\n", Theta2); Gamma1 = ( Theta1); Gamma2 = ( Theta2); printf("Gamma1 equals: %f\n", Gamma1); printf("Gamma2 equals: %f\n", Gamma2); getch (); return 0; }
Sample Input Values cyb
Final Geometry
Turn Radii ◦ 7.15 ft. (Inside) ◦ ft. (Outside
Parts
Constructed System
Deliverables Mechanism Selection Rough Geometry Selection Geometric Equation Research C++ Program Calculations of Ackerman Angles Final Geometry Construction
Conclusion Questions?