me555!12!05 finalreport

104
April 13, 2012 Team Number : 5 ME 555 Design Optimization: Project Report OPTIMIZATION OF A-ARM SUSPENSION AND STEERING SYSTEM Rohit Jain Shrikant Mandapaka Danvir Singh Sethi Abstract The project aims to solve one of the many optimization problems which appear while the M-Racing team is designing the Formula style car; specifically it aims to optimize the structural design of suspension and steering system. Even though such an exercise might appear to be a minor detail for a competition it is definitely worth exploring as it gives a useful insight into the analysis of systems with complex kinematics. This system has been decomposed into 3 subsystems namely, the A-arm subsystem, the pushrod-bellcrank-shocker subsystem and the steering subsystem. The mounting points of the suspension and steering systems are chosen as variables. The objective functions for the system and subsystems are decided after giving due weightage to all the other function that could qualify as objective functions; this ensures that the problem does not become too complicated. The constraints are driven by engineering judgment as well as the rules of the competition.

Upload: harshad-sarode

Post on 15-Apr-2016

24 views

Category:

Documents


0 download

DESCRIPTION

Aerospace Structure

TRANSCRIPT

Page 1: ME555!12!05 FinalReport

April 13, 2012 Team Number : 5

ME 555 Design Optimization: Project Report

OPTIMIZATION OF A-ARM SUSPENSION AND STEERING SYSTEM

Rohit Jain

Shrikant Mandapaka

Danvir Singh Sethi

Abstract The project aims to solve one of the many optimization problems which appear while the M-Racing team is designing the Formula style car; specifically it aims to optimize the structural design of suspension and steering system. Even though such an exercise might appear to be a minor detail for a competition it is definitely worth exploring as it gives a useful insight into the analysis of systems with complex kinematics. This system has been decomposed into 3 subsystems namely, the A-arm subsystem, the pushrod-bellcrank-shocker subsystem and the steering subsystem. The mounting points of the suspension and steering systems are chosen as variables. The objective functions for the system and subsystems are decided after giving due weightage to all the other function that could qualify as objective functions; this ensures that the problem does not become too complicated. The constraints are driven by engineering judgment as well as the rules of the competition.

Page 2: ME555!12!05 FinalReport

2 ד ש ר

Contents Abstract ......................................................................................................................................................... 1

1. Introduction .......................................................................................................................................... 5

2. A-Arm Subsystem ................................................................................................................................ 6

2.1. Introduction ................................................................................................................................... 6

2.2. Problem Statement ........................................................................................................................ 6

2.3. Nomenclature ................................................................................................................................ 7

2.4. Optimization Model ...................................................................................................................... 8

2.4.1. Objective Function ................................................................................................................ 8

2.4.2. Constraints ............................................................................................................................ 9

2.4.3. Design Variables and Parameters.......................................................................................... 9

2.4.4. Summary Model .................................................................................................................. 10

2.4.5. Functional Dependency Table ............................................................................................ 11

2.5. Model Analysis ........................................................................................................................... 11

2.5.1. Monotonicity Analysis ........................................................................................................ 11

2.5.2. Numerical Results ............................................................................................................... 12

2.5.2.1. 1st order Design of Experiments .................................................................................. 12

2.5.2.2. 2nd order Design of Experiments ................................................................................. 14

2.6. Optimization Study ..................................................................................................................... 15

2.6.1. Optimization Results ........................................................................................................... 15

2.6.2. Parametric Study ................................................................................................................. 16

2.7. Results and Discussion ............................................................................................................... 17

3. Pushrod-Bellcrank-Shocker Subsystem ............................................................................................. 18

3.1. Problem Statement ...................................................................................................................... 18

3.2. Nomenclature .............................................................................................................................. 18

3.3. Optimization Model .................................................................................................................... 19

3.3.1. Objective Function .............................................................................................................. 19

3.3.2. Constraints: ......................................................................................................................... 20

3.3.3. Design variables and parameters ......................................................................................... 21

3.3.4. Summary Model .................................................................................................................. 22

3.3.5. Functional Dependency Table ............................................................................................ 23

3.4. Model Analysis ........................................................................................................................... 23

3.4.1. Assumptions ........................................................................................................................ 23

3.4.2. Monotonicity Table ............................................................................................................. 24

3.4.3. First order Design of Experiments ...................................................................................... 25

Page 3: ME555!12!05 FinalReport

3 ד ש ר

3.5. Optimization Results ................................................................................................................... 26

3.5.1. Results for possible minima using different initial conditions: ........................................... 26

3.5.1.1. Interpretation of Results: ............................................................................................. 27

3.5.2. Parametric Studies............................................................................................................... 27

3.5.2.1. Parameter - 𝑿𝑺𝟒 ........................................................................................................... 27

3.5.2.2. Parameter - 𝑿𝑼𝟏 ......................................................................................................... 29

3.6. Discussion ................................................................................................................................... 31

3.6.1. Design Implications ............................................................................................................ 31

3.6.2. A possible 'Design Rule' for the solution ............................................................................ 31

4. Steering Subsystem ............................................................................................................................ 32

4.1. Introduction ................................................................................................................................. 32

4.2. Problem Statement ...................................................................................................................... 32

4.3. Nomenclature .............................................................................................................................. 34

4.4. Optimization Model .................................................................................................................... 35

4.4.1. Objective Function .............................................................................................................. 35

4.4.2. Constraints .......................................................................................................................... 37

4.4.3. Design variables and parameters ......................................................................................... 37

4.4.4. Summary Model .................................................................................................................. 38

4.4.5. Function Dependency Table ............................................................................................... 40

4.5. Model Analysis ........................................................................................................................... 41

4.5.1. Model Simplification: ......................................................................................................... 41

4.5.2. Scaling ................................................................................................................................. 41

4.5.3. Numerical Results ............................................................................................................... 41

4.5.3.1. Variation with variables .............................................................................................. 42

4.5.3.2. Variation with rack displacement ................................................................................ 43

4.5.4. Monotonicity Analysis ........................................................................................................ 44

4.6. Optimization Study ..................................................................................................................... 45

4.6.1. Preliminary Optimization Results ....................................................................................... 45

4.6.2. Optimization Results ........................................................................................................... 45

4.6.3. Parametric Study ................................................................................................................. 48

4.6.3.1. With 𝜺𝟐(bound on steering torque) ............................................................................. 48

4.6.3.2. With position of rack, xR ............................................................................................. 48

4.6.3.3. With point U1& U2 ..................................................................................................... 48

4.7. Discussion ................................................................................................................................... 49

Page 4: ME555!12!05 FinalReport

4 ד ש ר

5. System Integration.............................................................................................................................. 51

5.1. Introduction ................................................................................................................................. 51

5.2. Problem statement ....................................................................................................................... 51

5.3. Nomenclature .............................................................................................................................. 51

5.4. Optimization Model .................................................................................................................... 53

5.4.1. Objective function ............................................................................................................... 53

5.4.2. Constraints .......................................................................................................................... 53

5.4.3. Design Variables and Parameters........................................................................................ 54

5.4.4. Summary model .................................................................................................................. 54

5.5. Model Analysis ........................................................................................................................... 56

5.5.1. Model Simplification .......................................................................................................... 56

5.5.2. Numerical Results ............................................................................................................... 56

5.6. Optimization Study ..................................................................................................................... 57

5.7. Discussion ................................................................................................................................... 58

5.7.1. Result Inference .................................................................................................................. 58

5.7.2. Possible Design rules .......................................................................................................... 58

6. References .......................................................................................................................................... 60

Appendix A ................................................................................................................................................. 61

Appendix B ................................................................................................................................................. 62

Appendix C1 ............................................................................................................................................... 64

Appendix C2 ............................................................................................................................................... 77

Appendix C3 ............................................................................................................................................... 81

Appendix C4 ............................................................................................................................................... 97

Page 5: ME555!12!05 FinalReport

5 ד ש ר

1. Introduction The M-Racing team at the University of Michigan regularly participates in the Formula SAE event every year and the optimization of the suspension and steering system is a very interesting problem that is an obvious extension in the design stage of the vehicle. Since the suspension and steering geometry are normally decided by engineering judgment or unintentional manual optimization, a rough system of constraints and objective functions already exists for the problem. Even though such an exercise might appear to be a minor detail for a competition it is definitely worth exploring as it gives a useful insight into the analysis of systems with complex kinematics.

The suspension system provides the opportunity to clearly identify three subsystems, namely, the A-arm subsystem, the pushrod-bellcrank-rocker subsystem and the steering subsystem which were considered for the individual optimization problems by Rohit Jain, Shrikant Mandapaka and Danvir Singh Sethi respectively.

The objective functions are therefore either performance parameters for the system or factors that affect the performance factors. The constraints are either trivial, like no contact between 2 elements except at the point of connection and stresses being within the maximum limit specified by the yield stress of the material and the desired factor of safety; or specialized, like desired ranges of camber and caster angles of the wheel assembly, minimum desired turning radius of the vehicle.

The next natural step is to mathematically model these systems or to create meta-models for systems that do not allow for one. Parametric studies and optimization routines will follow this step to generate meaningful results in the form of a practically implementable choice of values for the design variables. The model hence created will be useful for the M-Racing team in the coming years of their design too; which is why the current model will appear to be a bit too general. Data from the M-Racing team was acquired and has been used as a basis for this project.

For all the discussion that follows the reader should refer to Figure 1.

Figure 1: System model

Page 6: ME555!12!05 FinalReport

6 ד ש ר

2. A-Arm Subsystem

2.1. Introduction The A-arms along with the pushrod-bellcrank-shocker connect the chassis to the wheel assembly. As a consequence of being the connecting links they are subjected to forces and moments whenever the vehicle accelerates or decelerates. The caster and camber angles are important parts of the wheel mounting geometry and they are evaluated using the outboard mounting points of the A-arms.

2.2. Problem Statement The wheel is connected to the chassis through the A-arms, the steering linkage and the pushrod-bellcrank-shocker mechanism. It should be remarked that all three of these mechanisms have different mounting points on the chassis which translates to multiple points about which the wheel assembly can rotate as it undergoes a bump or a droop. This particular fashion of securing the wheel assembly to the chassis can be compared to a 3D mechanism with the point of actuation lying at the point where the wheel touches the ground. Through a preliminary analysis of this mechanism, it can be concluded that, even with the steering wheel locked in its position, the wheel undergoes steering when it undergoes a bump or a droop; this behavior is termed bump steer and is undesirable as it leads to uncontrollable phenomenon while driving. The system level problem, therefore, is defined as the following: to minimize the bump steer of the front wheels subject to the constraints posed by the material, the geometry, the feasibility and the rules which govern the completion and the design of the vehicle. The subsystem under consideration in this report is the A-arm subsystem and it serves as the most critical structural link between the wheel assembly and the chassis. As mentioned earlier the outboard mounting points of the A-arms decide the camber and caster angle for the wheel. The tuning of these angles is very important in order to ensure a particular level of ride quality and drivability of the vehicle. In order to make sure that this subsystem performs its functions in the best possible way we desire that it balances the forces and moments being exchanged between the wheel assembly and the chassis without failing and without causing too much change in the camber and caster angles. In the design process it assumed that the inboard mounting points of the A-arms have been decided in advance. Hence, we are left with the choice of the outboard mounting points as variables to satisfy the goals of design. The requirements mentioned above effectively translate to the following: to maximize the stiffness of the A-arms; this translates to minimizing the deflection of any point on the A-arms. In order to ensure the integrity of the vehicle, both material and geometry constraints are imposed on the system. Material constraints take the form of maximum allowable stress in the A-arms while the geometry constraints are defined by camber and caster angles as well as the upper and lower bounds for the variables. This design problem is interesting for optimization problem by virtue of the fundamental tradeoff it poses between the stiffness, stress and geometry constraints. One might want to decrease the length of the A-arms in order to minimize the deflection and also keep the stress in check. This, however, violates the constraints of dimensions as well as the required upright geometry. Lower deflections can also be achieved by designing symmetric A-arms which again violate the constraints on camber and caster angles.

Page 7: ME555!12!05 FinalReport

7 ד ש ר

2.3. Nomenclature Table 1: Nomenclature for A-Arm Subsystem

Symbols Units Description

amax m/s2 Maximum longitudinal acceleration

diA m Inner diameter of pipes of A-arm

doA m Outer diameter of pipes of A-arm

EA Pa Young’s modulus of material of pipes of A-arm

FOS - Factor of Safety

m kg Mass of the vehicle

𝑥𝐶1 (m,m,m) Coordinate of point C1

𝑥𝐶2 (m,m,m) Coordinate of point C2

𝑥𝐶3 (m,m,m) Coordinate of point C3

𝑥𝐶4 (m,m,m) Coordinate of point C4

𝑥𝑈1 (m,m,m) Coordinate of point U1

𝑥𝑈2 (m,m,m) Coordinate of point U2

𝑥𝑊 (m,m,m) Coordinate of point W (center of wheel)

α - Weighting parameter for multi-objective optimization

δU m Maximum of δU1 and δU2

δU1 m Deflection of point U1

δU2 m Deflection of point U2

θcb degrees Camber angle

θcbmax degrees Maximum allowable camber angle

θcbmin degrees Minimum allowable camber angle

θct degrees Caster angle

θctmax degrees Maximum allowable caster angle

θctmin degrees Minimum allowable caster angle

νA - Poisson’s ratio of material of pipes of A-arm

σA1 Pa Stress in upper A-arm

σA2 Pa Stress in lower A-arm

σyA Pa Yield stress of pipes of the A-arms

VU1 - Vector space of allowable values of 𝑥𝑈1

VU2 - Vector space of allowable values of 𝑥𝑈2

Page 8: ME555!12!05 FinalReport

8 ד ש ר

2.4. Optimization Model

2.4.1. Objective Function Initially, the objective function is identified to be the maximum deflection of the A-arms. This deflection is a function of the maximum acceleration (amax) the vehicle experiences, the location of the wheel (W), the mass (m) and the geometry of the coordinates of the mounting points C1, C2, C3, C4, U1 and U2.

min𝛿𝑈 = 𝑓11(𝑥𝑈1,𝑥𝑈2; 𝑥𝐶1,𝑥𝐶2,𝑥𝐶3,𝑥𝐶4,𝑥𝑊,𝑚, 𝑎𝑚𝑎𝑥,𝑑𝑜𝐴,𝑑𝑖𝐴,𝐸𝐴, 𝜈𝐴) …(1)

This function is not expressed analytically; instead an ANSYS model capable of being driven by MATLAB is prepared. This model is utilizes BEAM189 elements and input data is provided to it through a file written by MATLAB. At the end of each simulation, the stresses and deformations of the two A-arms are written to an output file which is then loaded into MATLAB so that the data is available for further analysis. The MATLAB function chooses the maximum of these values and makes them available to fmincon as and when it is called. A plot of the results obtained at the end of a simulation is shown in Figure 2 on the next page.

It should be noted that the max function is not a continuous function and therefore optimization results, even though available for each individual simulation, are not consistent over all simulations.

Figure 2 ANSYS Results for lower A-arm at the end of a simulation

In order to get over this difficulty, the problem is posed in the form of a multi-objective optimization problem with α, a parameter, as a weighting factor for the deformations of the two A-arms. This can be represented as follows:

min𝛿𝑈 = 𝑓11(𝑥𝑈1,𝑥𝑈2; 𝑥𝐶1,𝑥𝐶2,𝑥𝐶3,𝑥𝐶4,𝑥𝑊,𝛼,𝑚,𝑎𝑚𝑎𝑥,𝑑𝑜𝐴, 𝑑𝑖𝐴,𝐸𝐴, 𝜈𝐴) …(2)

Here, 𝛿𝑈 = 𝛿𝑈1(1 − 𝛼) + 𝛿𝑈2𝛼 …(3)

It should be noted that the von Mises stress is not available as an output for the BEAM189 element in ANSYS in batch mode. However, it does provide information about the bending, transverse and axial stresses separately. It was observed that the addition of these values serves as a fairly accurate approximation of the von Mises stress. This assumption is not dangerous as it is noticed that the stresses for the system are always well below the limit set by the constraint. This assumption however poses computational difficulty as the derivative of this constraint is not continuous anymore. This can be used to explain the slight disparities in the Pareto curves.

Page 9: ME555!12!05 FinalReport

9 ד ש ר

2.4.2. Constraints The stress in the A-arm should be less than or equal to the maximum stress that the pushrod can withstand before failure. The stress is also obtained from the aforementioned ANSYS simulations which are driven by MATLAB.

𝜎𝐴1(𝑑𝑖𝐴,𝑑𝑜𝐴,𝐸𝐴, ν𝐴,𝑚,𝑎𝑚𝑎𝑥,𝑥𝑈1,𝑥𝑈2; 𝑥𝐶1,𝑥𝐶2,𝑥𝐶3,𝑥𝐶4,𝑥𝑊)− 𝜎𝑦𝐴𝐹𝑂𝑆

≤ 0 …(4)

𝜎𝐴2(𝑑𝑖𝐴,𝑑𝑜𝐴,𝐸𝐴, ν𝐴,𝑚,𝑎𝑚𝑎𝑥,𝑥𝑈1,𝑥𝑈2; 𝑥𝐶1,𝑥𝐶2,𝑥𝐶3,𝑥𝐶4,𝑥𝑊)− 𝜎𝑦𝐴𝐹𝑂𝑆

≤ 0 …(5)

The coordinates of points U1 and U2 correspondingly belong to a vector space VU1, VU2

𝑥𝑈𝑖 ∈ VUi where i∈ {1, 2} …(6)

The camber and caster angle should lie within the limits prescribed by their respective minimum and maximum values. The camber and caster angles are determined using vector algebra. Camber is the angle made by the projection of the vector from U1 to U2 on x2x3 plane with the x3 axis. Similarly, caster is the angle made by the projection of the vector from U1 to U2 on x1x3 plane with the x3 axis (Figure 1). Once the projection has been determined the angle is determined by taking a dot product with the appropriate unit vector.

�001� .��𝑥𝑈2 − 𝑥𝑈1� ��

011� × �𝑥𝑈2 − 𝑥𝑈1�× �

011��� = �𝑥𝑈2 − 𝑥𝑈1� cos𝜃𝑐𝑏 …(7)

�001� .��𝑥𝑈2 − 𝑥𝑈1� ��

101� × �𝑥𝑈2 − 𝑥𝑈1�× �

101��� = �𝑥𝑈2 − 𝑥𝑈1� cos𝜃𝑐𝑡 …(8)

The camber and caster angles lie within a specified limit which is obtained from the M-Racing team.

𝜃𝑐𝑏𝜖[𝜃𝑐𝑏𝑚𝑖𝑛,𝜃𝑐𝑏𝑚𝑎𝑥] …(9)

𝜃𝑐𝑡𝜖[𝜃𝑐𝑡𝑚𝑖𝑛,𝜃𝑐𝑡𝑚𝑎𝑥] …(10)

2.4.3. Design Variables and Parameters The design variables and parameters considered for the problem are:

Table 2: Design variables for A-Arm Subsystem

Symbols Units Description

𝑥𝑈1 (m,m,m) Coordinate of point U1

𝑥𝑈2 (m,m,m) Coordinate of point U2

Page 10: ME555!12!05 FinalReport

10 ד ש ר

Table 3: Design parameters for A-arm subsystem

Symbols Units Description

amax m/s2 Maximum longitudinal acceleration

diA m Inner diameter of pipes of A-arms

doA m Outer diameter of pipes of A-arms

EA Pa Young’s modulus of material of the A-arms

m kg Mass of the vehicle

α - Weighting parameter for multi-objective optimization

νA - Poisson’s ratio of material of A-arms

𝑥𝐶1 (m,m,m) Coordinate of point C1

𝑥𝐶2 (m,m,m) Coordinate of point C2

𝑥𝐶3 (m,m,m) Coordinate of point C3

𝑥𝐶4 (m,m,m) Coordinate of point C4

𝑥𝑊 (m,m,m) Coordinate of point W

2.4.4. Summary Model The summary of the entire A-arm subsystem optimization problem is shown below, with the primary objective function and all the inequality constraints in negative null form.

Objective function:

min𝛿𝑈 = 𝑓101(𝑥𝑈1,𝑥𝑈2; 𝑥𝐶1,𝑥𝐶2,𝑥𝐶3,𝑥𝐶4,𝑥𝑊,𝑚,𝑎𝑚𝑎𝑥,𝑑𝑜𝐴,𝑑𝑖𝐴,𝐸𝐴, 𝜈𝐴) …(11)

min𝛿𝑈 = 𝑓101(𝑥𝑈1,𝑥𝑈2; 𝑥𝐶1,𝑥𝐶2,𝑥𝐶3,𝑥𝐶4,𝑥𝑊,𝛼,𝑚,𝑎𝑚𝑎𝑥,𝑑𝑜𝐴,𝑑𝑖𝐴,𝐸𝐴, 𝜈𝐴) …(12)

with 𝛿𝑈 = 𝛿𝑈1(1 − 𝛼) + 𝛿𝑈2𝛼 …(13)

Subject to:

𝑔101: 𝜎𝐴1(𝑑𝑖𝐴,𝑑𝑜𝐴,𝐸𝐴, ν𝐴,𝑚, 𝑎𝑚𝑎𝑥,𝑚, 𝑥𝑈1, 𝑥𝑈2; 𝑥𝐶1,𝑥𝐶2,𝑥𝐶3,𝑥𝐶4,𝑥𝑊,𝑥𝐶𝐺)− 𝜎𝑦𝐴𝐹𝑂𝑆

≤ 0 …(14)

𝑔102:𝜎𝐴2(𝑑𝑖𝐴,𝑑𝑜𝐴,𝐸𝐴, ν𝐴,𝑚,𝑎𝑚𝑎𝑥,𝑚, 𝑥𝑈1, 𝑥𝑈2; 𝑥𝐶1,𝑥𝐶2,𝑥𝐶3,𝑥𝐶4,𝑥𝑊,𝑥𝐶𝐺)− 𝜎𝑦𝐴𝐹𝑂𝑆

≤ 0 …(15)

𝑔103𝑎𝑛𝑑 𝑔104:𝜃𝑐𝑏(𝑥𝑈1,𝑥𝑈2)𝜖[𝜃𝑐𝑏𝑚𝑖𝑛,𝜃𝑐𝑏𝑚𝑎𝑥] …(16)

𝑔105 𝑎𝑛𝑑 𝑔106:𝜃𝑐𝑡(𝑥𝑈1,𝑥𝑈2)𝜖[𝜃𝑐𝑡𝑚𝑖𝑛,𝜃𝑐𝑡𝑚𝑎𝑥] …(17)

𝑔107 𝑡𝑜 𝑔118: 𝑥𝑈𝑖 ∈ VUi where i∈ {1, 2} …(18)

Page 11: ME555!12!05 FinalReport

11 ד ש ר

2.4.5. Functional Dependency Table The functional dependency table is shown below:

Table 4: Functional Dependency Table, A-Arm subsystem

𝑥𝑈1 𝑥𝑈2 𝑑𝑜𝐴 𝑑𝑖𝐴 𝑚 𝑎𝑚𝑎𝑥 𝑥𝑊 𝐸𝐴 𝜈𝐴

f X X X X X X X X X

g1 X X X X X X X X X

g2 X X X

g3 X X X

g4 X X X

g5 X X X

The functional dependency table demonstrates that xW is an important parameter but since it is fixed by the competition rules, a parametric study for the same is not performed. However, the pipe diameters, doA and diA, and material properties EA and νA are considered for parametric studies and results for the same are presented in the following sections.

2.5. Model Analysis

2.5.1. Monotonicity Analysis Since the objective and constraint functions are already available, a detailed simulation was run in order to check for monotonic behavior within the upper and lower bounds specified for the variables. The results of this analysis have been presented in Table 5.

Table 5: Monotonicity Table, A-Arm subsystem

𝑥𝑈11 𝑥𝑈12 𝑥𝑈13 𝑥𝑈21 𝑥𝑈22 𝑥𝑈23

f - + -

g1 - +

g2 + -

g3 - +

g4 + - - +

g5 - + + -

Since the objective function is monotonic with respect to only 3 variables, it can be easily noticed, following from Monotonicity Principle 1, that constraints g2, g4 and g5 are potentially active. It should also be noted that the problem is well bounded since for variables xU1

1 and xU13 with respect to

which the objective function is monotonic, there exist constraints with an opposite trend. With respect to xU1

1, however, the problem could be unbounded depending on how the variables interact with each other.

Page 12: ME555!12!05 FinalReport

12 ד ש ר

2.5.2. Numerical Results The analysis models was successfully linked with and driven from MATLAB. The first and second order design of experiment studies which are presented in the following pages were done on the function 𝑓. Parametric studies have been performed with different pipe diameters as well as different materials.

The material properties have been tabulated below:

Table 6 Materials for parametric study, A-Arm subsystem

Steel 4130 Aluminium 7075

Young’s Modulus EA (GPa) 200 71.7

Poisson’s Ratio υA 0.285 0.330

Yield Stress 𝜎𝑦𝐴 (MPa) 360.6 503

It was noted that the variables differ by an order of magnitude while the constraint function values differ by up to 8 orders of magnitude. Hence, the variables and constraints were scaled to fall within the range [-1,1] and the scaled problem was solved.

2.5.2.1. 1st order Design of Experiments

-0.02 0 0.02 0.04-1.16

-1.14

-1.12x 10

8 g1(x) v/s xU11

xU11

0.48 0.5 0.52 0.54 0.56-1.16

