FSAE front suspension

Michael Cattani – michael.cattani@raceup.it


The topic of this project is the kinematic analysis of an independent suspension, taking into consideration the suspension system of the Formula SAE electric car of the University of Padua (RaceUP Team).
The project started from the knowledge of the kinematic points of the car (year 2017/18), and then created a model for the analysis of all the parameters influencing the dynamics of the vehicle like Toe, Camber, Kingpin angle and more. Once the model was finished I tried to optimize the system through the DOE of Adams View


First of all I developed the model in Adams View, then I checked if the output results were correct. To verify that, I compered my results with the results obtained using Lotus Suspension Analysis Software. Since the results were the same and my model was correct, I decided to use this model. Initially the model had 2 actuators that raised and lowered the wheels (with a static frame). This configuration was correct for bump and rebound, but not when I simulated rolling. So I modified the model by importing the frame, moving it while the wheels were on the ground.


Then I used this model for the optimization of the kinematics points. Using DOE in Adams with many parameters and level of measures is very difficult (too many eperiments required), so I dealt with the problem by looking for the main parameter and optimizing this one. Then I checked that the others parameters were correct.

The modelling problem

The origin of the car’s reference frame is fixed to the projection on the ground of the furthest poin of the frame, while the axes are oriented as: X coincides with the longitudinal direction of the vehicle (pointing to the rear of the car) and Y axis points to the right of the car, Z axis points upward. Adams settings: MMKS, gravity along Z downward.

Front Right Points:

Point Name X Y Z Description
WUF 288.374 242.242 88.758 Upper wishbone front pivot
WUR 554.028 265.204 286.361 Upper wishbone rear pivot
WLF 407.868 211.676 127.155 Lower wishbone front pivot
WLR 599.414 244.272 144.446 Lower wishbone rear pivot
Toe_Frame 334 225 140 Toe Arm Inner joint
Frame_Damper 459.7 58.9 570.1 Spring to damper support pivot
Upper_Joint 455 500 325 Upper wishbone outer ball joint
Lower_Joint 444 550 138 Lower wishbone outer ball joint
Toe_Upright 398 558 157.5 Toe Arm outer ball joint
Wheel_Centre 445 613 228.99
Wheel_Axes 445 413.01 227.25
Push_Joint 453.551 471.588 337 Upper Wishbone to Pushrod pivot
Contact_Ground 445 615 0 Wheel contact
Rack_Centre 334.0 0 140 Centre of the rack
Rocker_Damper 459.7 225.954 622.235 Rocker-Spring joint
Push_Rocker 459.7 290.446 577.217 Rocker-Pushrod joint
Rocker_Support 459.7 230.5 552.408 Rocker Centre of rotation
Rocker_Axes 449.7 230.5 552.408 Rocker axes

The front left points are the same of the previous ones, with a negative Y coordinate.

Bodies and Joints:

The created model has various bodies: Frame, Rack, Wheel (FR, FL), Wheel Group (FR,FL), Pushrod (FR,FL), Rocker (FR,FL), Upper Wishbone (FR,FL), Lower Wishbone (FR,FL). These bodies contain both the points in the precendet table and the elements imported from CATIA. The elements were imported in .stl format due to problems with the CAD software in student version.


– Revolute joint in WUR with the rotation axis pointing through WUF between Upper Wishbone and Frame

– Revolute joint in WLR with the rotation axis pointing through WLF between Lower Wishbone and Frame

– Spherical joint in Upper_Joints between Upper Wishbone and Wheel Group

– Spherical joint in Lower_Joints between Lower Wishbone and Wheel Group

– Spherical joint in Toe_Upright between Toe arm and Wheel Group

– Spherical joint in Pushrod_Joint between Upper Wishbone and Pushrod.

– Revolute joint in Wheel_Centre between Wheel and Wheel_Group.

– Revolute joint in Rocker_Support with the rotation axis pointing through Rocker Axes between Rocker and Frame

– Hooke joint in Push_Rocker between Pushrod and Rocker

– Hooke joint in Toe_Frame between Toe Arm and Rack

– Translate Joint in Rack Centre between Rack and Frame

– Inplane Joint in Contact_Ground between Wheel and Ground

– Translate Joint or Revolute Joint in the car Centre of Mass, between Frame and Ground


– Rotational Joint motion on the revolute joint between wheel and wheel group. In this model is set equal to 0, but it’s important for a future upgrade of the model

– Translate Joint motion or Rotational Joint motion in the joint between Frame and Ground. It’s important because this motion simulate the car move in bump/rebound and during the rolling. The translate motion is set between +35/-35 mm while the roll is set between +2/-2 deg

– Translate Joint motion in the joint between Frame and Rack. It’s important because this motion simulate the car during the steering; the steering is set between +30/-30mm


