*Vecchiato Nicolò – nicolo.vecchiato1@gmail.com*

## Introduction

The topic of this project is the kinematic analysis and optimization of a Formula Student car independent suspension. In particular, in this project, the front suspension of the 2019 University of Padua’s Formula Student car will be taken into account.

Suspension **Motion Ratio ( MR)** optimization is the main subject of this work. Motion Ratio is defined as follows:

This parameter has great influence on suspension’s characteristics and kinematic points coordinates: since in general MR isn’t constant during suspension movements (bump-rebound), spring force sensed at the wheel does not increase lineraly related to wheel travel, while assuming a costant spring rate. In fact, spring rate measured at the wheel (Wheel Rate) is defined as follows:

Therefore, spring force sensed at the wheel is equal to:

Since in general MR isn’t constant during suspension travel, it is now clear that spring force measured at the wheel is not linear related to wheel travel, assuming constant Spring Rate.

For the sake of simplicity, in this work, damper force will be neglected and only spring force will be considered relevant.

Depending on the spring force trend (at wheel), three different suspensions types can be identified:

*Linear Suspension*: in this case MR is constant during suspension travel thus even Wheel Rate is constant*Regressive Suspension*: going form full rebound to bump condition, MR increases, therefore the slope of the suspension vertical force (sensed at wheel) decreases during suspension travel; this particular type of suspension is not suited for racing purposes, indeed it increases the chances of bottoming-up the suspension (the more the suspension compresses, the more the wheel rate decreases and the easier is to bottom-up the suspension causing damage to damper and spring)*Progressive Suspension*: this is the best suspension suited for racing vehicles, indeed it reduces the chances of bottoming-up. Furthermore, if we consider the suspension natural frequency (f=sqrt(K/M)), if the mass of the vehicle increases (because of different driver, weight transfers,…) in order to keep the suspension frequency close to its design value, the stiffness has to increase: this is possible only with a progressive behaviour.

## Objective

Given the front suspension kinematic points coordinates of the MG 14.19, using the Design Evaluation Tools in ADAMS, the intent of this work is optimizing those parameters in order to get the desired trend for the spring force measured at wheel aiming at designing a progressive suspension. But first, once introduced the modelling problem, the implemented approach to define spring force at wheel trend will be discussed.

The following kinematic points’ coordinates will be subjected to optimization during the simulation:

- points 7: pull-rod attachment to upper a-arm
- point 8: pull-rod attachment to rocker
- point 11: damper attachment to chassis
- point 12: damper attachment to rocker

## The Modelling Problem

### Bodies

Once imported in ADAMS the current suspension kinematic points coordinates for the MG 14.19, the main suspension bodies are created:

- upper a-arm
- lower a-arm
- wheel
- upright
- pull-rod
- rocker
- tie-rod
- spring (using Flexible Connections menu in ADAMS)
- road (simple box with a translational motor, as we’ll see)

### Joints

Those are the joints added to the system:

- inplane_wheel_road: inplane joint that constrains the wheel to lay on the road surface
- hk_pullrod_rocker: hooke joint between pull-rod and rocker
- trv_road: translational joint (direction z), this constrains road’s movement with reference to the ground
- hk_tierod: hooke joint that constrains the tie-road to the ground (chassis)
- sph_pull_upright: spherical joint between pull-rod ad upright
- rvl_rocker: revolute joint between rocker and ground (chassis)
- rvl_wheel_upright: revolute joint between wheel and upright
- spt_tie_upright: spherical joint between tie-rod and upright
- sph_lowarm_upright: spherical joint between lower a-arm and upright
- sph_uparm_upright: spherical joint between upper a-arm and upright
- rvl_uparm: revolute joint between upper a-arm and ground (chassis), note that the revolute axis of this revolute joint passes throught the upper a-arm connection points to ground (chassis)
- rvl_lowarm: revolute joint between lower a-arm and ground (chassis), note that the revolute axis of this revolute joint passes throught the lower a-arm connection points to ground (chassis)

### Motions

Those are the inputs added to the system:

- road_motion: translational motor added to “trv_road” translational joint, this input sets road’s displacement along z-axis equal to the following step function “
*STEP(time,0,-30,5,30)*“, where 30 (mm) is the chosen wheel displacement in bump and rebound (a minimum of 25 mm wheel displacement must be chosen following FSAE Regulations) from the static condition (the static condition is the car laying on the ground; total wheel stroke equivalent to 60 mm) - wheel_rot: rotational motor added to “rvl_wheel_upright” rotational joint, this input lock wheel’s rotation