-1.14

-1.12x 10

8 g1(x) v/s xU12

xU12

0.1 0.12 0.14 0.16-1.2

-1.15

-1.1x 10

8 g1(x) v/s xU13

xU13

0 0.02 0.04 0.06-1.1453

-1.1453

-1.1453x 10

8 g1(x) v/s xU21

xU21

0.48 0.5 0.52 0.54 0.56-1.1453

-1.1453

-1.1453x 10

8 g1(x) v/s xU22

xU22

0.25 0.3 0.35 0.4-1.14

-1.12

-1.1x 10

8 g1(x) v/s xU23

xU23

Page 13: ME555!12!05 FinalReport

13 ד ש ר

Figure 3: First order design of experiments, A-Arm subsystem

Clear trends for variables are observed from the 1st order DOE. While some variables do not affect certain constraints at all, others have a very strong influence on both the constraints and the objective function.

-0.02 0 0.02 0.04-2

0

2g2(x) v/s xU1

1

xU11

0.48 0.5 0.52 0.54 0.56-10

0

10g2(x) v/s xU1

2

xU12

0.1 0.12 0.14 0.160

1

2g2(x) v/s xU1

3

xU13

0 0.02 0.04 0.06-2

0

2g2(x) v/s xU2

1

xU21

0.48 0.5 0.52 0.54 0.56-10

0

10g2(x) v/s xU2

2

xU22

0.25 0.3 0.35 0.40

1

2g2(x) v/s xU2

3

xU23

-0.02 0 0.02 0.04-4

-2

0g3(x) v/s xU1

1

xU11

0.48 0.5 0.52 0.54 0.56-20

0

20g3(x) v/s xU1

2

xU12

0.1 0.12 0.14 0.16-4

-3

-2g3(x) v/s xU1

3

xU13

0 0.02 0.04 0.06-4

-2

0g3(x) v/s xU2

1

xU21

0.48 0.5 0.52 0.54 0.56-20

0

20g3(x) v/s xU2

2

xU22

0.25 0.3 0.35 0.4-4

-3

-2g3(x) v/s xU2

3

xU23

Page 14: ME555!12!05 FinalReport

14 ד ש ר

2.5.2.2. 2nd order Design of Experiments 90 plots were generated from the 2nd order DOE, the most interesting of which are shown:

Figure 4: Second order design of experiments, A-Arm subsystem

0.4 0.5 0.600.050.1-1.16-1.14-1.12

x 108

xU12

g1(x) v/s xU12 & xU2

1

xU21 0.4 0.5 0.60.40.50.6

-1.16-1.14-1.12

x 108

xU12

g1(x) v/s xU12 & xU2

2

xU22

0.4 0.5 0.60.250.30.35-1.15-1.1

-1.05

x 108

xU12

g1(x) v/s xU12 & xU2

3

xU23 0.1 0.15 0.2

00.050.1-1.2

-1.15-1.1

x 108

xU13

g1(x) v/s xU13 & xU2

1

xU21

0.1 0.15 0.20.40.50.6-1.2

-1.15-1.1

x 108

xU13

g1(x) v/s xU13 & xU2

2

xU22 0.10.150.20.250.30.35

-1.2-1.1

-1

x 108

xU13xU2

3

g1(x) v/s xU13 & xU2

3

0.45 0.5 0.55 0.600.050.1-20

-10

0

xU12

g3(x) v/s xU12 & xU2

1

xU21 0.4 0.5 0.6

0.450.50.55-20-10

0

xU12

g3(x) v/s xU12 & xU2

2

xU22

0.45 0.5 0.55 0.60.250.30.35-20-10

0

xU12

g3(x) v/s xU12 & xU2

3

xU23 0.1 0.15 0.2

00.05

0.1-4-3-2

xU13

g3(x) v/s xU13 & xU2

1

xU21

0.1 0.150.20.40.50.6-20

-10

0

xU13

g3(x) v/s xU13 & xU2

2

xU22 0.1 0.15 0.2

0.250.30.35-6-4-2

xU13

g3(x) v/s xU13 & xU2

3

xU23

Page 15: ME555!12!05 FinalReport

15 ד ש ר

2.6. Optimization Study

2.6.1. Optimization Results The ANSYS model was successfully linked to and driven from MATLAB, the code for which is included in Appendix C1. The functions were linked to fmincon with SQP Quasi-Newton algorithm with line search. The first initial guess of the variables is chosen from the data provided by M-Racing team. A 5cm cube was constructed about the initial guess to form the upper and lower bounds of the variables. The size of this cube is chosen keeping in mind the size restriction imposed by the hub and wheel assembly. The initial guess and the local minimizer for 𝑓 are:

𝑥𝑖𝑛𝑖𝑡𝑖𝑎𝑙 = 10−3 × [5.001 518.599 127.000 33.000 505.729 315.999]𝑇𝑚

𝑥∗ = 10−3 × [5.001 517.116 152.000 33.000 507.211 340.999]𝑇𝑚

The corresponding function values are:

𝑓𝑖𝑛𝑖𝑡𝑖𝑎𝑙 = 12.269 × 10−4𝑚

𝑓∗ = 8.324 × 10−4𝑚

Following the first run a few more simulation were run for different initial points and not surprisingly, they led us to different local minima. This is not strange since the function 𝑓 is not a well behaved continuous function. This has led us to use the other definition for the objective function as mentioned in section 1.4.1. The same algorithm was used on the new objective function for both the materials.

The results for the parametric study in α are used to generate the following Pareto curves which are shown below in figure 3:

One of the most important and straightforward conclusions from the Pareto curve is that the minimized value of the deformation of the upper A-arm is about an order of magnitude higher than that of the lower A-arm. This means that the weighting factor α must have a very small value as that puts more emphasis on the minimization of the larger, and hence more critical, of the two deformations.

Figure 5 Pareto curves for Steel (left) and Aluminum (right)

0.12

0.13

0.14

0.15

0.16

0.7 0.8 0.9 1 1.1 1.2

Defo

rmat

ion

of L

ower

A-a

rm

(mm

)

Deformation of Upper A-arm (mm)

0.32

0.42

0.52

0.62

0.72

0.82

2.20 2.70 3.20

Defo

rmat

ion

of L

ower

A-a

rm

(mm

)

Deformation of Upper A-arm (mm)

Page 16: ME555!12!05 FinalReport

16 ד ש ר

2.6.2. Parametric Study The first parametric study was done with changing the inner and outer diameters of the pipe for steel and aluminum as the material. The parametric study was done for different values of the weighting coefficient α as well but only the relevant results are shown below in the plots in Figure 6. Same initial points for the fmincon iteration were chosen and they produced results which are expected and can be explained by theory.

One should note that the parametric studies with changing pipe dimensions are important because they allow for a design which is makes full use of the available material. From the plots it is clear that the stresses for larger pipes are significantly smaller than those for smaller dimensions. This, in effect, means that the mechanism is not over-designed for smaller pipes.

On the contrary, however, smaller pipe diameters also give rise to larger deflection of the A-arms. This behavior is plotted in Figure 7.

The inner and outer diameters for which the parametric study was carried out are tabulated below:

Table 7 Outer and Inner diameters for parametric study, A-Arm Subsystem

Outer Diameter (mm) 12.7 11 9 7 6

Inner Diameter (mm) 10.922 9 7 5 4.5

20

30

40

50

60

70

80

90

5 7 9 11 13

Stre

ss (M

Pa)

Pipe Outer Diamter (mm)

Upper A-arm Stress

Lower A-arm Stress

2030405060708090

100110

5 7 9 11 13St

ress

(MPa

) Pipe Outer Diameter (mm)

Upper A-arm Stress

Lower A-arm Stress

Figure 6 Stress at optimal point v/s Pipe OD for Steel (left) and Aluminum (right) for α=0.1

Figure 7 Deformation at optimal point v/s Pipe OD for Steel (left) and Aluminum (right) for α=0.1

Page 17: ME555!12!05 FinalReport

17 ד ש ר

The above mentioned results from parametric study reflect the classic tradeoff between material usage and material deflection. While high stresses (within safety limits) are desirable, they are accompanied by large deformations which are undesirable.

Another very important observation from the parametric studies is the fact that the minimizer remains the same within an error of 0.1 mm for all the different pipe diameters for a particular choice of material and the weighting factor α. The corresponding results have been tabulated in the following table:

Table 8 Minimizer coordinates (mm)

Steel Aluminum

α = 0.1 [5.0 516.1 151.7 33.0 507.4 341.0]𝑇 [5.0 516.3 152.1 33.0 507.5 340.9]𝑇

α = 0.9 [5.0 519.1 128.0 33.0 507.2 321.7]𝑇 [5.0 517.8 131.6 33.0 507.4 323.3]𝑇

2.7. Results and Discussion Even though a lot of minimizers were obtained during the course of different parametric studies and formulations of the problem, it should be noted that the optimization exercise did indeed achieve the desired objective, namely, minimizing the deformation. By observing the difference in deformations in the upper and lower A-arms, a wise choice of focusing on the upper A-arm while closely maintaining the lower A-arm within the desired envelope, was made. Very clear trends in stress and deformation with changing pipe diameters and materials is also observed.

Even though it is hard to pinpoint a single optimizer and optimized function value, the best results were produced for the following case:

Material Steel 4130

Weighting factor α 0.1

Pipe dimensions (ID, OD) 10.922mm, 12.7mm

Initial variable value [5.0 519.9 127.0 33.0 502.7 318.0]𝑇 mm

Minimizer [5.0 516.1 151.7 33.0 507.4 341.0]𝑇 mm

Initial maximum deformation 1.578 mm

Minimized maximum deformation 0.897 mm

Percentage decrease 43.16%

Page 18: ME555!12!05 FinalReport

18 ד ש ר

3. Pushrod-Bellcrank-Shocker Subsystem

3.1. Problem Statement The Pushrod-Bellcrank-Shocker is chosen to be a sub-system, as the spring and the damper give it a dynamic characteristic, and it is advisable to separate it from the main system and analyze it, if not done, it gets difficult to solve as an optimization problem when connected to more subsystems.

The objective is to linearize the rate of loading and unloading on the spring-damper system. For this, the double derivative of the compression in the spring is minimized and made as close to zero as possible.

3.2. Nomenclature Symbols Units Description

𝑥𝑆1 (m,m,m) Coordinate of point S1

𝑥𝑆2 (m,m,m) Coordinate of point S2

𝑥𝑆3 (m,m,m) Coordinate of point S3

C N s/m Damping Coefficient of shocker

K N/m Spring Constant of shocker

lwb m Wheelbase

m kg Mass of the vehicle

rc m Cornering radius

R - Velocity Ratio (= (velocity of wheel)/(velocity of shocker))

v m/s Cornering velocity

𝑥𝐶1 (m,m,m) Coordinate of point C1

𝑥𝐶2 (m,m,m) Coordinate of point C2

𝑥𝐶3 (m,m,m) Coordinate of point C3

𝑥𝐶4 (m,m,m) Coordinate of point C4

𝑥𝐶5 (m,m,m) Coordinate of point C5

𝑥𝐶6 (m,m,m) Coordinate of point C6

𝑥𝐶𝐺 (m,m,m) Coordinate of point CG (Centre of Gravity)

𝑥𝑊 (m,m,m) Coordinate of point W (center of wheel)

𝑥𝐶 (m,m,m) Coordinate of point C (defined as a point [𝑥𝑆31; 𝑥𝑆32; 𝑥𝐶53]

𝑥𝑆4 (m,m,m) Coordinate of point S1

𝑥𝑆4 (m,m,m) Coordinate of point S2

𝑥𝑆4 (m,m,m) Coordinate of point S3

𝑥𝑆4 (m,m,m) Coordinate of point S4

δ m Compression of shocker

Page 19: ME555!12!05 FinalReport

19 ד ש ר

3.3. Optimization Model

3.3.1. Objective Function Optimum values of 𝑥𝑆1, 𝑥𝑆2, 𝑥𝑆3, 𝑥𝑆4 using them as variables were first tried to be computed, but the variable 𝑥𝑆4 was extremely erratic due to its 3-D dimensional angles forming with the push-rod, hence its effect on the objective function was neither convex, nor concave, and not monotonic either. Hence 𝑥𝑆4 was used as a parameter and the variables were 𝑥𝑆1, 𝑥𝑆2, 𝑥𝑆3.

The following differential equation for a general spring-damper system is solved for the compression in the shocker.

𝐶 dδ(𝑡)dt

+ Kδ(𝑡) = 𝐹, 𝛿(0) = 𝐴 𝐾⁄ …(19)

After solving, δ(𝑡) = 𝑒−𝐾𝑡𝐶 (𝐴−F+𝑒

𝐾𝑡𝐶 F)

𝐾 …(20)

Then a double differential of the compression is taken so as to linearize the rate of loading, i.e., minimize its acceleration as much as possible.

𝑑2δ(𝑡)𝑑𝑡2

= 𝑒−𝐾𝑡𝐶 (𝐴−𝐹)𝐾𝐶2

…(21)

Hence, objective Function: 𝑓(𝑥)min = {𝑒−𝐾𝑡𝐶 (𝐴−𝐹)𝐾

𝐶2}2

…(4)

Where, F: Force on the spring-damper when cornering (due to its own weight as well as centripetal acceleration

A: Force on the spring-damper when the vehicle is static (due to its own weight)

Since everything in the objective function is a constant at maximum cornering acceleration, except ‘F’, the objective function can be reduced to;

Reduced Objective function: 𝑓201(𝑥)min = (𝐴 − 𝐹)2 …(22)

F and A, are determined by the following method:

The perpendicular force at the wheel W (either due to its own weight or when cornering) is determined. The moment due to this force on the rod (𝑥𝐶1 − 𝑥𝐶2 ) is calculated, and then subsequently the force vector at 𝑥𝑆4 can be calculated as 𝑥𝑆4 lies in the same plane as plane (𝑥𝐶1 − 𝑥𝐶2 − 𝑥𝑈1). Then the projection of this force at 𝑥𝑆2 is calculated, and then the moment of the force at 𝑥𝑆2 on the hinge 𝑥𝑆1 can be calculated. Using this, the force at 𝑥𝑆3 is calculated, and then the projection of this force in the direction of 𝑥𝑆3 − 𝑥𝐶5 is calculated.

Page 20: ME555!12!05 FinalReport

20 ד ש ר

3.3.2. Constraints: • Inequality Constraints

𝑔201: 𝑐𝑜𝑠−1 ��𝑥𝑆2−𝑥𝑠1�.�𝑥𝑆3−𝑥𝑆1�

��𝑥𝑆2−𝑥𝑆1��𝑥𝑆3−𝑥𝑆1��� − 0.75𝜋 ≤ 0 …(23)

𝑔202:− 𝑐𝑜𝑠−1 ��𝑥𝑆2−𝑥𝑠1�.�𝑥𝑆3−𝑥𝑆1�

��𝑥𝑆2−𝑥𝑆1��𝑥𝑆3−𝑥𝑆1��� + 0.25𝜋 ≤ 0 …(24)

𝑔203 : �𝑥𝑆3 − 𝑥𝑆1� − 0.080 ≤ 0 …(25)

𝑔204 : − �𝑥𝑆3 − 𝑥𝑆1� + 0.020 ≤ 0 …(26)

𝑔205 : �𝑥𝑆2 − 𝑥𝑆1� − 0.080 ≤ 0 …(27)

𝑔206 : − �𝑥𝑆2 − 𝑥𝑆1� + 0.020 ≤ 0 …(28)

𝑔207 : �𝑥𝑆2 − 𝑥𝑆3� − 0.080 ≤ 0 …(29)

𝑔208 : − �𝑥𝑆2 − 𝑥𝑆3� + 0.020 ≤ 0 …(30)

g201(x) and g202(x) state that the angle made between the two vectors �𝑥𝑆2 − 𝑥𝑆1� and �𝑥𝑆3 − 𝑥𝑆1� lies between 45 degrees and 135 degrees.

g203(x), g204(x), g205(x), g206(x), g207(x) and g208(x) state that the lengths of all the sides of the bell-crank

�𝑥𝑆2 − 𝑥𝑠1� , �𝑥𝑆2 − 𝑥𝑆3� and �𝑥𝑆3 − 𝑥𝑆1� lie between 20 mm and 80 mm.

• Equality Constraints

ℎ201: ��𝑥𝑆4 − 𝑥𝑆2�X �𝑥𝑆2 − 𝑥𝑆1�� . �𝑥𝑆3 − 𝑥𝑆1� = 0 …(31)

ℎ202: ��𝑥𝑆2 − 𝑥𝑆1�X �𝑥𝑆3 − 𝑥𝑆1�� . �𝑥𝐶5 − 𝑥𝑆3� = 0 …(32)

ℎ203:�𝑥𝑆11−𝑥𝐶31�

�𝑥𝐶41−𝑥𝐶31�−

�𝑥𝑆12−𝑥𝐶32�

�𝑥𝐶42−𝑥𝐶32� …(33)

ℎ204:�𝑥𝑆11−𝑥𝐶31�

�𝑥𝐶41−𝑥𝐶31�−

�𝑥𝑆13−𝑥𝐶33�

�𝑥𝐶43−𝑥𝐶33� …(34)

h201(x) and h202(x) state that 𝑥𝑆1, 𝑥𝑆2, 𝑥𝑆3, 𝑥𝑆4 and 𝑥𝐶5 lie in the same plane.

h203(x) and h204(x) state that 𝑥𝑆1 lies on the line defined by �𝑥𝐶3 − 𝑥𝐶4�.

Number of Variables: 9 Number of Inequality constraints: 8 Number of Equality constraints: 4

Page 21: ME555!12!05 FinalReport

21 ד ש ר

3.3.3. Design variables and parameters Table 9: Design variables of Pushrod-Bellcrank-Shocker subsystem

Symbols Units Description

𝑥𝑆1 (m,m,m) Coordinate of point S1

𝑥𝑆2 (m,m,m) Coordinate of point S2

𝑥𝑆3 (m,m,m) Coordinate of point S3

Table 10: Parameters of Pushrod- Bellcrank-Shocker subsystem

Symbols Units Description

C N s/m Damping Coefficient of shocker

K N/m Spring Constant of shocker

lwb m Wheelbase

m kg Mass of the vehicle

rc m Cornering radius

R - Velocity Ratio (= (velocity of wheel)/(velocity of shocker))

v m/s Cornering velocity

𝑥𝐶1 (m,m,m) Coordinate of point C1

𝑥𝐶2 (m,m,m) Coordinate of point C2

𝑥𝐶3 (m,m,m) Coordinate of point C3

𝑥𝐶4 (m,m,m) Coordinate of point C4

𝑥𝐶5 (m,m,m) Coordinate of point C5

𝑥𝐶6 (m,m,m) Coordinate of point C6

𝑥𝐶𝐺 (m,m,m) Coordinate of point CG (Centre of Gravity)

𝑥𝑊 (m,m,m) Coordinate of point W (center of wheel)

𝑥𝐶 (m,m,m) Coordinate of point C (defined as a point [𝑥𝑆31; 𝑥𝑆32; 𝑥𝐶53]

𝑥𝑆4 (m,m,m) Coordinate of point S4

𝑥𝑈1 (m,m,m) Coordinate of point U1

δ m Compression of shocker

Page 22: ME555!12!05 FinalReport

22 ד ש ר

3.3.4. Summary Model Objective function: 𝑓201(𝑥)min = (𝐴 − 𝐹)2 …(35)

𝑔201: 𝑐𝑜𝑠−1 ��𝑥𝑆2−𝑥𝑠1�.�𝑥𝑆3−𝑥𝑆1�

�|�𝑥𝑆2−𝑥𝑆1��𝑥𝑆3−𝑥𝑆1�|�� − 0.75𝜋 ≤ 0 …(36)

𝑔202:− 𝑐𝑜𝑠−1 ��𝑥𝑆2−𝑥𝑠1�.�𝑥𝑆3−𝑥𝑆1�

�|�𝑥𝑆2−𝑥𝑆1��𝑥𝑆3−𝑥𝑆1�|�� + 0.25𝜋 ≤ 0 …(37)

𝑔203: �|𝑥𝑆3 − 𝑥𝑆1|� − 0.080 ≤ 0 …(38)

𝑔204 : − �|𝑥𝑆3 − 𝑥𝑆1|� + 0.020 ≤ 0 …(39)

𝑔205 : �|𝑥𝑆2 − 𝑥𝑆1|� − 0.080 ≤ 0 …(40)

𝑔206 : − �|𝑥𝑆2 − 𝑥𝑆1|� + 0.020 ≤ 0 …(41)

𝑔207 : �|𝑥𝑆2 − 𝑥𝑆3|� − 0.080 ≤ 0 …(42)

𝑔208 : − �|𝑥𝑆2 − 𝑥𝑆3|� + 0.020 ≤ 0 …(43)

ℎ201: ��𝑥𝑆4 − 𝑥𝑆2�X �𝑥𝑆2 − 𝑥𝑆1�� . �𝑥𝑆3 − 𝑥𝑆1� = 0 …(44)

ℎ202: ��𝑥𝑆2 − 𝑥𝑆1�X �𝑥𝑆3 − 𝑥𝑆1�� . �𝑥𝐶5 − 𝑥𝑆3� = 0 …(45)

ℎ203:�𝑥𝑆11−𝑥𝐶31�

�𝑥𝐶41−𝑥𝐶31�−

�𝑥𝑆12−𝑥𝐶32�

�𝑥𝐶42−𝑥𝐶32� …(46)

ℎ204:�𝑥𝑆11−𝑥𝐶31�

�𝑥𝐶41−𝑥𝐶31�−

�𝑥𝑆13−𝑥𝐶33�

�𝑥𝐶43−𝑥𝐶33� …(47)

Page 23: ME555!12!05 FinalReport

23 ד ש ר

3.3.5. Functional Dependency Table Table 11: Functional Dependency Table

Variables & Parameters

Functions

𝑥𝑆1 𝑥𝑆2 𝑥𝑆3 𝑥𝑆4 𝑥𝑈1

𝑓(𝑥)min X X X X X

𝑔1(𝑥) X X X

𝑔2(𝑥) X X X

𝑔3(𝑥) X X

𝑔4(𝑥) X X

𝑔5(𝑥) X X

𝑔6(𝑥) X X

𝑔7(𝑥) X X

𝑔8(𝑥) X X

ℎ1(𝑥) X X X X

ℎ2(𝑥) X X X

ℎ3(𝑥) X

ℎ4(𝑥) X

The functional dependency table is purely for the understanding of the reader and no results can be derived from it.

3.4. Model Analysis

3.4.1. Assumptions • 𝑥𝑆1, 𝑥𝑆2, 𝑥𝑆3, 𝑥𝑆4 and 𝑥𝐶5 lie in the same plane.

• 𝑥𝑆1, 𝑥𝑆2, 𝑥𝑆3 and 𝑥𝑆4 all lie in the design space of the A-arm, bounded below by the plane

�𝑥𝐶1 − 𝑥𝐶2 − 𝑥𝑈1�, bounded above to about 100 mm above the plane �𝑥𝐶3 − 𝑥𝐶4 − 𝑥𝑈2�,

bounded on the left to about 100 mm to the plane defined by �𝑥𝐶4 − 𝑥𝐶1 − 𝑥𝐶2�, and bounded

on the right by the plane �𝑥𝑈1 − 𝑥𝑈3 − 𝑥𝑈2�. These bounds have been defined in the lower and upper bounds in the function fmincon.

Page 24: ME555!12!05 FinalReport

24 ד ש ר

Figure 8: Bounds set for the design space

3.4.2. Monotonicity Table Table 12: Monotonicity Table

Variables & Parameters

Functions

𝑥𝑆11 𝑥𝑆12 𝑥𝑆13 𝑥𝑆21 𝑥𝑆22 𝑥𝑆23 𝑥𝑆31 𝑥𝑆32 𝑥𝑆33

𝑓(𝑋) - + -

𝑔1(𝑥) - -

𝑔2(𝑥) +

𝑔3(𝑥)

𝑔4(𝑥)

𝑔5(𝑥)

𝑔6(𝑥)

𝑔7(𝑥)

𝑔8(𝑥)

Since all of the functions used are explicit equations, monotonicity analysis cannot be used for possible simplifications and possible redundancy of contraints.

Page 25: ME555!12!05 FinalReport

25 ד ש ר

3.4.3. First order Design of Experiments

Figure 9: Design of Experiments, Pushrod-Bellcrank-Shocker subsystem

The first order DOE suggests that the objective function is well behaved within the feasible space and the algorithm should be able to converge to a local minima defined within the design feasible space.

This also suggests that the objective function is monotonic with respect to 𝑥𝑆12, 𝑥𝑆22, 𝑥𝑆32, and convex with respect to 𝑥𝑆11, 𝑥𝑆21, 𝑥𝑆23 and concave with respect to 𝑥𝑆31. The anomalies in the dependence of the objective function with respect to 𝑥𝑆33, and 𝑥𝑆13 can be attributed to the complexities of the 3-D geometrical design space.

It should be duly noted that these functions behave in this way only inside the feasible design space and nothing can be said of how they behave outside of it and neither is that of any relevance to the scope of this project.

-0.05 0 0.05 0.1 0.150

5

10x 10

8 Objective v/s xS11

xS11

0.2 0.25 0.3 0.350

5

10x 10

8 Objective v/s xS12

xS12

0.2 0.25 0.3 0.35 0.40

2

4x 10

11 Objective v/s xS13

xS13

-0.05 0 0.05 0.1 0.150

2

4x 10

9 Objective v/s xS21

xS21

0.2 0.25 0.3 0.35 0.40

5

10x 10

8 Objective v/s xS22

xS22

0.2 0.25 0.3 0.35 0.40

2

4x 10

9 Objective v/s xS23

xS23

Page 26: ME555!12!05 FinalReport

26 ד ש ר

3.5. Optimization Results The fmincon function available in MATLAB was used, using the ‘Sequential Quadratic Programming’ algorithm. (Code attached in Appendix C2)

3.5.1. Results for possible minima using different initial conditions: Three different random initial values for the variables were given as follows:

1. initial_values=[80;230;245;75;290;245;93;250;325]*1e-3; 2. initial_values=[90;225;250;86;300;250;91;270;330]*1e-3; 3. initial_values=[85;227;248;89;296;247;103;256;327]*1e-3;

They all converge to the same coordinates, as shown in Table 13:

Table 13: Optimization Results for different initial conditions

𝑥𝑆1 𝑥𝑆2 𝑥𝑆3 Functional Value

Number of Iterations

Initial Conditions (1)

[0.0252;0.259;0.27] [0.0248;0.279;0.266] 0.033;0.287;0.345] 7.73E5 31

Initial Conditions (2)

[0.0252;0.259;0.27] [0.0248;0.279;0.266] 0.033;0.287;0.345] 7.73E5 33

Initial Conditions (3)

[0.0252;0.259;0.27] [0.0248;0.279;0.266] 0.033;0.287;0.345] 7.73E5 28