At the end the Gruebler count is:


This is the result of what I have done up to this point:

1) Simulate the cornering of the car   –> Roll

2) Simulate the motion of the suspension  –> Bump_Rebound

3) Simulate the steering –>

Main Parameters of the Model:

In order to have a perfect control, I created a point called “MeasurePoint” that is on the rotational axes of the wheel and has a specific distance from the wheel center. With a Point to Point Measure between these 2 point I can get the X Y and Z displacement during the entire simulation.

Toe: atan2(ΔX,ΔY)*180/π , toe will be positive when is toe in, and negative when is toe out;

Camber: atan2(ΔZ , sqrt(ΔX^2+ΔY^2))*180/π  , if the bottom of the wheel is farther out than the top, it is called negative camber;

For the KPI and Caster angle, I introduced other Point to Point measures (X,Y,Z) between Lower and Upper Joint. So, I got ΔX_LJ-UJ, ΔY_LJ-UJ and ΔZ_LJ-UJ

Kingpin Incination (KPI): 90-atan2(ΔZ_LJ-UJ  ,  ΔY_LJ-UJ)*180/π , positive the Lower Joint in further then Upper Joint (plane YZ)

Caster angle (CA): 90-atan2(ΔZ_LJ-UJ  ,  ΔX_LJ-UJ)*180/π  , positive when the Lower Joint in further then Upper Joint (plane XZ)

For the Scrub Radius and the Mechanical Trail, I introduce 2 other important point: 1) the point obtained as an intersection between the kingpin axis and the ground; 2) the point obtained as an intersection between the wheel axis and the ground.



Roll Center High



Simulations and analysis of results

First Simulation (2017/18 Kinematic points)

Consider only the right wheel, for the left one I can use the symmetry:


Toe_1stCamber_1stKPI_1stScrubRadius_1stCasterAngle_1stMechanicalTrail_1stTrack_1stRoll (positive when cornering to the right)Toe_roll_1st

Camber_roll_1st CasterAngle_roll_1stMechanicalTrail_roll_1st KPI_roll_1stScrubRadius_roll_1stRollHigh_1stSteer (positive when steering to the left)

Toe_steer_1st Camber_steer_1stRollHigh_steer_1st

Through these results we can see that the Toe is too variable, both in bump / rebound and rolling. This is not positive because during the run the driver could “feel” variations in the behavior of the car. Invece, la curva del recupero camber è adeguata per la FSAE. Values such as roll center height, mechanical trail and radius scrub must remain constant, being very important for vehicle stability.


As mentioned above, I focused on optimizing toe, trying to minimize its variation as much as possible. First of all I decided the parameters that could be changed, trying (first try) not to change the kinematic points to the frame (they would involve the remaking of new parts).

The parameters chosen for optimization are: Lower Joint, Upper Joint, Toe Joint; this choice was made because, for the next season, it will be necessary to redo the upright and hub. I created a Design Variable for each coordinate of the points mentioned above, parameterizing the model:
 In the Design Variable the average value is the starting value, while the extremes are at +/- 10mm for the X and Y coordinates, +/- 5mm for the Z coordinates; these choice were made keeping in mind the encumbraces of the parts.
First step:
Second Step:Opti_2
Third Step:

With these “experiments” I did a sensitivity test, and I understood the main parameters that have more influnce on the Toe. And so, with the last optimization I found these values:

  X Y Z
Lower_Joint 439 (444) 540 (550) 138 (138)
Upper_Joint 445 (455) 498 (500) 325 (325)
Toe_Joint 400 (398) 568 (558) 157.5 (157)


Second Simulation:


Camber_2nd CasterAngle_2nd MechanicalTrail_2nd KPI_2nd ScrubRadius_2nd Track_2nd


Toe_roll_2nd Camber_roll_2nd CasterAngle_roll_2nd MechanicalTrail_roll_2nd KPI_roll_2n ScrubRadius_roll_2nd RollHigh_2nd


Toe_steer_2nd Camber_steer_2nd RollHigh_steer_2nd




As we can see from the results above, after the optimization , the variation of the toe has decreased from 0.3 deg to 0.05 deg. This is a positive factor, because the toe variation doesn’t change the driver feelings. We can achive these results because kingpin angle and caster angle have changed, in fact they have increased their values. This cause the improvement of the toe, but change also other two main parameters in the vehicle dynamics: mechamical trail and scrub radius. We should evaluete this choice using different models, because these are considerations reguard the dynamics; but apart from that both scrub radius and mechanical trail are constant during roll and bump/rebound, this is an excellent point. As a last consideration, even the variation of the height of the roll center remains llimited, an important factor above all in the cornering.

This represent the first optimization that gave excellent results; it could be possible to use this model once the new components fot the next season 2018/19 have been defined.

Comments are closed.