Gruebler’s count gives 0 DOF for the constrained system with the given inputs and no redundant constraint equations are accounted.

### Units and Simulation Settings

All results that follows adopt the “mmks” convention.

All performed simulations have a duration of 5 seconds, and step size of 0.1.

The chosen optimization setting are as follows:

*(NOTE*: *I would point out that many optimizations were run with lower Tolerance (1.0E-03) but many times the solver couldn’t solve the model’s equations because of locking-ups in the mechanism during the optimization. Increasing the optimization tolerance fixed those problems. Also, chosing “Centered” for Differencing slows down the optimization time but provides better solutions and less iterations)*

Here’s the front suspension simulation’s animation:

## Suspension Vertical Force Trend Choice

As previously said, the suspension vertical force trend needs to be chosen to be used afterwards as input of the optimization.

What follows are the main assumptions implemented in order to define a custom suspension vertical force trend for this particular vehicle.

### Full Damper Stroke Usage

First, those are the main hypothesis of the procedure:

- Wheel displacement is equal to zero in condition of full suspension rebound (zero suspension vertical force at the road)
- Constant spring rate (spring rate is given within a +/-5% tolerance by the constructor)
- From static condition, wheel displacement has to increase of 30 mm to reach full bump (this value has to be at least 25 mm according to FSAE regulations)
- Full bump condition reached when spring displacement is equal to the damper’s stroke

Following design choices, those are the main front suspension parameters for MG 14.19:

- Front spring rate: 52.5 N/mm
- Front spring displacement in static condition: 24 mm
- Front MR value in static condition: 1.2
- Damper stroke: 57 mm
- Damper free lenght: 200 mm

*(NOTE: car laying on the ground is considered as the “static condition”.)*

As previously said, zero wheel displacement corresponds to full suspension rebound; thus, in this condition, suspension vertical force is equal to zero because the spring is not compressed.

Since, from design choices, the desired MR value in static condition is equal to 1.2 and the desired spring displacement in this condition is equal to 24 mm, wheel displacement in static condition must be equal to:

Therefore, suspension vertical force in static condition:

In full bump condition, as assumed:

Thus, three points of the suspension vertical force curve have been defined:

Condition |
Wheel Disp. [mm] |
Vertical Force [N] |
MR |

Full Rebound | 0 | 0 | / |

Static | 28.8 | 1050 | 1.2 |

Full Bump | 58.8 | 2900.9 | 1.03 |

As said earlier, it can be seen that MR decreases going from full rebound to full bump condition: the suspension characteristic is definitely progressive.

This plot highlights the difference between our suspension designed with a constant MR (linear suspension, orange) and the same suspension designed as preaviously exlained (progressive suspension, blue):

Once established three points of the desired suspension vertical force curve, those can be interpolated with a quadratic polynomial function: such equation is the one reported in the previous image.

Finally, it is possible to import this equation in ADAMS as the optimization’s Objective: the optimization target should be changing the above kinematic points’ coordinates until the chosen vertical force trend is achived.

## Coordinates Optimization

First, for the Design Optimization Tool to work, it’s necessary to define the design variables that will be the parameters optimized during the optimization: since kinematic points’ coordinates are our simulation targets, it is clear that one design variable for each point’s coordinate must be created. In order to maintain the kinematic point’s coordinates close to the ones importend in ADAMS at the end of the optimization and avoid collisions during the suspension movement, for each design variable the “Delta” is set +/-15 (mm): the optimization will freely adjust the kinematic point’s coordinate value while ensuring this range.

### Optimization Objective

First, the optimization’s Objective must be created. Few measures are created:

- SpringDisplacement: measures the spring compression
- WheelDisplacement: evaluates wheel displacement
- MotionRatio: it’s the ratio between WheelDisplacement and SpringDisplacement
- SpringForce: calculates the spring force knowing its displacement and spring rate
- MeasuredReductedForce: its the suspension vertical force estimated dividing the SpringForce by the MotionRatio
- DesiredReductedForce: it’s the desired suspension vertical force computed importing in ADAMS the interpolated polynomial function “y=0.4292*x^2+24.097*x” where “y” is the vertical force and “x” is the wheel displacement
- Objective: this is the modulus of the difference between the DesiredReductedForce and the MeasuredReductedForce; this parameter needs to be zero during the whole simulation in order to have the desired suspension behaviour