The functional value of 7.73E+05 corresponds to a force of 89.17 kgs of force on the spring due the acceleration while turning.

The model was plotted in SolidWorks and the suspension system is shown in Figure 10.

Figure 10: SolidWorks model of Optimized coordinates

Page 27: ME555!12!05 FinalReport

27 ד ש ר

3.5.1.1. Interpretation of Results: • Active constraints: g3(x), g6(x), g8(x)

o The Lagrange Multipliers for the above said constraints are non-zero, and hence they’re inferred to be active. Their numerical value at the optimum is also checked and as expected, is zero.

o The active constraint g3(x) restricts the length of �𝑥𝑆1 − 𝑥𝑆3� to 80 mm and the algorithm was tending to increasing this value of the length of the bellcrank arm to reduce the functional value and proceed towards the global minimum, but the constraint was applied to keep the length of this bellcrank arm within the design space.

o The active constraint g6(x) states that the length of �𝑥𝑆1 − 𝑥𝑆2� cannot be lesser than 20mm and it is predicted that the algorithm would proceed to make this length zero in order to proceed towards the global minima, which cannot be allowed in the design space.

o The active constraint g8(x) restricts the length of �𝑥𝑆2 − 𝑥𝑆3� to 80 mm and the algorithm was tending to increasing this value of the length of the bellcrank arm to reduce the functional value and proceed towards the global minimum, but the constraint was applied to keep the length of this bellcrank arm within the design space.

• Gradient of the function at the optimum is not equal to zero o This suggests that the function is not at its global optimum at the minimum values found

by the algorithm, and this is in perfect conjunction with the fact that some of the constraints are active. Hence, it is concluded that within the feasible space, the point found by the algorithm is the boundary optima within that feasible space.

• All the initial conditions converge to the same solution suggesting that it is the global minima within the feasible design space.

3.5.2. Parametric Studies Two parametric studies using 𝑥𝑆4 and 𝑥𝑈1 as parameters was performed.

3.5.2.1. Parameter - 𝒙𝑺𝟒 • First parametric study

Seven points on the plane �𝑥𝐶1 − 𝑥𝐶2 −

𝑥𝑈1� are chosen as follows. The logic behind choosing points was to choose

points which go toward the rod �𝑥𝐶1 −

𝑥𝐶2� and also across the line joining 𝑥𝑈1

and midpoint of �𝑥𝐶1 − 𝑥𝐶2�.

The results are as follows for same initial conditions: initial_values=[100;250;265;100;270;280;100;260;310]*1e-3;

Figure 11: Variation of XS4

Page 28: ME555!12!05 FinalReport

28 ד ש ר

Table 14: Optimization results by varying the parameter XS4

𝑥𝑆1 𝑥𝑆2 𝑥𝑆3 Functional Value

Number of Iterations

𝑥𝑆4 = [0.0105;0.4254;0.126]

[0.233; 0.27; 0.269]

[0.233; 0.288; 0.2616]

[0.174; 0.31; 0.232]

2.04E6 19

𝑥𝑆4 = [0.0298;0.38;0.1266]

[0.176; 0.267; 0.269]

[0.176; 0.284; 0.260]

[0.233; 0.26; 0.308]

1.47E6 22

𝑥𝑆4 = [0.0463;0.3424;0.127]

[0.012; 0.258; 0.270]

[0.012; 0.278; 0.263]

[-0.013; 0.288; 0.34]

9.98E4 37

𝑥𝑆4 = [0.062;0.307;0.1271]

[0.134; 0.264; 0.269]

[0.135; 0.281; 0.257]

[0.176; 0.27; 0.326]

1.84E5 26

𝑥𝑆4 = [0.075;0.276;0.1273]

[0.0487; 0.261; 0.270]

[0.047; 0.2755; 0.283]

[0.034; 0.26; 0.349]

2.45E6 22

𝑥𝑆4 = [0.075;0.276;0.1273]

[0.04071; 0.2564; 0.270]

[-0.03958; 0.274; 0.260]

[-0.09; 0.26; 0.322]

1.42E7 28

𝑥𝑆4 = [0.107;0.2027;0.1278]

[0.04021; 0.259; 0.270]

[0.0138; 0.2786; 0.265]

[-0.027; 0.28; 0.334]

9.5E6 33

Interpretation of Results: • Interpretation of Functional Value in each case: Since the objective is to minimize (𝐴 − 𝐹)2 ,

the algorithm will try to bring ‘F’, which is the force on the spring due to acceleration as close to ‘A’ (Force on the spring at zero acceleration), as possible. The large functional values are actually just about 100-120 kgs of force on the spring due to the acceleration.

• Prediction of Force on Spring when moving away from 𝑥𝑈1 towards �𝑥𝐶1 − 𝑥𝐶2�: Since the force on the spring is a function of the force transmitted through the pushrod, which is a function of cos(α), where α is the angle between the perpendicular force at 𝑥𝑆4 and the force that is

transmitted through the pushrod �𝑥𝑆4 − 𝑥𝑆2�.

Hence, it is expected that the functional value to increase as α moves towards 0, and then decreases when ‘α’ starts increasing in the negative direction.

And plotting the results agrees with the above said phenomenon.

As we go from from XU1 and towards the line defined by XC1-XC2

Figure 12: Diagram showing alpha defined in

the explanation

Page 29: ME555!12!05 FinalReport

29 ד ש ר

The dip in the functional value is an anomaly which is probably due to the unpredictive nature of 𝑥𝑆4.

This unpredictive nature of 𝑥𝑆4 is due to the combined effect of the dependence of α, the dependence on the perpendicular distance between the

point and the rod �𝑥𝐶1 − 𝑥𝐶2�, and also the angles made by the pushrod with the perpendicular plane between

�𝑥𝐶5 − 𝑥𝑆4� in the 3-D geometry.

• The gradient of the function at the boundary optima is not zero, suggesting the fact that there are some active constraints, stopping the algorithm to proceed to the global optimum.

• The boundary optimum’s for each parametric study are different for the same initial conditions as they converge to different boundary optimum and the plane in which the algorithm has to work with changes with the change in the parameter.

3.5.2.2. Parameter - 𝒙𝑼𝟏

Seven points for 𝑥𝑈1 on the line �𝑥𝑈1 − 𝑥𝑈2� were chosen as shown in Figure 14. The results are as follows for same initial conditions: initial_values=[100;250;265;100;270;280;100;260;310]*1e-3;

Figure 14: Variation of coordinates of U1

-5.00E+06

0.00E+00

5.00E+06

1.00E+07

1.50E+07

2.00E+07Functiona

l Values Coordinates of XS4 as we move away from XC1-XC2

towards XU1 ------>

Figure 13: Functional Values with respect to change in XS4

Page 30: ME555!12!05 FinalReport

30 ד ש ר

Table 15: Optimization results by varying the parameter XU1

𝑥𝑆1 𝑥𝑆2 𝑥𝑆3 Functional Value

Number of Iterations

𝑥𝑈1 = [0.0105;0.4254;0.126]

[0.115; 0.264; 0.269]

[0. 116; 0.283; 0.263]

[0.053; 0.27; 0.22]

2.55E5 49

𝑥𝑈1 = [0.0298;0.38;0.1266]

[0.025; 0.26; 0.27]

[0.025; 0.28; 0.266]

[0.017; 0.25; 0.19]

7.49E5 38

𝑥𝑈1 = [0.0463;0.3424;0.127]

[0.025; 0.26; 0.27]

[0.025; 0.28; 0.265]

[0.017; 0.25; 0.19]

7.49E5 45

𝑥𝑈1 = [0.062;0.307;0.1271]

[-0.023; 0.257; 0.27]

[-0.025; 0.276; 0.265]

[0.033; 0.29; 0.171]

9.91E5 27

𝑥𝑈1 = [0.075;0.276;0.1273]

[0.025; 0.26; 0.270]

[0.025; 0.28; 0.266]

[0.033; 0.287; 0.344]

1.02E6 42

𝑥𝑈1 = [0.075;0.276;0.1273]

[0.233; 0.27; 0.27]

[0.233; 0.288; 0.261]

[0.174; 0.31; 0.232]

2.04E6 27

𝑥𝑈1 = [0.107;0.2027;0.1278]

[0.235; 0.27; 0.270]

[0.233; 0.288; 0.265]

[0.174; 0.31; 0.232]

2.04E6 25

Interpretation of Results: • Interpretation of Functional Value in each case:

Since the objective is to minimize (𝐴 − 𝐹)2 , the algorithm will try to bring ‘F’, which is the force on the spring due to acceleration as close to ‘A’ (Force on the spring at zero acceleration), as possible. The large functional values are actually just about 100-120 kgs of force on the spring due to the acceleration.

• Prediction of Force on Spring when moving away from 𝑥𝑈1 towards 𝑥𝑈2: Since the force on the spring is a function of the force transmitted through the pushrod, which is a function of cos(β), where β is the angle between the

perpendicular force at 𝑥𝑆4 and the force that is transmitted through the pushrod �𝑥𝑆4 − 𝑥𝑆2�.

o The functional value is expected to increase as we approach 𝑥𝑈2 from 𝑥𝑈1, and this is shown by the below graph.

• The gradient of the function at the boundary optima is not zero, suggesting the fact that there are some active constraints, stopping the algorithm to proceed to the global optimum.

As we go away from XU1 and towards XU2

Figure 15: Definition of β

Page 31: ME555!12!05 FinalReport

31 ד ש ר

Figure 16: Functional Values with respect to change in XU1

• The boundary optimum’s for each parametric study are different for the same initial conditions as they converge to different local optimum and the plane in which the algorithm has to work with changes with the change in the parameter.

3.6. Discussion

3.6.1. Design Implications Designing a shocker-damper system where the rate of loading is linearized would mean that we try to minimize the force on the spring-damper system due to the acceleration while cornering. This could lead to lot of stresses on the pushrod and the pushrod plate. This is not advisable to do so from an engineering perspective when designing such a system.

Another important point to note is that functional values of the order of 105 correspond to about 80-120 kgs of force on the spring-damper system. Thus, such functional values should not be considered as impractical.

3.6.2. A possible 'Design Rule' for the solution A possible design rule that is very much plausible is that, in a given plane of 𝑥𝑆1, 𝑥𝑆2, 𝑥𝑆3, 𝑥𝑆4 and 𝑥𝐶5, the length of (𝑥𝑆1 − 𝑥𝑆2) should be reduced as much as possible, and the length of (𝑥𝑆1 − 𝑥𝑆3) should be increased as much as possible. After careful analysis of the objective function, this trend has been seen in several simulations.

These results are very much practical if you're looking to reduce the force on the shocker due to the acceleration while cornering. But in the design sense, building such a system would be impractical.

The practical constraints on the system that limit the reduction of the objective function further are the lengths of (𝑥𝑆1 − 𝑥𝑆2) & (𝑥𝑆1 − 𝑥𝑆3), and plausible 'Design Rule' could be derived as mentioned above.

A stress analysis on the rods was not done in the scope of this project. An interesting future project would be to include the stresses in the model, and then limit the stresses in the rods to a certain value, and then minimize the amount of force absorbed by the shocker-damper system. This kind of a study would give a more usable model, and by usable, I mean in the engineering industry.

0.00E+00

5.00E+05

1.00E+06

1.50E+06

2.00E+06

2.50E+06Functional

Values

As we go from XU2 towards XU1 ---->

Page 32: ME555!12!05 FinalReport

32 ד ש ר

4. Steering Subsystem

4.1. Introduction The steering subsystem of a Formula style car is an interesting optimization problem due to its interaction with the other subsystems and conflicting design parameters. The rack-and-pinion tie-rod mechanical steering configuration has been analyzed through this project, the model of which is shown in Figure 17. An important design aspect of the steering system is the steering torque required from the driver side for steering the vehicle. Other important considerations are that the steering geometry should be designed such that the vehicle does not skid when taking the turn and the steering is able to achieve the desired minimum turning radius of the vehicle. Thus the combination of these different design requirements in the design of the steering geometry has been analyzed here.

Figure 17: System Model

4.2. Problem Statement A very important aspect of the performance of the steering subsystem is the torque required for steering the vehicle. It is desired that the steering torque is not too high but neither too low because we want that the driver can get some feedback through the steering wheel about the steer of the vehicle, for a mechanical steering system based on the rack and pinion geometry. A very low steering torque can lead to problems as small perturbations or disturbances in the steering wheel position can lead to sudden changes in the angle of steer of the vehicle, besides providing no feedback too the driver. Thus it is desired that the steering torque is as close as possible to the desired steering torque, which is decided according to the tradeoff between the feedback to the driver and the effort in steering the vehicle. Besides trying to achieve a steering torque as close as possible to the desired steering torque, it is also required that the steering geometry is as close as possible to the Ackermann geometry. The Ackermann steering geometry is the arrangement of the linkages to avoid slip of the tires when negotiating a turn.

Page 33: ME555!12!05 FinalReport

33 ד ש ר

This geometric configuration dictates that all axes of rotation of all the wheels of the vehicle pass through a common center point and the inside front wheel is turned more than the outside front wheel. Thus the tradeoff between the two aforementioned objective functions motivate the optimization study, as the optimal solution from one of the objectives might be bad for the other one. In order to minimize the steering torque the steering arm on the upright needs to be as far away from the pivot axis of the upright so that the force required for the steering through the rack is minimized. This is practically not possible as it affects the Ackermann condition as well as it violates the size constraints and also the tie rod is inclined at an angle to the rack geometry which actually increases the longitudinal force that is required from the rack and subsequently the steering torque from the driver end. Thus we wish to analyze this tradeoff in this optimization problem. From the basic Ackermann geometry configuration, it is expected that if no constraint of the steering torque was considered, then the optimization would lead to a configuration similar to top image in Figure 18, in which the tie rod is parallel to the rack and point U3 of the upright is far from the uptight axis. But due to this conflicting requirement, in order to reduce the steering torque, the tie rod moves out from the line of the rack as the point U3 is now closer to the upright axis, which decreases the force required from the rack to move the upright, as shown in bottom image of Figure 18. But this configuration is not similar to the pure Ackermann steering geometry and the point of rotation of the vehicle now varies with the rack displacement. But in order to simplify this multi-objective optimization problem, instead of considering the Ackermann steering parameter as a variable, it would be considered as a parameter and we would try to keep it as close as possible to pure Ackermann geometry by considering small bounds around it, in the form of constraints and considering the difference between the steering torque and the desired steering torque as the objective function, or vice versa, as explained in the succeeding sections. In this subsystem, we would see from the functions that the objective function is dependent on the coordinates of the points U1 and U2 as well, which were the variables of the optimization problem in the A-Arm subsystem optimization problem. Thus the coordinates of these points will be considered as parameters for the present optimization problem and parametric study can be performed on them. It should also be noted that as the wheel angle is changed, the torque required for steering the vehicle varies and how close the geometry is to pure Ackermann geometry also changes. Thus a parametric study on the steering angle would also be performed.

Figure 18: Steering system

Upright

Tie rod Rack

Page 34: ME555!12!05 FinalReport

34 ד ש ר

4.3. Nomenclature Table 16: Nomenclature for the Steering subsystem

Symbols Units Description

diT m Inner diameter of pipes of tie rod

doT m Outer diameter of pipes of tie rod

dh m Diameter of wheel hub

dP m Diameter of pinion

dT m Diameter of Steering wheel

ET Pa Young’s modulus of material of the tie rod

FOS - Factor of Safety

lack m Distance from Pure Ackermann

lR m Length of rack

lti m Toe In

ltid m Desired toe In

ltw m Track Width

lwb m Wheelbase

m kg Mass of the vehicle

p (m,m) Dimension of wheel patch in contact with ground

Rmin m Minimum radius of rotation of vehicle

Rmind m Minimum radius of rotation desired

ww m Width of wheel

xlimit m Position of rack from which Ackermann parameter is computed

xR m Displacement of rack

𝑥𝐶6 (m,m,m) Coordinate of point C6

𝑥𝐶𝐺 (m,m,m) Coordinate of point CG (Centre of Gravity)

𝑥𝑇1 (m,m,m) Coordinate of point T1

𝑥𝑈1 (m,m,m) Coordinate of point U1

𝑥𝑈2 (m,m,m) Coordinate of point U2

𝑥𝑈3 (m,m,m) Coordinate of point U3

𝑥𝑊 (m,m,m) Coordinate of point W (Center of wheel)

θcb radians Camber angle

θcbmax radians Maximum allowable camber angle

θcbmin radians Minimum allowable camber angle

θct radians Caster angle

θctmax radians Maximum allowable caster angle

Page 35: ME555!12!05 FinalReport

35 ד ש ר

θctmin radians Minimum allowable caster angle

θS radians Steering Angle

θSmax radians Maximum allowable steering Angle

θSmin radians Minimum allowable steering Angle

φti radians Angle representing the toe in of the wheels

𝜀1 m Bound on Ackermann parameter constraint

𝜀2 N2m2 Bound on Steering Torque constraint

𝜀3 m Bound on coordinate of T1

µ - Coefficient of friction

νT - Poisson’s ratio of material of tie rod

σT Pa Stress in the tie rod

σyT Pa Yield stress of the tie rod

τT Nm Steering Torque

τTd Nm Desired steering torque

VU3 - Vector space of allowable values of 𝑥𝑈3

4.4. Optimization Model

4.4.1. Objective Function In the steering subsystem, it is desired to achieve a geometry in which the torque required to steer the vehicle using the steering wheel is as close as possible to the desired steering torque and how close the steering geometry is to the pure Ackermann geometry for a particular angle of steer. Thus we potentially have two objective functions, namely the square of the difference of the steering torque and the desired steering torque, and the Ackermann parameter lack which is a measure of the how close the geometry is to the pure Ackermann geometry. We should note that the steering geometry is not exactly the same as the pure Ackermann geometry due to an additional link, namely the tie rod, which is pivoted at one end with the rack and the other end with the upright. Thus the point of intersection of the axes of the wheels doesn’t lie on the rear axis of the vehicle and also changes with the angle of steer. Thus with this configuration, it is very difficult to achieve a configuration for which the Ackermann parameter is small for all angles of steer.

Due to the tire slip and flexing or twisting of the tire contact patch because of dynamic toe during steering, the tire is able to deform to a slip angle which allows the vehicle to maintain control and prevent slipping when taking turns [1], [2]. This leads to a big improvement in the handling of the vehicle and the vehicle is able to maintain its grip even if the Ackermann steering geometry is not maintained at low steering angles and high speeds. Therefore, the Ackermann steering geometry characteristics are important for a Formula racing car only at high angle of steer and low speeds. Thus the Ackermann parameter lack is important only at large steering angle.

The steering torque is computed for a particular angle of the wheel by first computing the coordinates of the different links of the steering mechanism through kinetic analysis of the 3-D mechanism. Then the torque due to the friction force at the wheel, acting on the axis of the upright, is estimated by integrating the moment arm vector of the friction force at each point of the tire contact patch. Subsequently, using

Page 36: ME555!12!05 FinalReport

36 ד ש ר

force and moment balance equations in 3-D, the force required to move the rack is calculated which is then used to calculate the torque that the user has to exert at the steering wheel, through the pinion.

All the above mentioned calculations for the mathematical model are performed using 3-D vectors in MATLAB.

The Ackermann parameter lack represents how close the geometry is to the pure Ackermann geometry for a particular angle of steer. This parameter can represented as the distance between the center of rotation w.r.t. the orientation of the front wheels and the center of the rear axle, as depicted in Figure 19. This parameter is calculated by finding the point of intersection of the axis of the wheels, which are at different angles. This parameter can be computed for different steer angles, and this steer angle was varied for different analysis performed, as described in the subsequent chapters.

Figure 19: Ackermann parameter, lack

Based on the above discussion, two models were considered:

Model I: In this case, the steering torque is treated as the objective function and the Ackermann parameter with small bounds around it is treated as constraints:

min(𝜏𝑇2 − 𝜏𝑇𝑑2)2 = 𝑓301 (𝑥𝑈3,𝑥𝑇1,𝜑𝑡𝑖; 𝑥𝑅 , 𝑥𝑈1,𝑥𝑈2, 𝑥𝑊,𝑥𝐶6 , 𝑙𝑅 , 𝑙𝑡𝑤,𝑑𝑃 ,𝑑𝑇 ,𝑝,𝑤𝑤 ,𝜇,𝑚, 𝜏𝑇𝑑)

…(48)

Model II: In this case, the Ackermann parameter is treated as the objective function and the steering torque with small bounds around it is treated as constraint.

min 𝑐(𝑙𝑎𝑐𝑘)2 = 𝑓302 (𝑥𝑈3,𝑥𝑇1; 𝑥𝑅 , 𝑥𝑈1,𝑥𝑈2, 𝑥𝑈3, 𝑥𝑊,𝑥𝐶6,𝑥𝑇1, 𝑙𝑡𝑤, 𝑙𝑤𝑏 ) …(49)

Here the parameter c was chosen in order to improve the sensitivity of the function and was chosen to be c=1000 for the problem.

lack COR

Page 37: ME555!12!05 FinalReport

37 ד ש ר

4.4.2. Constraints As described in Section 4.4.1, two cases have been considered:

Model I: In this case, the steering torque is treated as the objective function and the Ackermann parameter with small bounds around it is treated as constraints:

𝜀1 < 𝑙𝑎𝑐𝑘(𝑥𝑈1, 𝑥𝑈2,𝑥𝑅 , 𝑥𝑙𝑖𝑚𝑖𝑡,𝑥𝑈3, 𝑥𝑊,𝑥𝐶6, 𝑥𝑇1, 𝑙𝑡𝑤, 𝑙𝑤𝑏 ) < 𝜀1 …(50)

Model II: In this model, the Ackermann parameter is treated as the objective function and the steering torque with small bounds around it is treated as constraint.

𝜀2 < (𝜏𝑇2 �𝑥𝑈3,𝑥𝑇1,𝜑𝑡𝑖; 𝑥𝑅 , 𝑥𝑈1, 𝑥𝑈2,𝑥𝑊, 𝑥𝐶6 , 𝑙𝑅 , 𝑙𝑡𝑤 ,𝑑𝑃 ,𝑑𝑇 , 𝑝,𝑤𝑤 ,𝜇,𝑚�− 𝜏𝑇𝑑2)2 < 𝜀2 ...(51)

Besides the aforementioned constraint, the other constraints include the stress limits, toe in and the minimum turning radius of the vehicle.

The stress in both the tie rods should be less than or equal to the maximum stress that the tie rod pipe can withstand before failure. The force in the tie-rod was computed by performing the force and moment balance for the steering torque computation. The stress was computed for two models, when the vehicle is being steered in both directions. Thus we actually have 4 stress constraints, as stress in both the tie rods for both the models considered.

𝜎𝑇,𝑚𝑎𝑥( 𝑑𝑖𝑇 ,𝑑𝑜𝑇 , 𝑥𝐶6, 𝑥𝑈1, 𝑥𝑈2,𝑥𝑈3, 𝑥𝑇1, 𝑥𝑊,𝑥𝑅 , 𝜇,𝑚,𝑝,𝜃𝑐𝑏 ,𝜃𝑐𝑡, 𝐸𝑇 , 𝜈𝑇) − 𝜎𝑦𝑇𝐹𝑂𝑆

≤ 0 …(52)

The minimum radius of turning of the vehicle should be less than the minimum desired radius. 𝑅𝑚𝑖𝑛 � 𝑥𝑈1, 𝑥𝑈2,𝑥𝑈3, 𝑥𝑊,𝑥𝐶6, 𝑥𝑇1,𝑥𝑅 , 𝑙𝑡𝑤, 𝑙𝑤𝑏� − 𝑅𝑚𝑖𝑛,𝑑 ≤ 0 …(53)

All the above mentioned constraints are non-linear constraints which cannot be explicitly written and are calculated analytically in MATLAB.

The coordinates of points U3 and T1 should belong to a vector space VU3 and VT1 as we would consider

the points to lie within a 3D rectangular space within which we would like to find the optimal points. These constraints have been considered as bounds (lower and upper bounds) on the variables.