Optimization’s Objective is then defined as follows:

Optimization’s target is to minimize the “Objective” (measure) maximum value during the whole simulation in order to achieve the desired suspension vertical force trend.

### Design Study and Design of Experiment

Before running the Optimization from the Design Evaluation Tool in ADAMS, a Design Study of each design variable was run: this consists on simulating the system by changing one design variable at a time ranging all its domain (within the Delta previously set) while evaluating the Objective’s shift during each simulation. In such a way it’s possible to highlight the most influent variables and discard the others with the purpose of speeding up the optimization reducing the number of variables and keeping only the most relevant ones.

Here you can find the summaries of all design studies: in each image the optimization’s Objective is reported against the design variable’s value while all other design variables are fixed.

Moving on, even a Design of Experiment (DOE) was performed: the approach is similar to the Design Study but now it’s possible to evaluate the Objective’s shift ranging simultaneously several design variables. It has been decided to perform one Design of Experiment for each point subjected to optimization: in each DOE, the point’s coordinates (x,y,z) will change randomly in accordance with the imposed Delta.

Here are DOE results:

As observed even in the Design Study, point 12 has no influence in the Objective’s value: hence, point 12 coordinates will not be subjected to the optimization. All other coordinates have good influence on the Objective value and therefore those’ll be optimized.

### Optimization

Finally, it’s now possible to run the optimization: as said, point 12 coordinates will not be argument of the optimization. Here’s optimization settings:

After some iterations, the optimization automatically stops.

## Analysis of the Results

Here you can find all the graphs reported in this section and the opimization’s report, including the initial and final (optimized) kinematic point’s coordinates.

I would like to note that, as expected after the optimization, the MR value in static conditions is equal to 1.2 and (except for 0-10 mm wheel displacement) decreases going from rebound to bump conditions. In addition, MR values are close to 1 during suspension’s movement wich is, by experience, a good value for a FSAE car.

Moving on, vertical suspension force has now a more progressive attitude after the optimization than before.

Lastly, as it can be seen from the first image, the Objective’s maximum value during simulation has been heavily minimized thus decreasing the gap between the desired suspension vertical force and the current curve.

## Conclusions

Starting from the MG 14.19 actual kinematic point’s coordinates, this work illustrated how it was possible to optimize those values in order to achieve a more progressive suspension attitude and thus improving the design of the suspension itself. Hopefully, this work will help University of Padua’s FS team develope new prototypes for next years.

Results are acceptable, but further developments are possible.

### Further developments

In order to reduce unwanted compliances, placing suspension kinematic points on the same plane is a good engineering practice . Actually, it’s suggested to locate on the same plane the following kinematic points:

- Point 7
- Point 8
- Point 11
- Point 12
- Point “rocker_to_frame”

Note that such plane will be the rocker’s symmetry plane (if the rocker has a simmetrical structure). Lastly, this plane must pass through point 7 and it has to be orthogonal to upper a-arm’s rotation axis (1).

With this in mind, I proceeded as follows: knowing the current kinematic point’s coordinates, I calculated the equation of the plane that passes through three of those points (certain that they lie on the right plane). In ADAMS I then created three further measures (“PT7_bond”, “PT8_bond”, “PT11_bond”), one for each point subjected to the optimization, in wich I introduced the plane’s equation with the kinematic point’s respective coordinates (x,y,z). By doing so, I could create three constraints (one for each optimized point) that force the optimization to hold the kinematic points onto the initial plane.

In the following images, it is reported the measure and optimization’s constraint for point 7, the same procedure has been implemented for points 8 and 11.

Unfortunately, when applying the constraints to the optimization I saw that the Objective did not change significantly during first optimization’s iterarions. After few of those (iterations), the optimization did not further respect the constraints and, by doing so, the optimization’s Objective was then succesfully reduced.

Here you can find a report of an optimization with constraints in wich you can see that the optimization fullfills constraints but the Objective is almost constant during the optimization.

Running a simulation with constraints and, at the same time, substantially reducing the optimization’s Objective is a further development of this work.

## Bibliography

- (1) – C. Rouelle, “
*Methodology for Formula Student suspension kinematics design*“