𝑥𝑈3 ∈ VU3 …(54)

𝑥𝑇11 ∈ 𝑥𝑇1𝑛𝑜𝑚1 ± 𝜀3 …(55)

𝑥𝑇12 = 𝑥𝐶62 …(56)

𝑥𝑇13 = 𝑥𝐶63 …(57)

4.4.3. Design variables and parameters Table 17: Design variables for steering subsystem

Symbols Units Description

𝑥𝑇1 (m,m,m) Coordinate of point T1

𝑥𝑈3 (m,m,m) Coordinate of point U3

Page 38: ME555!12!05 FinalReport

38 ד ש ר

Table 18: Parameters for steering subsystem

Symbols Units Description

dP m Diameter of pinion

dT m Diameter of Steering wheel

lR m Length of rack

ltw m Track Width

lwb m Wheelbase

m kg Mass of the vehicle

p (m,m) Dimension of wheel patch in contact with ground

ww m Width of wheel

xR m Displacement of rack

𝑥𝐶6 (m,m,m) Coordinate of point C6

𝑥𝑈1 (m,m,m) Coordinate of point U1

𝑥𝑈2 (m,m,m) Coordinate of point U2

𝑥𝑊 (m,m,m) Coordinate of point W (Center of wheel)

𝜀1 m Bound on Ackermann parameter constraint

𝜀2 N2m2 Bound on Steering Torque constraint

𝜀3 m Bound on coordinate of T1

µ - Coefficient of friction

τTd Nm Desired steering torque

4.4.4. Summary Model Model I:

Objective function:

min(𝜏𝑇2 − 𝜏𝑇𝑑2)2 = 𝑓301 �𝑥𝑈3,𝑥𝑇1; 𝑥𝑅 , 𝑥𝑈1, 𝑥𝑈2,𝑥𝑊, 𝑥𝐶6 , 𝑙𝑅 , 𝑙𝑡𝑤 ,𝑑𝑃 ,𝑑𝑇 , 𝑝,𝑤𝑤 ,𝜇,𝑚, 𝜏𝑇𝑑�

… (58)

Subject to:

𝑔301: 𝑙𝑎𝑐𝑘(𝑥𝑅 ,𝑥𝑙𝑖𝑚𝑖𝑡, 𝑥𝑈1,𝑥𝑈2, 𝑥𝑈3,𝑥𝑊, 𝑥𝐶6, 𝑥𝑇1, 𝑙𝑡𝑤, 𝑙𝑤𝑏 )− 𝜀1 ≤ 0 …(59)

𝑔302: 𝜀1 − 𝑙𝑎𝑐𝑘(𝑥𝑅,𝑥𝑙𝑖𝑚𝑖𝑡 ,𝑥𝑈1,𝑥𝑈2, 𝑥𝑈3, 𝑥𝑊,𝑥𝐶6, 𝑥𝑇1, 𝑙𝑡𝑤 , 𝑙𝑤𝑏 ) ≤ 0 …(60)

𝑔303 𝑡𝑜 𝑔306 ∶ 𝜎𝑇,𝑚𝑎𝑥( 𝑑𝑖𝑇 ,𝑑𝑜𝑇 , 𝑥𝐶6, 𝑥𝑈1,𝑥𝑈2, 𝑥𝑈3,𝑥𝑇1, 𝑥𝑊,𝑥𝑅 , 𝜇,𝑚,𝑝,𝜑𝑡𝑖,𝜃𝑐𝑏 ,𝜃𝑐𝑡, 𝐸𝑇 , 𝜈𝑇) − 𝜎𝑦𝑇𝐹𝑂𝑆

≤ 0 …(61)

𝑔307: 𝑅𝑚𝑖𝑛 � 𝑥𝑈1,𝑥𝑈2, 𝑥𝑈3,𝑥𝑊, 𝑥𝐶6, 𝑥𝑇1,𝜑𝑡𝑖, 𝑥𝑅 , 𝑙𝑡𝑖, 𝑙𝑡𝑤, 𝑙𝑤𝑏� − 𝑅𝑚𝑖𝑛,𝑑 ≤ 0 …(62)

Page 39: ME555!12!05 FinalReport

39 ד ש ר

𝑔308 𝑡𝑜 𝑔313: 𝑥𝑈3 ∈ VU3 …(63)

𝑔314; 𝑥𝑇1𝑛𝑜𝑚1 − 𝜀3 − 𝑥𝑇11 ≤ 0 …(64)

𝑔315: 𝑥𝑇11 − 𝑥𝑇1𝑛𝑜𝑚1 − 𝜀3 ≤ 0 …(65)

ℎ301: 𝑥𝑇12 − 𝑥𝐶62 = 0 …(66)

ℎ302: 𝑥𝑇13 − 𝑥𝐶63 = 0 …(67)

Number of variables: 6

Number of inequality constraints: 15

Number of equality constraints:2

Model II:

Objective function:

min 𝑐(𝑙𝑎𝑐𝑘)2 = 𝑓302 (𝑥𝑈3,𝑥𝑇1; 𝑥𝑅 , 𝑥𝑈1,𝑥𝑈2, 𝑥𝑈3, 𝑥𝑊,𝑥𝐶6,𝑥𝑇1, 𝑙𝑡𝑤, 𝑙𝑤𝑏 ) …(68)

Subject to:

g301′ : (𝜏𝑇2 �𝑥𝑈3, 𝑥𝑇1,𝜑𝑡𝑖; 𝑥𝑅 ,𝑥𝑈1, 𝑥𝑈2, 𝑥𝑊,𝑥𝐶6 , 𝑙𝑅 , 𝑙𝑡𝑤,𝑑𝑃 ,𝑑𝑇 ,𝑝,𝑤𝑤 ,𝜇,𝑚� − 𝜏𝑇𝑑2)2 − 𝜀2 ≤ 0

…(69)

g302′ : 𝜀2 − (𝜏𝑇2 �𝑥𝑈3, 𝑥𝑇1; 𝑥𝑅, 𝑥𝑈1, 𝑥𝑈2, 𝑥𝑊, 𝑥𝐶6 , 𝑙𝑅, 𝑙𝑡𝑤, 𝑑𝑃, 𝑑𝑇, 𝑝,𝑤𝑤, 𝜇,𝑚� − 𝜏𝑇𝑑2)

2≤ 0

…(70)

𝑔303 𝑡𝑜 𝑔306 ∶ 𝜎𝑇,𝑚𝑎𝑥( 𝑑𝑖𝑇 ,𝑑𝑜𝑇 , 𝑥𝐶6, 𝑥𝑈1,𝑥𝑈2, 𝑥𝑈3,𝑥𝑇1, 𝑥𝑊,𝑥𝑅 , 𝜇,𝑚,𝑝,𝜑𝑡𝑖,𝜃𝑐𝑏 ,𝜃𝑐𝑡, 𝐸𝑇 , 𝜈𝑇) − 𝜎𝑦𝑇𝐹𝑂𝑆

≤ 0 …(71)

𝑔307: 𝑅𝑚𝑖𝑛 � 𝑥𝑈1,𝑥𝑈2, 𝑥𝑈3,𝑥𝑊, 𝑥𝐶6, 𝑥𝑇1,𝜑𝑡𝑖, 𝑥𝑅 , 𝑙𝑡𝑖, 𝑙𝑡𝑤, 𝑙𝑤𝑏� − 𝑅𝑚𝑖𝑛,𝑑 ≤ 0 …(72)

𝑔308 𝑡𝑜 𝑔313: 𝑥𝑈3 ∈ VU3 …(73)

𝑔314; 𝑥𝑇1𝑛𝑜𝑚1 − 𝜀3 − 𝑥𝑇11 ≤ 0 …(74)

𝑔315: 𝑥𝑇11 − 𝑥𝑇1𝑛𝑜𝑚1 − 𝜀3 ≤ 0 …(75)

ℎ301: 𝑥𝑇12 − 𝑥𝐶62 = 0 …(76)

ℎ302: 𝑥𝑇13 − 𝑥𝐶63 = 0 …(77)

Number of variables: 6

Number of inequality constraints: 15

Number of equality constraints:2

Page 40: ME555!12!05 FinalReport

40 ד ש ר

4.4.5. Function Dependency Table Table 19 shows the function dependency of the objective function and constraint functions. In this table, not all the parameters of the function have been shown. Only those parameters which are of interest and would be varied to perform the parametric study have been listed in the table.

Table 19: Function Dependency Table

Model I:

𝑥𝑇1 𝑥𝑈3 𝑥𝑈1 𝑥𝑈2 𝑥𝑊 𝑥𝑅 𝑝

f301 X X X X X X X

g301 X X X X X X

g302 X X X X X X

g303 to g306

X X X X X X X

g307 X X X X X X

g308 X X X

g309 X X X

g310 X X X

g312 X X X

g312 X X X

g313 X X X

g314 X

g315 X

h301 X

h302 X

Page 41: ME555!12!05 FinalReport

41 ד ש ר

4.5. Model Analysis

4.5.1. Model Simplification: By incorporating the two equality constraints h301 and h302 directly, the model can be simplified to having 4 variables, 𝑥𝑇11, 𝑥𝑈31, 𝑥𝑈32,𝑥𝑈33.

The inequality constraints g308 to g315 were used as bounds and not as constraints.

Thus the simplified model finally used had:

Number of variables: 4

Number of inequality constraints: 7 (all Non Linear constraints)

Bounds: 4+4 (Lower + Upper bounds)

Number of equality constraints: 0

Initially the toe in of the wheels was also considered as a variable but this led to problems in computing the Ackermann parameter as the point of rotation of the vehicle is inconsistent due to the toe in, which is actually compensated on the vehicle in real life due to the deformation of the wheel and the wheel patch. Thus in the final version, the toe in was neglected. This led to decrease in the number of parameters by 1 and 2 inequality constraints.

The torque for steering is computed by first estimating the torque acting on the upright due to the friction force acting on the wheel patch in contact with the ground. This estimation was earlier done by integrating the torque due to the friction force symbolically in MATLAB. But due to lot of time in computing this, it was simplified by assuming that the friction force is uniform on the patch and the average of the friction force was used to compute the torque.

4.5.2. Scaling Through initial numerical analysis and preliminary optimization results and unsuccessful attempts, the variables and constraints were scaled. The variables were scaled to lie between -1 and 1 by using their upper and lower bounds. The bounds for the variables were decided according to the data for the actual Formula car obtained from the University of Michigan MRacing team. The constraints were also scaled for better sensitivity.

As described in Section 4.4.1, the objective function involving the Ackermann parameter was scaled by using a parameter c=1000 in order to improve the sensitivity of the function.

4.5.3. Numerical Results The mathematical model formed for the problem includes implicit functions which include a lot of 3D vector analysis and cannot be explicitly written in terms of the variables. Thus the explicit monotonicity analysis cannot be performed. Thus the functions formed in MATLAB were used to analyze the trend of the functions and constraints through design of experiments. The first order analysis of the objective and constraint functions has been performed. The analysis was also used to form the monotonicity table shown above as the explicit equations for the different constraints and objective function couldn’t be developed due to the complexity of the model. Thus the experimental study of the implicit equations has been performed.

Page 42: ME555!12!05 FinalReport

42 ד ש ר

4.5.3.1. Variation with variables For the first order and second order analysis, graphs for the objective function and the constraints were plotted some of which are shown below. Here f(x) is the objective function and g1(x) is the first constraint for Model II. The same trend was also observed for g1(x) and -f(x) respectively for Model I as the constraint and objective functions for the two models are switched.

Figure 20: First order design of experiments analysis

From Figure 20, we can observe that the Ackermann parameter and the steering torque are inconsistent and a peak is formed when the x and y coordinate of point U3 are close to the scaled 0 value. The scaling has been performed about the nominal U3 point which is actually the center point on the line joining points U1 and U2 (upright points which act as the axis of rotation for the upright). Thus when the y coordinate of point U3 is near the axis of the upright, the steering capability is reduced drastically and the steer of the vehicle is very less. The point of rotation of the vehicle is very far from the rear axle in that case, which explains the peak in the figure. Similarly, when the x coordinate of the point U3 is negative, i.e. far away from the axis to the left, the Ackermann parameter is very large as the center of rotation of the vehicle is very far from the real axle as the outer wheel is steered by a much larger angle than required.

Another thing to note is that besides the visible large peaks in the above figure, there are also multiple smaller peaks in the objective function and constraint 1 with respect to y coordinate of U3, which would lead to a number of complicated troughs and peaks in the actual function when all the variables are varied.

-1 -0.5 0 0.5 10

100

200f(x) v/s T1x

T1x-1 -0.5 0 0.5 1

0

5

10x 10

9 f(x) v/s U3x

U3x

-1 -0.5 0 0.5 10

5

10x 10

9 f(x) v/s U3y

U3y-1 -0.5 0 0.5 1

0

500

1000f(x) v/s U3z

U3z

-1 -0.5 0 0.5 10

2

4g1(x) v/s T1x

T1x-0.5 0 0.5 1

-2

0

2

x 1014 g1(x) v/s U3x

U3x

-1 -0.5 0 0.5 10

5

10x 10

15 g1(x) v/s U3y

U3y-1 -0.5 0 0.5 1

0

10

20g1(x) v/s U3z

U3z

Page 43: ME555!12!05 FinalReport

43 ד ש ר

4.5.3.2. Variation with rack displacement An important consideration in the optimization of the subsystem is how the two objective functions vary with the displacement of the rack. The results from this preliminary study would then be used to decide the steering angle or the rack position at which the steering torque and the Ackermann parameter should be computed. As we can see from Figure 21, the shape of the function changes as the variables are changed (the coordinates of points U3).

0 5 10 15 20 2529

29.5

30

30.5

31

31.5

32

32.5

Ste

erin

g To

rque

Position of rack (mm)

Variation of steering torque with angle of steerwith xT1 = 21.9964, coordinates of U31 = (521.599, -45.499, 195)

0 5 10 15 20 25-1.5

-1.4

-1.3

-1.2

-1.1

-1

-0.9

-0.8

Ack

erm

ann

para

met

er

Position of rack (mm)

Variation of Ackermann parameter with angle of steerwith xT1 = 41.9964, coordinates of U31 = (501.599, -65.499, 175)

0 5 10 15 20 25-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

Ack

erm

ann

para

met

er

Position of rack (mm)

Variation of Ackermann parameter with angle of steerwith xT1 = 36.9964, coordinates of U31 = (501.599, -45.499, 175)

0 5 10 15 20 2517.8

18

18.2

18.4

18.6

18.8

19

19.2

Ste

erin

g To

rque

Position of rack (mm)

Variation of steering torque with angle of steerwith xT1 = 21.9964, coordinates of U31 = (501.599, -65.499, 175)

0 5 10 15 20 2529

30

31

32

33

34

35

36

Ste

erin

g To

rque

Position of rack (mm)

Variation of steering torque with angle of steerwith xT1 = 21.9964, coordinates of U31 = (501.599, -45.499, 175)

0 5 10 15 20 25-10.3

-10.2

-10.1

-10

-9.9

-9.8

-9.7

-9.6

-9.5

-9.4

-9.3

Ack

erm

ann

para

met

er

Position of rack (mm)

Variation of Ackermann parameter with angle of steerwith xT1 = 41.9964, coordinates of U31 = (521.599, -65.499, 175)

Figure 21: Variation of steering torque and Ackermann parameter with the displacement of rack, for different variable values

Page 44: ME555!12!05 FinalReport

44 ד ש ר

We can observe from the above plots that the variation of the torque with the displacement of rack is generally increasing and is not very significant. Thus in the subsequent optimization, instead of considering the average of the steering torque for different rack positions, the steering torque when the rack is displaced in one direction by half of the maximum rack travel in that direction is considered, which would reduce the computations required to calculate the steering torque required at each rack position and then taking the average of that.

We can also observe that the Ackermann parameter trend is not very smooth with the rack travel and the shape is not consistent with different variable values. Also, from the discussion in Section 4.4.1, the Ackermann geometry is important only at high steering angles. Thus the Ackermann parameter is computed and the maximum of the parameter is taken and used in equations (50), (59), (60), (68) from the rack position given by 𝑥𝑙𝑖𝑚𝑖𝑡 to the extreme position of rack. Initially xlimit = lR/4 was used for the optimization, but due to the severe non linearity of the objective function caused by this, the optimization results were inconsistent and sometimes didn’t converge. Thus instead the simplified problem of xlimit=lR/4 which essentially means calculating the Ackermann parameter at the extreme position of the rack was used.

Thus according to the analysis with the rack displacement, the steering torque in equations (58), (69) and (70) was computed at 𝑥𝑅 = 𝑙𝑅

4 and the Ackermann parameter in equations (59), (60) and (68) is computed

as 𝑙𝑎𝑐𝑘 = max𝑥𝑙𝑖𝑚𝑖𝑡≤x𝑅≤

𝑙𝑅2𝑙𝑎𝑐𝑘 (𝑥𝑅) .

4.5.4. Monotonicity Analysis From the mathematical models formed, the monotonicity of the variables was studied through the design of experiments as the explicit functions for the same couldn’t be identified, which is represented in Table 20 for Model II. This has been performed for the simplified model with 4 variables. We can see that the objective function is not monotonic in any of the variables and thus model constraint activity and model reduction cannot be performed.

Table 20: Monotonicity Analysis (Model II)

𝑥𝑇11 𝑥𝑈31 𝑥𝑈32 𝑥𝑈33

f21

g201 + +

g202 - -

g203 + +

g204 + +

g205 + +

g206 + +

g207 - -

Page 45: ME555!12!05 FinalReport

45 ד ש ר

4.6. Optimization Study

4.6.1. Preliminary Optimization Results fmincon function in MATLAB was used for all the optimization runs.

The initial optimization runs were performed with Model 1 with the steering torque as the objective function and the Ackermann parameter with bounds and xlimit=0 as constraints. The problem encountered was that optimization algorithm Active Set, which is the default algorithm used by fmincon, was not able to converge to a solution. This was because the function tried to reduce the Ackermann parameter lack as a whole below a certain value, but was not able to reduce it beyond a limit, after which it started to increase again. Therefore Model II as described in Section 4.4.1 was developed and used but a similar problem was encountered with ‘Active-Set’ and Interior Point algorithm. On recognizing this problem and also as discussed in Section 4.4.1, the Ackermann steering geometry is of interest only for large steering torques. Thus the model was updated and xlimit = lR/2 that is computing the Ackermann parameter at the extremity of the rack was done to simplify the problem. It was also noted that the Interior Point algorithm was able to converge quicker.

4.6.2. Optimization Results Using fmincon function in MATLAB and the starting guess as the data points obtained from the actual car developed by the MRacing team, the following results were found.

Table 21: Optimization Results with Interior Point algorithm

Initial Guess (m)

Function value at initial guess

Steering Torque at

initial guess (Nm)

Optimized Variable values (m)

Function value at optima

Steering Torque at

optima (Nm)

No of iteration

𝑥𝑇11 0.022

227.35 17.378

𝑥𝑇11 0.148

2.07E-12 14.162 53 𝑥𝑈31 0.502 𝑥𝑈31 0.490

𝑥𝑈32 -0.065 𝑥𝑈32 -0.092

𝑥𝑈33 0.175 𝑥𝑈33 0.200

For the above optimization results, Model II was used with a bound of 𝜀2 = 36 N2m2 was used on the steering torque. For the above result, the following was observed:

• None of the constraints or bounds are active as nine of the Lagrangian multipliers were positive. Thus it is an interior minima.

• The minima is probably a local minima. The Interior Point algorithm was actually not able to solve for some of the initial guesses chosen around the one mentioned above.

• There is a significant improvement in the objective function as the optimization is able to reduce the Ackermann parameter to zero from the initial value of 0.4768m

It was observed that the Interior Point algorithm wasn’t able to converge to a feasible solution for some of the initial guesses. Thus other algorithms like the Active Set and SQP were explored. Similar behavior was observed with SQP. The Active Set algorithm was slower to perform the optimizations in some cases though it was able to converge to a feasible solution for all cases. Thus the Active Set algorithm was used for subsequent runs. It was also observed that the optimization results from the two algorithms do not match exactly.

Page 46: ME555!12!05 FinalReport

46 ד ש ר

In general the 'Active Set' algorithm converges to a Boundary Optima, as can also be observed from Table 22 from the active constraints.

Table 22: Optimization Results for different initial guesses, Model II

Serial No

Changed variable

Initial Guess (m)

Optimized Variable

values (m)

Function value

Ackermann steering

parameter, lack (m)

Steering Torque (Nm)

Active Constraints

1

0.022 0.272

17.663 0.133 15.232

g201, g207, lower

bound 4, upper

bound 1

0.502 0.487

-0.065 -0.085

0.175 0.127

2 x

coordinate of U3

0.022 0.022

0.000

0.000 13.012

none

0.522 0.528

-0.065 -0.011

0.175 0.194

3

x coordinate

of T1, z coordinate

of U3

0.027 0.046

440.218 0.663 12.661 g202, lower bound 4

0.502 0.499

-0.065 -0.050

0.155 0.127

4 y

coordinate of U3

0.027 0.036

838.866

0.916

12.653

g202, lower bound 1,

lower bound 4

0.502 0.483

-0.085 -0.061

0.175 0.127

5

z coordinate

of U3

0.032 0.059

821.742 0.907 14.02073 g202, lower bound 4

0.502 0.484

-0.085 -0.060

0.175 0.127

From Table 22, we can observe that the solution is not global optimum as for different guesses, the optimization result is different. Thus there exist a number of local minima points. From the data collected for numerous initial conditions (shown in Appendix A, Table 29), we can identify at least 2 points (with variation of about 5mm in some coordinated) which appear to be consistent as at least 4 optimization runs each from different initial guesses converge to those points. These points occur at the boundary of the feasible space.

Page 47: ME555!12!05 FinalReport

47 ד ש ר

Figure 22: Model of optimized steering system with nominal parameter and initial guess values

As discussed in Section 4.5.3.1, there are multiple smaller peaks in the objective function and constraint 1 with respect to y coordinate of U3, which leads to a number of complicated troughs and peaks in the actual function and multiple local optima points.

If instead Model I is used for the optimization problem, it was observed that the Interior Point algorithm cannot compute the optimization result accurately and consistently for different initial guesses as was the case with Model II. As expected, the optimization result for case where interior optima is found for both Model I and II is consistent but when a boundary optima is point is found with an active constraint or bound, in that case the optimal solution for Model I and II is different. Because these two functions seem to be conflicting, the optimal solution is different.

Table 23: Comparison of optimization results for Model I and II

Initial Guess (m) Optimized Variable values

(m) Ackermann parameter

at optima Steering Torque at optima

(Nm)

Model I Model II Model I Model II Model I Model II

𝑥𝑇11 0.022 0.269 0.272

0.000 0.133 15.230 17.663 𝑥𝑈31 0.502 0.493 0.487

𝑥𝑈32 -0.065 -0.086 -0.085

𝑥𝑈33 0.175 0.127 0.127

𝑥𝑇11 0.032 0.038 0.022

0.352 1.859 14.847 14.020 𝑥𝑈31 0.502 0.591 0.527

𝑥𝑈32 -0.065 -0.002 -0.019

𝑥𝑈33 0.175 0.237 0.127

Page 48: ME555!12!05 FinalReport

48 ד ש ר

4.6.3. Parametric Study

4.6.3.1. With 𝜺𝟐(bound on steering torque) On varying the bound on the steering torque, it was observed that as the bound is tightened, the constraint g201 or g202 becomes active and the function value at the optimal increases. The optimal point also shifts due to this. As the bound is further tightened, the algorithm breaks down and fails to find the optimal point, due to which we see unpredictable behavior in the beginning of Figure 23.

4.6.3.2. With position of rack, xR

As discussed in Section 4.2, it is expected that the optimization might change as the steering angle or the position of the rack is changed. Thus the optimization was run for different rack positions, where the Ackermann parameter and the steering torque for turning the wheels from this rack position was calculated. Thus lack and τT were computed at the given xR. The optimization results for the parametric study with variation in xR are given in Appendix B.

We can observe from the results in Table 30 that there exist different variable values for the optimization for different xR values and the function value at these is nearly the same, 0.00. Thus we can optimize the steering geometry according to the xR position where the optimal value of the steering torque and Ackermann parameter is most important.

4.6.3.3. With point U1& U2 The coordinates of the point U1 and U2 would actually be optimized by the A-arm subsystem. But for the present subsystem analysis they have been assumed as parameters. From the parametric study on the point U1, it was observed that changing any coordinate of the point changes the behavior and optimal solution. The variable values at the optimal solution point change but it is able to find the local interior minima with approximately the same function value, but a different steering torque value at the optimal point.

From the results in Table 24, we can conclude that due to the shift in point U1 to the right, the angle of inclination of the axis of the upright changes. Due to this change the Ackermann parameter for the same U3 and T1 points would change and actually the control on the steering would reduce. Thus the point T1 and U3 have to be adjusted to find the optimal point.

Similar trends are also obtained as point U2 is moved. The optimal variable values change to compensate for the change in the axis orientation which leads to a change in the steering capability.

0

2000

4000

6000

8000

10000

12000

0.000 10.000 20.000 30.000 40.000

Func

tion

Valu

e

Bound on Steering torque (N^2m^2)

Figure 23: Parametric Study on bound on steering torque (Model II)

Page 49: ME555!12!05 FinalReport

49 ד ש ר

Table 24: Parametric Study w.r.t. point U1

Initial guess

𝑥𝑈1 (m) Optimal variable

values (m)

Function value at optimum

Ackermann parameter (m)

Steering Torque (Nm)

0.022 0.502 0.272

0.086 0.009 15.232 0.502 -0.065 0.493

-0.065 0.175 -0.080

0.175 0.137

0.022 0.522 0.022

9e-6 9e-5 12.653

0.502 -0.065 0.508

-0.065 0.175 -0.040

0.175 0.152

0.022 0.552 0.042

699.526

0.836 12.649

0.502 -0.065 0.495

-0.065 0.175 -0.056

0.175 0.175

4.7. Discussion From the optimization study presented through this report for the steering subsystem, it can be observed that the design of the steering system of a formula style racing car is not straight forward. A number of parameters are important for the design of the subsystem, namely the steering torque, the closeness to the Ackermann geometry and the minimum radius of turn required. Based on the weightage of these functions and parameters, a number of designs can be chosen as there exist a number of local minima from the optimization study.

Due to the complex nature of the steering torque function and the Ackermann parameter, a global minima is difficult to converge to. Based on the staring guess, the local optima might be different. Thus other optimization algorithms and procedures can also be explored to get to a better minima and possibly the global minima. Due to the huge peaks in the functions near the scaled zero points and the other peaks and troughs, the gradients are not so smooth and thus sometimes the algorithms of fmincon function fail to reach the optimal point. And as expected, with the variation of the parameters and the bounds on the steering torque, the optimal point changes.

The results obtained from the above analysis and optimization models were obtained through a number of assumptions such as a constant contact patch of the wheel with the ground, no variation of the contact patch as the car negotiates a turn, static computations for estimating the forces and torques and not dynamics etc. If better models of these assumptions are available, then a smooth minima might be possible. Based on a better understanding of the important parameters such as the importance of the Ackermann parameter at which steering angle, interaction of the static and dynamic toe in with the steering of the vehicle, and the dynamics of the car, a better optimization problem can be created as at present the functions and parameters identified were based on a few assumptions.

Page 50: ME555!12!05 FinalReport

50 ד ש ר

Based on the above optimization study, it was observed that the optimal solution is dependent on some parameters like coordinates of point U1 and U2 etc. which are also variables of the A-Arm subsystem. Thus ideally, the A-Arm subsystem should be first designed in order to fix the U1 and U2 variables for that problem and subsequently optimize the steering subsystem. But this is assuming that only the individual objective functions are important. Actually there would also be a group objective function which would lead to direct interaction of the subsystems, which would be explored in the system integration and system level problem.

Page 51: ME555!12!05 FinalReport

51 ד ש ר

5. System Integration

5.1. Introduction Once the subsystem level problems have been solved we move on to solve the system level problem and notice the design tradeoffs that occur due to contradictions between the optima of the various subsystems as well as those between the system and subsystem level optima. A mathematical model for the new objective function is prepared and the subsystem level objectives are incorporated in the problem as constraints with their bounds as relaxed optima values. A preliminary design of experiments suggests the tradeoff in the problem which is later verified by the optimization results.

5.2. Problem statement The wheel assembly along with the A-arms, the pushrod-bellcrank-shocker assembly and the steering tie rod can be thought of to be a 3D linkage. As the wheel encounters a bump (or a droop), the entire wheel assembly moves up (or down). In such a case, the outboard mounting point U3 can be modeled the actuation point of the linkage. By virtue of it being a kinematic linkage, the system preserves the link lengths and leads to movement of nodes that are not grounded in 3D space. The A-arm and tie rod outboard mounting points, U2 and T2 respectively, are two such nodes and their movement along with the movement of actuation point U1 leads to the steering of the wheels without the steering wheel being rotated. This phenomenon is termed bump steer and is highly undesirable as it leads to loss of vehicle of control. We therefore aim to minimize the bump steer while trying to keep within certain limits the subsystem level objective functions.

5.3. Nomenclature Table 25: Nomenclature for the System

Symbols Units Description

ac m/s2 Cornering acceleration amax m/s2 Maximum longitudnal acceleration C N s/m Damping Coefficient of shocker diA m Inner diameter of pipes of A-arm diT m Inner diameter of pipes of tie rod doA m Outer diameter of pipes of A-arm doT m Outer diameter of pipes of tie rod dh m Diameter of wheel hub dP m Diameter of pinion dT m Diameter of Steering wheel EA Pa Young’s modulus of material of pipes of A-arm ET Pa Young’s modulus of material of the tie rod FOS - Factor of Safety 𝑓̇ N/s Rate of loading-unloading of shocker K N/m Spring Constant of shocker lack m Distance from Pure Ackermann lb m Height of bump lR m Length of rack lti m Toe In ltides m Desired toe In

Page 52: ME555!12!05 FinalReport

52 ד ש ר

ltw m Track Width lwb m Wheelbase m kg Mass of the vehicle p (m,m) Dimension of wheel patch in contact with ground Rmin m Minimum radius of rotation of vehicle Rmind m Minimum radius of rotation desired rc m Cornering radius v m/s Cornering velocity ww m Width of wheel xlimit m Position of rack from which Ackermann parameter is computed xR m Displacement of rack 𝑥𝐶1 (m,m,m) Coordinate of point C1 𝑥𝐶2 (m,m,m) Coordinate of point C2 𝑥𝐶3 (m,m,m) Coordinate of point C3 𝑥𝐶4 (m,m,m) Coordinate of point C4 𝑥𝐶5 (m,m,m) Coordinate of point C5 𝑥𝐶6 (m,m,m) Coordinate of point C6 𝑥𝐶𝐺 (m,m,m) Coordinate of point CG (Centre of Gravity) 𝑥𝑆1 (m,m,m) Coordinate of point S1 𝑥𝑆2 (m,m,m) Coordinate of point S2 𝑥𝑆3 (m,m,m) Coordinate of point S3 𝑥𝑆4 (m,m,m) Coordinate of point S4 𝑥𝑇1 (m,m,m) Coordinate of point T1 𝑥𝑈1 (m,m,m) Coordinate of point U1 𝑥𝑈2 (m,m,m) Coordinate of point U2 𝑥𝑈3 (m,m,m) Coordinate of point U3 𝑥𝑊 (m,m,m) Coordinate of point W (center of wheel) α - Weighting parameter for multi-objective optimization δ m Compression of shocker δU m Maximum of (δU1 and δU2) δU1 m Deflection of point U1 δU2 m Deflection of point U2 θcb radians Camber angle θcbmax radians Maximum allowable camber angle θcbmin radians Minimum allowable camber angle θct radians Caster angle θctmax radians Maximum allowable caster angle θctmin radians Minimum allowable caster angle θW radians Bump steer θWmax radians Maximum allowable bump steer θS radians Steering Angle θSmax radians Maximum allowable steering Angle θSmin radians Minimum allowable steering Angle φti radians Angle representing the toe in of the wheels 𝜀1 m Bound on Ackermann parameter constraint

Page 53: ME555!12!05 FinalReport

53 ד ש ר

𝜀2 N2m2 Bound on Steering Torque constraint 𝜀3 m Bound on coordinate of T1 µ - Coefficient of friction νA - Poisson’s ratio of material of A-arms σA Pa Stress in the A-arms σT Pa Stress in the tie rod σyA Pa Yield stress of pipes of the A-arms σyT Pa Yield stress of the tie rod τT Nm Steering Torque τTd Nm Desired steering torque

VS1 - Vector space of allowable values of 𝑥𝑆1

VS2 - Vector space of allowable values of 𝑥𝑆2

VS3 - Vector space of allowable values of 𝑥𝑆3

VS4 - Vector space of allowable values of 𝑥𝑆4

VT1 - Vector space of allowable values of 𝑥𝑇1

VU1 - Vector space of allowable values of 𝑥𝑈1

VU2 - Vector space of allowable values of 𝑥𝑈2

VU3 - Vector space of allowable values of 𝑥𝑈3

5.4. Optimization Model

5.4.1. Objective function It is desired to minimize the bump steer φ(lb)- φ(0) of the wheel while undergoing a bump which deflects the point U1 by lb. Here, φ(x) is the steering angle as a function of displacement x in the x3 direction of U3. The objective therefore is:

min(φ(𝑙𝑏)− φ(0))2 = 𝑓1(𝑥𝑈1,𝑥𝑈2, 𝑥𝑈3,𝑥𝑇1; 𝑥𝐶1,𝑥𝐶2,𝑥𝐶3,𝑥𝐶4,𝑥𝐶6,𝑥𝑊, 𝑙𝑏) …(78)

The objective function is coded in MATLAB as an implicit function which returns the steering angle as a function of the various coordinates of the suspension geometry, the code of which is attached in Appendix C4. It was first checked for correctness through test cases and was then used for the optimization.

5.4.2. Constraints This problem is subject to all the constraints of the previously solved subsystem level problems. Moreover, new constraints appear as constraints in the form of the previous objective functions in the system level problem. It should be noted that the bounds on these constraints are relaxed optima values that were obtained while solving subsystem level problems. Even though these relaxed bounds were obtained by trial and error, it was made sure that they do guarantee subsystem level improvement from the nominal design.

𝛿𝑈 �𝑥𝑈1,𝑥𝑈2; 𝑥𝐶1,𝑥𝐶2,𝑥𝐶3, 𝑥𝐶4,𝑥𝑊,𝛼,𝑚,𝑎𝑚𝑎𝑥,𝑑𝑜𝐴,𝑑𝑖𝐴,𝐸𝐴, 𝜈𝐴� ≤ 𝜀4 …(79)

with 𝛿𝑈 = 𝛿𝑈1(1 − 𝛼) + 𝛿𝑈2𝛼

Page 54: ME555!12!05 FinalReport

54 ד ש ר

(𝐴 − 𝐹)2 ≤ 𝜀5 …(80)

(𝜏𝑇2 �𝑥𝑈3,𝑥𝑇1,𝜑𝑡𝑖; 𝑥𝑅 , 𝑥𝑈1, 𝑥𝑈2,𝑥𝑊,𝑥𝐶6 , 𝑙𝑅 , 𝑙𝑡𝑤 ,𝑑𝑃 ,𝑑𝑇 ,𝑝,𝑤𝑤 ,𝜇,𝑚�− 𝜏𝑇𝑑2)2 ≤ 𝜀2 …(81)

5.4.3. Design Variables and Parameters Table 26: Design Variables for the System

Symbols Units Description

𝑥𝑇1 (m,m,m) Coordinate of point T1

𝑥𝑈1 (m,m,m) Coordinate of point U1

𝑥𝑈2 (m,m,m) Coordinate of point U2

𝑥𝑈3 (m,m,m) Coordinate of point U3

Table 27: Parameters for the System

Symbols Units Description

lb m Height of bump 𝑥𝐶1 (m,m,m) Coordinate of point C1 𝑥𝐶2 (m,m,m) Coordinate of point C2 𝑥𝐶3 (m,m,m) Coordinate of point C3 𝑥𝐶4 (m,m,m) Coordinate of point C4 𝑥𝑇1 (m,m,m) Coordinate of point T1

5.4.4. Summary model Objective Function:

min(φ(𝑙𝑏)− φ(0))2 = 𝑓1(𝑥𝑈1,𝑥𝑈2, 𝑥𝑈3,𝑥𝑇1; 𝑥𝐶1,𝑥𝐶2,𝑥𝐶3,𝑥𝐶4,𝑥𝐶6,𝑥𝑊, 𝑙𝑏) …(82)

Subject to:

𝑔1 ∶ 𝛿𝑈 �𝑥𝑈1,𝑥𝑈2; 𝑥𝐶1,𝑥𝐶2,𝑥𝐶3,𝑥𝐶4, 𝑥𝑊,𝛼,𝑚,𝑎𝑚𝑎𝑥,𝑑𝑜𝐴,𝑑𝑖𝐴 ,𝐸𝐴, 𝜈𝐴� − 𝜀4 ≤ 0 …(83)

with 𝛿𝑈 = 𝛿𝑈1(1 − 𝛼) + 𝛿𝑈2𝛼

𝑔2: (𝐴 − 𝐹)2 ≤ 𝜀5 …(84)

𝑔3: (𝜏𝑇2 �𝑥𝑈3, 𝑥𝑇1,𝜑𝑡𝑖; 𝑥𝑅 , 𝑥𝑈1,𝑥𝑈2, 𝑥𝑊,𝑥𝐶6 , 𝑙𝑅 , 𝑙𝑡𝑤,𝑑𝑃 ,𝑑𝑇 ,𝑝,𝑤𝑤 , 𝜇,𝑚� − 𝜏𝑇𝑑2)2 ≤ 𝜀2 …(85)

𝑔4: 𝜎𝐴1(𝑑𝑖𝐴,𝑑𝑜𝐴,𝐸𝐴, ν𝐴,𝑚,𝑎𝑚𝑎𝑥,𝑚, 𝑥𝑈1,𝑥𝑈2; 𝑥𝐶1,𝑥𝐶2,𝑥𝐶3,𝑥𝐶4,𝑥𝑊, 𝑥𝐶𝐺)− 𝜎𝑦𝐴𝐹𝑂𝑆

≤ 0 …(86)

𝑔5: 𝜎𝐴2(𝑑𝑖𝐴,𝑑𝑜𝐴,𝐸𝐴, ν𝐴,𝑚, 𝑎𝑚𝑎𝑥,𝑚, 𝑥𝑈1, 𝑥𝑈2; 𝑥𝐶1, 𝑥𝐶2,𝑥𝐶3,𝑥𝐶4,𝑥𝑊,𝑥𝐶𝐺)− 𝜎𝑦𝐴𝐹𝑂𝑆

≤ 0 …(87)

𝑔6 𝑎𝑛𝑑 𝑔7 ∶ 𝜃𝑐𝑏(𝑥𝑈1,𝑥𝑈2)𝜖[𝜃𝑐𝑏𝑚𝑖𝑛,𝜃𝑐𝑏𝑚𝑎𝑥] …(88)

𝑔8 𝑎𝑛𝑑 𝑔9 ∶ 𝜃𝑐𝑡(𝑥𝑈1,𝑥𝑈2)𝜖[𝜃𝑐𝑡𝑚𝑖𝑛,𝜃𝑐𝑡𝑚𝑎𝑥] …(89)

𝑔10: 𝑐𝑜𝑠−1 ��𝑥𝑆2−𝑥𝑠1�.�𝑥𝑆3−𝑥𝑆1�

��𝑥𝑆2−𝑥𝑆1��𝑥𝑆3−𝑥𝑆1��� − 0.75𝜋 ≤ 0 …(90)

Page 55: ME555!12!05 FinalReport

55 ד ש ר

𝑔11:− 𝑐𝑜𝑠−1 ��𝑥𝑆2−𝑥𝑠1�.�𝑥𝑆3−𝑥𝑆1�

��𝑥𝑆2−𝑥𝑆1��𝑥𝑆3−𝑥𝑆1��� + 0.25𝜋 ≤ 0 …(91)

𝑔12 : �𝑥𝑆3 − 𝑥𝑆1� − 0.080 ≤ 0 …(92)

𝑔13 : − �𝑥𝑆3 − 𝑥𝑆1� + 0.020 ≤ 0 …(93)

𝑔14 : �𝑥𝑆2 − 𝑥𝑆1� − 0.080 ≤ 0 …(94)

𝑔15 : − �𝑥𝑆2 − 𝑥𝑆1� + 0.020 ≤ 0 …(95)

𝑔16 : �𝑥𝑆2 − 𝑥𝑆3� − 0.080 ≤ 0 …(96)

𝑔17 : − �𝑥𝑆2 − 𝑥𝑆3� + 0.020 ≤ 0 …(97)

𝑔18: 𝑙𝑎𝑐𝑘(𝑥𝑅,𝑥𝑙𝑖𝑚𝑖𝑡 ,𝑥𝑈1,𝑥𝑈2, 𝑥𝑈3, 𝑥𝑊,𝑥𝐶6, 𝑥𝑇1, 𝑙𝑡𝑤 , 𝑙𝑤𝑏 )− 𝜀1 ≤ 0 …(98)

𝑔19: 𝜀1 − 𝑙𝑎𝑐𝑘(𝑥𝑅 ,𝑥𝑙𝑖𝑚𝑖𝑡,𝑥𝑈1, 𝑥𝑈2,𝑥𝑈3, 𝑥𝑊,𝑥𝐶6, 𝑥𝑇1, 𝑙𝑡𝑤, 𝑙𝑤𝑏 ) ≤ 0 …(99)

𝑔20 𝑡𝑜 𝑔23 ∶ 𝜎𝑇,𝑚𝑎𝑥( 𝑑𝑖𝑇 ,𝑑𝑜𝑇 , 𝑥𝐶6, 𝑥𝑈1, 𝑥𝑈2, 𝑥𝑈3,𝑥𝑇1, 𝑥𝑊,𝑥𝑅 , 𝜇,𝑚,𝑝,𝜑𝑡𝑖,𝜃𝑐𝑏 ,𝜃𝑐𝑡, 𝐸𝑇 , 𝜈𝑇) − 𝜎𝑦𝑇𝐹𝑂𝑆

≤ 0 …(100)

𝑔24: 𝑅𝑚𝑖𝑛 � 𝑥𝑈1, 𝑥𝑈2,𝑥𝑈3, 𝑥𝑊,𝑥𝐶6, 𝑥𝑇1,𝜑𝑡𝑖, 𝑥𝑅 , 𝑙𝑡𝑖, 𝑙𝑡𝑤, 𝑙𝑤𝑏� − 𝑅𝑚𝑖𝑛,𝑑 ≤ 0 …(101)

𝑔25 𝑡𝑜 𝑔30 𝑥𝑈𝑖 ∈ VUi where i∈ {1, 2} …(102)

𝑔31 𝑡𝑜 𝑔39 𝑥𝑈𝑖 ∈ VSi where i∈ {1, 2, 3} …(103)

𝑔40 𝑡𝑜 𝑔42: 𝑥𝑈3 ∈ VU3 …(104)

𝑔43; 𝑥𝑇1𝑛𝑜𝑚1 − 𝜀3 − 𝑥𝑇11 ≤ 0 …(105)

𝑔44: 𝑥𝑇11 − 𝑥𝑇1𝑛𝑜𝑚1 − 𝜀3 ≤ 0 …(106)

ℎ1: ��𝑥𝑆4 − 𝑥𝑆2�X �𝑥𝑆2 − 𝑥𝑆1�� . �𝑥𝑆3 − 𝑥𝑆1� = 0 …(107)

ℎ2: ��𝑥𝑆2 − 𝑥𝑆1�X �𝑥𝑆3 − 𝑥𝑆1�� . �𝑥𝐶5 − 𝑥𝑆3� = 0 …(108)

ℎ3 =�𝑥𝑆11−𝑥𝐶31�

�𝑥𝐶41−𝑥𝐶31�−

�𝑥𝑆12−𝑥𝐶32�

�𝑥𝐶42−𝑥𝐶32� …(109)

ℎ4 =�𝑥𝑆11−𝑥𝐶31�

�𝑥𝐶41−𝑥𝐶31�−

�𝑥𝑆13−𝑥𝐶33�

�𝑥𝐶43−𝑥𝐶33� …(110)

ℎ5: 𝑥𝑇12 − 𝑥𝐶62 = 0 …(111)

ℎ6: 𝑥𝑇13 − 𝑥𝐶63 = 0 …(112)

Page 56: ME555!12!05 FinalReport

56 ד ש ר

5.5. Model Analysis

5.5.1. Model Simplification By incorporating the two equality constraints h5 and h6 directly, the model can be simplified to have 19 variables.

The inequality constraints g25 to g44 were used as bounds and not as constraints in the final problem formulation.

Thus the simplified model finally used had:

Number of variables: 19

Number of inequality constraints: 24 (all Non Linear constraints)

Bounds: 19+19 (Lower + Upper bounds)

Number of equality constraints: 4

5.5.2. Numerical Results A first degree design of experiments was conducted for the problem with all constraints but the bounds on the variables relaxed. This DOE provides very interesting results about the existence of local optima and the existence of the other optima that might not be found by gradient based algorithms.

The results from this DOE for the objective function are plotted in Figure 24.

-1 -0.5 0 0.5 10

2

4f(x) v/s X1

U1

X1U1

-1 -0.5 0 0.5 10

5

10f(x) v/s X2

U1

X2U1

-1 -0.5 0 0.5 10

10

20f(x) v/s X3

U1

X3U1

-1 -0.5 0 0.5 10

5

10f(x) v/s X1

U2

X1U2

-1 -0.5 0 0.5 10

5

10f(x) v/s X2

U2

X2U2

-1 -0.5 0 0.5 10

10

20f(x) v/s X3

U2

X3U2

Page 57: ME555!12!05 FinalReport

57 ד ש ר

Figure 24: First order design of experiments for objective function of system

The DOE plots are characterized by the existence of cusps in the interior of the variable range and by the existence of well-behaved flattened regions towards the outer reaches of the variables. The fact that the DOE results are plotted with the scaled variables makes this behavior very evident.

These plots predict the existence of boundary optima because the gradient based algorithms (fmincon) wouldn’t be able to identify the potential minima near the center of the design space due to the cusps; but we should not get ahead of ourselves because we are currently considering the relaxed problem.

5.6. Optimization Study Optimization algorithm was first run on the unconstrained problem. The unconstrained optima hence obtained agreed with the design of experiments study done on the system. The constraints were then evaluated at this unconstrained optimum. It was observed that the following constraints are not satisfied:

1. 1. Camber angle upper bound

2. Steering torque upper bound

3. Ackermann steering parameter upper bound

4. Minimum radius of turning

This information can be used to determine that these constraints should be active in the constrained problem. Therefore the optima will not be a boundary optimum as might have been predicted from the first degree DOE.

The results shown in Table 28 were obtained from optimization of the constrained problem.

-1 -0.5 0 0.5 10.5

1

1.5f(x) v/s X2

T1

X2T1

-1 -0.5 0 0.5 10

2

4f(x) v/s X1

U3

X1U3

-1 -0.5 0 0.5 10

5

10f(x) v/s X2

U3

X2U3

-1 -0.5 0 0.5 10

10

20f(x) v/s X3

U3

X3U3

Page 58: ME555!12!05 FinalReport

58 ד ש ר

Table 28: Optimization Results for system:

Algorithm: Interior Point, SQP, Inexact Line Search

Number of iterations: 23

Function Evaluations: 548

Initial Guess: Subsystem optimization results

Initial Bump steer: 0.8158rad = 46.74 °

Optimized Bump steer = 0.0632 rad = 3.62 °

Reduction in bump steer: 92.25%

Different local optima were obtained from different initial guesses which is expected because we also observed local optimum in the subsystem level optimization problems.

5.7. Discussion

5.7.1. Result Inference From the system optimization results it can be seen that the tradeoffs discussed at the subsystem level have actually manifested themselves. The activity of the constraints points us in this direction. It is also noticed that the bump steer with the optimized subsystem results is about 45° whereas the optimized results give a value of about 3°. This supports the proposition that the subsystems and the system have contradicting optima. In order to justify the contradiction between the different subsystems, one should take a look at the system level constraints that were formulated from the subsystem objective functions. It is noteworthy to mention that the bounds for these constraints were chosen not by arbitrary guess but by tuning. This means that it was tried to keep the bounds as tight as possible while trying to look for a solution. It was noticed that all the bounds had to be relaxed simultaneously; hence justifying the observation that all the subsystems have contradicting requirements for optimization. All the above observations are explained by the following:

• The effect of U1 on the shocker force, camber angle and steering geometry; bringing U1 closer to the chassis decreases the shocker force while increases the camber angle and worsens the Ackermann parameter.

• The effect of U3 on the steering torque and bump steer; moving U3 from the kingpin increases the steering torque as well as the bump steer.

• Effect of U2 on bump steer and camber, bringing U2 towards a point vertically above U1 decreases bump steer but worsens the caster angle conditions.

Besides the above mentioned effects, there are others too which arise due to the nonlinear nature of the problem.

5.7.2. Possible Design rules For the Pushrod-bellcrank-shocker subsystem optimization, we can observe the following design rules to design the subsystem:

• Length of �𝑥𝑆1 − 𝑥𝑆2� should be reduced as much as possible.

• Length of �𝑥𝑆3 − 𝑥𝑆2� should be increased as much as possible.

Page 59: ME555!12!05 FinalReport

59 ד ש ר

• 𝑥𝑈1 should be placed as close to the ground as possible • 𝑥𝑆4 should be placed as close to 𝑥𝑈1 as possible

There are no general design rules for the A-arm subsystem, the steering subsystem and the system as a whole because of the nonlinear nature of the problem. Various design iterations can however be performed and optimization routines be run on them to judge their worth.

Page 60: ME555!12!05 FinalReport

60 ד ש ר

6. References [1] Dale Thompson, "Ackerman? Or not? Does it matter?", http://www.racing-car-

technology.com.au/ [2] "Ackerman Steering and Racing Circle (oval) Tracks", http://www.auto-

ware.com/setup/ack_rac.htm [1] Lu, X. P., Li, H. L., and Papalambros, P., "A Design Procedure for the Optimization of Vehicle

Suspensions", International Journal of Vehicle Design, Vol. 5, No. 1-2, 1984, pp. 129-142

Page 61: ME555!12!05 FinalReport

61 ד ש ר

Appendix A Optimization results for Steering Subsystem for various initial guesses to identify potential Local Minima:

In Table 29, the variable values from the optimization runs for various initial conditions, which are a combination of the following points, are shown.

𝑥𝑇11 = 0.022, 0.027, 0.032, 0.037, 0.042 𝑚

𝑥𝑈3 = 0.502−0.0650.175

,0.502−0.0850.175

,0.502−0.0650.155

,0.522−0.0650.175

,0.522−0.0850.175

Table 29: Optimized variable values for different initial guesses

0.272 0.022 0.070 0.094 0.022 0.062 0.252 0.036 0.046 0.084

0.487 0.528 0.483 0.497 0.475 0.496 0.526 0.483 0.499 0.495

-0.085 -0.011 -0.062 -0.056 -0.065 -0.057 -0.008 -0.061 -0.050 -0.057

0.127 0.194 0.127 0.161 0.127 0.178 0.186 0.127 0.127 0.165

0.029 0.022 0.059 0.051 0.045 0.022 0.092 0.022 0.114 0.053

0.492 0.528 0.484 0.492 0.502 0.492 0.527 0.485 0.496 0.498

-0.055 -0.011 -0.060 -0.055 -0.057 -0.055 -0.010 -0.059 -0.056 -0.053

0.127 0.192 0.127 0.127 0.240 0.127 0.191 0.127 0.154 0.154

0.022 0.025 0.049 0.075 0.067

0.494 0.524 0.483 0.509 0.495

-0.053 -0.022 -0.061 -0.048 -0.053

0.127 0.201 0.127 0.195 0.127

Page 62: ME555!12!05 FinalReport

62 ד ש ר

Appendix B Optimization results for different xR, for Steering Subsystem:

In Table 30, the variable values from the optimization runs for different xR values, with the following initial guess are shown.

𝑥𝑇11 = 0.022

𝑥𝑈3 = 0.502−0.0650.175

Table 30: Optimization results for different xR values

Optimal variable

values (m)

Function value at optimum

Ackermann parameter (m)

Steering Torque (Nm)

0.136

2479.995 1.575 14.435 0.506

-0.078

0.181

0.141

0.000 0.000 13.995 0.513

-0.020

0.207

0.022

0.000 0.000 14.515 0.504

-0.022

0.127

0.032

1171.179 1.082 12.649 0.485

-0.037

0.127

0.146

0.000 0.000 13.996 0.518

-0.016

0.225

0.239

0.000 0.000 14.955 0.510

-0.032

Page 63: ME555!12!05 FinalReport

63 ד ש ר

0.127

0.167

0.000 0.000 14.010 0.523

-0.007

0.162

0.096

0.000 0.000

13.975

0.528

-0.024

0.299

0.073

0.000 0.000 13.955 0.531

-0.024

0.308

0.033

0.000 0.000 13.770 0.532

-0.025

0.314

Page 64: ME555!12!05 FinalReport

64 ד ש ר

Appendix C1 MATLAB and ANSYS code for A-Arm Subsystem

clear all % All SI Units % Constants g = 9.8; %m/s^2 % Optimization parameters: cubesize = .05; %cube of side 5cm around the nominal point % Vehicle specs: m = 190; %kg amax = 1.8*g; %Max longitudinal acceleration %% Material specs: % 4130 Steel EA = 200e9; % Young's modulus = 200GPa nuA = 0.285; % Poisson's ratio yStress = 360.6e6; % Yield stress = 360.6MPa FOS = 2.6; % 7075 Aluminium % EA = 71.7e9; % nuA = 0.33; % yStress = 503e6; % FOS = 2.6; %% Pipe: OD = 8mm, ID = 6mm diA = 10.922e-3; doA = 12.700e-3; % diA = [10.922e-3; 9e-3; 7e-3; 5e-3; 4.5e-3]; % doA = [12.700e-3; 11e-3; 9e-3; 7e-3; 6e-3]; %% Coordinates: XC1 = 0.001*[233.172 164.500 132.000]'; XC2 = 0.001*[-40.051 153.830 122.000]'; XC3 = 0.001*[-90.000 254.000 270.500]'; XC4 = 0.001*[196.850 268.000 269.500]'; Xw = 0.001*[0.000 584.200 222.250]'; %% Camber and Caster cbmin = -3; % degree cbmax = -1; % degree ctmin = 7.75; % degree ctmax = 9.25; % degree %% Game begins % Weighting parameter alpha = 0.9; % Nominal values of Optimization variables

Page 65: ME555!12!05 FinalReport

65 ד ש ר

XU1nom = 0.001*[5.001 518.599 127.000]'; XU2nom = 0.001*[33.000 505.729 315.999]'; XUnom = [XU1nom; XU2nom]; % Lower and upper bounds of Optimization variables % XU1l = [-0.020 0.494 0.102]'; % XU2l = [0.008 0.481 0.346]'; % % XU1u = [0.030 0.544 0.192]'; % XU2u = [0.058 0.531 0.396]'; XU1l = XU1nom - (cubesize/2)*ones(3,1); XU1u = XU1nom + (cubesize/2)*ones(3,1); XU2l = XU2nom - (cubesize/2)*ones(3,1); XU2u = XU2nom + (cubesize/2)*ones(3,1); XUl = [XU1l; XU2l]; XUu = [XU1u; XU2u]; Bounds = [XUl XUu]; % XUnom = XUl + 0.1*i*(XUu-XUl); XUnomscaled = (2*XUnom - XUu - XUl)./(XUu - XUl); XUuscaled = ones(6,1); XUlscaled = -ones(6,1); Coords = [XC1 XC2 XC3 XC4 Xw]; MatData = [EA nuA yStress FOS diA doA]; WheelAngles = [cbmin cbmax; ctmin ctmax]'; VehicleData = [m, amax]; parameters{1} = Coords; parameters{2} = MatData; parameters{3} = WheelAngles; parameters{4} = VehicleData; parameters{5} = Bounds; parameters{6} = alpha; % fileName = ['ParametricStudy9_' num2str(i) '.dat']; fileAddress = ['C:\Users\jainrht\Dropbox\UMich\Winter 2012\ME555\My Work\Results\' fileName]; fid = fopen(fileAddress,'w'); fprintf(fid,'Initial Conditions:\n-------------------\n'); fprintf(fid,'XU1_1 = %f\n',XU1nom(1)); fprintf(fid,'XU1_2 = %f\n',XU1nom(2)); fprintf(fid,'XU1_3 = %f\n',XU1nom(3)); fprintf(fid,'XU2_1 = %f\n',XU2nom(1)); fprintf(fid,'XU2_2 = %f\n',XU2nom(2)); fprintf(fid,'XU2_3 = %f\n\n',XU2nom(3)); fprintf(fid,'Lower Bounds:\n-------------\n'); fprintf(fid,'XU1_1 = %f\n',XU1l(1)); fprintf(fid,'XU1_2 = %f\n',XU1l(2)); fprintf(fid,'XU1_3 = %f\n',XU1l(3));

Page 66: ME555!12!05 FinalReport

66 ד ש ר

fprintf(fid,'XU2_1 = %f\n',XU2l(1)); fprintf(fid,'XU2_2 = %f\n',XU2l(2)); fprintf(fid,'XU2_3 = %f\n\n',XU2l(3)); fprintf(fid,'Upper Bounds:\n-------------\n'); fprintf(fid,'XU1_1 = %f\n',XU1u(1)); fprintf(fid,'XU1_2 = %f\n',XU1u(2)); fprintf(fid,'XU1_3 = %f\n',XU1u(3)); fprintf(fid,'XU2_1 = %f\n',XU2u(1)); fprintf(fid,'XU2_2 = %f\n',XU2u(2)); fprintf(fid,'XU2_3 = %f\n\n',XU2u(3)); % To be used for no scaling % fprintf(fid,'Initial Deformation (mm) = %f\n',optimFunction([XU1nom;XU2nom],parameters)/1e-3); % init_c = optimFunction([XU1nom;XU2nom],parameters,1); % To be used for scaling of variables fprintf(fid,'Initial Deformation (mm) = %f\n',optimFunction(XUnomscaled,parameters)/1e-3); init_c = optimFunction(XUnomscaled,parameters,1); % For scaled constraints fprintf(fid,'Intial Stress in upper Aarm (MPa) = %f\n',(init_c(1) + 1)*(yStress/FOS)/1e6); fprintf(fid,'Intial Stress in lower Aarm (MPa) = %f\n',(init_c(2) + 1)*(yStress/FOS)/1e6); fprintf(fid,'Initial Camber (deg) = %f\n',cbmin*(1+init_c(3))); fprintf(fid,'Initial Caster (deg) = %f\n\n',ctmin*(1-init_c(5))); % For unscaled constraints % fprintf(fid,'Intial Stress in upper Aarm (MPa) = %f\n',(init_c(1) + yStress/FOS)/1e6); % fprintf(fid,'Intial Stress in lower Aarm (MPa) = %f\n',(init_c(2) + yStress/FOS)/1e6); % fprintf(fid,'Initial Camber (deg) = %f\n',cbmin-init_c(3)); % fprintf(fid,'Initial Caster (deg) = %f\n\n',ctmin-init_c(5)); % OPTIMIZATION %%%%%%%%% % To be used for no scaling % [x,fval] = fmincon(@(x) optimFunction(x,parameters),[XU1nom;XU2nom],[],[],[],[],[XU1l;XU2l],[XU1u;XU2u],@(x) optimFunction(x,parameters,1)); % To be used for scaling of variables [x,fval,exitflag,outputs] = fmincon(@(x) optimFunction(x,parameters),XUnomscaled,[],[],[],[],XUlscaled,XUuscaled,@(x) optimFunction(x,parameters,1)); xsol = x; x = (1/2)*(x.*(XUu - XUl) + XUu + XUl); %%%%%%%%%%%%%%%%%%%%%%%% fprintf(fid,'Optimized Coordinates:\n----------------------\n');

Page 67: ME555!12!05 FinalReport

67 ד ש ר

fprintf(fid,'XU1_1 = %f\n',x(1)); fprintf(fid,'XU1_2 = %f\n',x(2)); fprintf(fid,'XU1_3 = %f\n',x(3)); fprintf(fid,'XU2_1 = %f\n',x(4)); fprintf(fid,'XU2_2 = %f\n',x(5)); fprintf(fid,'XU2_3 = %f\n\n',x(6)); fprintf(fid,'Minimum Function Value (mm) = %f\n',fval/1e-3); final_c = optimFunction(xsol,parameters,1); % For scaled constraints fprintf(fid,'Final Stress in upper Aarm (MPa) = %f\n',(final_c(1) + 1)*(yStress/FOS)/1e6); fprintf(fid,'Final Stress in lower Aarm (MPa) = %f\n',(final_c(2) + 1)*(yStress/FOS)/1e6); fprintf(fid,'Final Camber (deg) = %f\n',cbmin*(1+final_c(3))); fprintf(fid,'Final Caster (deg) = %f\n\n',ctmin*(1-final_c(5))); % For unscaled constraints % fprintf(fid,'Final Stress in upper Aarm (MPa) = %f\n',(final_c(1) + yStress/FOS)/1e6); % fprintf(fid,'Final Stress in lower Aarm (MPa) = %f\n',(final_c(2) + yStress/FOS)/1e6); % fprintf(fid,'Final Camber (deg) = %f\n',cbmin-final_c(3)); % fprintf(fid,'Final Caster (deg) = %f\n\n',ctmin-final_c(5)); fprintf(fid,'Weighting factor alpha = %f\n',alpha); fprintf(fid,'Number of Iterations = %f\n',outputs.iterations); fprintf(fid,'Number of Function evaluations = %f\n\n',outputs.funcCount); lastRun = optimFunction(xsol,parameters); results = load('C:\Users\jainrht\OutputData.dat'); deform = results(1:2:3); % Extract deformations % fprintf(fid,'Inner Dia (mm) = %f\n',diA(i)*1e3); % fprintf(fid,'Outer Dia (mm) = %f\n\n',doA(i)*1e3); fprintf(fid,'Final deformation in upper Aarm (mm) = %f\n',deform(1)/1e-3); fprintf(fid,'Final deformation in lower Aarm (mm) = %f\n',deform(2)/1e-3); fclose(fid);

Page 68: ME555!12!05 FinalReport

April 12, 2012 Team Number : 5

68

!*** 11 Mar 2012: Both Aarms with one batch file for a particular set of values of outboard mounting points

!*** Clear previous files

FINISH

/clear

!*** Set preferences

/NOPR

TEKEYW,PR_SET,1

KEYW,PR_STRUC,1

KEYW,PR_THERM,0

KEYW,PR_FLUID,0

KEYW,PR_ELMAG,0

KEYW,MAGNOD,0

KEYW,MAGEDG,0

KEYW,MAGHFE,0

KEYW,MAGELC,0

KEYW,PR_MULTI,0

KEYW,PR_CFD,0

/GO

!*

! /COM,

! /COM,Preferences for GUI filtering have been set to display:

! /COM, Structural

!*

!*** Preprocessor

/TITLE,Upper Aarm Optimization

!*** Read Parameters for Simulation

/INPUT,C:\Users\jainrht\ANSYSParameters,dat

Page 69: ME555!12!05 FinalReport

69 ד ש ר

!*** Read Variables for Simulation

/INPUT,C:\Users\jainrht\ANSYSVariables,dat

!*** Row Vector for Outputs

*DIM,OUTPUTDATA,ARRAY,1,4,

/PREP7

!*

ET,1,BEAM189

!*

KEYOPT,1,1,1

KEYOPT,1,2,0

KEYOPT,1,3,0

KEYOPT,1,4,2

KEYOPT,1,6,0

KEYOPT,1,7,0

KEYOPT,1,9,0

KEYOPT,1,11,0

KEYOPT,1,12,0

KEYOPT,1,15,0

!*

!*

MPTEMP,,,,,,,,

MPTEMP,1,0

MPDATA,EX,1,,EMODULUS

MPDATA,PRXY,1,,POISSONRATIO

!*** Section Data

SECTYPE, 1, BEAM, CTUBE, , 0

SECOFFSET, CENT

SECDATA,INNERDIA/2,OUTERDIA/2,0,0,0,0,0,0,0,0,0,0

Page 70: ME555!12!05 FinalReport

70 ד ש ר

!*** Preprocessor

K,1,X1,Y1,Z1,

K,2,X2,Y2,Z2,

FINISH

!*** Outboard Mounting point for Top A-arm

/PREP7

K,3,X3,Y3,Z3,

LSTR, 1, 3

LSTR, 2, 3

!*

! /SHRINK,0

! /ESHAPE,1.0

! /EFACET,1

! /RATIO,1,1,1

/CFORMAT,32,0

! /REPLOT

!*

!*

LATT,1, ,1, , , ,1

!*

LESIZE,ALL, , ,NELEPERBEAM, ,1, , ,1,

LMESH,1,2,1

FINISH

!*** Solution

/SOL

DK,1,,0,,0,ALL, , , , , ,

DK,2,,0,,0,ALL, , , , , ,

FK,3,FX,FORCEONARM1

Page 71: ME555!12!05 FinalReport

71 ד ש ר

! /STATUS,SOLU

SOLVE

FINISH

!*** Post Processing

/POST1

/ESHAPE,1,

!*** Get max deformation

NSORT,U,SUM,0,1, ,0

!*

!*

*GET,MAXDEFORM1,SORT,,MAX

!*** Get max stress

AVPRIN,0, ,

ETABLE,SDIR1,SMISC, 31

!*

AVPRIN,0, ,

ETABLE,SDIR2,SMISC, 36

!*

AVPRIN,0, ,

ETABLE,SBYT1,SMISC, 32

!*

AVPRIN,0, ,

ETABLE,SBYT2,SMISC, 37

!*

AVPRIN,0, ,

ETABLE,SBZB1,SMISC, 35

!*

AVPRIN,0, ,

ETABLE,SBZB2,SMISC, 40

Page 72: ME555!12!05 FinalReport

72 ד ש ר

!*

ESORT,ETAB,SDIR1,0,0, ,

*GET,SAX1,SORT,,MAX

!*

ESORT,ETAB,SDIR2,0,0, ,

*GET,SAX2,SORT,,MAX

!*

ESORT,ETAB,SBYT1,0,0, ,

*GET,SBY1,SORT,,MAX

!*

ESORT,ETAB,SBYT2,0,0, ,

*GET,SBY2,SORT,,MAX

!*

ESORT,ETAB,SBZB1,0,0, ,

*GET,SBZ1,SORT,,MAX

!*

ESORT,ETAB,SBZB2,0,0, ,

*GET,SBZ2,SORT,,MAX

MAXSIGMA1 = (SAX1+SAX2+SBY1+SBY2+SBZ1+SBZ2)/2

!***PLNSOL,S,EQV,0,1.0

!****GET,MAXSIGMA1,PLNSOL,0,MAX

OUTPUTDATA(1,1) = MAXDEFORM1

!***OUTPUTDATA(1,2) = 0

OUTPUTDATA(1,2) = MAXSIGMA1

FINISH

/SOL

LSCLEAR,ALL

Page 73: ME555!12!05 FinalReport

73 ד ש ר

FINISH

/PREP7

LCLEAR,1,2,1

LDELE,1,2,1,1

K,1,X4,Y4,Z4,

K,2,X5,Y5,Z5,

K,3,X6,Y6,Z6,

LSTR, 1, 3

LSTR, 2, 3

!*

! /SHRINK,0

! /ESHAPE,1.0

! /EFACET,1

! /RATIO,1,1,1

/CFORMAT,32,0

! /REPLOT

!*

!*

LATT,1, ,1, , , ,1

!*

LESIZE,ALL, , ,NELEPERBEAM, ,1, , ,1,

LMESH,1,2,1

FINISH

!*** Solution

/SOL

DK,1,,0,,0,ALL, , , , , ,

DK,2,,0,,0,ALL, , , , , ,

Page 74: ME555!12!05 FinalReport

74 ד ש ר

FK,3,FX,FORCEONARM2

! /STATUS,SOLU

SOLVE

FINISH

!*** Post Processing

/POST1

/ESHAPE,1,

!*** Get max deformation

NSORT,U,SUM,0,1, ,0

!*

!*

*GET,MAXDEFORM2,SORT,,MAX

!*** Get max stress

AVPRIN,0, ,

ETABLE,SDIR1,SMISC, 31

!*

AVPRIN,0, ,

ETABLE,SDIR2,SMISC, 36

!*

AVPRIN,0, ,

ETABLE,SBYT1,SMISC, 32

!*

AVPRIN,0, ,

ETABLE,SBYT2,SMISC, 37

!*

AVPRIN,0, ,

ETABLE,SBZB1,SMISC, 35

!*

AVPRIN,0, ,

Page 75: ME555!12!05 FinalReport

75 ד ש ר

ETABLE,SBZB2,SMISC, 40

!*

ESORT,ETAB,SDIR1,0,0, ,

*GET,SAX1,SORT,,MAX

!*

ESORT,ETAB,SDIR2,0,0, ,

*GET,SAX2,SORT,,MAX

!*

ESORT,ETAB,SBYT1,0,0, ,

*GET,SBY1,SORT,,MAX

!*

ESORT,ETAB,SBYT2,0,0, ,

*GET,SBY2,SORT,,MAX

!*

ESORT,ETAB,SBZB1,0,0, ,

*GET,SBZ1,SORT,,MAX

!*

ESORT,ETAB,SBZB2,0,0, ,

*GET,SBZ2,SORT,,MAX

MAXSIGMA2 = (SAX1+SAX2+SBY1+SBY2+SBZ1+SBZ2)/2

!***PLNSOL,S,EQV,0,1.0

!****GET,MAXSIGMA2,PLNSOL,0,MAX

OUTPUTDATA(1,3) = MAXDEFORM2

!***OUTPUTDATA(1,4) = 0

OUTPUTDATA(1,4) = MAXSIGMA2

!*** Write Interpolation data in Interpolationdata.txt

/OUTPUT,C:\Users\jainrht\OutputData.dat

Page 76: ME555!12!05 FinalReport

76 ד ש ר

!***X3 Y3 Z3 Max Deformation Max Stress

*VWRITE,OUTPUTDATA(1,1),OUTPUTDATA(1,2),OUTPUTDATA(1,3),OUTPUTDATA(1,4)

%20.15f%20.5f%20.15f%20.5f

/OUTPUT

Page 77: ME555!12!05 FinalReport

77 ד ש ר

Appendix C2 MATLAB code for Pushrod-Bellcrank-Shocker Subsystem:

The ‘fmincon’ function using ‘Sequential Quadratic Programming’ is called in MATLAB as follows.

% clear all; coordinatevalues; % initial_values=[80;230;245;75;290;245;93;250;325]*1e-3; initial_values=[100;250;265;100;270;280;100;260;310]*1e-3; OPTIONS = optimset('Algorithm','sqp'); [X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN] = fmincon(@(x) displ(x,XS4,XC1,XC2,XW,Mv,Wb,XCG,XC5,Tw,v,R,t,K,C,nu),initial_values,[],[],[],[],[XC3(1,1);XC6(2,1);XC6(3,1);XC3(1,1);XC6(2,1);XC6(3,1);XC3(1,1);XC6(2,1);XC6(3,1)],[XC1(1,1);XU1(2,1);XC3(3,1)+0.100;XC1(1,1);XU1(2,1);XC3(3,1)+0.100;XC1(1,1);XU1(2,1);XC3(3,1)+0.100],@(x) constraint(x,XS4,XC1,XC2,XC3,XC4,XU1,XW,Mv,Wb,XCG,XC5,Tw,v,R,nu),OPTIONS); The objective function, and the other functions that define the objective function are:

function [obj]=displ(XS,XS4,XC1,XC2,XW,Mv,Wb,XCG,XC5,Tw,v,R,t,K,C,nu) XS1=XS(1:3,1); XS2=XS(4:6,1); XS3=XS(7:9,1); forcep_S3=forceS3(XS,XS4,XC1,XC2,XW,Mv,Wb,XCG,XC5,Tw,v,R,nu); % force at S3 due to acceleration and weight of the vehicle forcep_S3=forcep_S3*(-1); fweightpush=fweight(XS,XS4,XC1,XC2,XC5,XW,XCG,Mv,Wb); % force at S3 at initial conditions (vector) % OBJECTIVE FUNTION obj=(-forcep_S3+(fweightpush))^2; % fprintf(fid,'Value %f\n\n',obj); end % XS1 : Vector coordinates of S1 % XS2 : Vector coordinates of S2 % XS3 : Vector coordinates of S3 % XS4 : Vector coordinates of S4 % XC1 : Vector coordinates of C1 % XC2 : Vector coordinates of C2 % XC5 : Vector coordinates of C5 % XW : Vector coordinates of W % XCG : Vector coordinates of CG % Tw : Track Width % Wb : Wheelbase % Mv : Mass of vehicle % v : velocity of the car % R : radius of turning % t : Time % K : spring coefficient % C: Damping coefficient % displ : amount of compression in the spring-damper system

function [forcep_S3]=forceS3(XS,XS4,XC1,XC2,XW,Mv,Wb,XCG,XC5,Tw,v,R,nu)

Page 78: ME555!12!05 FinalReport

78 ד ש ר

XS1=XS(1:3,1); XS2=XS(4:6,1); XS3=XS(7:9,1); r2=XS2-XS1; r3=XS2-XS4; forcep_S4=forceS4(XS,XS4,XC1,XC2,XW,Mv,Wb,XCG,XC5,Tw,v,R,nu); forcep_S2=forcep_S4; %Assuming S4-S2 to be a two force member, hence force at S2=force at S4 forcep_S3=norm(cross((XS2-XS1),forcep_S2))/norm(cross((XS3-XS1),XC5-XS3)); % torque_S1S2=cross(r2,forcep_S2); % forcep_S3=fsolve(@(x) shrikant(x, torque_S1S2, XS),[1;2;4]); %force at S3 opposing the torque about S1 due to force at S3 end % forcep_S3 : force along the rocker arm S3-C5 (Vector) % forcep_S4 : force along the pushrod arm S4-S2 (Scalar) % forcepv_S4 : force along the pushrod arm S4-S2 (Vector) % torque_S1S2 : torque about line S1-S2 (Vector) % XS1 : Vector coordinates of S1 % XS2 : Vector coordinates of S2 % XS3 : Vector coordinates of S3 % XS4 : Vector coordinates of S4 % XC1 : Vector coordinates of C1 % XC2 : Vector coordinates of C2 % XC5 : Vector coordinates of C5 % XW : Vector coordinates of W % XCG : Vector coordinates of CG % Tw : Track Width % Wb : Wheelbase % Mv : Mass of vehicle % v : velocity of the car % R : radius of turning

function [forcep_S4]=forceS4(XS,XS4,XC1,XC2,XW,Mv,Wb,XCG,XC5,Tw,v,R,nu) XS1=XS(1:3,1); XS2=XS(4:6,1); XS3=XS(7:9,1); Fv4=force_wheel(Mv,Wb,XCG); facc=(((v^2)*XCG(3,1)*Mv/(R*Tw))+(Mv*9.81/2))/(2*nu); facc=[0;-facc;0]; FS=Fv4+facc; %Adding the force due to centripetal acceleration to the weight acting at t=0 seconds torque_C1C2=torqueC1C2(XC1,XC2,XW,FS); forcep_S4=fsolve(@(x) danvir(x,XS4,torque_C1C2,XS,XC1,XC2),[1;10;8]); % forcep_S4=FS; end % Fv4 : Force on the front outer wheel due to the weight of the vehicle (Vector) % facc : Force on the front outer wheel due to the centripetal force (Vector)

Page 79: ME555!12!05 FinalReport

79 ד ש ר

% torque_C1C2 : torque about the line C1-C2 % forcep_S4 : force along the pushrod arm S4-S2 (Vector) % XS1 : Vector coordinates of S1 % XS2 : Vector coordinates of S2 % XS3 : Vector coordinates of S3 % XS4 : Vector coordinates of S4 % XC1 : Vector coordinates of C1 % XC2 : Vector coordinates of C2 % XC5 : Vector coordinates of C5 % XW : Vector coordinates of W % XCG : Vector coordinates of CG % Tw : Track Width % Wb : Wheelbase % Mv : Mass of vehicle % v : velocity of the car % R : radius of turning

function [torque_C1C2] = torqueC1C2(XC1, XC2, XW, FS) % rot = XC1-XC2; CC=fsolve(@(x) myfun(x,XC1,XC2,XW), [1;2;3]); r = CC-XW; torque_C1C2=cross(r, FS); %FS is the force due to the mass of vehicle at the wheel and force due to acceleration at the wheel end % CC : vector coordinates of point perpendicular on XC1-XC2 from XW

function [F] = danvir(x, XS4, torque_C1C2,XS,XC1,XC2) XS1=XS(1:3,1); XS2=XS(4:6,1); XS3=XS(7:9,1); CCF=fsolve(@(x) myfun1(x,XC1,XC2,XS4), [1;2;3]); r=CCF-XS4; F=torque_C1C2 - cross(r, x); end

The constraints file is given as follows:

function [c,ceq] = constraint(XS,XS4,XC1,XC2,XC3,XC4,XU1,XW,Mv,Wb,XCG,XC5,Tw,v,R,nu) XS1=XS(1:3,1); XS2=XS(4:6,1); XS3=XS(7:9,1); c(1)=acos(dot((XS2-XS1),(XS3-XS1))/(norm(XS2-XS1)*norm(XS3-XS1)))-(0.75*pi); c(2)=-(acos(dot((XS2-XS1),(XS3-XS1))/(norm(XS2-XS1)*norm(XS3-XS1))))+(0.25*pi); c(3)=norm(XS3-XS1)-0.080; c(4)=-norm(XS3-XS1)+0.02; c(5)=norm(XS2-XS1)-0.080; c(6)=-norm(XS2-XS1)+0.02; c(7)=-norm(XS2-XS3)+0.02; c(8)=norm(XS2-XS3)-0.08;

Page 80: ME555!12!05 FinalReport

80 ד ש ר

ceq(1)=dot(cross((XS4-XS2),(XS2-XS1)),(XS3-XS1)); ceq(2)=dot(cross((XS2-XS1),(XS3-XS1)),(XC5-XS3)); ceq(3)=((XS1(1,1)-XC3(1,1))/((XC4(1,1)-XC3(1,1))))-((XS1(2,1)-XC3(2,1))/(XC4(2,1)-XC3(2,1))); ceq(4)=((XS1(1,1)-XC3(1,1))/((XC4(1,1)-XC3(1,1))))-((XS1(3,1)-XC3(3,1))/(XC4(3,1)-XC3(3,1))); end

Page 81: ME555!12!05 FinalReport

81 ד ש ר

Appendix C3 MATLAB code for Steering Subsystem:

The MATLAB functions and m files used for the optimization are included in the succeeding pages:

%M file containing the parametric values and constants, based on the % data obtained from the M Racing team clear clc %Fixed points XCG = [0; -755.904; 299.72]/1000; XC6 = [ 0; -101.998; 15.897]/1000; XW1o = [584.2; 0; 222.25]/1000; XU11 = [518.599; -5.001; 127]/1000; XU21 = [ 505.729; -32.999; 315.998]/1000; %vehicle dimensions ltw = 1168.4/1000; lwb = 1574.8/1000; m = 190; mu = 1.34; wheelw = 8*25.4/1000; %8 inch patch = [8.315/1000, wheelw]; %rack-pinion-steering wheel dP=1*25.4/1000; %diameter of pinion = 1 inch lR = 0.866*2*25.4/1000; dT = 260.35/1000;%diameter of steering wheel % material properties diT = 10.922/1000; doT = 12.7/1000; ET = 200e9; sigmaT = 360.6e6; nuT = 0.285; FOS = 1.6; %desired properties ltid = 0.05*25.4/1000; %toe in length dh = 10*25.4/1000; %hub diameter tauTd = 14; Rmind = 7.25; %phiti1d = asin(ltid/ dh); phiti1d=0; phiti2d = -phiti1d; %Var = [XT11; XU31; phiti] phiti is toe in angle of wheel %bounds cuboid_bound = 0.25; %25cm bound around XUC1 T1_bound = 0.25; %25cm bound lack_bound = 0.4; lti_bound = 0.01; % 2mm bound tauT_bound = 6^2; %0.5Nm bound

Page 82: ME555!12!05 FinalReport

82 ד ש ר

%fixed points calculated XW2o = XW1o-[ltw;0;0]; XU12 = XU11-[ltw-2*(XW1o(1)-XU11(1));0;0]; XU22 = XU21-[ltw-2*(XW1o(1)-XU21(1));0;0]; XUC1 = (XU11+XU21)/2; %center point of U1 and U2 XUC2 = (XU12+XU22)/2; U3_bound = abs(XU11-XU21);

%Main program to be run % Performs the optimization and stored the data in a csv file. %First calls the steering_variables.m file to load all the constants % and data into workspace steering_variables file_start = 'optim'; file_end = '.csv'; phi_var = 0; headings = {'Initial value'; 'Optim'; 'Func Value'; 'lack objective?';... 'No of iterations'; 'No of func evals'; 'Exit Flag'; 'x'; 'Torque'; … 'lack Max'; 'lack Min'; 'Bounds'; 'Constraints; XU11'}; % to create the headings in the csv file filename = 'Parametric.csv'; fid = fopen(filename, 'a'); for i=1: length(headings) fprintf(fid, '%s, ', headings{i}); end fprintf(fid, '\n'); fclose(fid); %defualt values XT11_initx = XC6(1)+lR/2+0.01; XU31_init =([501.599; -65.49898; 175.00]+[5;5;5]) /1000; phiti1_init = phiti1d; xp = 0; %Change this to true if want to switch the ackermann parameter as the %objective function and the steering torque as a constraint.. lack_obj = 1; xlimit = lR/4; %the lower x point from which the ackermann steering % is minimized that is the steering parameter is minimized from xlimit % to lR/2 (length of rack/2) i=1; filename_optim = strcat(file_start, num2str(i), file_end);

Page 83: ME555!12!05 FinalReport

83 ד ש ר

if phi_var==0 headings_optim = {'lack upper'; 'lack lower'; 'stress 1'; 'stress 2'; 'stress 3';... 'stress 4'; 'min turning radius'; 'Var 1'; 'Var 2'; 'Var 3'; 'Var 4'; ... Var 5'; 'Steering torque'; 'lack max'; 'lack min'; 'Function value'}; else headings_optim = {'lack upper'; 'lack lower'; 'stress 1'; 'stress 2'; stress 3';... 'stress 4'; 'toe in 1 upper'; 'toe in 1 lower'; 'toe in 1 upper'; ... 'toe in 1 lower'; 'min turning radius'; 'Var 1'; 'Var 2'; 'Var 3';'Var 4';... 'Var 5'; 'Steering torque'; 'lack max'; 'lack min';'Function value'}; end fid = fopen(filename_optim, 'w'); for p=1: length(headings_optim) fprintf(fid, '%s, ', headings_optim{p}); end fprintf(fid, '\n'); fclose(fid); if (U3_bound(1,1)<cuboid_bound) U3_bound(1,1) = cuboid_bound; end if (U3_bound(2,1)<cuboid_bound) U3_bound(2,1) = cuboid_bound; end %parameters combined fixed_points = [XU11, XU21, XU12, XU22, XUC1, XUC2, XW1o, XW2o, XCG, XC6]; veh_dim = [m, mu, ltw, lwb, wheelw, patch]; diameters = [dP, lR, dT]; material = [diT, doT, ET, sigmaT, nuT, FOS]; desired = [tauTd, ltid, dh, Rmind]; bounds = [cuboid_bound, T1_bound, lack_bound, lti_bound, tauT_bound]; if phi_var==0 LB = [-1; -1; -1; -1]; UB = [1; 1; 1; 1]; Var_init = [XT11_initx; XU31_init]; lower_bound = [XC6(1,1)+lR/2; XUC1 - U3_bound/2]; upper_bound = [XC6(1,1)+T1_bound+lR/2; XUC1 + U3_bound/2]; else Var_init = [XT11_initx; XU31_init; phiti1_init]; LB = [-1; -1; -1; -1; -1]; UB = [1; 1; 1; 1; 1]; lower_bound = [XC6(1,1)+lR/2; XUC1 - U3_bound/2; phiti1d-0.5]; upper_bound = [XC6(1,1)+T1_bound+lR/2; XUC1 + U3_bound/2; phiti1d + 0.5]; end parameters{1} = fixed_points; parameters{2} = veh_dim;

Page 84: ME555!12!05 FinalReport

84 ד ש ר

parameters{3} = diameters; parameters{4} = material; parameters{5} = desired; parameters{6} = bounds; parameters{7} = lower_bound; parameters{8} = upper_bound; scaled_var_init = (2*Var_init-upper_bound-lower_bound)./(upper_bound-lower_bound); options = optimset('Algorithm', 'active-set',... 'Display', 'final-detailed'); %fmincon called [optim_scaled, fval, exitflag, output, lambda, grad, hessian] = ... fmincon(@(x) steering_subsystem(x, xp, xlimit, parameters, filename_optim, ... 0, lack_obj), scaled_var_init, [], [], [],[], ... LB, UB, @(x) steering_subsystem(x), options) for q=1:length(optim_scaled) optim(q, 1) = 0.5*(optim_scaled(q, 1)*(upper_bound(q,1)-lower_bound(q,1))+upper_bound(q,1)+lower_bound(q,1)); end [val, Ceq, COR, lack, tauT, lack_max, lack_min, tauTx] = ... steering_subsystem(optim_scaled, xp, xlimit, parameters, '', 0, lack_obj); [C] = steering_subsystem(optim_scaled); fid = fopen(filename, 'a'); fprintf(fid, '%d, %d, %d, %d, %d,%d, %d, %d, %d, %d, %d, %d, %d, %d \n',... Var_init(1,1), optim(1,1),fval, lack_obj, output.iterations, ... output.funcCount, exitflag, xp, tauT, lack_max ,lack_min,bounds(1), C(1,1), XU11(1)); for m=2:length(Var_init) if m<4 fprintf(fid, '%d, %d, , , , , , , , , , %d, %d, %d \n',... Var_init(m,1), optim(m,1),bounds(m), C(1,m), XU11(m,1)); else fprintf(fid, '%d, %d, , , , , , , , , , %d, %d \n',... Var_init(m,1), optim(m,1),bounds(m), C(1,m)); end end for n=m+1:size(bounds,2) fprintf(fid, ' , , , , , , , , , , , %d, %d \n',bounds(n), C(1,n)); end for o = n+1:size(C, 2) fprintf(fid, ' , , , , , , , , , , , , %d \n', C(1,o)); end fprintf(fid, 'Lagrange Multiplliers(non lin; lower; upper) :,'); fprintf(fid, '%d, ', [lambda.ineqnonlin' lambda.lower' lambda.upper']); fprintf(fid, '\n\n'); fclose(fid);

Page 85: ME555!12!05 FinalReport

85 ד ש ר

end% Steering Subsystem!! %The main function computing the objective function and all the non linear %constraints. %Objective function is either the steering torque or the Ackermann %parameter %Inputs: % scaled variables: T11, U31 coordinates, phi1 % xp : present position of the rack, at which the steering torque is % calulated % xlimit: position of rack from which onwards we want to reduce the % Ackermann parameter %parameters: Cell array containing all parameters used by the function %filename: To save the function evaluation data % to_plot: Set as 1 if you want to plot the various computations like % Ackermann parameter etc.. 0 otherwise %lack_obj: Set equal to one if the Ackermann parameter is the objective %function to be minimized. Set zero if steering torque is desired objective %function % Var = [distT1; l2 or XU31, psi] function [return_val, Ceq, COR, lack, tauT, lack_max, lack_min, tauTx] = ... steering_subsystem(scaled_var, xp, xlimit, parameters, filename, ... to_plot, lack_obj) Ceq = []; %No equality constraints persistent C %constraints if (nargin<3) return_val = C; else %% clear lack stress tauT %extracting the parameters from the cell array fixed_points = parameters{1}; veh_dim = parameters{2}; diameters = parameters{3} ; material = parameters{4} ; desired = parameters{5}; bounds = parameters{6}; lower_bound = parameters{7}; upper_bound = parameters{8}; %descaling the variables for i=1:length(scaled_var) Var(i, 1) = 0.5*(scaled_var(i, 1)*(upper_bound(i,1)-lower_bound(i,1))... +upper_bound(i,1)+lower_bound(i,1)); end XT11x = Var(1,1); XU31p = Var(2:4, 1);

Page 86: ME555!12!05 FinalReport

86 ד ש ר

%if the toe in angle is not sent or is not a variable, then use toe % in angle as 0 if length(Var)~=5 phiti1 = 0; Var = [Var; phiti1]; else phiti1 = Var(5, 1); end phiti2 = -phiti1; XU11 = fixed_points(:,1); XU21 = fixed_points(:,2); XU12 = fixed_points(:,3); XU22= fixed_points(:,4); XW1o = fixed_points(:,7); XCG = fixed_points(:,9); m = veh_dim(1); mu = veh_dim(2); ltw = veh_dim(3); lwb = veh_dim(4); patch = veh_dim(6:7); dP = diameters(1); lR = diameters(2); diT = material(1); doT = material(2); sigmaT = material(4); FOS = material(6); tauTd = desired(1); ltid = desired(2); dh = desired(3); Rmind = desired(4); cuboid_bound = bounds(1); T1_bound = bounds(2); lack_bound = bounds(3); lti_bound = bounds(4); tauT_bound = bounds(5); %% [pr_coord, link_lengths, o_coord, Flag1] = ... coordinates(xp, Var,lR, fixed_points); %computing the coordinates of other points, given coordinates of U31, %T11 %If fsolve failed, then return default values if Flag1<0 if length(scaled_var)==5 C = [1e10, 1e10,1e10, 1e10, 1e10, 1e10, 1e10, 1e10, 1e10, ... 1e10, 1e10]; else C = [1e10, 1e10,1e10, 1e10, 1e10, 1e10, 1e10]; end return_val = 1e10; COR=[0;0;0]; tauT = 1e10; lack_max = 100;

Page 87: ME555!12!05 FinalReport

87 ד ש ר

lack_min=100; lack = zeros(50,1); tauTx=zeros(50,1); return; end %Toe-in parameters lti1 = sin(phiti1)*dh; lti2 = sin(phiti2)*dh; xnew = linspace(xlimit, lR/2, 50); %xnew=xp; [lack, lack_max, lack_min, COR, CORmin, new_coord]= ... steer(xnew, lwb, ltw, Var, lR, fixed_points, link_lengths, o_coord,... pr_coord); XW1p = pr_coord(13:15); XW2p = pr_coord(16:18); phi1p = pr_coord(19); phi2p = pr_coord(20); % Computing the torque on the uprights and the force required from the rack tau11 = wheel_tor(XU11, XU21, XW1p, [0; patch(1)], ... [-patch(2)/2; patch(2)/2], phi1p, m, mu, +1); % torques on the two wheels are opposing tau21 = wheel_tor(XU12, XU22, XW2p, [-patch(1); 0], ... [-patch(2)/2; patch(2)/2], phi2p, m, mu, +1); [Fin1, R11, R21] = statics(fixed_points, pr_coord, tau11, tau21); tau12 = wheel_tor(XU11, XU21, XW1p, [0; patch(1)], ... [-patch(2)/2; patch(2)/2], phi1p, m, mu, -1); tau22 = wheel_tor(XU12, XU22, XW2p, [-patch(1); 0], ... [-patch(2)/2; patch(2)/2], phi2p, m, mu, -1); [Fin2, R12, R22] = statics(fixed_points, pr_coord, tau12, tau22); Fin = (max(abs(Fin1), abs(Fin2))); tauT = Fin*dP/2; % Steering torque is due to max force required [tauTx] = compute_tauTx(Var, fixed_points, link_lengths, ... o_coord, pr_coord, m, mu, patch, dP, lwb, ltw, lR); AT = pi*(doT^2-diT^2)/4; %computing stressesin tie-rods stressT11 = R11/AT; stressT21 = R21/AT; stressT12 = R12/AT; stressT22 = R22/AT; %Minimum radius of turning

Page 88: ME555!12!05 FinalReport

88 ד ש ר

Rmin = norm(CORmin(1:2)-XCG(1:2)); if (nargin>5)&&(to_plot==1) figure(1) plot(xnew, lack) figure(2) plot(COR(1,:), COR(2,:), 'x') figure(3) plot(xnew, new_coord(19,:), xnew, new_coord(20,:)) legend('Right wheel angle', 'Left wheel angle') figure(4) plot(xnew, new_coord(7,:), xnew, new_coord(10,:)) figure(5) plot(xnew, new_coord(8,:), xnew, new_coord(11,:)) figure(6) plot(xnew, new_coord(9,:), xnew, new_coord(12,:)) figure(7) plot(xnew, new_coord(13,:)) figure(8) plot(xnew, new_coord(14,:)) figure(9) plot(new_coord(7,:), new_coord(8,:), 'xr', new_coord(13, :),... new_coord(14, :), 'ob', fixed_points(1,5), fixed_points(2,5), 'xc') end if nargin==7 if lack_obj==1 C(1,1) = tauT^2/(tauTd^2+tauT_bound)-1; C(1,2) = 1-tauT^2/(tauTd^2-tauT_bound); if lack_max^2>lack_min^2 return_val = 1000*lack_max^2; else return_val =1000*lack_min^2; end else C(1,1) = lack_max/lack_bound-1; C(1,2) = -1-lack_min/lack_bound; return_val = (tauT^2-tauTd^2)^2; end else return_val=0; end C(1,3) = (stressT11/sigmaT*FOS)^2-1; C(1,4) = (stressT12/sigmaT*FOS)^2-1; C(1,5) = (stressT21/sigmaT*FOS)^2-1; C(1,6) = (stressT22/sigmaT*FOS)^2-1; C(1,7) = Rmin/Rmind-1; if length(scaled_var)==5 C(1,8) = ((lti1-ltid)/lti_bound)^2-1; C(1,9) = ((ltid-lti1)/lti_bound)^2-1; C(1,10) = ((lti2-ltid)/lti_bound)^2-1; C(1,11) = ((ltid-lti2)/lti_bound)^2-1;

Page 89: ME555!12!05 FinalReport

89 ד ש ר

end if (nargin>=5) fid = fopen(filename, 'a'); %Save data in the file if ~(fid== -1) fprintf(fid, '%d, ', [C Var' tauT lack_max lack_min]); fprintf(fid, '%d \n',return_val); fclose(fid); end end end end %% % To calculate the steering torque over the range of motion of the rak, and % return for plotting.. function [tauTx] = compute_tauTx(Var, fixed_points, link_lengths, o_coord,... pr_coord, m, mu, patch, dP, lwb, ltw, lR) xnew = linspace(0,lR/2, 50); [lack, lack_max, lack_min, COR, CORmin, new_coord]= steer(xnew, lwb,... ltw, Var, lR, fixed_points, link_lengths, o_coord, pr_coord); for i=1:size(new_coord,2) XW1n = new_coord(13:15,i); XW2n = new_coord(16:18,i); phi1n = new_coord(19,i); phi2n = new_coord(20,i); XU11 = fixed_points(:,1); XU21 = fixed_points(:,2); XU12 = fixed_points(:,3); XU22 = fixed_points(:,4); tau11x = wheel_tor(XU11, XU21, XW1n, [0; patch(1)], ... [-patch(2)/2; patch(2)/2], phi1n, m, mu, +1); % torques on the two wheels are opposing tau21x = wheel_tor(XU12, XU22, XW2n, [-patch(1); 0], ... [-patch(2)/2; patch(2)/2], phi2n, m, mu, +1); [Fin1x, R11x, R21x] = statics(fixed_points, pr_coord, tau11x, tau21x); tau12x = wheel_tor(XU11, XU21, XW1n, [0; patch(1)], ... [-patch(2)/2; patch(2)/2], phi1n, m, mu, -1); tau22x = wheel_tor(XU12, XU22, XW2n, [-patch(1); 0], ... [-patch(2)/2; patch(2)/2], phi2n, m, mu, -1); [Fin2x, R12x, R22x] = statics(fixed_points, pr_coord, tau12x, tau22x); Finx = (max(abs(Fin1x), abs(Fin2x))); tauTx(i) = Finx*dP/2; end

Page 90: ME555!12!05 FinalReport

90 ד ש ר

end %% % Function to calcualte the coordinates of all the points, given the % coordinates of T11, U31 and agle the wheel makes with the forward % direction (phi) function [pr_coord, link_lengths, o_coord, Flag] =... coordinates(xp, given_coord,lR, fixed_points, link_lengths, o_coord) %Extracting the coordinates of fixed points XU11 = fixed_points(:,1); XU21 = fixed_points(:,2); XU12 = fixed_points(:,3); XU22 = fixed_points(:,4); XUC1 = fixed_points(:,5); XUC2 = fixed_points(:,6); XW1o = fixed_points(:,7); XW2o = fixed_points(:,8); XCG = fixed_points(:,9); XC6 = fixed_points(:,10); % XT11p = [given_coord(1,1); XC6(2:3,1)];%y and z coordinate of T11 are same % as those of C6 (chassis point) XU31p = given_coord(2:4,1); phiti1 = given_coord(5); phiti2 = -phiti1; XG1p = XC6+[xp;0;0]; % Center of gravity point of the rack Flag1=0; if (nargin<6) % if link_lengths and o_coord not calculated previously and % not passed to this function, then calculate them clear link_lengths o_coord l2 = norm(XU31p-XT11p); %length of tie rod l31 = norm(XU31p-XU11); %length of upright U3-U1 l32 = norm(XU31p-XU21);%length of upright U3-U2 distT1 = XT11p(1)-XG1p(1)-lR/2; % distance between point T11 and end of rack %o_coord are the coordinates of the points when zero displacement of %rack XT11o = XC6+[lR/2+distT1;0;0]; %Original coordinate of T1 when % displacement of rack =0 XT12o = XC6-[lR/2+distT1;0;0]; options = optimset('MaxIter',1000, 'MaxFunEvals', 1000, ... 'TolFun', 1e-10, 'Display', 'off'); [XU31o, fval , Flag1] = ... fsolve(@(x) XU3(x, l2, l31, l32, XU11, XU21, XT11o), XU31p, options); % Solve for original coordinate of U31. Intitial guess is present % coordinate of U31 distC6U3o = XU31o(1,1)-XC6(1,1); XU32o = [ XC6(1,1)-distC6U3o; XU31o(2,1); XU31o(3,1)]; % mirror U32 as U31 about the chassis point C6

Page 91: ME555!12!05 FinalReport

91 ד ש ר

perp = [0;1;0]; %vector along the length of the vehicle, pointing forward %calculate alpha1 and alpha2 from phiti1 and phiti2 rUC1U31o = XU31o-XUC1; theta31o = atan2(rUC1U31o(2), rUC1U31o(1))-atan2(perp(2), perp(1)); %angle from front direction to the upright psi1 = phiti1-theta31o; % angle from the upright to the wheel rUC1W1o = XW1o-XUC1; alpha1 = atan2(rUC1W1o(2), rUC1W1o(1))-atan2(rUC1U31o(2), rUC1U31o(1)); %angle from the upright to wheel-upright vector rUC2U32o = XU32o-XUC2; theta32o = atan2(rUC2U32o(2), rUC2U32o(1))-atan2(perp(2), perp(1)); psi2 = phiti2-theta32o; rUC2W2o = XW2o-XUC2; alpha2 = atan2(rUC2W2o(2), rUC2W2o(1))-atan2(rUC2U32o(2), rUC2U32o(1)); o_coord = [XT11o;...% 1 to 3 XT12o; ... %4 to 6 XU31o; ... %7 to 9 XU32o;... % 10 to 12 XW1o;... %13 to 15 XW2o; ... % 16 to 18 rUC1W1o; ...%19 to 21 rUC2W2o; ... %22 to 24 distT1];% 25 %angles normalized and stored in link_lengths.. These dont change with %the position of the rack link_lengths = [l2; l31; l32;... % 1 to 3 normalize(alpha1); normalize(alpha2); normalize(psi1);... normalize(psi2)];% 4 to 7 else %Extracting the original coordinaes and link lengths XU32o = o_coord(10:12,1); XW1o = o_coord(13:15,1); XW2o = o_coord(16:18,1); rUC1W1o = o_coord(19:21,1); rUC2W2o =o_coord(22:24,1); distT1 = o_coord(25,1); l2 = link_lengths(1); l31 =link_lengths(2); l32 = link_lengths(3); alpha1 = link_lengths(4); alpha2 = link_lengths(5); psi1 = link_lengths(6); psi2 = link_lengths(7); end clear XW2p XW1p

Page 92: ME555!12!05 FinalReport

92 ד ש ר

XT12p = XG1p-[lR/2+distT1;0;0]; perp = [0;1;0]; options = optimset('MaxIter',1000, 'MaxFunEvals', 1000, ... 'TolFun', 1e-10, 'Display', 'off'); [XU32p, fval , Flag2] = ... fsolve(@(x) XU3(x, l2, l31, l32, XU12, XU22, XT12p), XU32o, options); rUC1U31p = XU31p-XUC1; Ralpha1 = [cos(alpha1) -sin(alpha1); sin(alpha1) cos(alpha1)]; %rotation matrix to rotate the UC1-U31 vector by alpha to get unit vector %from UC1 to W1p rUC1W1p = Ralpha1*rUC1U31p(1:2)/norm( rUC1U31p(1:2)); % unit vector from UC1 to XW1p XW1p(1:2, 1) = XUC1(1:2,1)+norm(rUC1W1o(1:2,1))*rUC1W1p(1:2,1); XW1p(3,1) = XW1o(3,1); rUC2U32p =XU32p- XUC2; Ralpha2 = [cos(alpha2) -sin(alpha2); sin(alpha2) cos(alpha2)]; rUC2W2p = Ralpha2* rUC2U32p(1:2)/norm( rUC2U32p(1:2)); % unit vector from W2p to UC2 XW2p(1:2, 1) = XUC2(1:2,1)+norm(rUC2W2o(1:2,1))*rUC2W2p(1:2,1); XW2p(3, 1) = XW2o(3,1); theta31p = atan2(rUC1U31p(2), rUC1U31p(1))-atan2(perp(2), perp(1)); phi1p = theta31p+psi1; %phi is the angle of the wheel with the forward direction of the car (given %by vector perp) theta32p = atan2(rUC2U32p(2), rUC2U32p(1))-atan2(perp(2), perp(1)); phi2p = theta32p+psi2; pr_coord = [XT11p;...% 1 to 3 XT12p;...% 4 to 6 XU31p;... % 7 to 9 XU32p;... % 10 to 12 XW1p;... % 13 to 15 XW2p;... % 16 to 18 normalize(phi1p); normalize(phi2p)]; %19 to 20 if Flag1<0 || Flag2<0 Flag=-1; else Flag=1; end %if fsolve cannot solve, then retun a negative flag which indicates that %the points are not allowed end %% %To compute the coordinates of the points when rack at new position 'xnew' %given the present coordinates of the points.. function [new_coord, Flag] = kinematics(xnew, given_coord, lR, ... fixed_points, link_lengths, o_coord, pr_coord)

Page 93: ME555!12!05 FinalReport

93 ד ש ר

distT1 = o_coord(25,1); l2 = link_lengths(1); l31 =link_lengths(2); l32 = link_lengths(3); phiti1 = given_coord(5); XU11 = fixed_points(:,1); XU21 = fixed_points(:,2); XC6 = fixed_points(:,10); XU31p = pr_coord(7:9,1); XG1new = XC6+[xnew;0;0]; %New center of gravity of the rack %distT1 = XT11p(1)-XG1p(1)-lR/2; XT11new = XG1new+[lR/2+distT1; 0; 0];% new coordinates of T11 point options = optimset('MaxIter',1000, 'MaxFunEvals', 1000, 'Display', 'off'); [XU31new, fval, Flag1] = ... fsolve(@(x) XU3(x, l2, l31, l32, XU11, XU21, XT11new), XU31p, options); %Solve for the new coordinates of point U31 given_coord = [XT11new(1,1); XU31new; phiti1]; % array of points for % passing to the coordinates function [new_coord, link_lengths, o_coord, Flag2] =... coordinates(xnew, given_coord, lR, fixed_points, link_lengths, o_coord); if Flag1<0 || Flag2<0 Flag=-1; %If fsolve failed, then return negativeflag which says that % some problem encountered else Flag=1; end end %% % TO calculate the steering parameters ie when the new position of rack % given, computing the coordinates of all the points sing 'kinematics' % function and then computing the Ackermann parameter and the center of % rotation of the front wheels function [lack, lack_max, lack_min, COR, CORmin, new_coord] = ... steer(xnew, lwb, ltw, Var, lR, fixed_points, link_lengths, o_coord, pr_coord) XW1o = fixed_points(:,7); Xrear2 = XW1o(2)-lwb; %lack(1,1) = 0; lack_max=0; lack_min=1e6; new_coord(:,1) = pr_coord;%initialized, in case xnew length is 0 %new_coord(20,1) = new_coord(20,1)-2*pi; for i=1:length(xnew) [new_coord(:,i), Flag2] = kinematics(xnew(i), Var, lR, ... fixed_points, link_lengths, o_coord, pr_coord);

Page 94: ME555!12!05 FinalReport

94 ד ש ר

% kinematics function used to calculate the new coordinates of the % points when rack at xnew COR(:,i) = CenterOfRotation(new_coord(:,i), fixed_points, ltw, lwb) ; lack(i,1) = COR(2,i)-Xrear2; %Ackermann parameter is the difference % the y coordinate of the center of rotation and the rear axle if lack_max<lack(i,1) lack_max = lack(i,1); end if lack_min>lack(i,1) lack_min=lack(i,1); end end CORmin = COR(:,i); end %% % To compute the center of rotation of the axis of the two front wheels, % for present coordinates function [COR] = CenterOfRotation(pr_coord, fixed_points, ltw, lwb) phi1p = pr_coord(19);% angle of wheel 1 (right) with the front direction phi2p = pr_coord(20); XW1p = pr_coord(13:15); XW2p = pr_coord(15:18); b = ((XW1p(1)-XW2p(1))*sin(phi1p)-(XW1p(2)-XW2p(2))*cos(phi1p))... /(sin(phi1p)*cos(phi2p)-cos(phi1p)*sin(phi2p)); a = (b*sin(phi2p)-(XW1p(2)-XW2p(2)))/sin(phi1p); if isnan(b) || isnan(a) COR=[XW2o(1:2); 0]; else COR = [XW2o(1:2); 0]+b*[cos(phi2p); sin(phi2p); 0]; end end %% % Calculating the torqe on the upright due to the friction at the wheel % patch. Force is assumed to act at center of the patch area, % perpendicular to the vector from upright to the patch center %sign of torque decided according to 'sign' input.. Thus for one case, %torque on the right upright is considered positive and negative on other %and then vice versa function [torque] = wheel_tor(XU1, XU2, XW, x1lim, x2lim, phi, m, mu, sign) %for left wheel, xlim1(1) is negative and xlim(2)=0 %for right wheel, xlim(1)=0 and xlim(2) is positive g = 9.81; x1_mean = (x1lim(1)+x1lim(2))/2; x2_mean = (x2lim(1)+x2lim(2))/2;

Page 95: ME555!12!05 FinalReport

95 ד ש ר

R = [cos(phi) -sin(phi) 0; sin(phi) cos(phi) 0; 0 0 1]; % rotation % matrix as rotating clockwise by phi a=R*[x1_mean;x2_mean;-XW(3)]; % position vector rotated by the angle of % the wheel with the forward direction as the wheel is actually tilted at % phi at that instant X = XW+a; rot = XU1-XU2; rothat = rot/norm(rot); %unit vector along axis of rotation (upright) r = X-XU1; %vector from upright to the point in center of wheel pacth %p=[r(1); r(2); 0]; if (r(1)==0 || r(2) ==0) F = [0;0;0]; else b = 1/sqrt((r(2)/r(1))^2+1); a = -r(2)/r(1)*b; F = [a; b; 0]; % unit vector perpendicular to the vector r, along %which the friction force is acting end torque = sign*abs(dot(mu*m*g/4*cross(r, F), rothat));%in N m along rothat end %% % Function to calculate the static forces due to torques % Using the torque at the uprights due to the friction at the wheels, % the forces R1, R2 on the right tie rod and the left tie rod can be % calculated. Then the force input required at the rack can be calculated function [Fin, R1, R2] = statics(fixed_points, pr_coord, tau1, tau2) XU11 = fixed_points(:,1); XU21 = fixed_points(:,2); XU12 = fixed_points(:,3); XU22 = fixed_points(:,4); XUC1 = fixed_points(:,5); XUC2 = fixed_points(:,6); XT11 = pr_coord(1:3, 1); XT12 = pr_coord(4:6, 1); XU31 = pr_coord(7:9, 1); XU32 = pr_coord(10:12, 1); r1 = (XU31-XT11)/norm(XU31-XT11); % unit vector along R1 r2 = (XU32-XT12)/norm(XU32-XT12); % unit vector along R2 rUC1U31 = XU31-XUC1; % vector from UC1 to U31 rU21U11 = (XU11-XU21)/norm(XU11-XU21); % unit vector along right upright % from XU21 to XU11 R1 = tau1/(dot(cross(rUC1U31,-r1), rU21U11)); % force along tie rod calculated % tau1 is along rU21U11. R1 should be along r1. And torque on the upright % (rU21U11) due to the force from UC1 to U31 (along rUC1U31) should be % equal to tau1. Then the force along r1 is calculated..

Page 96: ME555!12!05 FinalReport

96 ד ש ר

rUC2U32 = XU32-XUC2; % vector from UC2 to U32 rU22U12 = (XU12-XU22)/norm(XU12-XU22); % unit vector along left upright % from XU22 to XU12 R2 = tau2/(dot(cross(rUC2U32,-r2), rU22U12)); rXT12XT11 = (XT11-XT12)/norm(XT11-XT12); Fin = R1*dot(rXT12XT11 ,r1)+R2*dot(rXT12XT11 , r2); %Force required from % rack is the combination of force required along rXT12XT11 for R1 and R2 end %% % x is coordinates of XU3 and F should be equal to zero to be solved % Solve using fsolve % Function to solve for the coordinates of XU3 given XU1, XU2, XT1 and the % lengths of the links between (XU3-XT1) = l2, (XU3-XU1) = l31, (XU3-XU2) = % l32 function F = XU3(x,l2, l31, l32, XU1,XU2, XT1) F(1) = l2-norm(x-XT1); F(2) = l31-norm(x-XU1); F(3) = l32 -norm(x-XU2); P1 = XU1; P2 = XU2; P3 = XT1; end %% % Function to normalize the angles between 0 and 2*pi function [angle_out] = normalize(angle_in) angle_out = angle_in; for i=1: length(angle_in) if angle_in(i)>2*pi || angle_in(i)<0 angle_out(i) = mod(angle_in(i), 2*pi); else angle_out(i) = angle_in(i); end end end

Page 97: ME555!12!05 FinalReport

97 ד ש ר

Appendix C4 MATLAB code for System level optimization:

variables; var_nom = [XU1nom; XU2nom; XT1xnom; XU3nom; XS1nom; XS2nom; XS3nom]; var_nom_scaled = (2*var_nom - UBound_sys - LBound_sys)./(UBound_sys - LBound_sys); %Lower bound and Upper bound for scaled variables for fmincon LB = -ones(length(var_nom)); UB = ones(length(var_nom)); options = optimset('Algorithm', 'active-set', 'Display', 'final-detailed'); [optim_scaled, fval, exitflag, output, lambda, grad, hessian] = ... fmincon(@(x) objective(x, parameters_sys), var_nom_scaled, [], [], [],[], ... LB, UB, @(x) system_constraints(x, parameters1, parameters2, parameters3)... , options); Variables.m:

% All parameter values defined clear all clc % All SI Units username = 'danvir'; % Constants g = 9.8; %m/s^2 % Optimization parameters: cubesize = .05; %cube of side 5cm around the nominal point cuboid_bound = 0.05; %5cm bound around XUC1 T1_bound = 0.12; %25cm bound lack_bound = 1; lti_bound = 0.01; % 2mm bound tauT_bound = 8^2; % bound on torque^2 % U3_bound = abs(XU11-XU21); U3_bound = cuboid_bound; %% % Vehicle specs: ltw = 1168.4/1000; lwb = 1574.8/1000; m = 190; %kg mu = 1.34; wheelw = 8*25.4/1000; %8 inch patch = [8.315/1000, wheelw];

Page 98: ME555!12!05 FinalReport

98 ד ש ר

amax = 1.8*g; %Max longitudinal acceleration %% %Suspension K=17512.6835; %spring constant C=1300; % damping coefficient v=17.8816; %velocity of car (m/s) R=6.0842; %Radius of turn t=0; %time instant %% %rack-pinion-steering wheel dP=1*25.4/1000; %diameter of pinion = 1 inch lR = 0.866*2*25.4/1000; dT = 260.35/1000;%diameter of steering wheel %% Material specs: % 4130 Steel EA = 200e9; % Young's modulus = 200GPa nuA = 0.285; % Poisson's ratio yStress = 360.6e6; % Yield stress = 360.6MPa FOSA = 2.6; %Tie Rod diT = 10.922/1000; doT = 12.7/1000; ET = 200e9; sigmaT = 360.6e6; nuT = 0.285; FOS = 1.6; % 7075 Aluminium % EA = 71.7e9; % nuA = 0.33; % yStress = 503e6; % FOS = 2.6; %% Pipe: OD = 8mm, ID = 6mm diA = 10.922e-3; doA = 12.700e-3; % diA = [10.922e-3; 9e-3; 7e-3; 5e-3; 4.5e-3]; % doA = [12.700e-3; 11e-3; 9e-3; 7e-3; 6e-3]; %% Max Deformation maxDeform = 1.2e-3; %% Coordinates: XC1 = 0.001*[233.172 164.500 132.000]'; XC2 = 0.001*[-40.051 153.830 122.000]'; XC3 = 0.001*[-90.000 254.000 270.500]'; XC4 = 0.001*[196.850 268.000 269.500]'; XC5 = 0.001*[28.700;12.4079;310]; XC6 = 0.001*[ 101.998 0 15.897]';

Page 99: ME555!12!05 FinalReport

99 ד ש ר

XCG = 0.001*[755.904 0 299.72]'; Xw = 0.001*[0.000 584.200 222.250]'; XS4= [0.0105;0.4254;0.1264]; XU1nom = 0.001*[5.001 518.599 127.000]'; XU2nom = 0.001*[33.000 505.729 315.999]'; XU3nom = 0.001*[65.49898 501.599 175.00]'; XT1xnom = XC6(2)+lR/2; XS1nom = 0.001*[80 230 245]'; XS2nom = 0.001*[75 290 245]'; XS3nom = 0.001*[93 250 325]'; %% %desired properties ltid = 0.05*25.4/1000; %toe in length dh = 10*25.4/1000; %hub diameter tauTd = 14; Rmind = 7.25; phiti1d=0; phiti2d = -phiti1d; %% Camber and Caster cbmin = -3; % degree cbmax = -1; % degree ctmin = 7.75; % degree ctmax = 9.25; % degree %% %Subsystem 1 % Weighting parameter alpha = 0.9; % Nominal values of Optimization variables % XU1nom = 0.001*[125.001 60.599 00.000]'; % XU2nom = 0.001*[33.000 55.729 370.999]'; XUnom = [XU1nom; XU2nom]; % Lower and upper bounds of Optimization variables % XU1l = [-0.020 0.494 0.102]'; % XU2l = [0.008 0.481 0.346]'; % % XU1u = [0.030 0.544 0.192]'; % XU2u = [0.058 0.531 0.396]'; XU1l = XU1nom - (cubesize/2)*ones(3,1); XU1u = XU1nom + (cubesize/2)*ones(3,1); XU2l = XU2nom - (cubesize/2)*ones(3,1);

Page 100: ME555!12!05 FinalReport

100 ד ש ר

XU2u = XU2nom + (cubesize/2)*ones(3,1); XUl = [XU1l; XU2l]; XUu = [XU1u; XU2u]; BoundsU = [XUl XUu]; % XUnom = XUl + 0.1*i*(XUu-XUl); % XU1nom = 0.001*[0.001 500.599 100.000]'; % XU2nom = 0.001*[10.000 500.729 335.999]'; % XUnom = [XU1nom; XU2nom]; XUnomscaled = (2*XUnom - XUu - XUl)./(XUu - XUl); % XUuscaled = ones(6,1); % XUlscaled = -ones(6,1); Coords = [XC1 XC2 XC3 XC4 Xw]; MatData = [EA nuA yStress FOSA diA doA]; WheelAngles = [cbmin cbmax; ctmin ctmax]'; VehicleData = [m, amax]; parameters1{1} = Coords; parameters1{2} = MatData; parameters1{3} = WheelAngles; parameters1{4} = VehicleData; parameters1{5} = BoundsU; parameters1{6} = alpha; parameters1{7} = maxDeform; parameters1{8} = username; %% %Subsystem 2 phi_var = 0; % XT11_initx = XC6(1)+lR/2+0.01; % XU31_init =([501.599; -65.49898; 175.00]+[5;5;5]) /1000; % phiti1_init = phiti1d; XUC1nom = (XU1nom+XU2nom)/2; xp = 0; xlimit = lR/2;%the lower x point from which the ackermann steering % is minimized that is the steering parameter is minimized from xlimit % to lR/2 (length of rack/2) % %Change this to true if want to switch the ackermann parameter as the % %objective function and the steering torque as a constraint.. % lack_obj = 1; % fixed_points = [XU11, XU21, XU12, XU22, XUC1, XUC2, XW1o, XW2o, XCG, XC6]; fixed_points = [Xw, XCG, XC6]; veh_dim = [m, mu, ltw, lwb, wheelw, patch]; diameters = [dP, lR, dT]; material = [diT, doT, ET, sigmaT, nuT, FOS]; desired = [tauTd, ltid, dh, Rmind]; param_bounds2 = [cuboid_bound, T1_bound, lack_bound, lti_bound, tauT_bound];

Page 101: ME555!12!05 FinalReport

101 ד ש ר

rack_pos = [xp xlimit]; % if (phi_var==0) % LB2 = [-1; -1; -1; -1]; % UB2 = [1; 1; 1; 1]; %Var_init = [XT11_initx; XU31_init]; LBound2 = [XC6(1,1)+lR/2; XUC1nom - U3_bound/2]; UBound2 = [XC6(1,1)+T1_bound+lR/2; XUC1nom + U3_bound/2]; % else % % Var_init = [XT11_initx; XU31_init; phiti1_init]; % LB2 = [-1; -1; -1; -1; -1]; % UB2 = [1; 1; 1; 1; 1]; % LBound2 = [XC6(1,1)+lR/2; XUC1nom - U3_bound/2; phiti1d-0.5]; % UBound2 = [XC6(1,1)+T1_bound+lR/2; XUC1nom + U3_bound/2; phiti1d + 0.5]; % % end parameters2{1} = fixed_points; parameters2{2} = veh_dim; parameters2{3} = diameters; parameters2{4} = material; parameters2{5} = desired; parameters2{6} = param_bounds2; parameters2{7} = LBound2; parameters2{8} = UBound2; parameters2{9} = rack_pos; % scaled_var_init = (2*Var_init-upper_bound-lower_bound)./(upper_bound-lower_bound); %% %Subsystem 3 LBound3 = [XC3(1,1);XC6(2,1);XC6(3,1);XC3(1,1);XC6(2,1);XC6(3,1);XC3(1,1);XC6(2,1);XC6(3,1)]; UBound3 = [XC1(1,1);XU1nom(2,1);XC3(3,1)+0.100;XC1(1,1);XU1nom(2,1);XC3(3,1)+0.100;XC1(1,1);XU1nom(2,1);XC3(3,1)+0.100]; parameters3 = {XS4, XC1, XC2, XC3, XC4, Xw, m, lwb, XCG, XC5, ltw, v, R, t, K, C, mu, LBound3, UBound3}; XS=[ 0.232495774049219; 0.269739697123786; 0.269375829919730; 0.233172000000000; 0.288189286854181; 0.261684577925185; 0.174252134436610; 0.309984567746931; 0.232119570939488];

Page 102: ME555!12!05 FinalReport

102 ד ש ר

%% LBound_sys = [XUl; LBound2; LBound3 ]; UBound_sys = [XUu; UBound2; UBound3 ]; lb = 0.0254; %Bump height fixed_points_sys = [Xw, XCG, XC1, XC2, XC3, XC4, XC5, XC6]; parameters_sys{1} = fixed_points_sys; parameters_sys{2} = veh_dim; parameters_sys{3} = rack_pos; parameters_sys{4} = param_bounds2; parameters_sys{5} = LBound_sys; parameters_sys{6} = UBound_sys; parameters_sys{7} = lb; function bump_steer = objective(var_scaled, parameters) % var_scaled are: XU1(1:3), XU2(4:6), XT11x(7), XU3(8:10), XS1(11:13), XS2(14:16), XS3(17:19)) fixed_points = parameters{1}; LBound_sys = parameters{5}; UBound_sys = parameters{6}; lb = parameters{7}; for i=1:length(var_scaled) var(i, 1) = 0.5*(var_scaled(i, 1)*(UBound_sys(i,1)-LBound_sys(i,1))+UBound_sys(i,1)+LBound_sys(i,1)); end % XU1o = var(1:3); % XU2o = var(4:6); % XT1x = var(7); % XU3o = var(8:10); [delta_phi, link_lengths, X_o, X_b, Flag] = bump(lb, var, fixed_points) bump_steer = delta_phi^2; end %% % Function to calcualte length of links function [delta_phi, link_lengths, X_o, X_b, Flag] =... bump(lb, var, fixed_points) %Extracting the coordinates of fixed points XW1o = fixed_points(:,1); XCG = fixed_points(:,2); XC1 = fixed_points(:,3); XC2 = fixed_points(:,4); XC3 = fixed_points(:,5); XC4 = fixed_points(:,6); XC5 = fixed_points(:,7); XC6 = fixed_points(:,8);

Page 103: ME555!12!05 FinalReport

103 ד ש ר

XU1o = var(1:3); XU2o = var(4:6); XT1o = [var(7); XC6(2:3,1)]; XU3o = var(8:10); %y and z coordinate of T11 are same as those of C6(chassis point) %Calculating lengths of links lU3T1 = norm(XU3o-XT1o); %length of tie rod lU3U1 = norm(XU3o-XU1o); %length of upright U3-U1 lU3U2 = norm(XU3o-XU2o);%length of upright U3-U2 lU1U2 = norm(XU1o-XU2o); lU1C1 = norm(XU1o-XC1); lU1C2 = norm(XU1o-XC2); lU2C3 = norm(XU2o-XC3); lU2C4 = norm(XU2o-XC4); link_lengths = [lU3T1, lU3U1, lU3U2, lU1U2, lU1C1, lU1C2, lU2C3, lU2C4]; XU1bz = XU1o(3)+lb; options = optimset('MaxIter',1000, 'MaxFunEvals', 1000, 'TolFun', 1e-10, 'Display', 'off'); [XU1bxy, fval , Flag1] = fsolve(@(x) coord_solve_2(x,[lU1C1, lU1C2],[XC1, XC2], XU1bz), XU1o(1:2), options); % Solve for coordinate of U1 at bump. Intitial guess is original % coordinate of U1 XU1b = [XU1bxy; XU1bz]; [XU2b, fval , Flag2] = fsolve(@(x) coord_solve_3(x,[lU1U2, lU2C3, lU2C4],[XU1b, XC3, XC4]), XU2o, options); [XU3b, fval , Flag3] = fsolve(@(x) coord_solve_3(x,[lU3T1, lU3U1, lU3U2],[XT1o, XU1b, XU2b]), XU3o, options); %Now we have the new coordinates of points U1, U2 and U3 when the car goes %over a bump %Using the coordinates to find the change in the angle of the wheel %normal to the plane formed by U1o, U2o, U3o XNo = cross(XU1o-XU2o, XU1o-XU3o); XNb = cross(XU1b- XU2b, XU1b-XU3b); XNo_proj = XNo(1:2); %Normal vector projected on horizontal plane XNb_proj = XNb(1:2); %Orginal coordinates X_o = [XU1o, XU2o, XU3o, XT1o]; %Coordinates when bump encountered X_b = [XU1b, XU2b, XU3b, XT1o]; % Change in angle of the wheel when bump encountered (difference in the % angles of the projected vectors of the normals to the plane formed by U1, % U2 and U3) delta_phi = atan2(XNo_proj(1), XNo_proj(2))-atan2(XNb_proj(1), XNb_proj(2)); if (Flag1<0)||(Flag2<0)||(Flag3<0)

Page 104: ME555!12!05 FinalReport

104 ד ש ר

Flag=-1; else Flag = 1; end end function F = coord_solve_3(x, l, X_coord) for i=1:length(l) F(i) = l(i)-norm(x-X_coord(:,i)); end end function F = coord_solve_2(x,l,X_coord, x_z) for i= 1: length(l) F(i) = l(i)-norm([x; x_z]-X_coord(:,i)); end end %Constraints file!! function [C, Ceq] = system_constraints(var_scaled, parameters1, parameters2, parameters3) % var_scaled are: XU1(1:3), XU2(4:6), XT11x(7), XU3(8:10), XS1(11:13), XS2(14:16), XS3(17:19)) XU_scaled = var_scaled(1:6); BoundsU = parameters1{5}; XUl = BoundsU(:,1); XUu = BoundsU(:,2); %unscale XU11, XU12 XU = 0.5*((XU_scaled.*(XUu-XUl))+XUu+XUl); XU1 = XU(1:3); XU2 = XU(4:6); %Call Subsystem 1 Aarm [C1] = AarmFunction(var_scaled(1:6),parameters1); %Call Subsystem2 [C2] = steering(var_scaled(7:10), parameters2, XU1, XU2); %Call Subsystem3 [C3, Ceq3] = constraints_PBR(var_scaled(11:19), parameters3); %Additional System level constraints C_sys = []; %Combine constraints Ceq = [Ceq3]; C = [C1 C2 C3 C_sys];