Document not found! Please try again

Design and Synthesis of Active and Passive Vehicle ... - CiteSeerX

0 downloads 0 Views 762KB Size Report
suspension is necessary in half- and full-car vehicle models in certain ... The support from my brother Ping-Ta, my sister Mei-Hsia, and my brother-in-law Chung-.
Design and Synthesis of Active and Passive Vehicle Suspensions Fu-Cheng Wang Queens’ College

A

Control Group Department of Engineering University of Cambridge

A dissertation submitted for the degree of Doctor of Philosophy September 2001

To my parents for their love

Abstract This dissertation discusses the active suspension control of vehicle models. It contains two main parts. In the first part of the thesis, we discuss the necessity of employing active suspension through the analysis of the mechanical networks. We apply classical network theory to show that an active suspension is necessary in half- and full-car vehicle models in certain situations. Typically, these situations involved specifying a soft response from road disturbances as when a soft passive suspension is implemented, and a stiff response from load disturbances as when a stiff passive suspension is implemented. In the second part of the thesis, we derive a parametrisation of the set of all stabilising controllers for a given plant which leaves some pre-specified closed-loop transfer function fixed. To facilitate the parametrisation at the required level of generality we define left and right normalrank factorisations of a rational matrix. We also show that under some certain conditions, the achievable performance of the remaining transmission paths can approximate the original performance set. The results are then studied in the context of quarter-, half- and full-car vehicle models, to derive appropriate controller structures. In the half-car case, we discuss the simplicity assumptions which are required to allow a decomposition of the half-car into two quarter-cars. In the full-car case, we exploit a symmetry assumption to decompose it into the bounce/pitch and roll/warp half-car models. The warp mode is handled in a special way to reduce the twisting forces on the chassis. For complex models, the numerical calculation of the controller structures is also discussed and applied to the double-wishbone models. We also present the trailing-arm model as an example of the main ideas of this thesis. We discuss the traditional anti-squat and anti-dive design for the trailing-arm model. Through the use of network analysis, it is found that an active suspension should be adopted to satisfy the performance criteria. Then the disturbance response decoupling method is applied to design an active suspension for this model. Throughout this dissertation, the multi-body simulation package AutoSim is used for simulation of vehicle models in combination with the theoretical work. As a result, the analysis and synthesis methods developed in this dissertation could be directly applied to complex models. Keywords: active suspension, network, LFT, controller parametrisation, disturbance response decoupling, achievable performance, H∞ loop-shaping, trailing arm, anti-squat, anti-dive, AutoSim. i

Acknowledgements I would like to take this opportunity to express my gratitude to my supervisor Dr. Malcolm C. Smith for his constant guidance and encouragement during the past three years. He always appreciates whatever little progress I have achieved, and continuously gives me much inspiration by sharing his precious knowledge and experience. I shall always remember the fun we have had together. I would also like to thank Prof. Keith Glover for giving me the chance of doing research in this group. He is always here for me whenever I need his help. I am also grateful to Dr. Jan Maciejowski and Dr. Glenn Vinnicombe for their advice and help on my work. It is a great pleasure to work with the colleagues, past and present, in the Control Group. My special thanks to Dr. Gavin Walker, for helping me to become familiar with AutoSim and vehicle dynamics. Particular thanks to Dr. George Papageorgiou and Dr. Alexander Lanzon for offering their help and advice when I got stuck in my work. Many thanks to John Steele for improving the computer facility and function in the Group. My sincere thanks to all the members in this Group for creating such a relaxed and supportive working environment. I am grateful to Master Sulgok. Not only did he teach me martial art, but also gave me warmth and accompanied me when I was depressed. I am particularly indebted to Mrs Kit Pharaoh for providing her warm hospitality toward me and devoting her valuable time to reading through my dissertation and helping me with my English. I would further thank Mr. Chen and his family, Mrs Hsiao and Dr. Laura Gellman for their hospitality and friendship. They are my family in England. Without them, my study in England would not be so comfortable and pleasant. I would like to extend my gratitude to my teachers in Taiwan, especially Prof. Jia-Yush Yen and Prof. Min-Shin Chen in National Taiwan University, for leading me to the hall of knowledge. Their support, emotionally and financially, helps me concentrate on my research work in Cambridge. This work has been financially supported by the Overseas Research Student Award (ORS), Cambridge Overseas Trust and Queens’ College. The overrun funding was granted by CUED. To all these organisations I am grateful. Finally, but most importantly of all, my parents, Jin-Shi and Bon-Tsi should receive my greatest appreciation for their enormous love. They always respect what I want to do and give me their full support. The support from my brother Ping-Ta, my sister Mei-Hsia, and my brother-in-law ChungHuang is also highly appreciated. iii

iv

ACKNOWLEDGEMENTS

As required by University Statute, I hereby declare that this dissertation is not substantially the same as any that I have submitted for a degree or diploma or other qualification at any other university. This dissertation is the result of my own work and includes nothing which is the outcome of work done in collaboration. Fu-Cheng Wang Cambridge September 2001

Contents Abstract

i

Acknowledgements Notation and Acronyms 1

2

xiii

Introduction

1

1.1

Passive Suspensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1.2

Active Suspensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

1.3

Controller Parametrisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.4

Outline of the Dissertation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.5

Software Used in This Dissertation . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

Necessity of Active Suspension – A Network Approach

7

2.1

Network Theorems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

2.1.1

Mechanical-Electrical Analogy . . . . . . . . . . . . . . . . . . . . . . . .

7

2.1.2

Network and Passivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

The Quarter-Car Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

2.2.1

Hand Derivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

2.2.2

Computational Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

2.3

The Half-Car Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

2.4

The Full-Car Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

2.5

Summary and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.2

3

iii

Analysis and Design for the Trailing-Arm Model

17

3.1

The Trailing-Arm Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

3.2

Anti-Squat and Anti-Dive Geometry . . . . . . . . . . . . . . . . . . . . . . . . . .

19

3.2.1

Anti-Squat Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

3.2.2

Anti-Dive Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

Classical Conditions for Anti-Squat and Anti-Dive . . . . . . . . . . . . . . . . . .

25

3.3

v

vi

CONTENTS

3.4

Comparison with the Work of Sharp [26] . . . . . . . . . . . . . . . . . . . . . . . .

26

3.5

Passivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

3.6

Summary and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

4 Controller Parametrisation for Disturbance Response Decoupling

31

4.1

Normalrank Factorisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31

4.2

Controller Parametrisation Results . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

4.3

Design Freedom and Achievable Performance . . . . . . . . . . . . . . . . . . . . .

41

4.4

Numerical Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

4.5

Summary and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

5 Disturbance Response Decoupling for The Quarter-Car Model

49

5.1

The Quarter-Car with Two Measurements . . . . . . . . . . . . . . . . . . . . . . .

49

5.2

The Quarter-Car with Three Measurements . . . . . . . . . . . . . . . . . . . . . .

54

5.2.1

Alternative Controller Structures . . . . . . . . . . . . . . . . . . . . . . . .

56

5.3

Quarter-Car Control Structures and Design . . . . . . . . . . . . . . . . . . . . . . .

57

5.4

Achievable Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

5.4.1

Two Measurement Case . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

5.4.2

Three Measurement Case . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

5.5

A General Quarter-Car Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59

5.6

Summary and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

6 Disturbance Response Decoupling for The Half-Car Model

61

6.1

The Half-Car Model

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61

6.2

Achievable Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

64

6.3

Decoupling by Simplicity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

65

6.4

Refined Design for The Half-Car Model . . . . . . . . . . . . . . . . . . . . . . . .

66

6.4.1

Controller Structure of Design for Fs . . . . . . . . . . . . . . . . . . . . .

66

6.4.2

Controller Structure of Design for Fψ . . . . . . . . . . . . . . . . . . . . .

67

6.4.3

The Relation Between the Controller Structures . . . . . . . . . . . . . . . .

68

6.4.4

Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

68

Summary and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

6.5

7 Disturbance Response Decoupling for The Full-Car Model

71

7.1

The Dynamic Equations

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

71

7.2

Symmetric Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

73

7.2.1

Bounce/Pitch Half-Car . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

73

7.2.2

Roll/Warp Half-Car . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

A Design Example for the Full-Car Model . . . . . . . . . . . . . . . . . . . . . . .

75

7.3

CONTENTS

7.4 8

7.3.1

Bounce/Pitch Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77

7.3.2

Roll Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77

7.3.3

Warp Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78

7.3.4

The Full-Car Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

80

7.3.5

Vehicle Dynamics Simulations . . . . . . . . . . . . . . . . . . . . . . . . .

82

Summary and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

82

Numerical Calculation of the Controller Structure

85

8.1

The Half-Car Double-Wishbone Model . . . . . . . . . . . . . . . . . . . . . . . .

85

8.2

The Full-Car Double-Wishbone Model . . . . . . . . . . . . . . . . . . . . . . . . .

89

8.2.1

Special Treatment for the Warp Mode . . . . . . . . . . . . . . . . . . . . .

91

8.2.2

Nonlinear Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . .

92

Summary and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

93

8.3 9

vii

Active Suspension Design for the Trailing-Arm Model

95

9.1

Controller Design for Disturbance Response Decoupling . . . . . . . . . . . . . . .

95

9.2

Network Analysis of the Active Trailing-Arm Models . . . . . . . . . . . . . . . . .

96

9.3

Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

97

9.4

Summary and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

98

10 Concluding Remarks 10.1 Main Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

99 99

10.2 Direction for Future Research . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 A Appendix to Chapter 2

101

A.1 The AutoSim Linearised Quarter-Car Model . . . . . . . . . . . . . . . . . . . . . . 101 A.2 The Passivity Analysis Based on AutoSim Models . . . . . . . . . . . . . . . . . . . 102 B Appendix to Chapter 3

103

B.1 Appendix to Anti-Squat Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 B.2 Appendix to Anti-Dive Geometry (Outboard Braking) . . . . . . . . . . . . . . . . . 106 B.3 AutoSim Code of the Linearised Trailing-Arm Model . . . . . . . . . . . . . . . . . 106 C Appendix to Chapter 5

108

D Appendix to Chapter 6

109

E Appendix to Chapter 7

111

E.1 AutoSim Code of the Nonlinear Full-Car Model . . . . . . . . . . . . . . . . . . . . 111 E.2 C-Code for the Active Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

viii

CONTENTS

E.3 C-Code for the Tyre Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 F Appendix to Chapter 8

118

F.1

The Linearised Half-Car Double-Wishbone Model . . . . . . . . . . . . . . . . . . 118

F.2

The Linearised Full-Car Double-Wishbone Model . . . . . . . . . . . . . . . . . . . 120

G Appendix to Chapter 9

123

G.1 AutoSim Code of the Nonlinear Trailing-Arm Model . . . . . . . . . . . . . . . . . 123 G.2 C-Code for the Active Controller . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Bibliography

127

List of Figures 2.1

A n-port network. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

2.2

The quarter-car model, and as a two-port network. . . . . . . . . . . . . . . . . . . .

10

2.3

Eigenvalues of (Y + Y ∗ )( j ω) for the quarter-car model. . . . . . . . . . . . . . . . .

12

2.4

The half-car model, and as a four-port network. . . . . . . . . . . . . . . . . . . . .

13

2.5

Eigenvalues of (Y + Y ∗ )( j ω) for the half-car model. . . . . . . . . . . . . . . . . .

14

2.6

The full-car model, and as a seven-port network. . . . . . . . . . . . . . . . . . . . .

15

2.7

Eigenvalues of (Y + Y ∗ )( j ω) for the full-car model. . . . . . . . . . . . . . . . . .

16

3.1

A half-car trailing-arm model with passive suspensions. . . . . . . . . . . . . . . . .

18

3.2

Squat and dive motions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

3.3

Anti-squat design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

3.4

Anti-dive design (outboard braking). . . . . . . . . . . . . . . . . . . . . . . . . . .

22

3.5

Anti-squat/anti-dive design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

3.6

Simplified trailing-arm geometry: (a) anti-squat; (b) anti-dive with outboard braking.

25

3.7

Compromised anti-squat/anti-dive geometry. . . . . . . . . . . . . . . . . . . . . . .

28

3.8

The passivity analysis of the half-car trailing-arm model with outboard braking. . . .

29

3.9

The passivity analysis of the half-car trailing-arm model with outboard braking (2). .

29

4.1

Generalised model in LFT form. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

34

4.2

General controller structure and equivalent controller. . . . . . . . . . . . . . . . . .

38

4.3

Controller structure as a left annihilator. . . . . . . . . . . . . . . . . . . . . . . . .

39

4.4

Classical feedback interconnection. . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

5.1

The quarter-car model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

5.2

Controller structure for the quarter-car with two feedbacks. . . . . . . . . . . . . . .

52

5.3

Passive suspension (Q 1 = 0, solid) and active suspension (Q 1 = 1.08, dashed). . . .

52

5.4

Passive suspension (solid) and active suspension using H∞ loop shaping design (dashed). 53

5.5

Controller structure of R.A. Williams et al. . . . . . . . . . . . . . . . . . . . . . . .

54

5.6

Controller structure for the quarter-car with three feedbacks. . . . . . . . . . . . . .

56

5.7

A general quarter-car model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59 ix

x

LIST OF FIGURES

6.1

The half-car model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

62

6.2

Controller structure for the half-car model. . . . . . . . . . . . . . . . . . . . . . . .

63

6.3

Step responses of TFˆs →ˆzs and TFˆψ →ˆzψ : passive (solid) and active control (dashed). . .

64

6.4

Closed-loop step responses using various controllers. . . . . . . . . . . . . . . . . .

69

7.1

The full-car model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

72

7.2

Control scheme for the full-car model. . . . . . . . . . . . . . . . . . . . . . . . . .

76

7.3

The warp quarter-car. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

79

7.4

Final controller structure for the full-car model. . . . . . . . . . . . . . . . . . . . .

80

7.5

Step responses using active and passive suspensions. . . . . . . . . . . . . . . . . .

81

7.6

Response of z u 1 to a step input of 1 cm at zr1 for AutoSim model. . . . . . . . . . . .

82

7.7

Anti-dive and anti-squat effect in AutoSim model using active suspension (dashed), compared with passive suspension (solid). . . . . . . . . . . . . . . . . . . . . . . .

83

8.1

The half-car double-wishbone model. . . . . . . . . . . . . . . . . . . . . . . . . .

86

8.2

Step responses for linearised model of TFˆs →ˆzs and TFˆψ →ˆzψ

87

8.3

Step responses for the linearised model of TFˆs →ˆzs and TFˆψ →ˆzψ with various controllers. 88

8.4

The full-car double-wishbone model. . . . . . . . . . . . . . . . . . . . . . . . . . .

89

8.5

AutoSim nonlinear simulations: step responses of TFˆs →ˆzs , TTˆθ →ˆzθ and TTˆφ →ˆzφ . . . . .

92

9.1

The passivity analyses for (a): acceleration (or inboard braking); (b): outboard braking. 96

9.2

(a) applied torques (b) velocity; (c) and (d) the pitch motion of the active (dashed) and

. . . . . . . . . . . . . .

passive (solid) systems without and with tyre springs. . . . . . . . . . . . . . . . . .

97

B.1 Free-body diagram for the anti-squat design. . . . . . . . . . . . . . . . . . . . . . . 103

List of Tables 2.1

Mechanical-electrical analogy – force-current. . . . . . . . . . . . . . . . . . . . . .

8

2.2

Mechanical-electrical analogy – force-voltage. . . . . . . . . . . . . . . . . . . . . .

8

5.1

The U˜ 2 structures and the transformed plants of the quarter-car model with various 57

5.2

measurements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The U˜ 2 structures and the transformed plants of the general quarter-car model with various measurements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

6.1

Decoupled half-car by simplicity. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

7.1

Decoupled (symmetric) full-car. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

7.2

Decoupled roll and warp modes of the full-car by simplicity. . . . . . . . . . . . . .

75

xi

Notation and Acronyms Notations RH∞

Set of stable and norm-bounded real-rational functions.

RHm×n ∞

Set of matrices with m rows and n columns, and all elements in RH∞ .

R

Set of real column vectors with m entries.

m

C

Set of complex numbers.

Q

Youla parameter.

N, M N˜ , M˜

Right coprime factorisation matrices. Left coprime factorisation matrices.

k · k∞

H∞ -norm.

σ¯ (A)

Largest singular value of matrix A.

(·)

0

Transpose operator.

(·)



Complex conjugate transpose operator.

w, ˆ zˆ

Laplace transform of functions w(t), z(t).

ms

Sprung mass.

m u , m 1, m 2, m 3, m 4, m f , mr

Unsprung masses.

k s , k 1 , k 2 , k 3 , k 4 , k f , kr

Suspension spring stiffnesses.

cs , c1 , c2 , c3 , c4 , c f , cr

Suspension damper damping ratios.

kt , kt1 , kt2 , kt3 , kt4 , kt f , ktr

Tyre spring stiffnesses.

u

Controlled input.

y

Measured output.

w

Exogenous input.

z

Regulated output.

D

Strut deflection.

P

Generalised plant.

K

Controller.

T

Transfer function.

G

Immitance matrix.

Y

Admittance matrix.

xiii

xiv

NOTATION AND ACRONYMS

Z

Impedance matrix.

F

Force.

A, B

Sets of proper, stable transfer matrices.

Subscripts b, ρ

Bounce and rotation components in half-car model.

b f , br

Front and rear bounce components in full-car model.

ρ f , ρr

Front and rear roll components in full-car model.

bp

Bounce/pitch component in full-car model.

roll

Roll component in full-car model.

war p

Warp component in full-car model.

Acronyms SISO

Single Input Single Output.

LFT

Linear Fractional Transformation.

lnf

Left Normalrank Factorisation.

rnf

Right Normalrank Factorisation.

Chapter 1

Introduction Suspension systems have been widely applied to vehicles, from the horse-drawn carriage with flexible leaf springs fixed in the four corners, to the modern automobile with complex control algorithms. Generally speaking, a good suspension should provide a comfortable ride and good handling within a reasonable range of deflection. Moreover, these criteria subjectively depend on the purpose of the vehicle. For example, a sports car driver will accept a relatively hard ride as a compromise for high speed handling and safe fast cornering. But the same ride would be intolerable for the passengers of a big saloon car. From a system design point of view, there are two main categories of disturbances on a vehicle, namely road and load disturbances. Road disturbances have the characteristics of large magnitude in low frequency (such as hills) and small magnitude in high frequency (such as road roughness). Load disturbances include the variation of loads induced by accelerating, braking and cornering. Therefore, a good suspension design is concerned with disturbance rejection from these disturbances to the outputs (e.g. vehicle height etc) in which we are interested. Roughly speaking a conventional passive suspension needs to be “soft” to insulate against road disturbances and “hard” to insulate against load disturbances. Therefore, suspension design is an art of compromise between these two goals. There are two main categories of suspension systems, namely passive and active suspension systems. A passive suspension, which means there is no energy source in the system, provides a simpler and cheaper way of suspension design at the expense of performance limitations of the type described above. On the other hand, active suspensions incorporate extra energy sources to refine the compromise, though the freedom to shape disturbance response transfer functions is still not arbitrary due to factors such as invariant points [31].

1.1 Passive Suspensions Passive suspensions contain elements, such as springs and dampers, which can only store or dissipate energy. Different types of springs and dampers might be used in design, but most suspensions in this 1

2

Introduction

class can be considered as a spring in parallel with a damper placed at each corner of the vehicle, and normally such a spring-damper unit is called a “strut” [37]. In addition to the struts, some other elements or special geometrical arrangements are also used to increase the performance of passive systems. For example, additional roll springs (anti-roll bars) could be used to increase the stiffness to roll motion. Trailing arms could be implemented between the sprung mass and the wheel hubs to reduce the dive and squat motion of the vehicle body during braking and acceleration. The Moulton Hydro-lastic system inter-connected the front and rear suspensions by hydraulic pipes to change the dynamic responses to pitch [3, 37]. In [19] a self-energizing hydropneumatic levelling system was presented which used the relative wheel-to-body movement to “pump” the car body up to achieve a desired ride height, so that soft springs can be employed to give a better ride. The performance limitation of passive suspensions was illustrated in [32, Example 3], using an example of the linear quarter-car model. It was concluded that active suspensions have significantly greater freedom to optimise among the variety of performance specifications. This dissertation will continue this idea by analysing situations for half-car, full-car, trailing-arm, double-wishbone models where desired performance behaviour can only be achieved using active means.

1.2 Active Suspensions The use of active suspension on road vehicles has been considered for many years [35, 24, 15, 41, 27]. A large number of different arrangements from semi-active to fully active schemes has been investigated [7, 28, 42, 40]. There has also been interest in characterising the degrees of freedom and constraints involved in active suspension design. Constraints on the achievable response have been investigated from “invariant points”, transfer-function and energy/passivity point of view in [16, 13, 14, 31, 32]. In [31], a complete set of constraints was derived on the road and load disturbance response transferfunctions and results on the choice of sensors needed to achieve these degrees of freedom independently were obtained for the quarter-car model. The generalisation of these results to half- and full-car models was then presented in [9]. In [32] it was shown that the road and load disturbance responses cannot be adjusted independently for any passive suspension applied to a quarter-car model. The need to design the road and load disturbance responses independently has been considered elsewhere in the active suspension literature. For example, in [24] a hardware and sensing arrangement was devised so that the feedback part of the scheme would not affect the response to road disturbances, which were designed to be suitably soft by means of passive elements in the scheme. In [39, 40] the actuator was placed in series with a spring and damper, which were chosen to give a suitably soft response to road irregularities in the absence of a feedback signal. A controller structure using a filtered combination of the sensor measurements was then selected so that the road disturbance responses were unaffected by the feedback. In this dissertation we develop a continuation of this idea by finding in

1.3 Controller Parametrisation

3

general the required controller structure to achieve this property for any set of measurements. In active suspension design for full-car models it has been found advantageous to decompose the motion into bounce, pitch and roll components for the vehicle body, and additionally warp for the wheels in contact with the road [20, 17, 12, 32]. This dissertation will also exploit such transformations. In the full-car case we will exploit symmetry to decompose into the bounce/pitch and roll/warp halfcars. In the half-car case we will use our results to determine the feedback structure to allow road and load disturbances to be shaped independently and discuss the simplicity assumptions which are required to allow a further decomposition of the half-car into two quarter-cars.

1.3 Controller Parametrisation The idea of parametrising all stabilising controllers in a linear feedback system is a standard one [44, 45]. The extension of this idea to two-degree-of-freedom schemes (which allows the response to reference commands and the return ratio of the feedback path to be optimised independently) is also standard [43, 36]. The generalisation to additional degrees-of-freedom to include some exogenous disturbances has also been considered [23]. The parametrisation of all stabilising controllers which leave some pre-specified closed-loop transfer function fixed, as considered in this dissertation, represents a continuation of these ideas and techniques. Our approach makes use of algebraic properties of the ring of stable, proper rational functions [36]. To facilitate the parametrisation at the required level of generality we will introduce the idea of left and right normalrank factorisations of a rational matrix (Definition 4.1).

1.4 Outline of the Dissertation This dissertation contains ten chapters and is organised as follows: Chapter 2: This chapter introduces the analogy of mechanical/electrical systems, and presents the vehicle models as corresponding networks. The passivity of the network can then be checked by the positive realness of its transformation matrices. An analysis procedure combined with AutoSim is employed to show the necessity of implementing active suspensions in order to achieve certain performance requirements. This procedure is especially useful for complex models, such as the full-car model, where it is not so easy to derive the transfer functions symbolically. Chapter 3: This chapter considers a half-car trailing-arm model, and discusses the traditional solution to reduce vehicle pitching motions during acceleration and braking. We derive the generalised trailing-arm geometry for perfect anti-squat/anti-dive design. By checking the positive realness of the transformation matrices, we know that active suspensions should be used to satisfy the performance requirements.

4

Introduction

Chapter 4: This chapter develops the general theorem for disturbance response decoupling, which improves the closed-loop responses while keeping some pre-specified transmission paths unchanged. A simplified theorem for the vehicle models used in this dissertation is also given, which enables us to perform the active controller design using existing controller synthesis methods, e.g. H∞ loop shaping. For refined design, it is also shown that we can make further improvement on the closed-loop transmission paths stage by stage. The achievable performance after disturbance response decoupling is discussed from the scalar case to the matrix form. The conditions under which the achievable performance remains effectively the same as before the disturbance response decoupling design are also derived. Chapter 5: This chapter applies the disturbance response decoupling theorem to the linear quartercar model employing a “Sharp” actuator with various measurements. The results are compared with the controller structure in [40], and illustrate our systematic approach for vehicle active suspension design. The achievable load responses are shown not to be reduced in a significant way after the design. Chapter 6: This chapter extends the application of disturbance response decoupling to the linear half-car model, and discusses the “simplicity” conditions which decompose the half-car into two quarter-car models. The procedure of successive design, which improves the closed-loop responses stage by stage, is also exemplified in this chapter. Chapter 7: This chapter discusses the application of disturbance response decoupling to the linear full-car model. It shows that the full-car model can be separated into two half-car models under a symmetry assumption. The bounce/pitch half-car is treated according to the theory in Chap. 6. The roll/warp half-car decomposes further into two quarter-car models, where the roll mode is treated as a quarter-car and the warp mode is handled in a special way to reduce the twisting forces on the chassis. The final controller is simulated with a nonlinear vehicle model by AutoSim. Chapter 8: This chapter presents the procedure for the numerical calculation of the controller structure when it is difficult or not feasible to derive symbolically. This procedure is then applied to to the half-car and full-car double-wishbone models. Chapter 9: This chapter applies the disturbance response decoupling to the half-car trailing-arm model introduced in Chap. 3. An active controller is numerically derived and implemented in C code which is then called by a nonlinear AutoSim model. The results show that we can apply active suspension control to the model with reasonable trailing-arm geometry to significantly reduce vehicle pitching motions. Chapter 10 This chapter summarises the main contributions of this dissertation and outlines potential directions for further research.

1.5 Software Used in This Dissertation

5

1.5 Software Used in This Dissertation The following software is used for the works of this dissertation: Maple: Much of the work in this dissertation involves explicit computation of complicated matricial expressions. To avoid any possible error, all the symbolic equations in this dissertation are either derived or checked by the “algebraic manipulation package” Maple V [6]. AutoSim: The vehicle models are built by the “muti-body simulation code” AutoSim, which can give linearised models for analysis in matlab or perform the nonlinear simulation. It writes the simulation code in C or FORTRAN languages. To implement the active controller, we write the active controller in C code as a sub-routine of the AutoSim models [25, 26]. Matlab: It is used for numerical calculation and simulation of the linearised models.

Chapter 2

Necessity of Active Suspension – A Network Approach In this chapter, we consider the necessity of using an active suspension system to achieve certain performance requirements using network theorems, especially the concept of passivity. The multibody simulation code AutoSim is then employed to carry out the analysis for complex models. Section 2.1 defines a network, and discusses the equivalence of the passivity of a network and the positive realness of its transfer matrices. Section 2.2 discusses the necessity of using active suspension for a quarter-car model which is required to be “soft” to road disturbance and “hard” to load disturbance. An AutoSim linearised model is introduced to set up the standard analysis procedure, which will then be used in Section 2.3 and Section 2.4 for the analysis of the half- and full-car models.

2.1 Network Theorems It is well-known that mechanical and electrical systems are analogous. After transferring a mechanical dynamic system to an equivalent electrical circuit, some of the well-developed network theorems can be directly applied to our analyses. In this section, we shall first introduce the analogies between mechanical and electrical systems, and then discuss some network theorems.

2.1.1 Mechanical-Electrical Analogy Between mechanical and electrical systems, there are two well-known analogies, namely force-current and force-voltage analogies [11, 29]. These analogies are listed in Table 2.1 and Table 2.2. From the tables, it is clear that the instantaneous power should be the same, no matter what analogy we choose. In [29], the force-current analogy is used to deal with mechanical systems since forces are more easily thought of as “through variables”, like currents going through electrical elements. 7

8

Necessity of Active Suspension – A Network Approach

Mechanical

Electrical

Force

F

Displacement

x

i

Current

Velocity

v

Voltage

V

Mass

m

Capacitance

C

Spring rate

k

Inductance

c

Resistance

Damping rate

F ·v

Power

1 L 1 R

V ·i

Power

Table 2.1: Mechanical-electrical analogy – force-current.

Mechanical

Electrical

Force

F

Voltage

V

Displacement

x

Charge

q

Velocity

v

Current

i

Mass

m

Inductance

L

Spring rate

k

Capacitance

1 C

c

Resistance

Damping rate Power

F ·v

R V ·i

Power

Table 2.2: Mechanical-electrical analogy – force-voltage.

2.1.2 Network and Passivity i1

i4

V1 i2 V2

n-port network i3

.. . .. . in

V4

Vn

V3

Figure 2.1: A n-port network.

A network can be represented as Fig. 2.1, where i 0 s (V 0 s) are called through (cross) variables. Such a network is called a n-port network [4]. Definition 2.1 A n-port network has n pairs of port variables {Vi , i i }, i=1,2,. . .,n and can be depicted as in Fig. 2.1. Circuits containing only three basic elements – resistance, capacitance and inductance, are sometimes termed passive circuits. On the other hand, active circuits contain also devices such as transistors

2.1 Network Theorems

9

which, unlike passive elements, are capable of energy amplification [30]. The basic defining property of passive elements is that they can only dissipate or store energy [21]. Expressed in mathematical terms this is as follows [22]: Definition 2.2 A multi-port network is defined to be passive if for all admissible V , i which are square integrable on (−∞, t],

Z E(t) =

t −∞

V (τ )∗ i(τ )dτ ≥ 0.

That is, a passive network is one for which the absorbed energy never goes negative. If N is not passive, it is called active. Using the mechanical-electrical analogy, a mechanical network is defined to be passive if Z

t −∞

F(τ )∗ v(τ )dτ ≥ 0.

(2.1)

The quantity on the left-hand side of (2.1) is the total energy delivered to the network up to time t. For a linear network, a matrix Z (s) (resp. Y (s)) for which Vˆ = Z (s)iˆ (resp. iˆ = Y (s) Vˆ ) is termed the impedance (resp. admittance) matrix. It is also possible to define a mixed immittance matrix relating a vector containing both forces and velocities to a vector containing the complementary variables. Then the total energy delivered to the network is Z ∞ Z ∞ ∗ E = V (t) i(t)dt (= i(t)∗ V (t)dt) −∞ −∞ Z ∞ 1 ˆ j ω)dw (Parseval theorem) = Vˆ ( j ω)∗i( 2π −∞ Z ∞ 1 ˆ j ω)∗ Z ( j ω)∗iˆ( j ω)dw = i( 2π −∞ Z ∞ 1 ˆ j ω)∗(Z ( j ω) + Z ( j ω)∗)i( ˆ j ω)dw. = i( 4π 0

(2.2)

Thus a necessary condition for passivity is that Z ( j ω) + Z ( j ω)∗ ≥ 0. If the system is SISO, the condition is equivalent to Re(Z ( j ω)) ≥ 0. This says that the Nyquist diagram of Z cannot enter the left half plane. In order to give a precise necessary and sufficient condition for passivity, positive realness is now defined. Definition 2.3 Z(s) is positive real if 1. Z(s) is analytic in Re(s) > 0. 2. One of the following conditions is true, (i) . Z (s) + Z (s)∗ ≥ 0 in Re(s) > 0,

10

Necessity of Active Suspension – A Network Approach

(ii). Z ( j ω) + Z ( j ω)∗ ≥ 0 for all ω at which Z ( j ω) is finite, and any poles of Z(s) on the imaginary axis or at infinity are simple and have a non-negative definite, Hermitian residue. With the definition of positive-realness, we shall complete this section by stating an important theorem [22], [37]: Theorem 2.1 Consider a network with impedance Z(s). The network is passive if and only if Z(s) is ♥

positive real.

It should also be noticed that Theorem 2.1 also holds with Z (s) replaced by Y (s) or a mixed immittance G(s).

2.2 The Quarter-Car Model In this section, we shall apply Theorem 2.1 to a linear quarter-car model, as shown in Fig. 2.2, following a numerical example given in [32, Example 3]. The purpose of this section is to prepare the way for this type of reasoning to be generalised to more complex models. Such a procedure can then be applied to complex systems where the symbolic transfer functions are not available or difficult to derive. Fs ms

zs Fr

u mu

zu

z˙ r

Fr

Fs G

Fs

z˙ s

kt Fr

zr

Figure 2.2: The quarter-car model, and as a two-port network.

2.2.1 Hand Derivation The dynamic equations of this system are: m s z¨ s = Fs − u, m u z¨ u = u + Fr , where Fr

= kt (zr − z u ),

2.2 The Quarter-Car Model

11

and u represents any possible suspension force. For a passive suspension u = cs (˙z s − z˙ u )+ks (z s − z u ), the transfer matrix of the mixed immittance can be expressed as: " # " #" # s zˆ s G 11 G 12 Fˆs = , Fˆr G 21 G 22 s zˆ r where, m u s 3 + cs s 2 + (ks + kt )s , P4 (s) kt (cs s + ks ) = , P4 (s) kt (cs s + ks ) = − , P4 (s) kt s(m s m u s 2 + (m s + m u )cs s + (m s + m u )ks ) = , P4 (s)

G 11 = G 12 G 21 G 22

in which P4 (s) = m s m u s 4 + (m s + m u )cs s 3 + (m s kt + (m s + m u )ks )s 2 + kt cs s + kt ks . Suppose this system is required to be soft to road disturbance zr as when a soft passive suspension u = css (˙z s − z˙ u ) + kss (z s − z u ) is implemented, and hard to load disturbance Fs as when a hard passive suspension u = csh (˙z s − z˙ u ) + ksh (z s − z u ) is implemented, that is, " # " #" # s zˆ s G h11 G s12 Fˆs = , Fˆr G h21 G s22 s zˆ r

(2.3)

where s and h represent soft and hard suspension settings respectively. Following [32] we will use Theorem 2.1 to show a numerical example that an active suspension is necessary to satisfy the performance requirements. We select the following parameters for the quarter-car model as in [32]: m s = 250 kg, m u = 35 kg, kt = 150 kN/m, and take ksh = 120 kN/m, csh = 40 kNs/m, kss = 12 kN/m, css = 4 kNs/m. In order to get a suitable scaling, we calculate the positive realness of another transformation matrix Y :

"

Fˆs Fˆr

#

" = Y

s zˆ s s zˆ r

# .

The eigenvalues of (Y + Y ∗ )( j ω) are shown in Fig. 2.3. The negative value at the frequency around 10 rad/sec indicates that this system cannot be achieved by a passive suspension, i.e. extra energy should be introduced by an active suspension to satisfy the performance requirements.

2.2.2 Computational Procedure The eigenvalue plot of Fig. 2.3 is identical with the one obtained in [32]. However, the plot was obtained here by the use of AutoSim to generate the linearised models, followed by the use of a matlab program to compute the eigenvalues. This method, which will be applied in subsequent sections to more complex models is summarised as follows:

12

Necessity of Active Suspension – A Network Approach 4

5

x 10

4

Eigenvalues (Ns/m)

3

2

1

0

−1

−2 −2 10

−1

10

0

1

10 10 Frequency (rad/sec)

2

10

3

10

Figure 2.3: Eigenvalues of (Y + Y ∗ )( j ω) for the quarter-car model.

(i) Build AutoSim models, using different passive suspension settings. (ii) Decide required performance for each transmission path and form a mixed transformation matrix like (2.3). (iii) Check the positive realness of this mixed transformation matrix. For better scaling, it is sometimes necessary to change the transformation matrix, which is valid since the positive realness of G, Y and Z are equivalent. (iv) If the transformation matrix is not positive real, it means that the performance requirements can only be achieved by an active control.1 . The AutoSim program to generate the linearised quarter-car model is given in Appendix A.1, while the remaining part of the procedure is given by the matlab program in Appendix A.2.

2.3 The Half-Car Model In this section, we shall follow the procedure described in the previous section to the half-car model, as shown in Fig. 2.4. The linearised dynamic equations can be expressed as follows: m s z¨ s = Fs − u 1 − u 2 , Iψ z¨ ψ

= Fψ − u 1l1 + u 2 l2 ,

m 1 z¨ u 1

= u 1 + Fr1 ,

m 2 z¨ u 2

= u 2 + Fr2 ,

1 If the transformation matrix is positive real, some additional conditions are necessary for realisation by passive control

in the form of Fig. 2.2 [32, Theorem 6]

2.3 The Half-Car Model

13

where the tyre forces Fr1 , Fr2 are given by: Fr1

= kt1 (zr1 − z u 1 ),

Fr2

= kt2 (zr2 − z u 2 ),

and u 1 = c1 (˙z s + l1 z˙ ψ − z˙ u 1 ) + k1 (z a1 − z u 1 ), u 2 = c2 (˙z s − l2 z˙ ψ − z˙ u 2 ) + k2 (z a2 − z u 2 ) for passive suspensions. Fs zs

m s , Iψ

z ψ , Fψ l1

l2

u1

Fs

u2 zu1 m1

zu2 m2

Fr1 z˙ r1

z˙ s Fψ

k t1

z r1

k t2

z r2

G

z˙ ψ

Fr2 z˙ r2

Figure 2.4: The half-car model, and as a four-port network.

We suppose the performance requirements are that the system should be soft to road disturbances zr1 , zr2 as when passive elements c1s , c2s , k1s , k2s are used, and hard to load disturbances Fs , Fψ as when passive elements c1h , c2h , k1h , k2h are used, where s and

h

represent soft and hard suspension settings.

Therefore the transformation matrix can be expressed as:    s zˆ s Gh Gh Gs Gs    11 12 13 14  s zˆ   Gh Gh Gs Gs  ψ   21 22 23 24 =    h h s  Fˆr   G G G Gs  1   31 32 33 34 Fˆr2 G h41 G h42 G s43 G s44



 Fˆs     Fˆ   ψ   .   s zˆ r  1   s zˆ r2

The expressions for G i j , i, j = 1 . . . 4 can be obtained easily by Maple, but they are too complicated to list. Instead, the procedure described in Section 2.2.2 will be employed. The following parameters are used for the half-car model: m s = 1600 kg, Iψ = 1000 kg m2 , m 1 = m 2 = 100 kg, kt1 = kt2 = 500 kN/m, l1 = 1.15 m, l2 = 1.35 m. As the suspension settings, we choose c1h = c2h = 10 kNs/m, k1h = k2h = 40 kN/m, c1s = c2s = 1 kNs/m, k1s = k2s = 4 kN/m. In order to get a suitable numerical scaling, we check the positive realness of another transformation matrix Y , where [ Fˆs , Fˆψ , Fˆr1 , Fˆr2 ]0 = Y [s zˆ s , s zˆ ψ , s zˆ r1 , s zˆ r2 ]0 . As shown in Fig. 2.5, there are two negative eigenvalues of (Y +Y ∗ )( j ω) in the region around 3 rad/sec. Therefore, we know that a passive suspension cannot satisfy the performance requirements, so that an active suspension should be implemented.

14

Necessity of Active Suspension – A Network Approach 4

10

x 10

Eigenvalues (Ns/m)

5

0

−5 −2 10

−1

10

0

10

1

10

2

10

3

10

Frequency (rad/sec)

Figure 2.5: Eigenvalues of (Y + Y ∗ )( j ω) for the half-car model.

2.4 The Full-Car Model In this section, we consider a full-car model, as shown in Fig. 2.6. The linearised dynamics of the full-car can be expressed as: m s z¨ s = Fs − u 1 − u 2 − u 3 − u 4 , Iθ z¨ θ

= Tθ + u 1l f + u 2l f − u 3lr − u 4 lr ,

Iφ z¨ φ = Tφ − u 1 t f + u 2 t f − u 3 tr + u 4 tr , m f z¨ u 1

= u 1 + Fr1 ,

m f z¨ u 2

= u 2 + Fr2 ,

m r z¨ u 3

= u 3 + Fr3 ,

m r z¨ u 4

= u 4 + Fr4 ,

where the passive suspension forces u 1 ,…,u 4 and the tyre forces Fr1 ,…,Fr4 are given by: ui

= ci D˙ i + ki Di ,

Fri

= kti (zri − z u i ),

for i = 1, . . . , 4 and the strut deflections D1 ,…,D4 are D1 = z s − l f z θ + t f z φ − z u 1 , D2 = z s − l f z θ − t f z φ − z u 2 , D3 = z s + lr z θ + tr z φ − z u 3 , D4 = z s + lr z θ − tr z φ − z u 4 .

2.5 Summary and Comments

15 tr

tr

u3 zu3

z r3

u4

mr

lr k t3

zu4

mr

z s , Fs

k t4

z θ , Tθ

z r4

m s , Iφ , Iθ

Fr1 z φ , Tφ tf

Fs

z˙ r1

lf

tf

z˙ r2 u1 mf k t1

mf

zu2

z˙ r3

z r2

z˙ r4

G

Fr4 k t2

z r1

Tθ Fr3

u2 zu1

z˙ s

Fr2 z˙ θ Tφ

z˙ φ

Figure 2.6: The full-car model, and as a seven-port network.

Suppose the performance requirements for the suspension design are that the system should be soft to road disturbances zr1 , …, zr4 as when passive elements cis , kis , are used, and hard to to load disturbances Fs , Tθ , Tφ as when passive elements cih , kih , are used, where s and

h

represent soft and

hard suspension settings, and i = 1, . . . , 4. Therefore the transformation matrix can be expressed as: h

s zˆ s , s zˆ φ , s zˆ θ , Fˆr1 , Fˆr2 , Fˆr3 , Fˆr4

i0

=



Gh , Gs

h

i0 Fˆs , Fˆφ , Fˆθ , s zˆ r1 , s zˆ r2 , s zˆ r3 , s zˆ r4 .

The following parameters will be used for the full-car model: m s = 1600 kg, Iθ = 1000 kg m2 , Iφ = 450 kg m2 , t f = tr = 0.75 m, l f = 1.15 m, lr = 1.35 m, ki = 250 kN/m, m i = 50 kg. The performance requirements are stated as cih = 5 kNs/m, kih = 20 kN/m, cis = 0.5 kNs/m, kis = 2 kN/m. In order to obtain a suitable scaling, we check the positive realness of another transformation matrix Y : h

Fˆs , Fˆφ , Fˆθ , Fˆr1 , Fˆr2 , Fˆr3 , Fˆr4

i0

0  = Y s zˆ s , s zˆ φ , s zˆ θ , s zˆ r1 , s zˆ r2 , s zˆ r3 , s zˆ r4 .

The result in Fig. 2.7 shows that three eigenvalues of (Y + Y ∗ )( j ω) are negative at ω ≈ 3 rad/sec, which means that the performance requirements cannot be achieved passively.

2.5 Summary and Comments In this chapter, we described the mechanical/electrical analogy and discussed vehicle suspension models as their corresponding networks. Then we showed how to check the passivity of a network by checking the positive realness of its transformation matrices. For complex models, we used a computational procedure combining the use of AutoSim and matlab to simplify the analysis. It was

16

Necessity of Active Suspension – A Network Approach 4

7

x 10

6 5

Eigenvalues (Ns/m)

4 3 2 1 0 −1 −2 −3 −2 10

−1

10

0

10

1

10

2

10

3

10

Frequency (rad/sec)

Figure 2.7: Eigenvalues of (Y + Y ∗ )( j ω) for the full-car model.

also shown that sometimes we need to check the positive realness of different transformation matrices in order to get a suitable numerical scaling. This idea will be shown again in Chap. 3 for the analysis and design of a trailing-arm model.

Chapter 3

Analysis and Design for the Trailing-Arm Model In this chapter, we shall discuss the half-car trailing-arm model and its geometrical arrangement to reduce vehicle pitching motions. Using trailing arms is a conventional solution to overcoming the squat or dive problems for a vehicle during the accelerating or braking motion. Section 3.1 introduces the half-car trailing-arm model, and shows the effect on pitching motions under acceleration and braking scenarios of using trailing arms. Section 3.2 derives simple geometric conditions for anti-squat and anti-dive designs, based on a certain acceleration or braking ratio. Section 3.3 illustrates the classical graphical relation of the trailing-arm geometry. Section 3.4 compares a recent approach to anti-squat and anti-dive properties. Section 3.5 presents the trailing-arm model as a mechanical network, and discusses the necessity of using active suspensions.

3.1 The Trailing-Arm Model Fig. 3.1 illustrates a general half-car trailing-arm model with passive suspensions. The front wheel hub is connected to the sprung mass by a trailing-arm AC1 , and the rear connected by BC2 . To simulate acceleration and braking, torques T1 and T2 are applied to the two wheels, and corresponding forces F1 and F2 are induced at the tyre contact patch to maintain a no-slip rolling contact. For the acceleration scenario, the reaction torques are applied to the sprung mass in the pitch motion. For the braking scenario, the reaction torques are applied to either the sprung mass (inboard braking) or the trailing arms (outboard braking). The following example shows the effect of the trailing arms. Example 3.1 Consider a half-car trailing-arm model, as shown in Fig. 3.1, with the following coefficients: m s = 1600 kg, Is = 1000 kg m2 , m 1 = m 2 = 100 kg, I1 = I2 = 1 kg m2 , k1 = k2 = 40 kN/m, c1 = c2 = 10 kNs/m, and model the front (rear) tyre as a spring with constant kt1 = 500 kN/m (kt2 = 500 kN/m). The trailing arms are regarded as massless and without inertia. To model a rolling 17

18

Analysis and Design for the Trailing-Arm Model y Fs

x Q

Ts , φ3

E zs k2 T2 , φ2

forward direction

D m s , Is

c2

k1

H

B

A

c1 G

T1 , φ1

y3 φ5

C2 r2

m 2 , I2

φ4

C1 r1

:pin joint

N2 F2 z r2

m 1 , I1

N1

y2

F1 z r1

y1

Figure 3.1: A half-car trailing-arm model with passive suspensions.

wheel with tyre the following method was employed: the unsprung masses were taken to be discs of mass 100 kg and inertia 1 kg m2 with a no-slip rolling contact on a virtual road; the instantaneous vertical position of the virtual road was determined by the point being connected to the true road’s vertical position at each wheel station by a spring of the same stiffness as the tyre spring. (This is not dissimilar to the method used to produce a tyre spring effect on the ThrustSSC supersonic car [1] which used aluminium forged wheels without tyres running on a water-laid desert surface with a natural ‘yield’!) Suppose the geometric arrangement for the nominal (undisturbed) configuration has the following coordinates: Q = (0, 0), A = (0.15, 0.5), B = (0.15, −0.5), C1 = (0.35, 1.3), C2 = (0.35, −1.3), D = (0.1, 1.3), E = (0.1, −1.3), G = (0.35, 1.3), H = (0.35, −1.3) in the unit of meters, the radius of the front and rear wheels are r1 = r2 = 0.15 m. Let the vehicle be accelerated and braked without the load disturbances (Fs = 0, Ts = 0) and road disturbances (zr1 = zr2 = 0). Suppose the vehicle is driven by the rear wheel, and accelerated with a ramp input T2 = 0 ∼ −2000 Nm in t = 0 ∼ 1 sec and a step T2 = −2000 Nm in t = 1 ∼ 2 sec and then braked from t = 3 sec with “inboard braking” T1 = T2 = 1000 Nm until it stops, as shown in Fig. 3.2(a). We can also change the geometric arrangement of the trailing arms as A = (0.15, 0.8) m, B = (0.15, −0.8) m, and obtain different responses. The pitch motions of the vehicle are shown in Fig. 3.2(c). Compare the responses with those of a simple half-car model (without trailing-arm, and the wheels move perpendicular to the sprung mass), we find that using trailing arms can significantly reduce the squat and dive of the car body.

2

The above example shows not only the reduction of pitch motion by using trailing arms, but also the significant influence of the trailing-arm geometry on the responses. For example, in the first setting (A = (0.15, 0.5), B = (0.15, −0.5)), both the squat and dive motions are reduced. In the second

19

1000

12

500

10

0.05 0.04

0 −500 −1000 −1500

0.03 0.02

8

φ3 (rad)

y˙3 (m/sec)

torques (Nm)

3.2 Anti-Squat and Anti-Dive Geometry

6 4

0.01 0 −0.01 −0.02 −0.03

2

−0.04

−2000 0

1

2

3

4

5

6

sec (a) applying torques

0 0

1

2

3

sec

4

(b) forward velocity

5

6

−0.05 0

1

2

3

sec

4

5

6

(c) φ3 (rad)

Figure 3.2: Squat and dive motions: (a) T1 (solid), T2 (dashed); (b) velocity; (c) without trailing-arm (solid), with trailing-arm A = (0.15, 0.5) m, B = (0.15, −0.5) m (dashed), and A = (0.15, 0.8) m, B = (0.15, −0.8) m (dash-dotted).

arrangement (A = (0.15, 0.8), B = (0.15, −0.8)) the dive motion has been further reduced, but the squat motion was also adjusted too much, i.e. the car dives during accelerating. Before bringing the issue of passive versus active suspension into consideration, it will be useful to consider the problem of dive and squat in the classical approach, but with a slight generalisation to allow non-zero masses and inertias of the wheels.

3.2 Anti-Squat and Anti-Dive Geometry In this section, we shall derive conditions for perfect anti-dive and anti-squat. To simplify the analysis, the tyres will be temporarily considered as incompressible (kt1 = kt2 = ∞). For the accelerating scenario (anti-squat design), the reaction torques are applied to the sprung mass. As for the braking scenario (anti-dive design), the reaction torques could be on the sprung mass (inboard braking), or on the trailing arms (outboard braking). The basic idea (following [5] and [8]) is to derive conditions for the geometrical arrangement to remain invariant (i.e. no pitching motion of the sprung mass or trailing arms) under an acceleration which occurs with a pre-assigned constant ratio of forces at the tyre contact patches. Our approach is a slight generalisation in that we allow non-zero values for the mass and inertia of the wheels.

3.2.1 Anti-Squat Geometry Consider the half-car trailing-arm model of Fig. 3.1. The purpose of perfect anti-squat geometry is to choose the position of the trailing-arm attachment points (i.e. points A and B) so that the sprung mass remains at constant height without pitching motion during acceleration. By neglecting the loads Fs and

20

Analysis and Design for the Trailing-Arm Model

Ts , a simplified version of this model is shown in Fig. 3.3. Because the geometric configuration of the vehicle remains the same during acceleration, we can assume y1 = y2 = y3 = y and the suspension forces to be zero. Furthermore, another constraint y = −r1 φ1 = −r2 φ2 is added to the design if we assume there is no slip between the tyres and ground. P1 (P2 ) represents the contact point of the front (rear) tyre and the ground. The accelerating torques T1 , T2 are transferred from the engine, and the reaction torques are applied to the sprung mass in the pitch motion. We introduce D’Alembert forces and torques m 1 y¨ , m 2 y¨ , m s y¨ , I1 φ¨1 and I2 φ¨2 and write down the corresponding equilibrium conditions. y

x

T2

Q

T1

m s y¨

forward direction

T1

T2

B

I2 φ¨2

A

I1 φ¨1

h m 2 y¨ N2

m 1 y¨

x1,0

x2,0

N1

F2

P2

F1

P1 y2,0

y1,0 L

Figure 3.3: Anti-squat design.

In [5] and [8], anti-squat and anti-dive conditions were derived in a simple way, by neglecting the mass and inertia of the tyres, to obtain a simple geometrical condition. Following the same idea, a more general condition can be derived as follows: 1. Suppose the accelerating force ratio (F1 /F2 ) is p/(1 − p), then the acceleration y¨ is given by: y¨ =

F1 + F2 , m1 + m2 + ms

(3.1)

so that F1 , F2 can be expressed as: F1 =

pMx y¨ ,

F2 = (1 − p)Mx y¨ ,

where Mx is defined as: Mx = m 1 + m 2 + m s . 2. Taking moments about P2 for the whole system results in: N1 L + m s y¨ h + m 1 y¨ r1 + m 2 y¨ r2 +

I1 I2 y¨ + y¨ = 0, r1 r2

(3.2)

3.2 Anti-Squat and Anti-Dive Geometry

21

which gives N1 as: N1 = −M y y¨ ,

(3.3)

where M y is defined as: My =

1 I1 I2 (m s h + m 1r1 + m 2r2 + + ). L r1 r2

(3.4)

3. Applying Newton’s second law in the vertical direction for the whole system gives: N2 = −N1 = M y y¨ .

(3.5)

4. For the front wheel, taking moments about A results in: F1 x1,0 + N1 y1,0 − m 1 y¨ (x1,0 − r1 ) − I1 φ¨1 + T1 = 0, which is equivalent to pMx (x1,0 − r1 ) − M y y1,0 − m 1 (x1,0 − r1 ) = 0,

(3.6)

where Mx , M y are given by (3.2), (3.4) respectively. Here we have used the following equation for the rotational motion of the front wheel: T1 + F1r1 − I1 φ¨1 = 0.

(3.7)

5. For the rear wheel, taking moments about B results in: F2 x2,0 − N2 y2,0 − m 2 y¨ (x2,0 − r2 ) − I2 φ¨2 + T2 = 0, which gives (1 − p)Mx (x2,0 − r2 ) − M y y2,0 − m 2 (x2,0 − r2 ) = 0,

(3.8)

where Mx , M y are given by (3.2), (3.4) respectively. Here we have used the following equation for the rotational motion of the rear wheel: T2 + F2 r2 − I2 φ¨2 = 0.

(3.9)

The above derivation shows that the trailing-arm vehicle model satisfies an anti-squat property for tractive forces in the ratio p : (1 − p) only if (3.6) and (3.8) hold. Conversely, we can also show that conditions (3.6) and (3.8) are sufficient for the anti-squat property. The proof of this direction is straightforward through the analysis of each element of the model, as illustrated in Appendix B.1 . From (3.6) and (3.8) we can calculate the position of the trailing arms to eliminate the squat motion of the vehicle during acceleration. It is noticed that there are four parameters (x1,0 , y1,0 , x2,0 , y2,0 ) with only two constraints, which means that we have two degrees of freedom (one for each trailing arm) to determine conditions for anti-squat. We can use this design freedom to assign reasonable position for the trailing arms, or possibly even combine with anti-dive conditions, as discussed next.

22

Analysis and Design for the Trailing-Arm Model

3.2.2 Anti-Dive Geometry The purpose of anti-dive design is to restrain the sprung mass from rotating during braking motion. The analysis procedure will be similar to the anti-squat case. Actually, for inboard braking the antidive conditions are exactly the same as in the anti-squat case. That is, if we have braking forces in the ratio F1 /F2 = q/(1 − q) and consider the case of inboard brakes, then the equations (3.6) and (3.8) with p replaced by q are the necessary and sufficient conditions for anti-dive. Therefore, we consider only the anti-dive case with outboard braking. y

x

Q m s y¨

forward direction

T1

T2

B

I2 φ¨2

A

T2

T1

h

m 2 y¨

x1,0

x2,0 N2

I1 φ¨1

m 1 y¨ N1

F2

P2

F1

P1

y2,0

y1,0 L

Figure 3.4: Anti-dive design (outboard braking).

Consider the half-car trailing-arm model of Fig. 3.4 for anti-dive design: 1. Suppose the braking force ratio (F1 /F2 ) is q/(1 − q), then the deceleration y¨ is the same as (3.1). Thus, F1 , F2 can be expressed as: F1 = q Mx y¨ ,

F2 = (1 − q)Mx y¨ ,

where Mx is given by (3.2). It should be noticed that in the braking scenario y¨ is negative, and so are F1 and F2 . 2. Taking moments about P2 for the whole system gives N1 as in (3.3). 3. Applying Newton’s second law in the vertical direction for the whole system gives N2 as in (3.5). 4. For the front wheel, taking moments about A results in: F1 x1,0 + N1 y1,0 − m 1 y¨ (x1,0 − r1 ) − I1 φ¨1 = 0,

3.2 Anti-Squat and Anti-Dive Geometry

23

which gives q Mx x1,0 − M y y1,0 − m 1 (x1,0 − r1 ) +

I1 r1

= 0,

(3.10)

where Mx , M y are given by (3.2), (3.4) respectively. 5. For the rear wheel, taking moments about B results in: F2 x2,0 − N2 y2,0 − m 2 y¨ (x2,0 − r2 ) − I2 φ¨2 = 0, which gives (1 − q)Mx x2,0 − M y y2,0 − m 2 (x2,0 − r2 ) +

I2 r2

= 0,

(3.11)

where Mx , M y are given by (3.2), (3.4) respectively. The above derivation shows that the outboard braking trailing-arm model with anti-dive property should satisfy (3.10) and (3.11). The converse direction, i.e. the trailing-arm geometry obtained from (3.10) and (3.11) ensures the anti-dive property for outboard braking system, is given in Appendix B.2. In the following example we will apply (3.6, 3.8, 3.10, 3.11) to the trailing-arm model used in Example 3.1 for the anti-squat and anti-dive design . Example 3.2 Consider the half-car trailing-arm model used in Example 3.1 with incompressible tyres (kt1 = kt2 = ∞). We now carry out the following procedure. We fix Q, C1 , C2 as in Example 3.1, namely Q = (0, 0), C1 = (0.35, 1.3), C2 = (0.35, −1.3), and then calculate the position of A and B in various cases. Suppose the vehicle is driven from both axes, with T1 /T2 = 2/1, and let us suppose a braking force ratio of F1 /F2 = 4/6 (or q = 0.4) with outboard braking. First of all, we need to convert the accelerating torque ratio T1 /T2 to the accelerating force ratio F1 /F2 = p/(1 − p) using (3.7), (3.9) and the no-slip conditions, which gives p = 0.6749. The following designs can be carried out: (1) Anti-Squat Design: We have four degrees of freedom to decide the trailing-arm position (x1,0 , x2,0 , y1,0 and y2,0 ) and two equations, (3.6) and (3.8). Therefore, we can assign one value of x1,0 or y1,0 for the front trailing arm, and one value of x2,0 or y2,0 for the rear trailing arm. If the heights of joints A and B are fixed as x1,0 = x2,0 = 0.35 m, then (3.6) gives y1,0 = 0.6874 m and (3.8) gives y2,0 = 0.2992 m, which is equal to A = (0.15, 0.6126) m and B = (0.15, −1.0008) m. (2) Anti-Dive Design: Similarly, we can also assign one of x1,0 or y1,0 and one of x2,0 or y2,0 . Assume the heights of joints A and B are x1,0 = x2,0 = 0.35 m, then (3.10) gives y1,0 = 0.7358 m and (3.11) gives y2,0 = 1.1243 m, which is equal to A = (0.15, 0.5642) m and B = (0.15, −0.1757) m.

24

Analysis and Design for the Trailing-Arm Model

(3) Anti-Squat/Anti-Dive Design: For combined anti-squat/anti-dive design we have four equations for the four variables. (3.6) and (3.10) will give a unique solution of x1,0 = 0.3817 m and y1,0 = 0.7965 m, while (3.8) and (3.11) will give a unique solution of x2,0 = −0.1909 m and y2,0 = −0.5099 m, which is equal to A = (0.1183, 0.5035) m and B = (0.6909, −1.8099) m.

25

0.06

1500

0.05

500 0 −500

φ3 (rad)

20 1000

y˙3 (m/sec)

torques (Nm)

2000

15

10

5

2

4

sec

6

8

0 0

(a) applied torques

0.03 0.02 0.01

−1000 −1500 0

0.04

2

4

sec

6

8

0 0

(b) forward velocity

2

4

sec

6

8

(c) φ3 (rad)

Figure 3.5: Anti-squat/anti-dive design: (a) T1 (solid), T2 (dashed); (b) velocity; (c) anti-squat design (dashed), anti-dive design (dash dotted), combined design (solid).

For designs (1) and (2) we note that the point A is reasonably close to the value used in Example 3.1, but the position of B is much further to the rear (respectively centre). Different situations could be obtained by different choices of x2,0 . Actually, we could assign the degree of freedom by choosing the trailing-arm lengths and just determining their angles of inclination. For design (3), the point A is reasonably placed, but point B is below ground and behind the rear wheel, which is absurd! This is likely to be a typical situation in practice, so that perfect anti-dive and anti-squat are not achievable simultaneously by choice of suspension geometry. Despite the above practical criticism, we can still use AutoSim to simulate the dynamics of the vehicle and to demonstrate that theoretical dynamical behaviour is achieved. (AutoSim can cope with parts of a vehicle running below ground!) Let the vehicle begin with a forward velocity of 15 m/sec, and apply the accelerating torques T1 = −1200 Nm and T2 = −600 Nm, and braking torques T1 = 1147 Nm and T2 = 1687 Nm, as shown in Fig. 3.5(a). The forward velocity is given in Fig. 3.5(b). It is shown in Fig. 3.5(c) that the effect of the above three designs. The results are exactly as expected: for the anti-squat design the vehicle has no pitch motion during acceleration, for the anti-dive design the vehicle has no pitch motion during braking, and for the combined anti-squat/anti-dive design, the vehicle has no pitch motion during acceleration and braking.

2

In this section, the conventional anti-squat and anti-dive designs were discussed. Although these two designs can be combined by using the four degrees of freedom (except using inboard brakes with

3.3 Classical Conditions for Anti-Squat and Anti-Dive

25

braking ratio q 6 = p, where the only solution is x1,0 = r1 , x2,0 = r2 and y1,0 = y2,0 = 0 which is nonsensical), it was pointed out in the example that sometimes the trailing-arm geometry may be unrealistic. Only in the case of inboard braking and where the accelerating and braking ratios are the same, is it true that (3.6) and (3.8) are necessary and sufficient conditions for both anti-squat and anti-dive design. The reader is reminded that in the analyses the tyres are modelled as solid wheels, i.e. r1 and r2 remain constant. If we consider r1 , r2 as changing variables, then the designs would become more complex. Furthermore, if we want to relax the “no-slip” constraint, then a tyre model needs to be considered, which would make the analysis even more complicated.

3.3 Classical Conditions for Anti-Squat and Anti-Dive O1 O2 A

r1 + h

r2 + h

B

C2

C1 (1 − p)L

pL

(a)

O

A

h

B

P2

P1 (1 − q)L

qL

(b)

Figure 3.6: Simplified trailing-arm geometry: (a) anti-squat; (b) anti-dive with outboard braking.

It was shown in Section 3.2 that (3.6) and (3.8) are necessary and sufficient conditions for perfect anti-squat (or anti-dive with inboard brakes), and (3.10) and (3.11) are necessary and sufficient conditions for perfect anti-dive with outboard brakes. In this section, we shall show that those equations reduce to the standard geometrical conditions if the masses and inertias of the wheels, m 1 , m 2 , I1 , I2 ,

26

Analysis and Design for the Trailing-Arm Model

are negligible. In such a case, (3.6) and (3.8) reduce to: x1,0 − r1 h h x2,0 − r2 = = , , y1,0 pL y2,0 (1 − p)L while (3.10) and (3.11) reduce to: x1,0 h = , y1,0 qL

h x2,0 = . y2,0 (1 − q)L

The geometrical interpretation of these conditions is illustrated in Fig. 3.6. For the anti-squat case, the trailing-arm joint A (resp. B) should be on the line C1 O1 (resp. C2 O2 ), where O1 is at a height h above C1 and a horizontal distance pL from C1 , and similarly for O2 . For the anti-dive case with outboard braking, the trailing-arm joint A (resp. B) should be on the line P1 O (resp. P2 O). These results are consistent with the standard conditions in the literature (see [5] and [8]) when we set r1 = r2 .

3.4 Comparison with the Work of Sharp [26] A recent approach to anti-squat and anti-dive properties was presented in [26], in which the geometry of suspension linkages is defined in terms of mathematical relationships which determine the allowed motion of the hub carriers relative to the vehicle body. Specifically, relationships are specified between the longitudinal and the vertical motions and between the pitch rotation and the vertical motion of the hub carrier relative to the vehicle body. This is a different approach to the one adopted here in that we still retain specific mechanical linkages to determine the allowed motion of the hub carriers. The traditional anti-dive/anti-squat analyses were also criticised in [26] from the following points of view: (1) “the behaviour treated is quasi-steady and not dynamics”, (2) “the equilibrium analyses simplify the suspension geometry markedly and imply vertical constraints on the body motion (jacking inhibition), which caused the solution of the equilibrium problem to mispresent the real behaviour substantially”, (3) “only special cases are treated overtly”. The approach given in Section 3.2 gives a partial response to these points as follows: (1) The analysis of Section 3.2 does not need to assume a constant acceleration. However, the ratio of tractive forces at the tyre contact patch needs to be constant for braking and accelerating. (2) In deriving the classical anti-squat and anti-dive conditions, it is indeed the case that no vertical motion of the sprung mass is assumed (as well as no pitching). However, it is shown in Appendix B.1 and B.2 that the classical conditions are also sufficient to ensure that these properties hold dynamically. (In the simulation we allow pitching motion and vertical movement of the sprung mass to occur, and find that the anti-squat (resp. antidive) geometry ensures the geometric configuration of the vehicle remains undisturbed during accelerating (resp. braking) under the ideal assumption of constant accelerating and braking ratios.) (3) The third criticisim of Sharp is partially lifted in this work in that non-zero masses and inertias are allowed for the wheels.

3.5 Passivity Analysis

27

3.5 Passivity Analysis We now return to the passivity analysis methodology of Chap. 2. In particular we look at the influence of suspension geometry on the compromise between road disturbance responses and the effect of loads. As discussed in Section 3.2 it will usually be impossible to choose the suspension geometry so that the effect of inertial loads is sufficiently reduced for both dive and squat together, so that the suspension struts will be needed to control such motions. Thus the compromise between reducing the effect of load disturbances while maintaining a soft ride is still likely to be an issue. We now examine this in a precise way using the same network analysis approach of Chap. 2. We wish to choose the trailing-arm geometry to give reasonable practical values. We use the same trailing-arm model and accelerating/braking ratios as Example 3.2, and calculate suitable positions of points A and B. Setting the lengths of the front and rear trailing arms to be l4 and l5 respectively, we can substitute x1,0 = l4 cos φ4 + r1 , y1,0 = l4 sin φ4 , x2,0 = l5 cos φ5 + r2 , y2,0 = l5 sin φ5 into (3.6), (3.8) for anti-squat geometry, and into (3.10), (3.11) for anti-dive geometry. The trailing-arm lengths are chosen as l4 = l5 = 0.4 m. First we consider the following two cases: (1). For perfect anti-squat the angles are φ4 = 1.2877 and φ5 = 0.9815, which gives A = (0.2383, 0.9159) m and B = (0.1277, −0.9675) m. (2). For perfect anti-dive the angles are φ4 = 1.5109 and φ5 = 1.6720, which gives A = (0.3261, 0.9007) m and B = (0.3904, −0.9020) m. We now simulate these models by accelerating with T1 = −1500 Nm and T2 = −750 Nm so that the vehicle is accelerated to 12 m/sec (which is about 27 mile/hour), and then braked it until it stops. The applied torques and the forward velocity are shown in Fig. 3.7(a) and 3.7(b) respectively. The effect of the trailing-arm geometry is illustrated in Fig. 3.7(c). From the simulation results, we find that perfect anti-squat geometry causes the vehicle to squat during braking, which is usually thought to be undesirable. On the other hand, the perfect anti-dive geometry gives more resonable responses. Therefore we will choose an anti-dive geometry for implementation. We find that further reduction of the squat angle during accelerating will cause an undesirable squat during braking. We also notice that in design (2) point B is below the wheel centre, which may not be desirable. Thus we increase the length of the rear trailing arm in order to make B above C2 , and to further improve the anti-squat effect. (3). Setting l4 = 0.6 m and l5 = 0.6 m, perfect anti-dive geometry results in φ4 = 1.5109 and φ5 = 1.5270, which gives A = (0.2276, 0.7126) m and B = (0.3237, −0.7006) m. The effect of the improvement is illustrated in Fig. 3.7(c). (4). Further improvement can be achieved by increasing the lengths of trailing arms. For example, if we set l4 = 0.8 m and l5 = 0.8 m, perfect anti-dive geometry results in φ4 = 1.2951 and

28

Analysis and Design for the Trailing-Arm Model

φ5 = 1.4569, which gives A = (0.1322, 0.5302) m and B = (0.2590, −0.5052) m. The effect

2000

12

1500

10

1000

8

0.08 0.07 0.06

500 0 −500

0.05

6 4 2

−1000

0

−1500 0

−2 0

2

4

sec

6

8

(a) applied torques

φ3 (rad)

y˙3 (m/sec)

torques (Nm)

of the improvement is illustrated in Fig. 3.7(c).

0.04 0.03 0.02 0.01 0

2

4

sec

6

(b) forward velocity

8

−0.01 0

1

2

3

4

sec

5

6

7

8

(c) φ3 (rad)

Figure 3.7: Compromised anti-squat/anti-dive geometry: (a) T1 (solid), T2 (dashed); (b) velocity; (c) design (1) (dashed), design (2) (dash-dotted), design (3) (solid) and design (4) (star).

As shown in Fig. 3.7(c), even with long trailing arms the maximum pitching angle reaches as high as 0.022 rad. Consider a suspension strut with ±2.5 cm of deflection space, which allows the maximum pitching angle of ±0.019 rad, the vehicle needs a harder suspension setting to avoid hitting the bump stop. But it will also result in uncomfortable ride to road disturbances. These conflicting performance requirements for passive suspension will now be discussed through network analysis. We begin with the case where load disturbances Fs , Ts are included as well as the wheel torques T1 , T2 and road disturbances zr1 , zr2 . We employ vehicle tyre springs kt1 = kt2 = 500 kN/m. To model a rolling wheel the same method was employed as in Example 3.1. We assume that the normal performance requirements are that it should insulate against road disturbances zr1 and zr2 as when soft passive suspensions {cis , kis , i = 1, 2} are used. At the same time it should also insulate against load disturbances Fs , Ts , and the accelerating/braking torques T1 , T2 as when hard passive suspensions {cih , kih , i = 1, 2} are used. A corresponding network for the outboard braking model is shown as in Fig. 3.8(a). The coefficients and coordinates in Example 3.2 are used except A = (0.1322, 0.5302) m, B = (0.2590, −0.5052) m (which is the anti-dive geometry in design (4) as shown above), and c1s = c2s = 1 kNs/m, k1s = k2s = 4 kN/m, c1h = c2h = 100 kNs/m, k1h = k2h = 400 kN/m. The tranformation matrix G can be expressed as: h i0 i0 h s zˆ s , s φˆ3 , s(φˆ1 − φˆ 4 ), s(φˆ2 − φˆ 5 ), − Nˆ 1 , − Nˆ 2 = [G h , G s ] Fˆs , Tˆs , Tˆ1 , Tˆ2 , s zˆ r1 , s zˆ r2 . In order to get a suitable scale, we check the positive realness of Y instead of G, where Y is defined as:

h

Fˆs , Tˆs , Tˆ1 , Tˆ2 , − Nˆ 1 , − Nˆ 2

i0

i0 h = Y s zˆ s , s φˆ 3 , s(φˆ1 − φˆ 4 ), s(φˆ 2 − φˆ 5 ), s zˆ r1 , s zˆ r2 .

3.5 Passivity Analysis

29

The result of the passivity analysis is shown in Fig. 3.8(b), which means that active suspension is necessary to satisfy the performance requirements. 5

6

z˙ s z˙ r1

Fs

T2 Ts

N

−N1

−N2

φ˙2 − φ˙5 φ˙3 z˙ r2

x 10

5 4

Eigenvalues (Ns/m)

φ˙ 1 − φ˙ 4

T1

3 2 1 0 −1 −2 −3 −2 10

−1

0

10

1

10

2

10

3

10

10

Frequency (rad/sec)

(b) Eigenvalues of (Y + Y ∗ ).

(a) The corresponding network.

Figure 3.8: The passivity analysis of the half-car trailing-arm model with outboard braking.

We now consider the case where Fs , Ts are set to be zero and we ask if it is possible to ensure that the performance is stiff to braking torques and soft to road disturbances by passive suspensions. We can check this by discussing the passivity of the network in 3.9(a). The result shown in Fig. 3.9(b) suggests that active suspension is still necessary for the remaining performance requirements, where Y is defined as follows: h i0 i0 h Tˆ1 , Tˆ2 , − Nˆ 1 , − Nˆ 2 = Y s(φˆ 1 − φˆ 4 ), s(φˆ2 − φˆ 5 ), s zˆ r1 , s zˆ r2 .

5

6

x 10

5

φ˙1 − φ˙ 4 z˙ r1

−N1

T2

N

−N2

φ˙2 − φ˙ 5

Eigenvalues (Ns/m)

4

T1

3 2 1 0 −1

z˙ r2

−2 −3 −2 10

−1

10

0

10

1

10

2

10

3

10

Frequency (rad/sec)

(a) The corresponding network.

(b) Eigenvalues of (Y + Y ∗ ).

Figure 3.9: The passivity analysis of the half-car trailing-arm model with outboard braking (2).

For the inboard braking and accelerating cases, similar results can also be obtained by replacing the variables φ4 , φ5 with φ3 in Fig. 3.8(a) and Fig. 3.9(a). The AutoSim linearised trailing-arm model is given in Appendix B.3.

30

Analysis and Design for the Trailing-Arm Model

3.6 Summary and Comments In this chapter, we considered the half-car trailing-arm model, which is a conventional method to reduce the squat and dive of the vehicle under accelerating and braking motions. Firstly, we discussed the conventional anti-squat and anti-dive designs based on the trailing-arm geometry. Then through the network analysis it was shown that a passive suspension cannot satisfy the general performance specification. The active suspension design for this trailing-arm model will later be performed in Chap. 9.

Chapter 4

Controller Parametrisation for Disturbance Response Decoupling In this chapter, we shall derive a parametrisation of the set of all stabilising controllers for a given plant which leaves some pre-specified closed-loop transfer function fixed. This result is motivated by the need to independently shape road and load disturbance transmission paths in the vehicle suspension control problem. We will make use of algebraic properties of the ring of stable, proper rational functions [36]. To facilitate the parametrisation at the required level of generality we will introduce the idea of left and right normalrank factorisations of a rational matrix (Definition 4.1). Section 4.1 defines two factorisations, namely left and right normalrank factorisations, which are the basic tools for the theorems developed in this chapter. Section 4.2 sets up in generality the problem of parametrising all stabilising controllers which leave some pre-specified closed-loop transfer function fixed. Our basic results, which characterise the required structure of the Youla Q-parameter, are given in Theorems 4.1–4.4. Section 4.3 discusses the design freedom and the achievable performance after disturbance response decoupling design. Section 4.4 gives two illustrative examples of the theorems developed in this chapter.

4.1 Normalrank Factorisations The results we will establish in this section make use of certain algebraic properties of the set RH∞ , namely its ring structure. The reader is referred to [36] for the necessary background on this topic. Here we will be content to recall a few facts. The set RH∞ has the property of being a Euclidean domain with degree function defined by the total number of zeros of the element in the closed right half plane and at infinity (counting multiplicities). The invertible elements in RH∞ are called units, and are the elements with degree equal to zero. A matrix U ∈ RHm×m is called unimodular if it has ∞ an inverse whose elements belong to RH∞ , or equivalently, if its determinant is a unit in RH∞ . The normalrank of a matrix Q ∈ RHm×n ∞ , denoted normalrank(Q(s)), is the maximum rank of Q(s) for 31

32

Controller Parametrisation for Disturbance Response Decoupling

any s ∈ C which is not a pole. Equivalently, the normalrank is equal to the rank for almost all s ∈ C. We now introduce a type of matrix factorisation which will be useful in proving the subsequent results. Definition 4.1 Let T be a matrix with elements in RH∞ . T is said to have a lnf (left normalrank factorisation) if there exist matrices E and V = (V10 , V20 )0 over RH∞ with E of full column normalrank and V unimodular such that T = E V1 . T is said to have a rnf (right normalrank factorisation) if there exist matrices F and U = (U1 , U2 ) over RH∞ with F of full row normalrank and U unimodular such that T = U1 F. Lemma 4.1 For any T ∈ RHr×c ∞ , there exists a lnf and a rnf of T . (proof): T can be decomposed in terms of its Smith form over RH∞ [36]: T = U H V, c×c r×c where U ∈ RHr×r ∞ , V ∈ RH∞ are unimodular, H ∈ RH∞ . Suppose that H has r1 non-zero

diagonal elements. Then we can write: H

H1

=

0(r−r1 )×r1 Ir1 ×r1

=

0(r−r1 )×r1

! !

 

Ir1 ×r1 , 0r1 ×(c−r1 ) H1 , 0r1 ×(c−r1 )



 (4.1) ,

(4.2)

where H1 ∈ RHr∞1 ×r1 . We also partition U and V conformably: U

= (U1 , U2 ),

V

=

V1 V2

! ,

r×(r−r1 ) (c−r1 )×c 1 where U1 ∈ RHr×r , V1 ∈ RHr∞1 ×c , V2 ∈ RH∞ . We therefore obtain ∞ , U2 ∈ RH∞

T

= (U1 H1 )V1 = E V1 , = U1 (H1 V1 ) = U1 F,

r1 ×c 1 where E ∈ RHr×r ∞ , F ∈ RH∞ are full column normalrank and full row normalrank respectively. ♥

It is noted that the rnf (or lnf) is not unique for a given matrix. However, there are certain relations between the different factorisations, as shown in the following lemma. † † Lemma 4.2 For any T ∈ RHr×c ∞ with normalrank r1 , suppose U1 F is a rnf of T , then U1 F is also

a rnf of T if and only if there exists a unimodular matrix Z 1 ∈ RHr∞1 ×r1 such that U1† = U1 Z 1 and F † = Z 1−1 F. (proof):

4.1 Normalrank Factorisations

33

(⇐) It is obvious that U1† F † = (U1 Z 1 )(Z 1−1 F) = U1 F = T , whilst [U1† , U2 Z 1 ] is unimodular and F † has full row normalrank. (⇒) Suppose U = (U1 , U2 ), and U † = (U1† , U2† ) are unimodular over RH∞ , and # " " † # e1 e1 U U −1 † −1 U = , U . = e2 e2† U U Then we can write: T =

h

U1 , U2

i

"

F 0

# =

h

U1† , U2†

i

"

F†

#

0

,

e1U1† ) and Y1 = (U e1†U1 ) are square which gives F = X 1 F † and F † = Y1 F, where X 1 = (U matrices with elements in RH∞ . X 1 is, therefore, a candidate for Z 1 . Now we need to show that X 1 Y1 = I . It is clear that F = X 1 F † = X 1 Y1 F, which is equivalent to (I − X 1 Y1 ) = 0 since F is full row normalrank. Since X 1 and Y1 are square, they are inverses of each other and hence are unimodular. Thus we can assign Z 1 = X 1 and Z 1−1 = Y1 to complete the proof.



† † Lemma 4.3 For any T ∈ RHr×c ∞ with normalrank r1 , suppose both U1 F and U1 F are rnf’s of T and 1) (U1 , U2 ) is unimodular. Then the set of U2† ∈ RHr×(r−r such that (U1† , U2† ) is unimodular is given ∞

(r−r1 )×(r−r1 ) by {U2† : U2† = U1 α + U2 β, where α ∈ RHr∞1 ×(r−r1 ) , β is unimodular and β ∈ RH∞ }. 1) (proof): Suppose U = (U1 , U2 ), then for any U2† ∈ RHr×(r−r such that U † = (U1† , U2† ) is ∞

unimodular over RH∞ , the matrix W = U −1 U † is unimodular over RH∞ . Therefore, we can write: # " h i h i W 11 W12 † † , (4.3) = U1 , U2 U1 , U2 W21 W22 (r−r1 )×(r−r1 ) 1 )×r1 where W11 ∈ RHr∞1 ×r1 , W12 ∈ RHr∞1 ×(r−r1 ) , W21 ∈ RH(r−r , W22 ∈ RH∞ , so that ∞

U1† = U1 W11 + U2 W21 . On the other hand, from Lemma 4.2, there exists a unimodular matrix Z 1 ∈ RHr∞1 ×r1 such that U1† = U1 Z 1 . Then we can write: # " h i W −Z 11 1 = 0, U1 , U2 W21 which, by multiplying by (U1 , U2 )−1 on both sides, gives W11 = Z 1 and W21 = 0, which implies that W22 is unimodular because W is unimodular. Therefore, by setting α = W12 and β = W22 , U2† can be expressed as U2† = U1 α + U2 β from (4.3). Conversely, suppose U2† = U1 α + U2 β for some α ∈ RHr∞1 ×(r−r1 ) and some unimodular matrix (r−r1 )×(r−r1 ) β ∈ RH∞ , then

h

U1† ,

U2†

i

=

h

U1 , U2

i

"

Z1 α 0

β

# ,

is unimodular since both terms on the right hand side of (4.4) are unimodular. The corresponding results for lnf’s are proved analogously and are stated as follows:

(4.4) ♥

34

Controller Parametrisation for Disturbance Response Decoupling

† † Lemma 4.4 For any T ∈ RHr×c ∞ with normalrank r1 , suppose E V1 is a lnf of T , then E V1 is also

a lnf of T if and only if there exists a unimodular matrix Z 2 ∈ RHr∞1 ×r1 such that V1† = Z 2 V1 and E † = E Z 2−1 .



† † Lemma 4.5 For any T ∈ RHr×c ∞ with normalrank r1 , suppose both E V1 and E V1 are lnf’s of T and 0

0

(c−r1 )×c (V10 , V20 )0 is unimodular. Then the set of V2† ∈ RH∞ such that (V1† , V2† )0 is unimodular is given (c−r1 )×(c−r1 ) 1 )×r1 by {V2† : V2† = γ V1 + δV2 , where γ ∈ RH(c−r , δ is unimodular and δ ∈ RH∞ }. ∞



4.2 Controller Parametrisation Results We consider the LFT (linear fractional transformation) model in Fig. 4.1, where the Laplace transfer function of the generalised plant P is partitioned as: " P11 P = P21

P12 P22

# ,

and further partitioned conformably with the disturbance signals as:  " # " #  " #  P12,1 P11,11 P11,12 zˆ 1      =  P12,2 zˆ 2    h P11,21 P11,22 i P22 yˆ P21,1 P21,2

 "   

wˆ 1 wˆ 2 uˆ

#   , 

(4.5)

where w1 ∈ Rm 1 , w2 ∈ Rm 2 , u ∈ Rm 3 , z 1 ∈ R p1 , z 2 ∈ R p2 , y ∈ R p3 at any time instant and uˆ denotes the Laplace transform of u(t) etc. We consider the problem of parametrising all stabilising controllers which leave Twˆ 1 →ˆz1 (the transfer function from wˆ 1 to zˆ 1 ) the same as for some given stabilising controller K 0 . w1

z1

w2

P

u

z2 y

K

Figure 4.1: Generalised model in LFT form. Let P22 = N M −1 = M˜ −1 N˜ be the right and left coprime factorisations of P22 over RH∞ . Then all stabilising controllers can be parametrised by: K

= (Y − M Q)(X − N Q)−1 ,

(4.6)

˜ = ( X˜ − Q N˜ )−1 (Y˜ − Q M),

(4.7)

4.2 Controller Parametrisation Results

35

3 × p3 for Q ∈ RHm where X, Y, X˜ , Y˜ are matrices with elements in RH∞ which satisfy the Bezout ∞

identity:

"

X˜ − N˜

−Y˜ M˜

#"

M

Y

N

X

# = I.

In addition the factorisations will always be chosen so that Q = 0 corresponds to the desired stabilising ˜ −1 (Y˜ ). (This assumption will be relaxed in Theorem 4.4.) controller, i.e. K 0 = Y X −1 = ( X) We now consider the problem of parametrising all stabilising controllers which leave the transfer function Twˆ 1 →ˆz1 the same as when the controller K 0 = Y X −1 = ( X˜ )−1 (Y˜ ) is applied. From [10], the closed loop transfer function in Fig. 4.1 can be expressed as: T

wˆ 1

 

wˆ 2





  →

zˆ 1 zˆ 2



= T1 − T2 QT3 ,

(4.8)

 

where T1 , T2 , T3 have elements in RH∞ and are given by: T1 =

P11 + P12 M Y˜ P21 ,

T2 =

P12 M,

T3 = M˜ P21 . Thus the problem reduces to parametrising all stabilising controllers which leave Twˆ 1 →ˆz1 = (T1 )1,1 . 3 × p3 These are characterised by all Q ∈ RHm such that (T2 QT3 )1,1 = T2,1 QT3,1 = 0, where T2,1 = ∞ P12,1 M and T3,1 = M˜ P21,1 . We now introduce a lnf of T2,1 and a rnf of T3,1 as follows:

T2,1 := E V1 ,

(4.9)

T3,1 := U1 F,

(4.10)

p1 ×r2 p3 ×r3 where E ∈ RH∞ , F ∈ RHr∞3 ×m 1 , U1 ∈ RH∞ , V1 ∈ RHr∞2 ×m 3 , r2 and r3 are the normalrank of

T2,1 and T3,1 respectively. Note that r2 and r3 are also the normalrank of P12,1 and P21,1 respectively. Furthermore we have the inequalities r2 ≤ min( p1 , m 3 ), r3 ≤ min(m 1 , p3 ). Theorem 4.1 Consider any stabilisable P in the configuration of Fig. 4.1. All stabilising controllers such that the closed loop transfer function Twˆ 1 →ˆz1 = (T1 )1,1 are given by K expressed in the form of (4.6) and (4.7) with Q =

V1

!−1

e2 Q 1U

V2

!

Q2

,

(4.11)

3 −r2 )× p3 for Q 1 ∈ RHr∞2 ×( p3 −r3 ) and Q 2 ∈ RH(m , V1 and U1 defined from the lnf and rnf factorisations ∞ e2 ∈ (4.9) and (4.10), U2 , V2 are chosen such that (U1 , U2 ) and (V10 , V20 )0 are unimodular, and U

RH(∞p3 −r3 )× p3 is a partition of U −1 : U

−1

= (U1 , U2 )

−1

=

e1 U e2 U

! .

36

Controller Parametrisation for Disturbance Response Decoupling

(proof): A stabilising controller in the form (4.7) leaves Twˆ 1 →ˆz1 = (T1 )1,1 if and only if (T2 QT3 )1,1 = E V1 QU1 F = 0. This is equivalent to V1 QU1 = 0 since E (resp. F) has full column (resp. row) normalrank. We now show that it requires Q to take the form given in (4.11). Clearly V1 Q(U1 , U2 ) = (0r2 ×r3 , Q 1 ),

(4.12)

for some Q 1 ∈ RHr∞2 ×( p3 −r3 ) . This gives e2 . V1 Q = (0, Q 1 )U −1 = Q 1 U Next we see that V1 V2

! Q =

e2 Q 1U Q2

! ,

(4.13)

3 −r2 )× p3 for some Q 2 ∈ RH(m , which establishes (4.11). ∞ 3 −r2 )× p3 Conversely, if (4.11) holds for some Q 1 ∈ RHr∞2 ×( p3 −r3 ) and Q 2 ∈ RH(m , then so does ∞

(4.13), from which follows V1 Q = (0, Q 1 )U −1 which again implies V1 QU1 = 0.



e2 term Remark 4.1 In case r2 = m 3 , then the Q 2 block is missing in (4.11). In case r3 = p3 the Q 1 U in (4.11) is replaced by a zero matrix of dimension r2 × p3 . If both r2 = m 3 and r3 = p3 , (4.11) reduces to Q = 0.



The control structure given in (4.11) is arrived at by completing the matrix U1 to a unimodular e2 from the resulting matrix inverse. Since U1 and the completion are not matrix and then extracting U e2 . It will be useful to characterise this non-uniqueness by parametrising the unique then neither is U e2 : Q 1 ∈ RHr∞2 ×( p3 −r3 ) } directly. This is done in the following lemma. set {Q 1U † e† † r×c e2 : Q 1 ∈ RHr×c e Lemma 4.6 Given two sets A = {Q 1U ∞ } and B = {Q 1 U2 : Q 1 ∈ RH∞ } where U2 , e2† ∈ RHc×q U ∞ are full row normalrank, then

e2† is a left multiple of U e2 over RH∞ , i.e. there exists a W ∈ RHc×c (i) B ⊆ A if and only if U ∞ such † e e that U2 = W U2 . e† e (ii) B = A if and only if there exists a unimodular matrix W ∈ RHc×c ∞ such that U2 = W U2 . (proof): † e† † † e2† = W U e2 where W ∈ RHc×c e (i) (⇐) Suppose U ∞ , then B = {Q 1 U2 } = {(Q 1 W )U2 }. Clearly Q 1 W

has elements in RH∞ . Hence, any element of B is also an element of A. r×c (⇒) Suppose B ⊆ A, then for any Q †1 ∈ RHr×c ∞ there exist some Q 1 ∈ RH∞ such that e2† = Q 1 U e2 . Let us now choose the first row of Q †1 to be [0, · · · , 1, · · · , 0] (with the 1 in Q †1 U

4.2 Controller Parametrisation Results

37

the ith place), and all other rows to be zero, and define qi to be the first row of the corresponding e2 , from which we conclude that U e2† = qi U e2† = W U e2 where Q 1 . Then [0, · · · , 1, · · · , 0]U e2† is a left multiple of U e2 . W = [q10 , q20 , · · · , qc0 ]0 . Hence U e2† is a left multiple of U e2 and U e2 is a left multiple (ii) From (i) we know that B = A if and only if U e2† . That is, U e2 and U e2† for some W1 , W2 ∈ RHc×c e2† = W1 U e2 = W2 U of U ∞ . Hence we have † † † † e2 = W2 W1 U e2 which gives (I − W2 W1 )U e2 = 0. Since U e2 is full row normalrank, it is U equivalent to W2 W1 = I , which is equivalent to W1 and W2 being unimodular and inverses of each other over RH∞ .



Throughout this dissertation the vehicle dynamics examples will satisfy some special assumptions on the open-loop plant. This allows the controller parametrisation of Theorem 4.1 to take a simplified form, and as a result a further useful structural simplification can then be made. It will be convenient to summarise these simplifications in the theorem below, which will then be applied directly throughout the dissertation. (The first two special assumptions on the open-loop plant arise because of some passive elements in the suspension system which ensure that the road disturbance responses are satisfactory without any feedback control. The third assumption is a rather technical one which says that the number of outputs to be left invariant is no smaller than the number of actuators and that this transmission path has full normalrank.) Theorem 4.2 Let (1) P be (open-loop) stable, (2) K 0 = 0, (3) m 3 = r2 . e2 ∈ RH(∞p3 −r3 )× p3 such that all stabilising controllers which give Twˆ 1 →ˆz1 = (T1 )1,1 (i) There exists U can be parametrised as e2 P22 )−1 Q 1 U e2 , K = −(I − Q 1 U

(4.14)

for Q 1 ∈ RHr∞2 ×( p3 −r3 ) . e2 ∈ RH(∞p3 −r3 )× p3 for which (4.14) parametrises all stabilising controllers such (ii) A particular U that Twˆ 1 →ˆz1 = (T1 )1,1 can be calculated as follows: choose M = I , M˜ = I , N = N˜ = P22 , e2 X = I , X˜ = I , Y = 0, Y˜ = 0 and V1 = I , define U1 from the rnf (4.10), and calculate U2 , U as in Theorem 4.1. e2† such that K † = −(I − Q 1 U e2† P22 )−1 Q 1 U e2† parametrises all stabilising con(iii) Consider any U trollers which give Twˆ 1 →ˆz1 = (T1 )1,1 . Then there exist a unimodular matrix W such that e2† = W U e2 , where U e2 is defined in (ii). U e2 be defined in (ii) and let K 1 be any stabilising controller for U e2 is a e2 P22 . Then K 1 U (iv) Let U stabilising controller for P22 for which Twˆ 1 →ˆz1 = (T1 )1,1 . e2 be defined in (ii) and consider any stabilising controller K for P22 for which Twˆ 1 →ˆz1 = (v) Let U e2 , where K 1 is a stabilising controller for U e2 P22 . (T1 )1,1 . Then we can write K = K 1 U

38

Controller Parametrisation for Disturbance Response Decoupling

(proof): (i), (ii) These conditions allow us to choose M = I , M˜ = I , N = N˜ = P22 , X = I , X˜ = I , Y = 0, Y˜ = 0 and V1 = I . Then (4.14) follows directly from (4.11) and (4.7). e2 and U e2† such that all stabilising controllers can be parametrised as K = (I − (iii) Consider U e2 P22 )−1 Q 1 U e2 , Q 1 ∈ RHr∞2 ×( p3 −r3 ) and K † = (I − Q †1 U e2† P22 )−1 Q †1 U e2† , Q †1 ∈ RHr∞2 ×( p3 −r3 ) Q 1U e2 = Q †1 U e2† . From Lemma 4.6, this respectively. We can check that K = K † if and only if Q 1 U e2† = W U e2 . means there exits a unimodular matrix W such that U

e2 , P22 have elements in RH∞ , it follows from [45, Corollary 5.5] that K 1 stabilises U e2 P22 (iv) Since U m ×( p −r ) e2 P22 )−1 K 1 ∈ RH∞3 3 3 , which is equivalent to (I −K 1 U e2 P22 )−1 K 1 U e2 ∈ if and only if (I −K 1 U 3 × p3 e2 is right invertible over RH∞ , which is the necessary and sufficient condition RHm since U ∞ m 3 ×( p3 −r3 ) e2 stabilises P22 . To complete the proof, let Q 1 = −(I −K 1U e2 P22 )−1 K 1 ∈ RH∞ that K 1 U

e2 P22 )−1 Q 1 . Therefore K = K 1 U e2 will take the form of (4.14), and note that K 1 = −(I − Q 1 U from which the result follows. (v) Any stabilising controller K for which Twˆ 1 →ˆz1 = (T1 )1,1 takes the form of (4.14). We can m 3 ×( p3 −r3 ) e2 P22 )−1 Q 1 for some Q 1 ∈ RH∞ then define a controller K 1 = −(I − Q 1 U such that

m 3 ×( p3 −r3 ) e2 . It can also be shown directly that −(I − K 1 U e2 P22 )−1 K 1 = Q 1 ∈ RH∞ K = K1U , e2 P22 . which means that K 1 stabilises U ♥

P

P e2 U

Q1

e2 U P†

− +

e2 P22 U

K1

(a)

(b)

Figure 4.2: General controller structure and equivalent controller.

The controller structure given in (4.14), which is a special case of the general parametrisation given in Theorem 4.1, may be represented in the block diagram form shown in Fig. 4.2(a). Theorem 4.2(iv,v) e2 as the rightmost term in shows that the essential feature in this controller structure is the presence of U (4.14). This is illustrated in the block diagram Fig. 4.2(b) where K 1 may be any stabilising controller e2 factor. for the transformed plant P † . We now present a partial result to emphasise the role of U

4.2 Controller Parametrisation Results

39

Theorem 4.3 Let (1) P is (open-loop) stable, (2) K 0 = 0. Consider the controller structure of Fig. 4.3 with P given by (4.5). Then (i) assuming closed-loop stability, the controller structure leaves Twˆ 1 →ˆz1 the same as the open loop e2† is a left annihilator of P21,1 . if U (ii) if P12,1 is full column normalrank and the controller structure leaves Twˆ 1 →ˆz1 the same as the e2† is a left open loop for some controller K 1† for which Fig. 4.3 is closed-loop stable, then K 1† U annihilator of P21,1 . m 3 ×( p3 −r3 ) e2† P22 )−1 Q †1 U e2† , where Q †1 ∈ RH∞ (iii) assuming (3) m 3 = r2 , then K † = −(I − Q †1 U , † ( p −r )× p 3 3 3 e2 ∈ RH∞ parametrises all stabilising controllers for P which leave Twˆ 1 →ˆz1 invariant if U

is a part of a unimodular matrix and is a left annihilator of P21,1 .

P e2† U

P†

K 1†

Figure 4.3: Controller structure as a left annihilator.

(proof): † e† −1 † e† e† (i) The closed-loop response of the system is Tw→ˆ ˆ z = P11 + P12 (I − K 1 U2 P22 ) K 1 U2 P21 . If U2 e2† P21,1 = 0, then is a left annihilator of P21,1 , i.e. U

e2† P22 )−1 K 1† U e2† P21,1 = P11,11, Twˆ 1 →ˆz1 = P11,11 + P12,1 (I − K 1† U

(4.15)

which is invariant of the feedback control. e2† P21,1 = 0. (ii) If P12,1 is full column normalrank and (4.15) holds for some controller K 1† , then K 1† U e2† is a left annihilator of P21,1 . That is K 1† U 0

0

e1† ∈ RHr∞3 × p3 is a completion of U e2† such that U e† = (U e1† , U e2† )0 is unimodular, and (iii) Suppose U e†−1 = U † = (U1† , U2† ). Since U e2† is a left annihilator of P21,1 , we can write U "

e† P21,1 = U

e1† U e2† U

#

"

P21,1 =

F† 0

#

,

40

Controller Parametrisation for Disturbance Response Decoupling

for some F † ∈ RHr∞3 ×m 1 , which gives P21,1 =

h

U1† , U2†

i

"

#

F†

= U1† F † ,

0

p3 ×r3 where U1† ∈ RH∞ . Note that U1† F † is a rnf of P21,1 because F † has normalrank r3 , which

results from the fact that P21,1 has normalrank r3 and the multiplication of a unimodular matrix to obtain F † does not change the normalrank. Using Theorem 4.2 we can find a rnf of P21,1 = U1 F, a unimodular matrix (U1 , U2 ) and its e1 , U e2 )0 so that K in (4.14) parametrises all stabilising controllers for some Q 1 ∈ inverse (U e2† } = {Q 1U e2 }. From Lemma 4.2 we know that RHr∞2 ×( p3 −r3 ) . We now wish to show that {Q †1U U1† = U1 Z 1 for some unimodular matrix Z 1 ∈ RHr∞1 ×r1 , and from Lemma 4.3 we know that U2† = ( p3 −r3 )×( p3 −r3 ) U1 α + U2 β for some α ∈ RH(∞p3 −r3 )×r3 and some unimodular matrix β ∈ RH∞ .

Hence "

e1† U e2† U

# =

h "

=

U1† , U2† Z1 α 0

i−1

#−1

h

β

U1 , U2

i−1

" =

e1 − Z 1−1 αβ −1 U e2 Z 1−1U e2 β −1 U

# , (4.16)

e2† } = {Q 1 U e2 } from Lemma 4.6, since U e2 and β −1 is unimodular. e2† = β −1 U which results in {Q †1 U ♥

The result now follows from Theorem 4.2(i).

Theorem 4.1, 4.2 parametrise the set of all stabilising controllers which leaves the pre-specified closed-loop transfer function the same as the open-loop, i.e. T1,1 = (T1 )1,1 . In the following theorem, we extend this idea to find all stabilising controllers which have the same pre-specified closed-loop responses as those with a special controller. Theorem 4.4 Consider any stabilisable P in the configuration of Fig. 4.1. All stabilising controllers which leave the closed loop transfer function (T )1,1 the same as that of the controller K = (Y − S S −1 can be expressed in the form of (4.6) and (4.7) with M Q)(X − N Q) S+ Q = Q

V1 V2

!−1

e2 Q 1U Q2

! ,

(4.17)

with all the variables defined in Theorem 4.1. (proof): From (4.8), the closed-loop transfer function (T )1,1 remains the same as that of the controller S S −1 if and only if (T1 + T2 QT3 )1,1 = (T1 + T2 QT S 3 )1,1 , which is equivalent K = (Y − M Q)(X − N Q) S 3 )1,1 = 0, which results in (4.17) by using Theorem 4.1. to (T2 (Q − Q)T



4.3 Design Freedom and Achievable Performance

41

Remark 4.2 If P22 is stable and m 3 = r2 , then the set of all stabilising controllers which leaves the S S −1 closed loop transfer function (T )1,1 the same as that of the controller K = (Y − M Q)(X − N Q) is parametrised by: S + Q 1U e2 . Q = Q

(4.18) ♦

4.3 Design Freedom and Achievable Performance In the previous section, we introduced the parametrisation of all stabilising controllers which leaves some pre-specified transmission paths unchanged. To fulfil this goal, we “shrink” the parametrisation 3 × p3 set of all stabilising controllers from Q ∈ RHm to (4.11). It is therefore interesting to ask whether ∞

this procedure reduces any design freedom, or introduces performance limitation on other transmission paths. First let us consider the design freedom in the following example: Example 4.1 Consider the system in Fig. 4.4. Suppose our design goal is to find a controller which fixes Tdˆ1 → yˆ and improves Tdˆ1 → yˆ1 . The question is: can we actually do this? r =0 + +

e

+u + d2

y1

G +

y

K

+ d1

Figure 4.4: Classical feedback interconnection.

Clearly this is not possible since the closed-loop transfer function of the system is: " # " #" # # " #" y1 T SG d1 (I − G K )−1 G K (I − G K )−1 G d1 = , = S SG (I − G K )−1 y (I − G K )−1 G d2 d2 where S is the system sensitivity function and T = I − S is the complementary sensitivity function. Hence Tdˆ1 → yˆ + Tdˆ1 → yˆ1 = I , and there is no design freedom left. To see this using the machinery of Section 4.2 we rewrite the system in the form of Fig. 4.1 with w1 = d1 , w2 = d2 , z 1 = y1 , z 2 = y, and u, y the same as in Fig. 4.4. The generalised plant P then takes the following form:



 0 G G

 P =   I I

 G G  . G G

(4.19)

42

Controller Parametrisation for Disturbance Response Decoupling

Let G = N M −1 = M˜ −1 N˜ be the right and left coprime factorisations of P22 = G, we find a lnf of T2,1 as T2,1 = G M = E V1 and notice that a lnf of T2 is T2 = [G M, G M]0 = [E, E]0 V1 , which shares the same V1 in (4.11). Therefore, the parametrisation of all stabilising controllers which leave Tdˆ1 → yˆ1 fixed is the same as the parametrisation of all stabilising controllers which leave Tdˆ1 →[ yˆ1 , yˆ ]0 2

unchanged. As a result, Tdˆ1 → yˆ cannot be improved once Tdˆ1 → yˆ1 is fixed.

We will now derive conditions under which the achievable performance of the system, when a certain transmission path is kept fixed, is not reduced in a significant way for other transmission paths. To do this, we will work directly with the Q-parameters in the Youla parametrisation. In particular, we will study how restrictions on the form of Q-parameters in (4.11) affect this freedom. We begin the discussion with a scalar transfer function. Lemma 4.7 Given two sets of strictly proper transfer functions, A = {G 1 Q : Q ∈ RH∞ } and B = {G 2 Q : Q ∈ RH∞ }, where G 1 is strictly proper in RH∞ and G 2 = G 1 ×

n1 m1

in which m 1 , n 1

are Hurwitz polynomials with deg(m 1 ) − deg(n 1 ) = 1, for any R1 ∈ A we can find a R2 ∈ B such that kR1 − R2 k∞ <  for any  > 0. (proof): Since G 2 has relative degree one greater than G 1 , for any R1 ∈ A we take the following candidate for R2 : R2 = R1 ×

1 , sτ + 1

for some τ > 0. Note that R2 ∈ B since by definition R1 = G 1 Q for some Q ∈ RH∞ and so m1 m1 R2 = G 1 Q sτ1+1 = G 2 ( n1 (sτ Q) and ( n1 (sτ Q) ∈ RH∞ . Therefore, we have: +1) +1)

kR1 − R2 k∞ = kR1

sτ k∞ . sτ + 1

(4.20)

We now wish to show that the right-hand side of (4.20) can be made arbitrarily small by taking τ sufficiently small. Firstly, since R1 is strictly proper, given any  > 0 we can find an ω0 () such j ωτ that |R1 ( j ω)| <  for ω > ω0 , and hence supω>ω0 |R1 j ωτ | ≤ |R1 ( j ω)| <  independently of τ . +1

j ωτ Secondly, for ω ∈ [0, ω0 ], max| j ωτ | can be made as small as we like by choosing a sufficiently +1

j ωτ small τ . Hence we can choose τ sufficiently small so that supω∈[0,ω0 ] |R1 j ωτ | <  for any  > 0 +1 j ωτ on this interval. Combining these together, we can ensure that supω |R1 j ωτ | <  and is therefore, +1

k(R1 − R2 )( j ω)k∞ <  by choosing τ sufficiently small.



Remark 4.3 If G 1 is proper in RH∞ and deg(m 1 ) = deg(n 1 ), then for any R1 ∈ A we can find a R2 = R1 which belongs to B in that R2 = G 1 Q = G 2 ( mn11 Q) and ( mn11 Q) ∈ RH∞ , such that R1 − R2 = 0.



For the scalar case, Lemma 4.7 gives a way of showing that the achievable closed-loop performance will not be reduced up to an approximation error of  in the H∞ norm, since the closed-loop transfer

4.3 Design Freedom and Achievable Performance

43

function is affine in Q. Now we will extend Lemma 4.7 to a matrix case in the following lemma. A matrix is said to be proper if all its elements are proper, and strictly proper if all its elements are strictly proper. Lemma 4.8 Given two sets of proper, stable transfer matrices, A = {G 1 Q : Q is a matrix with elements in RH∞ } and B = {G 2 Q : Q is a matrix with elements in RH∞ }, where G 2 J = G 1 for some J : (i) Suppose G 1 is strictly proper in RH∞ and J ( sτ1+1 )r is a matrix with elements in RH∞ for some r > 0 and any τ > 0. Then for any R1 ∈ A we can find a R2 ∈ B such that kR1 − R2 k∞ <  for any  > 0. (ii) If G 1 and J are proper in RH∞ then for any R1 ∈ A we can find a R2 ∈ B such that kR1 − R2 k∞ = 0.



(proof): (i) For any R1 ∈ A, we take the following candidate for R2 : R2 = R1 (

1 )r , sτ + 1

for some τ > 0. Note that R2 ∈ B since by definition R1 = G 1 Q for some Q which has elements in RH∞ and so R2 = G 2 ( J ( sτ1+1 )r Q), where (J ( sτ1+1 )r Q) has elements in RH∞ . Hence kR1 − R2 k∞ = kR1 (1 − (

1 )r )k∞ . sτ + 1

(4.21)

The proof is similar to that of Lemma 4.7. Firstly, since R1 is strictly proper, given any  > 0 we can find an ω0 () such that σ¯ (R1 ( j ω)) <  for ω > ω0 , and σ¯ ω>ω0 (R1 ( j ω)(1 − ( j ωτ1+1 )r )) ≤ σ¯ ω>ω0 (R1 ( j ω)) < . Secondly, for ω ∈ [0, ω0 ], (1 − ( j ωτ1+1 ))r can be made as small as we like by choosing a sufficiently small τ . Hence we can choose τ sufficiently small so that σ¯ ω∈[0,ω0 ] (R1 (1 − ( j ωτ1+1 )r )) <  for any  > 0. Combining these together, we can ensure that

j ωτ r σ¯ (R1 (1 − ( j ωτ ) )) <  for all ω ≥ 0, and therefore, k(R1 − R2 )( j ω)k∞ <  by choosing τ +1

sufficiently small. (ii) For any R1 we can set R2 = R1 since R1 = G 1 Q = G 2 ( J Q) ∈ B because J Q has elements in RH∞ .



Similarly, we can have a parallel version of Lemma 4.8 as follows: Lemma 4.9 Given two sets of proper, stable transfer matrices, A = {QG 1 : Q is a matrix with elements in RH∞ } and B = {QG 2 : Q is a matrix with elements in RH∞ }, where J G 2 = G 1 for some J :

44

Controller Parametrisation for Disturbance Response Decoupling

(i) Suppose G 1 is strictly proper in RH∞ and J ( sτ1+1 )r is a matrix with elements in RH∞ for some r > 0 and any τ > 0. Then for any R1 ∈ A we can find a R2 ∈ B such that kR1 − R2 k∞ <  for any  > 0. (ii) If G 1 and J are proper in RH∞ and then for any R1 ∈ A we can find a R2 ∈ B such that kR1 − R2 k∞ = 0.



Combining Lemma 4.8 and Lemma 4.9, the following theorem gives our basic result to test the achievable performance after disturbance response decoupling design. Theorem 4.5 Given two sets of proper, stable transfer matrices, A = {G 1 Q H1 : Q is a matrix with elements in RH∞ } and B = {G 2 Q H2 : Q is a matrix with elements in RH∞ } , where G 2 J = G 1 for some J and K H2 = H1 for some K : (i) Suppose G 1 Q H1 is strictly proper in RH∞ for any Q which has elements in RH∞ , J Q K ( sτ1+1 )r is a matrix with elements in RH∞ for some r > 0 and any τ > 0, then for any R1 ∈ A we can find a R2 ∈ B such that kR1 − R2 k∞ <  for any  > 0. (ii) If J Q K is a proper matrix for any Q which has elements in RH∞ , then for any R1 ∈ A we can find a R2 ∈ B such that R1 − R2 = 0. (proof): (i) For any R1 ∈ A, we take the following candidate for R2 : R2 = R1 (

1 )r , sτ + 1

for some τ > 0. Note that R2 ∈ B since by definition R1 = G 1 Q H1 for some Q which has elements RH∞ and so R2 = G 2 ( J Q K ( sτ1+1 )r )H2 , where (J Q K ( sτ1+1 )r )H2 has elements in RH∞ . Hence kR1 − R2 k∞ = kR1 (1 − (

1 )r )k∞ . sτ + 1

(4.22)

Then the proof is the same as that of Lemma 4.8. (ii) If J Q K is a proper matrix for any Q which has elements in RH∞ , then for any R1 ∈ A we can set R2 = R1 since R1 = G 1 Q H1 = G 2 ( J Q K )H2 ∈ B because J Q K has elements in RH∞ . ♥

4.4 Numerical Example In this section, we demonstrate the theorems developed in this chapter on two test examples by discussing their controller structures and achievable performance. In the following chapters these results will be applied to the active suspension problems.

4.4 Numerical Example

45

Example 4.2 Given a plant P as follows:   P= 

s s+1 1 s+4

1 s+2

1

s+2 s+5

1 s+3



 1  , 2

0

which is partitioned in the obvious way, we want to parametrise all stabilising controllers which leave (T )1,1 = (P1 )1,1 = s/(s + 1). First of all, we find a lnf of (T2 )1 = (P12 )1 as E = 1/(s + 3) and V1 = 1, and a rnf of (T3 )1 = (P21 )1 as U1 = [1/(s + 4), 1]0 and F = 1. Then we complete U1 with e2 as follows: U2 = [1, 0]0 , and obtain U i h e2 = 1 −1 , U s+4 so that the parametrisation of all stabilising controllers which leaves (T )1,1 = (T1 )1,1 = s/(s + 1) is given as (4.14) for Q 1 ∈ RH1×1 ∞ . The next thing we are going to show is that this controller parameterisation does not impose extra performance limitations on the transmission path (T )2,1 , i.e. its achievable performance remains the same after disturbance response decoupling. We can reduce the problem to a scalar case and check it by Lemma 4.7, or directly check the matrix case by Theorem 4.5. In the scalar case approach, we find the second term T2 QT3 in (4.8) takes the form with Q = [Q α , Q β ] given by: i h Q β (s+2) α +Q β (s+4) T2 QT3 = Q(s+3)(s+4) . , (s+3)(s+5) After the disturbance response decoupling, it becomes: i h e2 T3 = 0, − Q 1 (s+2) T2 Q 1 U . (s+3)(s+4)(s+5) Setting G 1 =

(s+2) (s+3)(s+5)

(s+2) e2 T3 )1,2 can approxand G 2 = − (s+3)(s+5)(s+4) , Lemma 4.7 shows that (T2 Q 1 U

imate (T2 QT3 )1,2 to an error of  in the H∞ norm. In the matrix case approach, we have two sets e2 T3,2 } from Theorem 4.5, which gives of strictly proper matrices: A = {T2 QT3,2 } and B = {T2 Q 1 U e2 T3,2 . We find that J = 1 and G 1 = G 2 = T2 , H1 = T3,2 and H2 = U " # 0 K = H1 H2−1 = . −(s + 4) Therefore, from Theorem 4.5, the achievable performance of these transmission paths is not reduced 2

in a significant way after the disturbance response decoupling. Example 4.3 Given a plant P as follows: 

s s+1 1 s+2 1 s+4

    P=   0  1

1 s+2 s+2 s+1

1 s+2

0

0

1

s+2 s+5

0

1

s+3 s+6

1 s+3 1 s+2



    1 ,  2   3

46

Controller Parametrisation for Disturbance Response Decoupling

which is partitioned in the obvious way, we find a lnf of (T2 )1 = (P12 )1 as E = [1/(s + 3), 1/(s + 2)]0 and V1 = 1, and a a rnf of (T3 )1 = (P21 )1 as U1 = [1/(s + 4), 0, 1]0 and F = 1. Then we complete e2 as follows: U1 with U2 = [0, 1; 1, 0; 0, 0], and obtain U # " 0 1 0 e2 = U , −1 1 0 s+4 so that the parametrisation of all stabilising controllers which leaves (T )1,1 = (T1 )1,1 = s/(s + 1) is given as (4.14) for Q 1 ∈ RH1×2 ∞ . Suppose all stabilising controllers are parametrised by (4.6, 4.7) with Q = [Q α , Q β , Q γ ], so that the second term T2 QT3 of (4.8) is given by: " Q +Q (s+4) α

T2 QT3 =

γ

(s+3)(s+4) Q α +Q γ (s+4) (s+2)(s+4)

Q β (s+2)+Q γ (s+5) (s+3)(s+5) Q β (s+2)+Q γ (s+5) (s+2)(s+5)

Qγ s+6 Q γ (s+3) (s+2)(s+6)

# .

After the disturbance response decoupling, suppose Q 1 = [Q 1,1 , Q 1,2 ], it becomes: # " −Q 1,2 Q 1,1 (s+4)(s+2)−Q 1,2(s+5) 0 (s+3)(s+4)(s+5) (s+4)(s+6) e2 T3 = T2 Q 1 U . −Q 1,2 (s+3) Q 1,1 (s+4)(s+2)−Q 1,2(s+5) 0 (s+2)(s+4)(s+5) (s+2)(s+4)(s+6)

(4.23)

(4.24)

It is noticed that the (2,1) term of (4.24) is also zero, which means (T )2,1 = (T1 )2,1 though in the design we only try to keep (T )1,1 = (T1 )1,1 . That is, there is no design freedom left in this transmission path, with the same reason as given in Example 4.1. Now we shall discuss the achievable responses of this system after performing disturbance response decoupling. We can compare (4.23) and (4.24) and reduce the problem to a scalar case. That is, by e2 T3 )1,2 can setting G 1 = 1/(s + 6) and G 2 = 1/(s + 4)(s + 6), Lemma 4.7 shows that (T2 Q 1 U approximate (T2 QT3 )1,2 to an error of  in the H∞ norm. In the matrix case approach, we use e2 T3,2 }, which gives G 1 = G 2 = T2 , Theorem 4.5 by setting A = {T2 QT3,2 } and B = {T2 Q 1 U e2 T3,2 so that J = I and H1 = T3,2 and H2 = U   0 1   . K = H1 H2−1 =  0  1  0 −(s + 4) Therefore, from Theorem 4.5 the achievable performance is not reduced in a significant way after the disturbance response decoupling.

2

4.5 Summary and Comments This chapter has derived general theorems (Theorem 4.1–4.4) to parametrise all stabilising controllers which leave some pre-specified closed-loop transfer function fixed. The motivation came from the vehicle active suspension design problem with particular regard for the potentially conflicting performance requirements from two disturbance sources: road irregularities and loads applied to the vehicle

4.5 Summary and Comments

47

body. The controller parametrisation developed in this chapter will allow a feedback controller to be designed taking account of these disturbances independently. The conditions under which the achievable performance of other transmission paths remains effectively the same were also derived. The design for the vehicle active suspension control will be investigated in the following chapters.

Chapter 5

Disturbance Response Decoupling for The Quarter-Car Model This chapter applies the theorems of Chap. 4 to the standard quarter-car model employing a “Sharp” actuator with various choices of measured variables. The required controller structures to leave the road disturbance responses the same as in the passive case are derived. Section 5.1 introduces the quarter-car model with a “Sharp” actuator, and derives the desired controller structure in the two measurement case. The controller structure turns out to be similar to one of R.A. Williams et al [40], but with a slight generalisation. Section 5.2 discusses the same model with three measurements, and derives the generalised controller structures. Section 5.3 lists the controller structures and the shaped plants with various choices of measured variables. Section 5.4 shows that the achievable load responses remain effectively unchanged after disturbance response decoupling design. Section 5.5 presents a general quarter-car layout and gives the controller structures for disturbance response decoupling.

5.1 The Quarter-Car with Two Measurements We begin with the quarter-car model of Fig. 5.1 where the sprung and unsprung masses are m s and m u and the tyre is modelled as a linear spring with constant kt . The suspension consists of a passive damper of constant cs in parallel with a series combination of an actuator A and a spring of constant ks (sometimes referred to as a “Sharp” actuator [42]). Following [28] the actuator is modelled so that the relative displacement across the actuator will be a low-pass filtered version of the actuator’s command signal, i.e. zˆ s − zˆ a = γ (s)u. ˆ

(5.1)

As in [28], we use a second order filter to represent the actuator dynamics: γ (s) =

ωn2 . s 2 + 2δωn s + ωn2

(5.2) 49

50

Disturbance Response Decoupling for The Quarter-Car Model

The external disturbances are taken to be a load Fs and a road displacement zr , and the measurements are taken to be z¨ s and z s − z u . The dynamic equations of the model are given by: m s z¨ s = Fs − u p ,

(5.3)

m u z¨ u = u p + Fr ,

(5.4)

u p = cs (˙z s − z˙ u ) + ks (z a − z u ),

(5.5)

where

Fr

= kt (zr − z u ).

zs

ms

za

A

cs

(5.6)

ks zu

mu kt

zr

Figure 5.1: The quarter-car model.

We wish to parametrise all controllers which leave the transmission path from the road disturbance to z s and z u the same as in the open-loop, i.e. with u = 0. This assumes that ks and cs are chosen to give satisfactory responses for this transmission path. In effect, this gives the choice of K 0 = 0. We now write the system in the form of Fig. 4.1 with z 1 = [z s , z u ]0 , w1 = zr , w2 = Fs , y = [¨z s , z s − z u ]0 , u equals the actuator command signal as in (5.1) and z 2 omitted. The corresponding dimensions are m 1 = m 2 = m 3 = 1, p1 = 2, p2 = 0, p3 = 2. Equation (4.5) then takes the form:       

zˆ s zˆ u s 2 zˆ s zˆ s − zˆ u

  "  P11   =  P21 

P12 P22

#



 zˆ r    Fˆs  ,   uˆ

5.1 The Quarter-Car with Two Measurements

51

with the transfer functions being given by: # " m u s 2 + cs s + ks + kt kt (cs s + ks ) 1 P11 = , d(s) kt (m s s 2 + cs s + ks ) cs s + ks # " γ (s) ks (m u s 2 + kt ) P12 = , d(s) −ks m s s 2 # " kt (cs s + ks )s 2 (m u s 2 + cs s + ks + kt )s 2 1 P21 = , d(s) −kt (m s s 2 ) m u s 2 + kt " # ks (m u s 2 + kt )s 2 γ (s) P22 = , d(s) ks ((m u + m s )s 2 + kt )

(5.7)

(5.8)

where d(s) = (m s m u )s 4 + cs (m s + m u )s 3 + (m s (ks + kt ) + m u ks )s 2 + cs kt s + ks kt .

(5.9)

As expected, all roots of d(s) are in left-half plane, which can be confirmed by the Routh-Hurwitz Criterion. We now observe that P12,1 = P12 , which has normalrank equal to one, i.e. r2 = m 3 . Since P is open-loop stable and K 0 = 0, the conditions of Theorem 4.2 are satisfied. We can then apply e2 which defines the required control structure. Following the Theorem 4.2(ii) to find the matrix U definitions in Theorem 4.2(ii) we first find: T3,1 = M˜ P21,1

kt s 2 = d(s)

"

cs s + ks

#

−m s

,

which has normalrank equal to one, i.e. r3 = 1. Hence we can select: F

=

U1 =

kt s 2 p1 (s) , d(s) # " cs s + ks 1 , p1 (s) −m s

where p1 (s) is any first order Hurwitz polynomial, to give a rnf of T3,1 . We can choose U2 to complete a unimodular matrix U as follows:

"

U = (U1 , U2 ) = e10 , U e20 ]0 and which gives U −1 = [U e2 = U

h

cs s+ks p1 (s) −m s p1 (s)

ms cs s+ks

0 1 i

1

# ,

.

(5.10)

Thus, all stabilising controllers which leave Tzr →[zs , zu ]0 the same as in the open-loop can then be expressed as shown in Fig. 5.2 where e2 P22 )−1 Q 1 , K 1 = −(I − Q 1U e for Q 1 ∈ RH1×1 ∞ or equivalently K 1 is any stabilising controller for U2 P22 (see Theorem 4.2).

(5.11)

52

Disturbance Response Decoupling for The Quarter-Car Model

z¨ s ms

cs

ms cs s+ks

u

A

+

K1

+

ks zs − zu

mu kt

Figure 5.2: Controller structure for the quarter-car with two feedbacks.

Example 5.1 We now apply the above result to a specific case in which we make the suspension stiff to load disturbances but soft to road disturbances. We select the following parameters for the quarter-car model as in [32]: m s = 250 kg, m u = 35 kg, kt = 150 kN/m. We choose ωn = 100 rad/s and δ = 0.7071 as the parameters for the actuator dynamics. We also choose ks = 12 kN/m, cs = 4 kNs/m as the spring-damper coefficients which we consider to give a suitable “soft” response from the road disturbances in the passive implementation. It is now required to design the active controller to achieve desirable responses from the load disturbances. A simple approach is to take Q 1 to be constant in (5.11) and to minimise the steady-state response from load disturbances to sprung mass position. A straightforward calculation shows that TFˆs →ˆzs (0) = (ks + kt − Q 1 kt )/(ks kt ) which can be made to equal zero when Q 1 = (ks + kt )/kt = 1.08. The step responses for the passive and active suspensions are shown in Fig. 5.3, which clearly illustrates the zero steady-state response to loads achieved by the active controller. zr → zs

Fs → zs

−4

1.5

1

x 10

0.8

1

0.6 0.4

0.5

0.2

0 0 1.5

2 z →z r

4

0 0

1 −5

u

1

x 10

2

3

4

F →z s

u

0.8 1

0.6 0.4

0.5

0.2 0 0

2

4

0 0

2

4

Figure 5.3: Passive suspension (Q 1 = 0, solid) and active suspension (Q 1 = 1.08, dashed).

5.1 The Quarter-Car with Two Measurements

53

As a second approach we can employ the H∞ loop shaping design procedure [18, 45] to the plant e2 P22 . We select a weighting function as follows: U W1 =

10(s + 80) , (s + 8)

e2 P22 , has a gain crossover frequency at about 44 rad/s, somewhat so that the open-loop loop shape, W1 U below the actuator cut-off frequency of 100 rad/s. The use of a lag compensator in W1 allows the gain to be increased relatively at low frequencies in order to achieve a smaller value of TFˆs →ˆzs (0). This choice of weighting function gives a stability margin of 0.3864. The final controller takes the form e2 (see Fig. 5.2) where K = K1U K1 =

−23.87(s + 25.37)(s + 72.55 ± 75.70 j ) , (s + 8.10)(s + 92.22 ± 108.18 j )

which has been reduced to third order by balanced truncation. For this controller the step response from Fs to z s is shown in Fig. 5.4, which exhibits an improved transient response in comparison to Fig. 5.3 but inferior steady-state behaviour. Fs → z s

−4

1

x 10

0.8

0.6

0.4

0.2

0 0

0.5

1

sec

1.5

2

Figure 5.4: Passive suspension (solid) and active suspension using H∞ loop shaping design (dashed). 2 At this point it is instructive to compare the control structure shown in Fig. 5.2 with a scheme presented by Williams, Best and Crawford in [40]. The stated aim of their controller is to provide a rapid closed-loop levelling system which does not respond to unwanted road disturbances, and this is achieved “by filtering and summing the sprung mass acceleration and suspension displacement signals to eliminate the effects of the road inputs”. A block diagram of the scheme in [40] is shown in Fig. 5.5 where T (s) is a phase lead compensator. Although the damper is placed in series with the actuator this is not an essential difference. It may be observed that the ratio between the two filters F1 and F2 is equal to m s /(cs s + ks ) so the scheme operates in a similar way to that of Fig. 5.2. In fact it can be shown that, if the denominators in F1 and F2 are both replaced by any first order Hurwitz polynomial, and T (s) is any stabilising controller, then the scheme parametrises all controllers which leave the road disturbance responses the same as in the open-loop. Thus the scheme lacks full generality only

54

Disturbance Response Decoupling for The Quarter-Car Model

by virtue of the fact that the filters F1 and F2 have an extra order of roll-off at high frequency, which is a minor difference since it may be useful to provide some high-frequency roll-off in K 1 in practice.

z¨ s ms ks

ms m s s 2 +cs s+ks

cs T (s)

A

F1

− − cs s+ks m s s 2 +cs s+ks

F2

zs − zu

mu kt

Figure 5.5: Controller structure of R.A. Williams et al.

Finally, it is useful to comment on the full set of performance requirements that are usually considered in suspension design. In addition to the sprung mass position as a function of road disturbances, which can be analysed with regard to driver comfort, there are also issues such as tyre normal loads (i.e. tyre deflection) and rattle space (i.e. strut deflection). It was shown in [13] that if the transfer function from zr to z s is determined, then there is no additional freedom left in the road disturbance transmission path, i.e. the transfer functions Tzˆr →ˆzr −ˆzu and Tzˆr →ˆzs −ˆzu can be deduced directly. A similar fact was shown in [31] for the load disturbance transmission path. Thus, in the above approach to active suspension design, it is assumed that for each disturbance transmission path that is being dealt with, all the relevant factors (e.g. comfort, tyre loads, suspension deflection) are taken account of together.

5.2 The Quarter-Car with Three Measurements We continue to illustrate our basic theory by considering the quarter-car model with the additional measurement z¨ u . We now write the system in the form of Fig. 4.1 with y = [¨z s , z s − z u , z¨ u ]0 and all other variables the same as in Section 5.1. The general plant of equation (4.5) then has P11 , P12 the

5.2 The Quarter-Car with Three Measurements

55

same as (5.7), (5.8) and:  P21 =

1   d(s)  

P22 =

kt (cs s + ks )s 2

(m u s 2 + cs s + ks + kt )s 2

−kt (m s s 2 )

(m u s 2 + kt )

kt (m s s 2 + cs s + ks )s 2

(cs s + ks )s 2

ks (m u s 2 + kt )s 2



  , 

 γ (s)   ks ((m u + m s )s 2 + kt )  ,   d(s) 4 −ks m s s

where d(s) is given by (5.9). As before we wish to parametrise all controllers which leave the transmission path from the road disturbance to z s and z u the same as in the open-loop, i.e. with u = 0, which assumes that ks and cs are chosen to give satisfactory responses for this transmission path. We can check that the conditions of Theorem 4.2 again hold, so that we can follow the procedure to obtain the required controller structure. Following the definitions in Theorem 4.2(ii) we find that  kt s 2   T3,1 = M˜ P21,1 = d(s) 



cs s + ks −m s m s s 2 + cs s + ks

  

which gives r3 = 1. Hence we can select F

=

U1 =

kt s 2 p2 (s) , d(s)  1   p2 (s) 



cs s + ks −m s

m s s 2 + cs s + ks

 , 

where p2 (s) is any second order Hurwitz polynomial, to give a rnf of T3,1 . We can choose U2 = e10 , U e20 ]0 with [I2×2 , 02×1 ]0 to complete a unimodular matrix U to give U −1 = [U " e2 = U

s+ks 1 0 − m s sc2s+c s s+ks

0 1

#

ms m s s 2 +cs s+ks

.

(5.12)

Thus, all stabilising controllers which leave Tzˆr →[ˆzs , zˆ u ]0 the same as in the open-loop can then be expressed as shown in Fig. 5.6 where e2 P22 )−1 Q 1 , K 1 = −(1 − Q 1 U

(5.13)

e for any Q 1 ∈ RH1×2 ∞ or equivalently K 1 is any stabilising controller for U2 P22 (see Theorem 4.2).

56

Disturbance Response Decoupling for The Quarter-Car Model

z¨ s +

ms u

A

cs

e2 U −

cs s+ks m s s 2 +cs s+ks

K1

ks +

zs − zu

mu

ms m s s 2 +cs s+ks

+

z¨ u kt

Figure 5.6: Controller structure for the quarter-car with three feedbacks.

5.2.1 Alternative Controller Structures e2 in (5.12) is not unique. Let us suppose that we As pointed out in Lemma 4.6 the exact form of U prefer a structure with

" e2† = U

f1 1

0

0

f2

1

#

where f 1 , f 2 ∈ RH∞ are strictly proper, motivated by a preference to use low-pass filters for the e2 given by (5.12) the acceleration signals z¨ s and z¨ u while keeping the strut deflection unfiltered. For U e2† = W † U e2 implies that identity U

" W† =

and

" e2† U

=

ms cs s+ks

1

0

1

# ,

ms cs s+ks

1

0

0

1

ms m s s 2 +cs s+ks

# .

We can see that W † fails to be unimodular as required by Theorem 4.2(iii). Moreover, it is straightfor1×2 e2† : Q †1 ∈ RH1×2 e ward to show that the set {Q †1U ∞ } is equal to the set {Q 1 U2 : Q 1 ∈ RH∞ , Q 1,1 (∞) = 0}, i.e. the full parametrisation but with the first element in Q 1 being strictly proper. Thus a cone2 replaced by U e2† does not give all possible stabilising controllers which troller parametrisation with U leave the road disturbance responses the same as in the open-loop (see Lemma 4.6 and Theorem 4.2). However, the restriction of the Q-parameter amounts only to an increased roll-off requirement of the controller at high frequency. Referring to Fig. 5.6, let us consider another possible controller structure: # " f1 1 0 ‡ e2 = U , 1 0 f2

5.3 Quarter-Car Control Structures and Design

57

e2 now implies that e2‡ = W ‡ U where f 1 , f 2 ∈ RH∞ are strictly proper. The identity U " W‡ = and

" e2‡ = U

ms cs s+ks

1

1

0

# , #

ms cs s+ks

1

0

1

0

−(cs s+ks ) m s s 2 +cs s+ks

.

e2 can be replaced by U e2‡ in Fig. 5.6 to give a parametrisation of all Since W ‡ is unimodular, then U stabilising controllers (Theorem 4.2(iii)).

5.3 Quarter-Car Control Structures and Design e2 P22 for the given choice For direct controller design using Theorem 4.2, it is instructive to compute U e2 P22 for three different cases. It is interesting that U e2 P22 takes a of measurements. Table 5.1 shows U particularly simple form, which is independent of the sprung and unsprung masses, in the case when the feedback signals z¨ s and z s − z u are used, which means that the controller design would be rather simple in this case. e2 U

measurements " # z¨ s

h

zs − zu 

z¨ s



   zs − zu    z¨ u 

z¨ s



   zs − za    za − zu

"

ms cs s+ks

e2 P22 U i

ks γ (s) cs s+ks

1

s+ks 1 0 − m s sc2s+c s s+ks ms m s s 2 +cs s+ks

0 1 "

0

1 0

ms cs s+ks

0 1

#

" ks γ (s) m s s 2 +cs s+ks

"

# γ (s)

s2

#

1

1

#

−cs s cs s+ks

e2 structures and the transformed plants of the quarter-car model with various meaTable 5.1: The U surements.

5.4 Achievable Performance In this section, we will discuss the achievable load responses after the disturbance response decoupling design.

58

Disturbance Response Decoupling for The Quarter-Car Model

5.4.1 Two Measurement Case In the two feedback case, all stabilising controllers are parametrised by (4.6, 4.7) with Q = [Q α , Q β ], so that the load responses are given by: " # #! " zˆ s ks (m u s 2 + kt ) 1 = P11,12 − L 1 (s) Fˆs , d(s) −ks m s s 2 zˆ u

(5.14)

where L 1 (s) = γ (s)((m u s 2 + cs s + ks + kt )s 2 Q α + (m u s 2 + kt )Q β )/d(s) and d(s) is given in e2 given in (5.10), the load (5.9). After disturbance response decoupling with the controller structure U responses are given by: " # zˆ s zˆ u

=

1 P11,12 − L 2 (s) d(s)

"

ks (m u s 2 + kt )

#! Fˆs ,

−ks m s s 2

(5.15)

where L 2 (s) = γ (s)Q 1 /(cs s + ks ). To compare the achievable performance, set Q 1 = ((m u s 2 + cs s + ks + kt )s 2 Q α + (m u s 2 + kt )Q β )/d(s) and note that L 2 = L 1 /(cs s + ks ). Therefore, from Lemma 4.7, L 2 (s) can approximate L 1 (s) to an error of  in the H∞ norm. Hence the freedom in achievable load responses after disturbance response decoupling is effectively unchanged.

5.4.2 Three Measurement Case In the three feedback case, all stabilising controllers are parametrised by (4.6, 4.7) with Q = [Q γ , Q δ , Q ζ ], so that the load responses are given by: " # #! " zˆ s ks (m u s 2 + kt ) 1 = P11,12 − L 3 (s) Fˆs , d(s) −ks m s s 2 zˆ u

(5.16)

where L 3 (s) = γ (s)((m u s 2 +cs s +ks +kt )s 2 Q γ +(m u s 2 +kt )Q δ +(cs s +ks )s 2 Q ζ )/d(s). It is noticed that any achievable performance by three measurements can also be achieved by two measurement [¨z s , z s − z u ]0 in that for any L 3 we can achieve a L 1 = L 3 by setting Q α = Q γ + Q ζ (cs s + ks )/(m u s 2 + cs s + ks + kt ) and Q β = Q δ in L 1 (s). After disturbance response decoupling with the e2 given in (5.12), and with the parameter Q 1 = [Q 1,1 , Q 1,2 ], the load responses controller structure U are given by: "

zˆ s zˆ u

# =

1 P11,12 − L 4 (s) d(s)

"

ks (m u s 2 + kt ) −ks m s s 2

#! Fˆs ,

(5.17)

where L 4 (s) = γ (s)(s 2 Q 1,1 + Q 1,2 )/(m s s 2 +cs s+ks ). Therefore, for any L 3 we can choose Q 1,1 , Q 1,2 as follows: Q 1,1 = Q 1,2 =

(m u s 2 + cs s + ks + kt )(m s s 2 + cs s + ks ) cs s + ks Q ζ ), (Q γ + d(s) m u s 2 + cs s + ks + kt (m u s 2 + kt )(m s s 2 + cs s + ks ) Qδ, d(s)

5.5 A General Quarter-Car Layout

59

so that L 4 = L 3 . Hence the achievable load responses are the same after disturbance response decoupling design. We can also check this same fact on achievable load performance by directly using the matrix formulation in Theorem 4.5. The original achievable load responses are T1,2 − T2 QT3,2 with Q ∈ RH1×3 ∞ , and after disturbance response decoupling design the achievable load responses are T1,2 − e2 T3,2 with Q 1 ∈ RH1×2 e T2 Q 1 U ∞ . Therefore, we can set A = {T2 QT3,2 } and B = {T2 Q 1 U2 T3,2 } in e2 T3,2 , so that J = I and K is found Theorem 4.5 and assign G 1 = G 2 = T2 , H1 = T3,2 and H2 = U 

as follows: K =

m s s 2 + cs s + ks    d(s)

m u s 2 + cs s + ks + kt 0 cs s + ks

 0

 m u s 2 + kt  , 0

Accordingly, the achievable load responses remain the same after disturbance response decoupling design (Theorem 4.5(ii)).

5.5 A General Quarter-Car Layout Fs zs ms

cs1

k s1

za

A

cs2

k s2 zu

mu kt

zr

Figure 5.7: A general quarter-car model. At the end of this chapter, let us consider a general quarter-car layout in Fig. 5.7, where the actuator A is modelled the same way as (5.1–5.2). We write the system in the form of Fig. 4.1 with z 1 = [z s , z u ]0 , w1 = zr , w2 = Fs , y = [¨z s , z s − z u ]0 , u equals the actuator command signal as in (5.1) and z 2 is omitted. From Theorem 4.2, it is easy to find the controller structure e2 which leaves the road responses the same as in the passive case. Table 5.2 shows the controller U e2 and U e2 P22 of this general quarter-car model for the following cases: (1) two feedback structure U y = [¨z s , z s −z u ]0 , (2) three feedbacks y = [¨z s , z s −z u , z¨ u ]0 , (3) four feedbacks y = [¨z s , z s −z u , z¨ u , u p ]0 where u p = (cs1 s + ks1 )(z s − z u ) + (cs2 s + ks2 )(z a − z u ) represents the suspension force. The Maple code for the first case is given in Appendix C.

60

Disturbance Response Decoupling for The Quarter-Car Model

e2 U

measurements " # z¨ s

h

zs − zu 

z¨ s



   zs − zu    z¨ u 

z¨ s

  z −z a  s   z¨ u  up

      

 

ms (cs1 +cs2 )s+(ks1 +ks2 )

e2 P22 U i

(c +c )s+(ks1 +ks2 ) )s+(ks1 +ks2 ) 1 2 ms m s s 2 +(cs1 +cs2 )s+(ks1 +ks2 )

s1 s2 1 0 − m s s 2 +(c s +cs

0 1  0 0

   1 0  0 1

(cs2 +ks2 )γ (s) (cs1 +cs2 )s+(ks1 +ks2 )

1

((cs1 +cs2 )s+(ks1 +ks2 ))m s m s s 2 +(cs1 +cs2 )s+(ks1 +ks2 ) (cs1 +cs2 )s+(ks1 +ks2 ) − m s s 2 +(c s1 +cs2 )s+(ks1 +ks2 ) ms m s s 2 +(cs1 +cs2 )s+(ks1 +ks2 )

 

" (cs2 s+ks2 )γ (s) m s s 2 +(cs1 +cs2 )s+(ks1 +ks2 )





1

  0   0

(cs2 s+ks2 )γ (s) m s s 2 +(cs1 +cs2 )s+(ks1 +ks2 )

  

s2

#

1

−m s s 2 s2

   

1

e2 structures and the transformed plants of the general quarter-car model with various Table 5.2: The U measurements.

5.6 Summary and Comments This chapter has applied the disturbance response decoupling techniques to the quarter-car active suspension design problem. This allowed a feedback controller to be designed taking account of only the load disturbance path objective, given that the controller structure ensured that the road disturbance responses remained satisfactory. The approach was illustrated with various choices of measurements, and the required control structures were derived in parametric form. Furthermore, it was verified that the achievable load responses remain effectively the same after the disturbance response decoupling design. It was also noted that the shaped plant sometimes takes a particular simple form, as shown in Table 5.1, 5.2, so that the controller design would be rather simple. This would be an interesting area for further investigation.

Chapter 6

Disturbance Response Decoupling for The Half-Car Model In this chapter, we shall apply the disturbance response decoupling techniques to the simple half-car model with acceleration and strut deflection measurements. Section 6.1 derives the control structure required to keep the road disturbance responses the same as in the passive case. Section 6.2 shows that the achievable load responses are not reduced in a significant way after disturbance response decoupling design. Section 6.3 investigates the “simplicity” conditions which allow the design to be carried out for two separate quarter-cars. Section 6.4 demonstrates the refined design to make further improvement of the closed-loop responses.

6.1 The Half-Car Model In this section, we shall apply the controller parametrisation method to the half-car model shown in Fig. 6.1. As in the quarter-car model, the actuators A1 and A2 are modelled so that the relative displacement across each is equal to a low-pass filtered version of the actuator’s command signal, i.e. zˆ s + l1 zˆ ψ − zˆ a1 = γ (s)uˆ 1 ,

(6.1)

zˆ s − l2 zˆ ψ − zˆ a2 = γ (s)uˆ 2 ,

(6.2)

where γ (s) is defined as in (5.2). The linearised dynamic equations can be expressed as follows: m s z¨ s = Fs − u p1 − u p2 ,

(6.3)

Iψ z¨ ψ

= Fψ − u p1 l1 + u p2 l2 ,

(6.4)

m 1 z¨ u 1

= u p1 + Fr1 ,

(6.5)

m 2 z¨ u 2

= u p2 + Fr2 ,

(6.6) 61

62

Disturbance Response Decoupling for The Half-Car Model

where the passive suspension forces u p1 , u p2 , and the tyre forces Fr1 , Fr2 are given by: u p1

= c1 (˙z s + l1 z˙ ψ − z˙ u 1 ) + k1 (z a1 − z u 1 ),

u p2

= c2 (˙z s − l2 z˙ ψ − z˙ u 2 ) + k2 (z a2 − z u 2 ),

Fr1

= kt1 (zr1 − z u 1 ),

Fr2

= kt2 (zr2 − z u 2 ).

Fs zs

m s , Iψ

z ψ , Fψ l1

l2

z a1 c1

A1

z a2 A2

c2 k1

k2 zu1

m1

zu2 m2

k t1

k t2

z r1

z r2

Figure 6.1: The half-car model. We now write the system in the form of Fig. 4.1 with z 1 = [z s , z ψ , z u 1 , z u 2 ]0 , w1 = [zr1 , zr2 ]0 , w2 = [Fs , Fψ ]0 , y = [¨z s , z¨ ψ , D1 , D2 ]0 where D1 = z s + l1 z ψ − z u1 , D2 = z s − l2 z ψ − z u2 are strut deflections, u = [u 1 , u 2 ]0 as in (6.1), (6.2) and z 2 omitted. As before we wish to parametrise all controllers which leave the transmission path from the road disturbances [zr1 , zr2 ]0 to [z s , z ψ , z u 1 , z u 2 ]0 the same as in the open-loop, i.e. with u 1 = u 2 = 0, which assumes that k1 , k2 , c1 and c2 are chosen to give satisfactory responses for these transmission paths. We can check that the conditions of Theorem 4.2 again hold, so that we can follow the procedure to obtain the required controller structure. Following the definitions in Theorem 4.2(ii) we can choose a U1 = T3,1 × p3 (s)/s 2 = P21,1 × 2×2 2 p3 (s)/s 2 ∈ RH4×2 ∞ and F = s / p3 (s) × I2×2 ∈ RH∞ , where p3 (s) is any third order Hurwitz 0  polynomial, to give a rnf of T3,1 , and complete this U1 to a unimodular matrix with U2 = 02×2 , I2×2

to give

" e2 = U

m s l2 (c1 s+k1 )(l1 +l2 ) m s l1 (c2 s+k2 )(l1 +l2 )

Iψ (c1 s+k1 )(l1 +l2 ) −Iψ (c2 s+k2 )(l1 +l2 )

1 0 0 1

# .

(6.7)

6.1 The Half-Car Model

63

The Maple code for generating this controller structure is given in Appendix D. We observe that e2 “constructs” two combinations of measurements, each of which is a suspension deflection plus a U low-pass filtered version of a sum of the two acceleration signals. A block diagram of this control structure is shown in Fig. 6.2. D1 + +

"

1 c1 s+k1 1 l1 +l2

+ +

m s l2

#



m s l1 −Iψ

1 c2 s+k2

z¨ s z¨ ψ

D2 e2 ) for the half-car model. Figure 6.2: Controller structure (U

For direct controller design using the transformed plant P † in Fig. 4.2(b), it is interesting to note e2 P22 takes a particularly simple form in the half-car case when U e2 is determined by (6.7), namely: that U " e2 P22 = γ (s) U

#

k1 c1 s+k1

0

0

k2 c2 s+k2

.

(6.8)

This fact will be exploited in the following example. Example 6.1 We now apply the above result to a specific case in which we make the suspension stiff to load disturbances but soft to road disturbances. We select the following parameters for the half-car model: m s = 1600 kg, Iψ = 1000 kg m2 , m 1 = m 2 = 100 kg, k1 = k2 = 40 kN/m, c1 = c2 = 10 kNs/m, kt1 = kt2 = 500 kN/m, l1 = 1.15 m, l2 = 1.35 m. The H∞ loop shaping controller design e2 is given by (6.7). Setting will be applied to this half-car model. The essential controller structure U a weighting function W1 as follows: s + 80 W1 = s+8

"

10

0

0

10

# ,

(6.9)

e2 P22 has a bandwidth of about 60 rad/sec and has an increased means that the weighted plant W1 U low-frequency gain due to the lag compensator terms. By applying the H∞ loop shaping controller design procedure a sixth order controller was obtained after balanced truncation as follows: " K1 =

Kc

0

0

Kc

# ,

(6.10)

64

Disturbance Response Decoupling for The Half-Car Model

where Kc =

−24.81(s + 27.94)(s + 72.56 ± 73.47 j ) . (s + 8.06)(s + 101.45 ± 114.65 j )

(6.11)

e2 P22 is itself It is interesting to note that K 1 in (6.10) is a scalar matrix due to the fact that W1 U scalar (see (6.8)). This controller gives the d.c. gains TFˆs →ˆzs (0) and TFˆψ →ˆzψ (0) as 1.32 × 10−6 and

8.39 × 10−7 respectively, compared with 1.36 × 10−5 and 8.64 × 10−6 using passive control. The step 2

responses using the controllers are shown in Fig. 6.3. Fs → z s

−5

1.4

x 10

Fψ → z ψ

−6

9

x 10

8

1.2

7 1

6

0.8

5

0.6

4 3

0.4

2 0.2 0 0

1 0.5

1

sec

1.5

2

0 0

0.5

1

sec

1.5

2

Figure 6.3: Step responses of TFˆs →ˆzs and TFˆψ →ˆzψ : passive (solid) and active control (dashed).

6.2 Achievable Performance In this section, we will discuss the achievable load responses after disturbance response decoupling design. All stabilising controllers are parametrised by (4.6, 4.7) and the load responses are T1,2 − T2 QT3,2 with Q ∈ RH2×4 ∞ . After the disturbance response decoupling procedure, the load responses e e2 is given by (6.7) and Q 1 ∈ RH2×2 become T1,2 − T2 Q 1 U2 T3,2 , where U ∞ . Therefore, we consider two e2 T3,2 } in Theorem 4.5, which gives sets of strictly proper matrices: A = {T2 QT3,2 } and B = {T2 Q 1U e2 T3,2 . We find J = I and K as follows: G 1 = G 2 = T2 , H1 = T3,2 and H2 = U  K

= H1 H2−1

o(s 9 ) o(s 9 )



  9 9  1   o(s ) o(s )  =  , p8 (s)  o(s 7 ) o(s 7 )    7 7 o(s ) o(s )

(6.12)

where p8 (s) is an eighth order Hurwitz polynomial and o(s i ) indicates an i-th order polynomial. Thus, from Theorem 4.5, the achievable load responses after disturbance response decoupling can approximate the original load responses to an error of  in the H∞ norm.

6.3 Decoupling by Simplicity

65

6.3 Decoupling by Simplicity Under certain conditions, the half-car model can be structurally decoupled into two quarter-cars. For example, in [32, 37], assumptions such as kl-simplicity were used, in a mechanical network setting, to perform energy-preserving transformations of the external disturbance variables to achieve decoupling. In our setting we will need to use a similar transformation on all of the system variables (but will not necessarily be able to respect the energy-preserving property). For the half-car model shown in Fig. 6.1, we define it as simple if the following equation holds: m1 k1 c1 kt l2 = = = 1 = . m2 k2 c2 k t2 l1

(6.13)

We introduce a transformation matrix L h as follows: Lh =

1 l1 + l2

"

l2

l1

# ,

1 −1

(6.14)

and define "

(x)b (x)ρ

#

" = Lh

x1

#

x2

,

where x may represent any of the following variables: z u , zr , z a or u, and the subscripts

b

and

ρ

represent the bounce and rotation modes respectively. Under the assumption of simplicity, we can then rewrite (6.1–6.6) as follows: zˆ s − (ˆz a )b = γ (s)(u) ˆ b,

(6.15)

zˆ ψ − (ˆz a )ρ = γ (s)(u) ˆ ρ,

(6.16)

m s z¨ s = Fs − (c1 + c2 )(˙z s − (˙z u )b ) − (k1 + k2 )((z a )b − (z u )b ), Iψ z¨ ψ

(6.17)

= Fψ − (c1l12 + c2l22 )(˙z ψ − (˙z u )ρ ) + (k1l12 + k2l22 )((z a )ρ − (z u )ρ ),(6.18)

(m 1 + m 2 )(¨z u )b = (c1 + c2 )(˙z s − (˙z u )b ) − (k1 + k2 )((z a )b − (z u )b ) +(kt1 + kt2 )((zr )b − (z u )b ),

(6.19)

(m 1l12 + m 2l22 )(¨z u )ρ = (c1l12 + c2l22 )(˙z ψ − (˙z u )ρ ) + (k1l12 + k2l22 )((z a )ρ − (z u )ρ ) +(kt1 l12 + kt2 l22 )((zr )ρ − (z u )ρ ).

(6.20)

Compared with (5.1), (5.3) and (5.4), we find that (6.15), (6.17) and (6.19) represent a bounce quartercar, and (6.16), (6.18) and (6.20) represent a rotation quarter-car, which are decoupled from each other. The relevant correspondences between variables is summarised in Table 6.1. Furthermore, we can show that, in order to arrive at a decoupled form for equations (6.17) and (6.18) (e.g. z ψ being absent from (6.17) etc), then we need both (6.13) to hold and for L h to be defined by (6.14) up to scalar multiplication of each row.

66

Disturbance Response Decoupling for The Half-Car Model

Quarter-car

Half-car (bounce)

Half-car (rotation)

ms

ms



mu

m1 + m2

m 1l12 + m 2l22

ks

k1 + k2

k1l12 + k2l22

cs

c1 + c2

c1l12 + c2 l22

kt

k t1 + k t2

kt1 l12 + kt2 l22

Fs

Fs



zs

zs



z u , z a , zr

(z u )b , (z a )b , (zr )b

(z u )ρ , (z a )ρ , (zr )ρ

u

(u)b

(u)ρ

Table 6.1: Decoupled half-car by simplicity.

6.4 Refined Design for The Half-Car Model In this section, we shall apply Theorem 4.4, to the half-car model. The controller structure shown in Fig. 6.2 allows us to improve load responses while keeping the road responses the same as in the passive case. After the controller design, it is possible that we are satisfied with some of the load responses (e.g. Fs responses) and want to improve others (e.g. Fψ responses). Therefore, we can carry out the design procedure again using Theorem 4.4. Furthermore, the achievable perfomance will also be verified.

6.4.1 Controller Structure of Design for Fs Firstly, we wish to parametrise all controllers which leave the transmission path from the road disturbances w1 = [zr1 , zr2 , Fψ ]0 to z 1 = [z s , z ψ , z u 1 , z u 2 ]0 the same as in the open-loop. We can check that the conditions of Theorem 4.2 hold, so that we can follow the procedure to obtain the required controller structure. Following the definitions in Theorem 4.2 we can find a lnf of T3,1 as T3,1 = U1,Fs FFs , where   (m 1 s 2 +c1 s+k1 +kt1 )s 2 s2 0 (l1 +l2 )(c1 s+k1 )kt1 p3 (s)   p3 (s)  −(m 2 s 2 +c2 s+k2 +kt2 )s 2  s2 FFs =  0 , p3 (s) (l1 +l2 )(c2 s+k2 )kt2 p3 (s)   1 0 0 (l1 +l2 )(c1 s+k1 ) in which p3 (s) is any third order Hurwitz polynomial, and complete this U1,Fs to a unimodular matrix with U2,Fs = [0, 0, 0, 1]0 to give e2,Fs U

=

h

ms , c2 s+k2

e2,Fs P22 = γ (s) U

h

0,

k1 , c2 s+k2

c1 s+k1 , c2 s+k2 k2 c2 s+k2

i i

1 .

,

(6.21)

6.4 Refined Design for The Half-Car Model

67

e2,Fs P22 is independent of the masses, inertias and tyre spring constants, It is interesting to note that U as the quarter-car models illustrated in Table 5.1. The achievable performance after the disturbance response decoupling design is checked by Thee2,Fs T3,2 }. We define G 1 = G 2 = T2 , H1 = T3,2 orem 4.5, setting A = {T2 QT3,2 } and B = {T2 Q 1 U e2,Fs T3,2 so that J = I and and H2 = U K =

i0 1 h o(s 9 ) o(s 8 ) o(s 7 ) o(s 7 ) , p8 (s)

where p8 (s) is an eighth order Hurwitz polynomial and o(s i ) indicates an i-th order polynomial. Thus, from Theorem 4.5, the achievable Fs responses after disturbance response decoupling can approximate the original load responses to an error of  in the H∞ norm.

6.4.2 Controller Structure of Design for Fψ Now we wish to parametrise all controllers which leave the transmission path from w1 = [zr1 , zr2 , Fs ]0 to z 1 = [z s , z ψ , z u 1 , z u 2 ]0 the same as in the open-loop. Again we can find a lnf of T3,1 as T3,1 = U1,Fψ FFψ with FFψ given by  FFψ

  =  

s2 p3 (s)

0

0

s2 p3 (s)

0

0

(m 1 s 2 +c1 s+k1 +kt1 )l2 s 2 (l1 +l2 )(c1 s+k1 )kt1 p3 (s) (m 2 s 2 +c2 s+k2 +kt2 )l1 s 2 (l1 +l2 )(c2 s+k2 )kt2 p3 (s) l2 (l1 +l2 )(c1 s+k1 )

   , 

in which p3 (s) is any third order Hurwitz polynomial, and complete this U1,Fψ to a unimodular matrix with U2,Fψ = [0, 0, 0, 1]0 to give e2,Fψ U

=

h 0,

e2,Fψ P22 = γ (s) U

h

−Iψ , (c2 s+k2 )l2 −k1 l1 , (c2 s+k2 )l2

−(c1 s+k1 )l1 , (c2 s+k2 )l2 k2 c2 s+k2

i

i 1

,

(6.22)

.

e2,Fψ P22 is independent of the masses, inertias and tyre spring constants. Again U The achievable performance after the disturbance response decoupling design is checked by Thee2,Fψ T3,2 }. We define G 1 = G 2 = T2 , H1 = T3,2 orem 4.5, setting A = {T2 QT3,2 } and B = {T2 Q 1 U e2,Fψ T3,2 so that J = I and and H2 = U K =

i0 1 h o(s 8 ) o(s 9 ) o(s 7 ) o(s 7 ) , p8 (s)

where p8 (s) is an eighth order Hurwitz polynomial and o(s i ) indicates an i-th order polynomial. Thus, from Theorem 4.5, the achievable Fψ responses after disturbance response decoupling can approximate the original load responses to an error of  in the H∞ norm.

68

Disturbance Response Decoupling for The Half-Car Model

6.4.3 The Relation Between the Controller Structures It is noticed that there exists a unimodular matrix W as follows: " # c1 s+k1 1 c2 s+k2 W = , 1 s+k1 )l1 − (c 1 (c2 s+k2 )l2 e2,Fs and U e2,Fψ are sub-matrices of U e2† = W U e2 , which is, from Lemma 4.6, an equivalent such that U e2 in (6.7) as follows: controller structure of U # " e U 2,Fs e2† = W U e2 = U . (6.23) e2,Fψ U e2,Fs y = 0 and U e2,Fψ y = 0, where y = [¨z s , z¨ ψ , D1 , D2 ]0 , correMoreover, it is also noticed that U spond to (6.3) and (6.4) respectively with Fs and Fψ absent and u 1 = u 2 = 0 (without active control). Therefore, (6.23) also provides a physical sense of the decoupling into “bounce” and “rotation” motions.

6.4.4 Design Example As a numerical example, we use the bounce/pitch half-car model in Example 6.1 for refined design. The controller structure which keeps the road responses the same as in the passive case was given in (6.7). In Example 6.1, a sixth order controller was given by (6.10). As pointed out in Theorem 4.4, we can make further improvements in some transmission paths once we have a stabilising controller. For instance, let us say that we are satisfied with the Fs responses in Example 6.1, but would like to make the suspension stiffer to Fψ . To fulfil this design goal, we first SU e2 = −K 1 (I − P22 K 1 )−1 , where U e2 is given find the Q-parameter of the closed-loop controller as Q by (6.7) and K 1 is given by (6.10). Now we find the parametrisation of all stabilising controllers which leaves the responses from w1 = [zr1 , zr2 , Fs ]0 to z 1 = [z s , z ψ , z u 1 , z u 2 ]0 the same as this closed-loop controller as: SU e2 + Q 1 U e2,Fψ , Q=Q

(6.24)

e where Q 1 ∈ RH2×1 ∞ and U2,Fψ is given by (6.22). For this second stage design, we apply again H∞ loop shaping using a weighting function: W1 =

0.2(s + 40) , s + 20

e2,Fψ P22 . A second stage controller after model reduction is found as: for the transformed plant U " # 0.0356 (s + 38.96)(s + 69.35 ± 74.05 j ) K2 = . (s + 23.31)(s + 70.71 ± 76.02 j ) −0.0418 S1 U e2,Fψ = −K 2 (I − P22 K 2 )−1 . The closed-loop The Q-parameter for this second stage controller is Q step responses of the system with the first and final controllers are shown in Fig. 6.4.

6.5 Summary and Comments

69

Fs → z s

−5

1.4

x 10

Fψ → z ψ

−6

9

x 10

8

1.2

7 1 6 0.8

5

0.6

4 3

0.4

2 0.2 0 0

1 0.5

1

sec

1.5

2

0 0

0.5

(a) Fs → z s

1

sec

1.5

2

(b) Fψ → z ψ

SU e2 (dashed), and Q = Figure 6.4: Closed-loop step responses using controllers parametrised by Q SU e2 + Q e2,Fψ (dotted), compared with the passive responses (solid). S1 U Q

From (6.23) the parametrisation of (6.24) can be simplified as follows:  †  S −1 U S −1 + 02×1 Q 1 )U e2 , e2† + Q 1U e2,Fψ = ( QW Q = QW

(6.25)

2×1 S ∈ RH2×2 where Q ∞ , Q 1 ∈ RH∞ . Therefore, the closed-loop performance with a controller   S†U S† = ( QW S −1 + 02×1 Q 1 ). e† where Q parametrised by (6.25) can also be achieved by Q = Q 2

6.5 Summary and Comments This chapter has considered the half-car active suspension design problem. By applying the disturbance response decoupling techniques, the load responses can be improved while the road disturbance responses remained satisfactory. A parametric control structure was derived for a typical measurement set: vertical and angular accelerations of the sprung mass and strut deflection measurements. It was verified that the original load responses can be approximately achieved after the disturbance response decoupling design. The conditions under which the model structure can be decomposed into two quarter-cars were investigated. A refined design which allows further improvement of the closed-loop responses was also discussed. As illustrated in this chapter, this refined procedure does not imply any further limitation on the achievable performance.

Chapter 7

Disturbance Response Decoupling for The Full-Car Model This chapter employs the disturbance response decoupling techniques for the full-car model. Section 7.1 introduces a simple symmetric full-car model with a similar suspension strut arrangement at each wheel-station to the quarter- and half-car cases in Chap. 5, 6. Section 7.2 shows how the model may be separated into two half-car models under a mild symmetry assumption. Section 7.3 demonstrates a design for the full-car model with acceleration and strut deflection measurements. The bounce/pitch half-car is treated in a similar way to Chap. 6. The roll and warp modes are each treated as quarter-cars with the warp mode being handled in a special way. We will highlight the special form of the warp quarter-car, which has no “sprung mass dynamics”. The controller design is simulated with a nonlinear vehicle model using the multi-body simulation package AutoSim.

7.1 The Dynamic Equations In this section we consider a simple symmetric full-car model as in Fig. 7.1, where the actuators A1 ,…, A4 are again modelled so that the relative displacement of each is equal to a low-pass filtered version of the actuator’s command signals, i.e.

zˆ s − l f zˆ θ + t f zˆ φ − zˆ a1 = γ (s)uˆ 1 , zˆ s − l f zˆ θ − t f zˆ φ − zˆ a2 = γ (s)uˆ 2 , zˆ s + lr zˆ θ + tr zˆ φ − zˆ a3 = γ (s)uˆ 3 , zˆ s + lr zˆ θ − tr zˆ φ − zˆ a4 = γ (s)uˆ 4 , 71

72

Disturbance Response Decoupling for The Full-Car Model

tr z a3

A3

cr

tr

cr kr

zu3

tf

cf

tf z a2

A2

cf kf

kf zu1

kt f

z r4

lf

z a1

mf

zu4 ktr

m s , Iφ , Iθ z φ , Tφ

A1

kr mr

z θ , Tθ ktr

z r3

lr z s , Fs

mr

z a4

A4

zu2

mf kt f

z r1

z r2

Figure 7.1: The full-car model.

in which γ (s) is defined as in (5.2). The linearised dynamics of the full-car can be expressed as: m s z¨ s = Fs − u p1 − u p2 − u p3 − u p4 , Iθ z¨ θ

(7.1)

= Tθ + u p1 l f + u p2 l f − u p3 lr − u p4 lr ,

(7.2)

Iφ z¨ φ = Tφ − u p1 t f + u p2 t f − u p3 tr + u p4 tr ,

(7.3)

m f z¨ u 1

= u p1 + Fr1 ,

(7.4)

m f z¨ u 2

= u p2 + Fr2 ,

(7.5)

m r z¨ u 3

= u p3 + Fr3 ,

(7.6)

m r z¨ u 4

= u p4 + Fr4 ,

(7.7)

where the passive suspension forces u p1 ,…,u p4 and the tyre forces Fr1 ,…,Fr4 are given by: u pi

= c f D˙ i + k f (z ai − z u i ),

u pj

= cr D˙ j + kr (z a j − z u j ),

Fri

= kt f (zri − z u i ),

(7.8)

Fr j

= ktr (zr j − z u j ),

(7.9)

7.2 Symmetric Transformation

73

for i = 1, 2, j = 3, 4 and the strut deflections D1 ,…,D4 are D1 = z s − l f z θ + t f z φ − z u 1 , D2 = z s − l f z θ − t f z φ − z u 2 , D3 = z s + lr z θ + tr z φ − z u 3 , D4 = z s + lr z θ − tr z φ − z u 4 .

7.2 Symmetric Transformation Since the full-car model is symmetric, we can decouple it into two half-car models. First, we introduce a transformation matrix L f,1 :



 1

L f,1

1

0

0

 1  0 0 1 1 =  2  1 −1 0 0  0 0 1 −1

   ,  

(7.10)

such that h

(x)b f

(x)br

(x)ρ f

(x)ρr

i0

= L f,1

h

i0 x1 x2 x3 x4

,

(7.11)

where x may represent any of the following variables: z u , zr , z a , strut deflection D or actuator command signal u, while the subscripts b f , br represent the front and rear bounce components, and ρ f , ρr represent the front and rear roll components.

7.2.1 Bounce/Pitch Half-Car After applying the L f,1 transformation, (7.1), (7.2), and (7.4–7.7) can be rearranged as follows: m s z¨ s

= Fs − 2c f (z˙s − l f z˙θ − (˙z u )b f ) − 2k f ((z a )b f − (z u )b f ) −2cr (˙z s + lr z˙ θ − (˙z u )br ) − 2kr ((z a )br − (z u )br ),

Iθ z¨ θ

= Tθ + {2c f (˙z s − l f z˙ θ − (˙z u )b f ) + 2k f ((z a )b f − (z u )b f )}l f −{2cr (˙z s + lr z˙ θ − (˙z u )br ) + 2kr ((z a )br − (z u )br )}lr ,

2m f (¨z u )b f

= 2c f (˙z s − l f z˙ θ − (˙z u )b f ) + 2k f ((z a )b f − (z u )b f ) + 2kt f ((zr )b f − (z u )b f ),

2m r (¨z u )br

= 2cr (˙z s + lr z˙ θ − (˙z u )br ) + 2kr ((z a )br − (z u )br ) + 2ktr ((zr )br − (z u )br ).

It can be observed that the above equations take the same form as (6.3–6.6) under the transformations listed in the first column of Table 7.1. To decouple into two quarter-cars requires a simplicity assumption: kt f kf cf mf lr = = = = . kr cr ktr mr lf

(7.12)

74

Disturbance Response Decoupling for The Full-Car Model

7.2.2 Roll/Warp Half-Car After applying the L f,1 transformation, (7.3–7.7) can be rearranged as follows: Iφ z¨ φ = Tφ − {2c f (t f z˙ φ − (˙z u )ρ f ) + 2k f ((z a )ρ f − (z u )ρ f )}t f −{2cr (tr z˙ φ − (˙z u )ρr ) + 2kr ((z a )ρr − (z u )ρr )}tr , 2m f (¨z u )ρ f

= 2c f (t f z˙ φ − (˙z u )ρ f ) + 2k f ((z a )ρ f − (z u )ρ f ) + 2kt f ((zr )ρ f − (z u )ρ f ),

2m r (¨z u )ρr

= 2cr (tr z˙ φ − (˙z u )ρr ) + 2kr ((z a )ρr − (z u )ρr ) + 2ktr ((zr )ρr − (z u )ρr ).

We observe that one equation is missing in this half-car compared to (6.3–6.6). This is because the chassis is modelled as being infinitely stiff under torsion, so that there is no dynamic equation corresponding to warp dynamics of the car body. However the above three equations do take a similar form to (6.4–6.6) under the transformations listed in the second column of Table 7.1. Half-car

Full-car

Full-car

(bounce/pitch)

(roll/warp)

ms

ms









m1

2m f

2m f

m2

2m r

2m r

k1

2k f

2k f

k2

2kr

2kr

c1

2c f

2c f

c2

2cr

2cr

k t1

2kt f

2kt f

k t2

2ktr

2ktr

l1

lf

tf

l2

lr

tr

Fs

Fs





−Tθ



zs

zs





−z θ



zu1 , zu2

(z u )b f , (z u )br

(z u )ρ f , −(z u )ρr

z r1 , z r2

(zr )b f , (zr )br

(zr )ρ f , −(zr )ρr

z a1 , z a2

(z a )b f , (z a )br

(z a )ρ f , −(z a )ρr

u1 , u2

(u)b f , (u)br

(u)ρ f , −(u)ρr

Table 7.1: Decoupled (symmetric) full-car.

7.3 A Design Example for the Full-Car Model

75

As in the half-car case, under the assumption of simplicity: kt f kf cf mf tr = = = = , kr cr ktr mr tf and the L f,2 transformation: L f,2 such that

"

1 = t f + tr

(x)war p (x)roll

"

tr

−t f

1

1

#

" = L f,2

(x)ρ f (x)ρr

(7.13)

# ,

(7.14)

# ,

(7.15)

where x can be z u , zr or z a , strut deflection D or actuator command signal u, the roll/warp half-car can be further decoupled into roll and warp quarter-cars under the mapping illustrated in Table 7.2. Quarter-car

Full-car (Warp)

Full-car (Roll)

ms





mu

2(m f + m r )

2(m f t 2f + m r tr2 )

ks

2(k f + kr )

2(k f t 2f + kr tr2 )

cs

2(c f + cr )

2(c f t 2f + cr tr2 )

kt

2(kt f + ktr )

2(kt f t 2f + ktr tr2 )

Fs





zs





zu , za

(z u )war p , (z a )war p

(z u )roll , (z a )roll

zr , u

(zr )war p , (u)war p

(zr )roll , (u)roll

Table 7.2: Decoupled roll and warp modes of the full-car by simplicity.

7.3 A Design Example for the Full-Car Model In this section, we shall synthesise an active controller for a specific full-car model. As in Section 7.2 the model is chosen to be left-right symmetric which allows a decoupling into the bounce/pitch and roll/warp half-cars. Our design approach for the bounce/pitch half-car will make use of the theory outlined in Section 6.1. The approach for the roll/warp half-car will make use of a further simplicity assumption which allows it to be decoupled into the two corresponding quarter-cars, namely the roll and warp quarter-cars. The roll quarter-car will be treated in the same way as the quarter-car of Section 5.1. As pointed out in Section 7.2.2 the warp quarter-car is different from the standard quarter-car in that the “sprung mass” is effectively infinite. Furthermore, in warp motion there is good reason to use the active controller to make the road disturbance responses even softer than they would

76

Disturbance Response Decoupling for The Full-Car Model

wbp

z bp Pbp u bp

ybp e2,bp U

K bp w

wroll

zroll Proll

(u)roll

z

yroll e2,roll U

K roll wwar p

z war p Pwar p

(u)war p

ywar p K war p

Figure 7.2: Control scheme for the full-car model.

be with the default passive parameter settings. Thus the warp mode will be handled in a different way to the other three modes. For the controller design the available measurements are assumed to be z¨ s , z¨ θ , z¨ φ , D1 , D2 , D3 and D4 . The control structure will be chosen to have three independent loops, consisting of the roll quarter-car, the warp quarter-car and bounce/pitch half-car controllers. This scheme is shown in Fig. 7.2, where the signals are defined as follows:

h

i0 Fs , Tθ , Tφ , zr1 , zr2 , zr3 , zr4 , i0 h wbp = Fs , Tθ , (zr )b f , (zr )br , i0 h wroll = Tφ , (zr )roll , i h wwar p = (zr )war p , h i0 z = zs , zθ , zφ , zu1 , zu2 , zu3 , zu4 , i0 h z bp = z s , z θ , (z u )b f , (z u )br , i0 h zroll = z φ , (z u )roll , i h z war p = (z u )war p , w =

(7.16)

(7.17)

7.3 A Design Example for the Full-Car Model

ybp =

77

h

z¨ s , z¨ θ , (D)b f , (D)br i0 h = z¨ φ , (D)roll , i h = (D)war p , i0 h = (u)b f , (u)br ,

yroll ywar p u bp

i0

,

and the subscripts b f , br , roll and war p are defined as in (7.11) and (7.15). The following parameters will be used for the full-car model: m s = 1600 kg, Iθ = 1000 kg m2 , Iφ = 450 kg m2 , t f = tr = 0.75 m, l f = 1.15 m, lr = 1.35 m, k f = kr = 20 kN/m, c f = cr = 5 kNs/m, m f = m r = 50 kg, kt f = ktr = 250 kN/m. As in the previous examples, the actuator dynamics is represented as in (5.2) with ωn = 100 rad/sec and δ = 0.707.

7.3.1 Bounce/Pitch Control Referring to Table 7.1, the bounce/pitch half-car corresponds to the half-car of Section 6.1 with the following coefficients: m s = 1600 kg, Iψ = 1000 kg m2 , m 1 = m 2 = 100 kg, k1 = k2 = 40 kN/m, c1 = c2 = 10 kNs/m, kt1 = kt2 = 500 kN/m, l1 = 1.15 m, l2 = 1.35 m, which is not simple and cannot be decoupled into two quarter-cars. The H∞ loop shaping controller design for this half-car model has been carried out in Example 6.1. We will use the results directly. The essential controller e2,bp is given by (6.7) and Table 7.1 as: structure U  e2,bp =  U

m s lr 2(c f s+k f )(lr +l f ) ms l f 2(cr s+kr )(lr +l f )



Iθ 2(c f s+k f )(lr +l f ) −Iθ 2(cr s+kr )(lr +l f )

1 0 0 1

And the H∞ controller was derived in Example 6.1 as: # " Kc 0 K bp = , 0 Kc

.

(7.18)

(7.19)

where K c was given in (6.11).

7.3.2 Roll Control Referring to Table 7.2, the roll mode of the full-car corresponds to a quarter-car with the following coefficients: m s = 450 kg, m u = 112.5 kg, ks = 45 kN/m, cs = 11.25 kNs/m, kt = 562.5 kN/m. The e2 takes the following form after using Table 7.2, (5.10) and (7.13): required structure of U e2,roll U

=

h

Iφ 2(c f s+k f )t f (tr +t f )

i 1

.

(7.20)

Given the weighting function: Wroll

=

10(s + 80) , s+8

(7.21)

78

Disturbance Response Decoupling for The Full-Car Model

e2,roll P22 has a bandwidth of about 60 rad/sec, it is found that the such that the weighted plant Wroll U H∞ loop shaping controller after model reduction is given by: K roll

= Kc ,

(7.22)

where K c is given by (6.11). (This controller is the same as the diagonal terms in K bp since the e2,roll P22 is the same as the diagonal elements in the scalar matrix Wbp U e2,bp P22 , weighted plant Wroll U see (6.8) and Table 5.1.) This controller gives the steady state gain of TTˆφ →ˆzφ as 2.33×10−6 , compared

to the passive suspension with d.c. gain TTˆφ →ˆzφ (0) = 2.4 × 10−5 , a similar result to Fig. 5.4.

7.3.3 Warp Control For the warp quarter-car, we will take a slightly different approach for the design of the active controller. Since the sprung mass cannot be twisted, i.e. it has no warp motion, there is no corresponding role for the active controller to make the “sprung mass” stiffer to the loads. On the other hand, even though the passive road disturbance responses were designed to be relatively soft, there is no reason why they should not be even softer in the warp mode. We will therefore abandon the goal of keeping the response to the road warp input (zr )war p invariant under active control. We also note that there is no acceleration measurement associated with warp and so there is only one feedback signal available e2 block for corresponding to the strut deflections: (D)war p = −(z u )war p . For this reason there is no U the warp quarter-car loop in Fig. 7.2. Referring to Table 7.2, the warp quarter-car reduces to the form illustrated in Fig. 7.3, with z s = 0 and the coefficients m u = 200 kg, ks = 80 kN/m, cs = 20 kNs/m and kt = 1000 kN/m. The dynamic equation then takes the form, using (5.4–5.6): m u s 2 zˆ u = −(cs s + ks )ˆz u + ks zˆ a + kt (ˆzr − zˆ u ), which reduces to, using (5.1–5.2): (m u s 2 + cs s + ks + kt − ks γ (s)K war p (s))ˆz u = kt zˆ r .

(7.23)

with the correspondences given in Table 7.2. We now claim that it is desirable to choose K war p (s) so that the d.c. gain Tzˆr →ˆzu (0) = 1. We will now give some reasoning to justify this. If we consider the case where the full-car model is in equilibrium with Fs = Tθ = Tφ = 0, then the equations (7.1–7.3) are equivalent to:  1   lf  −t f



1

1

lf

−lr

tf

−tr



 u p1

   u p2 −lr    up  3 tr u p4 1

    = 0.  

(7.24)

7.3 A Design Example for the Full-Car Model

79

(z s = 0) za

A

cs

ks zu

mu kt

zr

Figure 7.3: The warp quarter-car.

Evidently there is one degree of freedom available in the suspension forces, and indeed we can check that:

h

u p1 , u p2 , u p3 , u p4

i0

=

h

tr , −tr , −t f , t f

i0

κ

(7.25)

for some constant κ, completely characterises that freedom. From the point of view of reducing the amount of "twist" on the vehicle chassis which the suspension forces impose, it would be desirable to achieve a value of κ = 0 in the steady state. The following result shows that the above mentioned condition achieves this property. Proposition 7.1 Suppose the (linearised) full-car model defined in Section 7.1 is in equilibrium with Fs = Tθ = Tφ = 0 and zr1 , . . . , zr4 arbitrary. Then the following equation (zr )war p = (z u )war p ,

(7.26)

holds if and only if u p1 = u p2 = u p3 = u p4 = 0. (proof) Using (7.11) and (7.15), we notice that the warp variable (x)war p is a combination of variables at the four wheel-stations:



 x1

(x)war p

  i x  h 1  2  = , t , −tr , −t f , t f   x3  2(tr + t f ) r   x4

where x can be z u or zr . Using (7.8) and (7.9) we see that (7.26) is equivalent to [tr /kt f , −tr /kt f , −t f /ktr , t f /ktr ]· [Fr1 , Fr2 , Fr3 , Fr4 ]0 = 0, which is equivalent to [tr /kt f , −tr /kt f , −t f /ktr , t f /ktr ]· [u p1 , u p2 , u p3 , u p4 ]0 = 0 by (7.4–7.7), which in turn is equivalent to κ = 0 by (7.25).



It can be observed that the proposition holds if equation (7.26) is replaced by any equation of the form: h

λ, −λ, −µ, µ

i h i0 · z r1 − z u 1 , z r2 − z u 2 , z r3 − z u 3 , z r4 − z u 4 =0

80

Disturbance Response Decoupling for The Full-Car Model

with λµ > 0, i.e. the particular ratios chosen in the definition of the warp variable are not critical to the result. Now let us return to the warp quarter-car represented in (7.23). If we choose a simple constant controller and ignore temporarily the actuator dynamics, i.e. set γ (s) = 1, then the choice of K war p = 7.25 achieves a damping ratio of 1, a natural frequency equal to 50 rad/sec (which is lower than the bandwidth of the actuator) and a steady-state gain of 2. As shown by Proposition 7.1 we would like to achieve the condition (7.26) in the steady-state, which is equivalent to the d.c. gain Tzˆr →ˆzu (0) = 1. Setting K war p (s) = −0.1036s + 1 achieves in (7.23) a damping ratio of 1, a natural frequency equal to 70.71 rad/sec (which is lower than the bandwidth of the actuator) and a steady-state gain of 1. In order that the controller is proper, we can choose: K war p =

−0.1036s + 1 . (300)−1 s + 1

(7.27)

The response does not change significantly with this modification or when the actuator dynamics are included. The step response with the final controller, with improved warp behaviour compared to the passive case, is shown in Fig. 7.5.

7.3.4 The Full-Car Control w

z P

y

u f5

f4

K

f3

f1

f2

Figure 7.4: Final controller structure for the full-car model.

As a final step we can redraw Fig. 7.2 in the form of Fig. 7.4 where P is the full-car model represented by (7.1–7.7). In Fig. 7.4 the measurements y and control signals u are defined as follows: y =

h

z¨ s , z¨ θ , z¨ φ , D1 , D2 , D3 , D4 h i0 u = u1, u2, u3, u4 ,

i0

,

where Di and u i represent the strut deflection and control command signal at each wheel station. The

7.3 A Design Example for the Full-Car Model

81

blocks f 1 , . . . , f 5 are defined as follows: f 1 = diag(1, 1, 1, L f,1 ), f 2 = diag(1, −1, 1, 1, 1, L f,2 ),  f3

   =   

m s lr 2(c f s+k f )(lr +l f ) ms l f 2(cr s+kr )(lr +l f )

Iθ 2(c f s+k f )(lr +l f ) −Iθ 2(cr s+kr )(lr +l f )

0

0

0

0

Iφ 2(c f s+k f )t f (tr +t f )

0

0

1 0 0 0

0



 0 1 0 0   , 0 0 1 0   0 0 0 1

f 4 = diag(1, 1, L −1 f,2 ), f 5 = L −1 f,1 , e2,bp defined in (7.18) and where L f,1 is defined in (7.10), L f,2 is defined in (7.14) and f 3 combines U e2,roll defined in (7.20). Note that the third row in f3 reflects the fact that there is only one measurement U available for warp control. The controller K is defined as: K = diag(K bp , K war p , K roll ) where K bp , K war p and K roll are given by (7.19), (7.27) and (7.22) respectively. Compared with the passive suspension, the benefits of using active controllers is shown in Fig. 7.5. The responses to “bounce”, “pitch” and “roll” road inputs are not shown since these are the same in the passive and active cases. Fs → zs

−5

1.5

x 10

Tθ → zθ

−5

1

x 10

0.75

1

0.5 0.5

0.25

0 0

0.5

1.5

2

0 0

Tφ → zφ

−5

2.5

1

x 10

0.5

1

1.5

2

(zr)warp → (zu)warp 1

2 0.75

1.5

0.5

1

0.25

0.5 0 0

0.5

1

1.5

2

0 0

0.5

1

1.5

2

Figure 7.5: Step responses of TFˆs →ˆzs , TTˆθ →ˆzθ , TTˆφ →ˆzφ and T(ˆzr )war p →(ˆzu )war p using active (dashed) and passive (solid) suspensions.

82

Disturbance Response Decoupling for The Full-Car Model

7.3.5 Vehicle Dynamics Simulations In this section we present some simulation results for the controller designed in Section 7.3.4 using the multi-body simulation package AutoSim. A nonlinear dynamical model of the simple full-car shown in Fig. 7.1 was constructed with the suspension struts constrained to move perpendicularly to the vehicle body. To model a rolling wheel of inertia 1 kg m2 with tyre the magic formula [2] was employed to calculate the accelerating and braking forces. The tyres are assumed to provide vertical spring forces with spring constants kt1 = kt2 = kt3 = kt4 = 250 kN/m. The control law given in Section 7.3.4 was implemented together with the actuator structure described in Section 7.1. The model was first tested at zero velocity for various road disturbance inputs and gave similar results, for small displacements, to a matlab simulation of the linearised model. As expected, the bounce, pitch and roll responses were the same in the active and passive cases. Fig. 7.6 shows the effect of applying a step input to the AutoSim model at the right front wheel in both the passive and active cases. The difference in behaviour is due to the “warp” mode being treated differently in the active case, as explained in Section 7.3.3. 1.4 1.2

cm

1 0.8 0.6 0.4 0.2 0 0

0.1

0.2

sec

0.3

0.4

0.5

Figure 7.6: Response of z u 1 to a step input of 1 cm at zr1 for AutoSim model using active (dashed) and passive (solid) suspensions.

The AutoSim model was then tested under acceleration and braking. For acceleration, a torque was applied at each front wheel with the opposing reaction torques acting on the vehicle body. A similar approach was taken for braking but with the braking torques applied to the front and rear wheels in a 60:40 ratio. Fig. 7.7 shows the “squat” and “dive” of the model under acceleration and deceleration, with the forward velocity given in Fig. 7.7(a) and the pitch angle z θ given in Fig. 7.7(c). The simulation shows that the active suspension significantly improves the squat and dive performance. The AutoSim model, the active control and the tyre model are given in Appendix E.

7.4 Summary and Comments This chapter has considered the application of disturbance response decoupling to the full-car active suspension design problem. For the full-car model, decomposition into two half-cars was exploited

7.4 Summary and Comments

83

20

1000

15

Nm

m/sec

500 10

0

5 −500 0

−5 0

5

10

−1000 0

15

5

10

15

sec

sec (a) forward velocity

(b) Applied torques on front wheels

0.08

0.05

0.06

0.04

0.04

0.03

0.02

m

rad

0.02 0

0.01

−0.02 0

−0.04

−0.01

−0.06 −0.08 0

5

10

sec (c) z θ

15

−0.02 0

5

10

15

sec (d) z s

Figure 7.7: Anti-dive and anti-squat effect in AutoSim model using active suspension (dashed), compared with passive suspension (solid).

under a mild symmetry assumption. This enabled the bounce/pitch half-car design to be carried out with the half-car structure previously derived. For the roll/warp half-car a further decomposition into two quarter-cars was assumed. This allowed the warp quarter-car to be treated in a distinct way, which is necessary since the load disturbance path is absent here and it is also reasonable to change (i.e. soften) the road disturbance response from the passive case. A controller was designed and demonstrated on a nonlinear vehicle dynamics model and showed the effectiveness of the design for reduced squat and dive under acceleration and braking, improved warp response and invariance of other road disturbance responses.

Chapter 8

Numerical Calculation of the Controller Structure A key step in the disturbance response decoupling designs described in Chap. 4 is the computation of e2 which determines the required controller structure. Throughout the application of vehicle the matrix U e2 symbolically using active suspension design in Chap. 5–7, it has always been possible to calculate U Maple. However, for more complicated vehicle models this may not be feasible. In such a case a direct numerical approach may be possible. In this chapter, we shall demonstrate the numerical calculation of e2 . Section 8.1 considers the linearised half-car double-wishbone model, and the controller structure U e2 . Section 8.2 considers presents the procedure of numerically calculating the controller structure U the linearised full-car double-wishbone model. Like the treatment for the linear full-car model, the full-car model is decomposed into two half-car models and the roll/warp half-car is further decoupled to two quarter-car models. Moreover, the road warp responses can be softened by the active controller.

8.1 The Half-Car Double-Wishbone Model In this section, we shall apply Theorem 4.2, 4.4 to a half-car double-wishbone model, as shown in Fig. 8.1. The left (right) suspension strut consists of a passive damper of constant c1 (c2 ) in parallel with a series combination of an actuator A and a spring of constant k1 (k2 ) (this is a “Sharp” actuator as introduced in Section 5.1). The actuators are modelled in such a way that the relative displacement across each is equal to a low-pass filtered version of the actuator’s command signal, as in (6.1–6.2). The tyre forces are modelled as always normal to the ground. This model was built and linearised by AutoSim. We will analyse the linearised model and find the controller structure which improves the load responses and keeps the road responses the same as in the passive case. The main purpose of this section is to show the numerical calculation of the desired controller structure. This will enable us to apply the disturbance response decoupling theorems to some systems where the exact symbolic equations are unavailable or difficult to derive. For example, this half-car 85

86

Numerical Calculation of the Controller Structure

Fs R1

R2 B1

zu1

I1 m1 P1

C1

Iψ , m s

z r1

I2 C2 m 2 P2 S2

z ψ , Fψ

S1

Q

A1

T1

B2 zs

A2

D1 k t1

D2 y

:pin joint :suspension strut

k t2

zu2 T2 z r2

x

Figure 8.1: The half-car double-wishbone model.

double-wishbone model can be linearised about an “operating point” so that we can carry out the design procedure. We now write the system in the form of Fig. 4.1 with z 1 = [z s , z ψ , z u 1 , z u 2 ]0 , w1 = [zr1 , zr2 ]0 , w2 = [Fs , Fψ ], y = [¨z s , z¨ ψ , D1 , D2 ]0 where D1 and D2 are the strut deflections and z 2 omitted. The transfer function T in (4.8) is partitioned conformably with z 1 and (w1 , w2 ), and the sub-blocks are labelled as (1, 1), (1, 2). The following parameters will be used for the model: m s = 625 kg, Iψ = 170 kg m2 , m 1 = m 2 = 50 kg, I1 = I2 = 0.1 kg m2 , c1 = c2 = 1 kNs/m, k1 = k2 = 4 kN/m, kt1 = kt2 = 250 kN/m. Those parameters are chosen to give satisfactory (i.e. soft) road responses, so that we can apply the disturbance response decoupling design for the load responses. The actuator dynamics are modelled as in (5.2) with ωn = 100 rad/sec and δ = 0.707. The geometric layout of the model is expressed as the following coordinates: Q = (0, 0), A1 = (0.25, −1), B1 = (−0.05, −0.94), C1 = (0.15, −1.4), D1 = (0.25, −1.4), R1 = (−0.25, −1.04), S1 = (0.2, −1.4), P1 = (0.2, −1.5), T1 = (0.35, −1.5), A2 = (0.25, 1), B2 = (−0.05, 0.94), C2 = (0.15, 1.4), D2 = (0.25, 1.4), R2 = (−0.25, 1.04), S2 = (0.2, 1.4), P2 = (0.2, 1.5), P2 = (0.35, 1.5) in the unit of meters. The AutoSim code for the linearised model is given in Appendix F.1. The following procedure is a guideline to carry out the numerical calculation of the controller structure for disturbance response decoupling: (1) find a suitable U1 from the lnf of T3,1 = U1 F; (2) partition U1 = [M 0 , N 0 ]0 where M is square; (3) find a minimal realisation of L := N M −1 ; e−1 N e and set U e2 = [− N e, M] e (e.g. see [45, Theorem 12.19]). (4) find a left coprime factorisation L = M

8.1 The Half-Car Double-Wishbone Model

87

e2 without We note that steps (2)–(4) of the above procedure provide a method of finding a matrix U the need to complete U1 to a unimodular matrix followed by inversion. We also observe that, in the case that F is square, we may in principle set F = I (so that U1 = T3,1 is not necessarily part of a unimodular matrix) and then directly calculate L as in (3). However, if it is desired to carry out the calculation numerically in state space then it is desirable that M(∞) is non-singular. Accordingly, we can simply seek an F so that this property holds without needing to ensure that T3,1 = U2 F is formally e2 constructed in (4) is a left annihilator a lnf. Finally we note the connection with Theorem 4.3 that U of T3,1 and is a part of a unimodular matrix. From Theorem 4.2, for a stabilising controller which keeps the road disturbances the same as the e2 , passive suspension and improves the load disturbances responses, we find the controller structure U after model reduction, as: " e2 = U

2.54×10−1 s+3.58 2.54×10−1 s+3.58

4.56×10−2 s+3.65 −4.56×10−2 s+3.65

8.7×10−3 s+3.58

−1 8.7×10−3 s+3.58

#

−1

.

(8.1)

Using H∞ loop shaping method with the following weighting function: 8(s + 80) W1 = s+2

"

#

1 0

,

0 1

we have a H∞ loop shaping controller K 1 , which gives the desirable responses, as shown in Fig. 8.2, which reduce TFˆs →ˆzs (0) from 9.70×10−5 to 1.8×10−6 and TFˆψ →ˆzψ (0) from 4.31×10−5 to 8.31×10−7 . Fs → z s

−4

1.2

x 10

Fψ → z ψ

−5

4.5

x 10

4 1 3.5 0.8

3 2.5

0.6 2 0.4

1.5 1

0.2 0.5 0 0

1

2

sec

3

4

5

0 0

1

2

sec

3

4

5

Figure 8.2: Step responses for linearised model of TFˆs →ˆzs and TFˆψ →ˆzψ : passive (solid) and active control (dashed).

As pointed out in Theorem 4.4, it is always possible to make further improvement for the closedloop transfer responses. For instance, we can improve the responses to Fs or Fψ of Fig. 8.2 without e2,Fs and U e2,Fψ , changing the other. To perform it, firstly we need to derive the controller structures U which keep the responses to [zr1 , zr2 , Fψ ] and [zr1 , zr2 , Fs ] fixed respectively, as follows (after model

88

Numerical Calculation of the Controller Structure

reduction): e2,Fs U

=

e2,Fψ U

=

h h

3.59×10−1 , s+3.58

0, −0.7071, −0.7071

−6.45×10−2 , s+3.65

0,

0.7071, −0.7071

i i

.

(8.2)

,

(8.3)

Now we apply H∞ loop shaping method for the designs. Suppose we want to improve the response e2,Fs P22 , of T ˆ in Fig. 8.2 further, we choose a weighting function W1,Fs for the shaped plant U Fs →ˆz s

and find a suitable controller K 1,Fs . Or if we want to improve the response of TFˆψ →ˆzψ , we choose e2,Fψ P22 , and find a suitable controller K 1,Fψ . The a weighting function W1,Fψ for the shaped plant U following weighting functions: 8.3 × 10−2 (s + 40) 9.9 × 10−2 (s + 40) , W1,Fψ = , s + 20 s + 20 are used for this model. Now we derive the following parameters from the controllers: W1,Fs =

S = −(I − K 1 P22 )−1 K 1 , Q SFs Q

= −(I − K 1,Fs P22 )−1 K 1,Fs ,

SFψ Q

= −(I − K 1,Fψ P22 )−1 K 1,ψ .

Fig. 8.3 shows the closed-loop step responses with controller K = (I − Q P22 )−1 Q in the following S the first stage design and (3) Q = Q S+ Q SFs + three cases: (1) Q = 0, i.e. passive system, (2) Q = Q, SFψ , the refined design. The final controller reduces the d.c. gains of T ˆ Q Fs →ˆz s and TFˆψ →ˆz ψ further down

to 6.12 × 10−7 and 9.88 × 10−8 respectively. Fs → z s

−4

1.2

x 10

Fψ → z ψ

−5

4.5

x 10

4 1

3.5 3

0.8

2.5 0.6

2 1.5

0.4

1 0.2

0.5 0 0

1

2

sec

3

4

5

0 0

1

2

sec

3

4

5

Figure 8.3: Step responses for the linearised model of TFˆs →ˆzs and TFˆψ →ˆzψ with controller K = S (dashed) and Q = Q S+ Q SFs + Q SFψ (dash(I − Q P22 )−1 Q with: Q = 0 passive (solid), Q = Q dotted). e2 , U e2,Fs and U e2,Fψ in (8.1–8.3). We It is also interesting to compare the controllers structures U e2,Fs and U e2,Fψ are close to sub-matrices of an equivalent structure of U e2 as follows: notice that U " # " # e2,Fs U 0.7071 0.7071 e2 , ≈ U e2,Fψ −0.7071 0.7071 U where the small differences may result from numerical process.

8.2 The Full-Car Double-Wishbone Model

89

8.2 The Full-Car Double-Wishbone Model In this section, we will demonstrate again the numerical calculation of the controller structure (i.e. e2 ) using the full-car double-wishbone model. A full-car double-wishbone model is given in Fig. 8.4, U where (1), (2), (3), (4) represent each correspondong wheel station, and the front and rear half-car have the same geometric arrangement as the half-car double-wishbone model given in Section 8.1. The following parameters will be used for the model: m s = 625 kg, Iφ = 170 kg m2 , Iθ = 260 kg m2 , m 1 = m 2 = 46 kg, m 3 = m 4 = 60 kg, I1 = I2 = I3 = I4 = 0.1 kg m2 , c1 = c2 = c3 = c4 = 500 Ns/m, k1 = k2 = k3 = k4 = 2 kN/m, kt1 = kt2 = kt3 = kt4 = 250 kN/m, l f = lr = 1.5m. Those parameters are chosen to give satisfactory (i.e. soft) road responses, so that we can apply the disturbance response decoupling design for the load responses. the rear half-car (3) z s ,Fs

(4)

lr z θ ,Tθ

m s ,Iθ ,Iφ z φ ,Tφ

y

lf z

(1)

the front half-car

x

(2)

Figure 8.4: The full-car double-wishbone model.

We now write the system in the form of Fig. 4.1 with z 1 = [z s , z θ , z φ , z u 1 , z u 2 , z u 3 , z u 4 ]0 , w1 = [zr1 , zr2 , zr3 , zr4 ]0 , w2 = [Fs , Tθ , Tφ ]0 , y = [¨z s , z¨ θ , z¨ φ , D1 , D2 , D3 , D4 ]0 where D1 , . . . , D4 are the strut deflections and z 2 omitted. Using L f,1 , L f,2 given in (7.10) and (7.14), we define the “bounce/pitch”, “warp” and “roll” modes of the full-car model as follows: h

i0 h i0 = L f,1 x1 , x2 , x3 , x4 , (x)b f , (x)br , (x)ρ f , (x)ρr h i0 h i0 = L f,2 (x)ρ f , (x)ρr , (x)war p , (x)roll

where x may represent any of the following variables: z u , zr , z a , strut deflection D or actuator command signal u, while the subscripts ρ f , ρr

bf

,

br

represent the front and rear bounce components, and

represent the front and rear roll components. These transformation matrices come from our

experience in dealing with the linear full-car model. For this double-wishbone model, it is difficult to symbolically decouple the full-car model into the corresponding half-car and quarter-car models, due

90

Numerical Calculation of the Controller Structure

to the complexity of the dynamics. However, we will use these transformation matrices directly as a starting point to simplify the controller design procedure. The controller scheme is similar to Fig. 7.2. That is, the desirable controller will be derived from different modes, and then integrated and applied to the full-car model directly, as the design procedure in Section 7.3. Firstly, we apply Theorem 4.2 to find a controller which improves the load responses while keeping the road responses the same as for the passive system. Since the warp model is different from all the others, at this moment we will leave the road warp responses the same as in the passive case. That is, we temporarily set the warp controller K war p = 0, such that (u)war p = K war p (D)war p = 0, and design the controller for “bounce/pitch” and “roll” modes so that it will not change the road responses. A full-car double-wishbone model was built and linearised by AutoSim, as given in Appendix F.2, which is used for the controller design. Now we apply the H∞ loop shaping design for Pbp and Proll . Bounce/Pitch Control For the bounce/pitch half-car, a controller structure which leaves the road responses unchanged is found as follows (after model reduction): " 2.39×10−1 d1 (s) e2,bp = U −1

−6.85×10−2 d1 (s) 6.73×10−2 d2 (s)

2.34×10 d2 (s)

8×10−3 d1 (s)

−1 8×10−3 d2 (s)

−1

# ,

(8.4)

where d1 (s) = s + 3.2671, d2 (s) = s + 3.1728. Applying a weighting function Wbp as: # " Wc 0 Wbp = , 0 Wc in which

8(s + 80) , s+2 after model reduction is found as: " Wc =

the controller K bp

K bp =

−29.70(s+16.47)(s+40.96±50.04 j ) (s+1.92)(s+56.46±92.79 j )

0

(8.5)

0

−29.71(s+15.98)(s+40.79±46.39 j ) (s+1.92)(s+54.94±89.42 j )

# .

(8.6)

The controller layout is shown as in Fig. 7.2. Roll Control For the roll quarter-car, a controller structure which leaves the road responses unchanged is found as follows (after model reduction): e2,roll U

=

h

4.23×10−2 , s+3.31

−1

i

.

(8.7)

8.2 The Full-Car Double-Wishbone Model

91

Applying a weighting function Wroll = Wc where Wc is given in (8.5), the controller K roll after model reduction is found as: K roll

=

−28.46(s + 16.50)(s + 41.88 ± 52.25 j ) . (s + 1.92)(s + 57.49 ± 94.43 j )

(8.8)

The controller layout is shown as in Fig. 7.2. The Full-Car Control Now we integrate the final controller layout as in Fig. 7.4, where f 3 is the overall controller structure:   −6.85×10−2 2.39×10−1 8×10−3 0 −1 0 0 d1 (s) d1 (s)  d1 (s) −1   2.34×10 6.73×10−2 8×10−3 0 −1 0 0   d2 (s)  d2 (s) d2 (s) f3 =  ,   0 0 0 0 0 1 0   4.23×10−2 0 0 0 0 0 −1 s+3.31 in which d1 (s) = s + 3.2671, d2 (s) = s + 3.1728, and the controller K is defined as: K = diag(K bp , K war p , K roll ),

(8.9)

where K bp and K roll are given in (8.6) and (8.8) respectively. At this moment, with the road warp response remaining the same as in the passive case, i.e. K war p = 0, we obtain an active controller which improves the load responses while keeping the road responses unchanged. Compared with a passive suspension, TFˆs →ˆzs (0) was stiffened from 9.70 × 10−5 to 2.09 × 10−6 while TTˆθ →ˆzθ (0) was

stiffened from 4.31×10−5 to 9.28×10−7 and TTˆφ →ˆzφ (0) was stiffened from 4.31×10−5 to 9.20×10−7 .

8.2.1 Special Treatment for the Warp Mode As mentioned in Proposition 7.1, there will be a “twist” on the vehicle chassis which the suspension forces impose if T(ˆzr )war p →(ˆzu )war p (0) is not equal to 1. Because the sprung mass has no warp motion, the twisting effect is always present in the passive system. Therefore, a special treatment for the warp mode is necessary. Unlike the simple full-car model introduced in Section 7.1, it is not so easy to derive the warp quarter-car symbolically for this double-wishbone model. Therefore, we will assume that there are some similarities between the simple full-car and the linearised full-car double-wishbone models, in order to treat the warp mode. Firstly, we notice that the d.c. gain of each wheel station is as follows: Tzˆri →ˆzu i (0) = 0.9974, where i =1,…,4. Therefore, our goal is to set this gain to be one. Let us begin with the control scheme of Fig. 7.2, from which we can check that in bounce/pitch and roll modes T(ˆzr )b f →(ˆzu )b f (0) = T(ˆzr )br →(ˆzu )br (0) = T(ˆzr )roll →(ˆzu )roll (0) = 1. Therefore, the twist comes from the warp quarter-car Pwar p ,

92

Numerical Calculation of the Controller Structure

which can be expressed as: "

#

(ˆz u )war p ˆ war p ( D)

" = Pwar p

(ˆzr )war p

# ,

(u) ˆ war p

where Pwar p (0) is found as: "

0.9897 −0.0090

Pwar p (0) =

1.1295 −0.0103

# .

Therefore, the problem can be simplified as: find a warp controller K war p such that Fu (Pwar p (0), K war p (0)) = 1, where Fu is an upper LFT [45, Chap. 10]. For this warp quarter-car, we find K war p (0) = −1 gives the desired result, i.e. the d.c. gain: T(ˆzr )war p →(ˆzu )war p (0) = 1. Hence we can change K war p in (8.9) to be −1. As a consequence, the d.c. gain of each wheel station becomes: Tzˆri →ˆzu i (0) = 1, where i =1,…,4. As for further improvements to the transient states of the road warp responses, we can always use a higher order transfer function for warp control, but the constant term should be the same: K war p (0) = −1.

8.2.2 Nonlinear Simulation Results Now we present some simulation results for the full-car double-wishbone model with the active controller designed in this section. A nonlinear dynamic model of the model shown in Fig. 8.4 was constructed using AutoSim with the active controller written in a C-code. The nonlinear simulation results of the load responses are illustrated in Fig. 8.5. Fs → z s

−4

1.2

x 10

Tθ → z θ

−5

4.5

x 10

Tφ → z φ

−5

4.5

4

4

3.5

3.5

x 10

1 0.8

3

3

2.5

2.5

0.6 0.4

2

2

1.5

1.5

1

1

0.5

0.5

0.2 0 0

0.5

1

1.5

sec

2

2.5

3

0 0

0.5

1

1.5

sec

2

2.5

3

0 0

0.5

1

1.5

sec

2

2.5

3

Figure 8.5: AutoSim nonlinear simulations: step responses of TFˆs →ˆzs , TTˆθ →ˆzθ and TTˆφ →ˆzφ with passive (solid) and active control (dashed).

8.3 Summary and Comments

93

8.3 Summary and Comments e2 ), In this chapter, we developed the procedure to numerically calculate the controller structure (U which is especially useful when the symbolic solution is not available for complex systems. Then we applied the procedure to the linearised half-car and full-car double-wishbone models. Furthermore, the nonlinear simulations were obtained after implementing the active controller to the AutoSim model. The results were very promising. It is noticed that all the factorisations we have completed in the numerical models were based on our experience, and a trial-and-error task because sometimes it had singularity problems in finding a suitable factorisation. At this stage we still have no particular formula for the normalrank factorisation. Algorithms for the calculation of the normalrank factorisations would be a very interesting topic for further work.

Chapter 9

Active Suspension Design for the Trailing-Arm Model In Chap. 3, we discussed the half-car trailing-arm model, and showed the necessity of employing active suspension to satisfy the performance requirements. In this chapter, we shall apply Theorem 4.2 to design an active controller for this model. The design is similar to that of the simple half-car in Chap. 6. A soft passive suspension is chosen to give satisfactory road responses. Then the disturbance response decoupling method is applied to improve load responses while keeping the road responses unchanged. Section 9.1 employs the method developed in Chap. 8 to numerically calculate the controller structure. Section 9.2 shows the passivity analysis of this trailing-arm model with active suspensions. Section 9.3 illustrates the nonlinear simulation results using AutoSim.

9.1 Controller Design for Disturbance Response Decoupling In this section, we shall apply Theorem 4.2 to design an active controller for the half-car trailing-arm model. This trailing-arm model is like Fig. 3.1 with the suspension struts replaced by “Sharp” actuators introduced in Section 5.1. We will use the coefficients in Example 3.2, with the perfect anti-squat geometry (A = (0.15, 0.6126) m and B = (0.15, −1.0008) m), and compare the responses of the active and passive systems. As the numerical design examples in Chap. 8, we first set up a trailing-arm model in AutoSim, and obtain a linearised model for controller design. For disturbance responses decoupling design, a soft passive suspension with k1 = k2 = 40 kN/m, c1 = c2 = 10 kNs/m was chosen to give satisfactory responses to road disturbances, and the active controller is designed to stiffen the responses to load disturbances and braking torques without changing the road responses. We write the system in the form of Fig. 4.1 with z 1 = [z s , φ3 , z u 1 , z u 2 ]0 w1 = [zr1 , zr2 ]0 , w2 = [Fs , Ts , T1 , T2 ]0 , y = [¨z s , φ¨3 , D1 , D2 ]0 , where D1 and D2 are strut deflections, u = [u 1 , u 2 ]0 equals the actuator command signal and z 2 omitted. The corresponding dimensions are m 1 = m 3 = 2, m 2 = 4, p1 = 4, 95

96

Active Suspension Design for the Trailing-Arm Model

e2 p2 = 0, p3 = 4. Following the computational procedure in Section 8.1, the controller structure U after model reduction is found as: " 0.0788(s+3.8402) e2 = (s+3.9793)(s+3.7744) U

−0.0385(s+3.7307) (s+3.9793)(s+3.7744) 0.0356(s+3.9341) (s+3.9793)(s+3.7744)

0.0766(s+4.0033) (s+3.9793)(s+3.7744)

#

−1

0

0

−1

.

(9.1)

Choose a weighting function as follows: 8(s + 80) W1 = s+2

"

1 0 0 1

# ,

an H∞ loop-shaping controller after model reduction can be obtained as: "

−1.1576(s+4.8769×103)(s+33.6659±17.0618 j ) (s+2.1332)(s+152.81±109.84 j ) −4.9241(s−3.0241)(s−11.3602±76.1179 j ) (s+2.0724)(s+104.77±114.45 j )

K1 =

−5.3166(s−0.5734)(s+40.1281±35.7700 j ) (s+2.1332)(s+152.81±109.84 j ) −22.6155(s+29.3460)(s+86.8755±20.1755 j ) (s+2.0724)(s+104.77±114.45 j )

# ,

(9.2)

with the controller layout as shown in Fig. 4.2(b).

9.2 Network Analysis of the Active Trailing-Arm Models In this section, we perform the passivity analysis of the half-car trailing-arm model with the active suspension control derived in the previous section. Two linearised models, representing acceleration (or inboard braking) and outboard braking scenarios, are obtained from AutoSim. The active suspension e2 from (9.1) and (9.2) are then implemented to get the closed-loop responses. control K 1 and U 5

2

5

x 10

2

1.5

x 10

1.5

1 1

Eigenvalues (Ns/m)

Eigenvalues (Ns/m)

0.5 0 −0.5 −1 −1.5

0.5 0 −0.5 −1

−2 −1.5

−2.5 −3 0 10

1

10

2

10

3

4

10

10

Frequency (rad/sec)

5

10

−2 0 10

1

2

10

10

3

10

4

10

5

10

Frequency (rad/sec)

(a) Eigenvalues of (Y + Y ∗ ).

(b) Eigenvalues of (Y + Y ∗ ).

Figure 9.1: The passivity analyses for (a): acceleration (or inboard braking); (b): outboard braking.

The analysis results are shown in Fig. 9.1, where Y is defined as: h

Fˆs , Tˆs , Tˆ1 , Tˆ2 , − Nˆ 1 , − Nˆ 2

i0

i0 h = Y s zˆ s , s φˆ3 , s(φˆ1 − φˆ 3 ), s(φˆ 2 − φˆ 3 ), s zˆ r1 , s zˆ r2

9.3 Simulation Results

97

for acceleration (or inboard braking) in Fig. 9.1(a), or h

Fˆs , Tˆs , Tˆ1 , Tˆ2 , − Nˆ 1 , − Nˆ 2

i0

i0 h = Y s zˆ s , s φˆ3 , s(φˆ1 − φˆ 4 ), s(φˆ2 − φˆ 5 ), s zˆ r1 , s zˆ r2

for outboard braking in Fig. 9.1(b). It confirms that these systems cannot be implemented passively.

9.3 Simulation Results The nonlinear half-car trailing-arm model was built in AutoSim with the active controller written in a C-code. The nonlinear AutoSim model is illustrated in Appendix G.1. The active suspension control is given in Appendix G.2. The model was first tested at zero velocity with various load inputs. The closed-loop responses of the active systems reduced the d.c. gain of TFˆs →ˆzs from 1.35 × 10−5 to 1.12 × 10−6 , TTˆs →φˆ3 from 7.99 × 10−6 to 6.60 × 10−7 , TTˆ1 →ˆzs from −2.66 × 10−5 to −2.47 × 10−7 , TTˆ2 →ˆzs from 5.33 × 10−5 to 4.94 × 10−7 , TTˆ1 →φˆ3 from −9.83 × 10−6 to −1.84 × 10−6 , TTˆ2 →φˆ3 from 1.44 × 10−5 to −1.61 × 10−6 . As expected, the active controller significantly reduces the load and

1000

20

800

y˙3 (m/sec)

torques (Nm)

torque responses without changing the road responses.

600 400 200 0 −200

15

10

5

−400 −600 −800 0

2

4

6

sec

8

10

(a) applied torques:

0 0

12

T1

2

4

6

sec

8

10

12

(b) forward velocity

0.035

0.04

0.03

0.035

0.025

φ3 (rad)

φ3 (rad)

(solid), T2 (dash dotted)

0.02 0.015 0.01 0.005

0.02 0.015 0.01 0.005

0 −0.005 0

0.03 0.025

0 2

4

6

sec

8

10

12

−0.005 0

2

4

6

sec

8

10

(c) kt1 = kt2 = ∞, with

(d) kt1 = kt2 = 500 kN/m,

no-slip constraints

with magic formula tyre

12

model

Figure 9.2: (a) applied torques (b) velocity; (c) and (d) the pitch motion of the active (dashed) and passive (solid) systems without and with tyre springs.

98

Active Suspension Design for the Trailing-Arm Model

The active controller was implemented in AutoSim for accelerating and braking scenarios. Fig. 9.2(a) and 9.2(b) show the applied torques and forward velocity respectively. To model a rolling wheel with tyre, we can employ the same method as used in Example 3.1 for a no-slip assumption between the tyre and road contact points. Alternatively, we can use the magic formula [2] to calculate the accelerating and braking forces and assume that the tyres provide vertical spring forces with spring constants kt1 = kt2 = 500 kN/m, as discussed in Section 7.3.5. Fig. 9.2(c), 9.2(d) show the pitching motions of the vehicle body using these two tyre models.

9.4 Summary and Comments In this chapter, we used the half-car trailing-arm model for the disturbance responses decoupling controller design. Through network analysis, it was shown that the performance requirements can not be achieved passively. The disturbance response decoupling controller design was performed numerically using its linearised model. The controller was then successfully implemented on the nonlinear model in AutoSim.

Chapter 10

Concluding Remarks 10.1 Main Contributions Here we summarise the main contributions of this dissertation: • A classical network theorem was employed to show that an active suspension is necessary in halfand full-car vehicle models in certain situations. Typically, these situations involved specifying a soft response from road disturbances as when a soft suspension is implemented, and a stiff response from load disturbances as when a stiff suspension is implemented. • In Chap. 4, a general theorem for disturbance response decoupling was developed, which parametrises the set of all stabilising controllers that leaves some pre-specified transfer function unchanged. For some special systems, like the vehicle models demonstrated throughout this dissertation, a simplified theorem was given so that the existing controller synthesis methods could be directly applied to the controller design. We also developed an extended theorem which allows the closed-loop responses to be further improved. Moreover, we also obtained conditions for the achievable performance of the remaining transmission paths to be left essentially unchanged after disturbance response decoupling. • In Chap. 5 we applied the theorems developed in Chap. 4 to the linear quarter-car model. The controller structures for various measurements were derived. The achievable load responses were verified and proved to be effectively the same as before the disturbance response decoupling design. In Chap. 6 we discussed the linear half-car model, and simplicity conditions which allow the design to be carried out for two separate quarter-cars. Furthermore, the achievable load responses of the half-car model were also verified to be effectively the same as before the disturbance response decoupling design. In Chap. 7 we also discussed the symmetry conditions to decompose a full-car model into two half-car models, in order to simplify the controller design. In addition, a special treatment for the warp mode was illustrated to reduce the twist of the chassis. 99

100

Concluding Remarks

• In Chap. 8 we developed an algorithm for the numerical calculation of the controller structure. Hence it is possible to apply the disturbance response decoupling controller design to complex systems . • In Chap. 3 we demonstrated the conventional solutions to the squat and dive problems of vehicles, using trailing arms. We derived the generalised trailing arm geometry for perfect anti-squat and anti-dive designs. In Chap. 9 an active suspension controller was derived numerically to decouple the road and load responses, and implemented in AutoSim. • Throughout this dissertation, AutoSim was used for simulation of vehicle models in combination with the theoretical work. This approach should be very useful for the treatment of complicated models in the future.

10.2 Direction for Future Research • In this dissertation, the left and right normalised factorisation (lnf and rnf) were defined to perform the controller parametrisation. For the vehicle models, this factorisation is in a rather simple form, and we did not encounter much difficulty in obtaining a suitable one. However, an algorithm to find a lnf and rnf would be particularly beneficial in applying the theorems to further applications. • As shown in Table 5.1, 5.2, it is noted that the shaped plant sometimes takes a particular simple form, so that the controller design would be rather simple. This would also be an interesting area for further investigation. • So far, the disturbance response decoupling techniques have been developed by Youla parametrisation, and were discussed from the transfer functions of the plant. It would be very useful to find the similar direct techniques expressed in state space form. • The disturbance response decoupling techniques developed in this dissertation focused on linear systems. It is interesting to ask if we could develop similar decoupling methods for nonlinear systems. This idea was initially explored in Chap. 4 by representing the essential controller e2 as a left annihilator of the open-loop system (Theorem 4.3). It is an open area for structure U investigation.

Appendix A

Appendix to Chapter 2 A.1

The AutoSim Linearised Quarter-Car Model

;; generate a linearised quarter-car model (reset) (si) ;(add-gravity) ;(setsym *stiff-integrator* t) (add-point ptQ :body n :coordinates (Qx 0 0) ) (add-point ptA :body n :coordinates (Ax 0 0) ) (add-point ptB :body n :coordinates (Bx 0 0) ) ;;; add sprung mass (add-body smass

:name "sprung mass"

:joint-coordinates ptQ

:cm-coordinates ptQ

:translate [nx]

:mass "ms")

(add-point smass_A :body smass :coordinates ptA) ;;; add unsprung mass (add-body umass

:name "unsprung mass"

:joint-coordinates ptB

:cm-coordinates ptB

:translate ([nx])

:mass "mu")

;;; first add the external variables (add-variables dyvars real Fs Zr) ;;; add suspension force (add-strut u

:name "suspension strut"

:point1 smass_A :point2 umasscm

:magnitude "-ks*(x-x0) -cs*v")

;;; add tyre force (add-line-force Fr

:name "tyre force"

:point1 umasscm

:direction [nx]

:magnitude "kt*(Zr- dot([nx],pos(umasscm,ptB)))" ) (add-line-force FFs :point1 smasscm

:name "force acting on sprung mass" :direction [nx]

:magnitude "Fs" ) ;(add-standard-output) (add-out "dot([nx],pos(smasscm,ptQ))" "Zs") (add-out "fm(Fr)" "Fr") (linear :u (Fs Zr)) (set-defaults mu 35 ms 250 Is 15 cs 4000 ks 12000 ;

;; soft settings

cs 40000 ks 120000 kt 150000 zr 0

Qx 0

;; hard settings Ax 0.5 Bx 0.7)

(write-to-file write-matlab "w:\\PhD\\programs\\matlab_thesis\\qcar_lin_soft.m") ;; soft settings ;(write-to-file write-matlab "w:\\PhD\\programs\\matlab_thesis\\qcar_lin_hard.m") ;; hard settings

101

102

Appendix to Chapter 2

A.2 The Passivity Analysis Based on AutoSim Models clear; %%%%%%%%% 1. load the hard suspension setteings %%%%%%%%%%%%%%%%% qcar_lin_hard;

% AutoSim linearised model with hard suspension settings

sys_hard = pck(MatrixA,MatrixB,MatrixC,MatrixD); %%%%%%%%%%%% end of step 1 %%%%%%%%%%%%%%%%%%%% %%%%%%%%% 2. load the soft suspension settings %%%%%%%%%%%%%%%%%%% qcar_lin_soft;

% AutoSim linearised model with soft suspension settings

sys_soft = pck(MatrixA,MatrixB,MatrixC,MatrixD); %%%%%%%%%%% end of step 2 %%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% 3. combine soft and hard settings %%%%%%%%%%%%%% % we want the system to be (1). soft to road inputs Zr %

(2). hard to braking force Fs

G_hard = sel(sys_hard, 1:2 , 1); G_soft = sel(sys_soft, 1:2 , 2); G_mix

= sbs(G_hard, G_soft);

%%%%%%%%%%% end of step 3 %%%%%%%%%%%%%%%%%%%%%% %%%%%%%%% 4. find the eigen values of (Z+conj(Z)) %%%%%%%%%% w

= logspace(-2,3,100);

G_v = frsp(G_mix,w); G11_v = vunpck(sel(G_v,1,1)).*j.*w’; G12_v = vunpck(sel(G_v,1,2)); G21_v = vunpck(sel(G_v,2,1)); G22_v = vunpck(sel(G_v,2,2))./j./w’; %% thasnform admitance matrix G to admittance matrix Y %% [Fs, Fr]’ = Y[Zsdot, Zrdot]’ Y11_v = vpck(1./G11_v,w); Y12_v = vpck(-G12_v./G11_v,w); Y21_v = vpck(G21_v./G11_v,w); Y22_v = vpck(vunpck(vdet(G_v))./G11_v,w); Y_v

= sbs(abv(Y11_v,Y21_v),abv(Y12_v,Y22_v));

G_v

= vpck(sbs(abv(G11_v,G21_v),abv(G12_v,G22_v)),w);

sys

= madd(Y_v , vcjt(Y_v));

sys_E = veig(sys); re1

= real(vunpck(sel(sys_E,1,1)));

re2

= real(vunpck(sel(sys_E,2,1)));

tt

= sort([re1,re2]’);

figure(3); semilogx(w,tt(1,:),w,tt(2,:)); grid; xlabel(’Frequency (rad/sec)’); ylabel(’Eigenvalues (Ns/m)’)

Appendix B

Appendix to Chapter 3 B.1 Appendix to Anti-Squat Geometry y b

a

z x T2

m s y¨

m s x¨

B

l5

T1 Ax

Bx By

Is φ¨3

Q

Ay Ay

By φ5

l4

Ax φ4

Bx

C1 y

C2 y C 2x

C 1x C 2x

m 2 y¨2 + C2 y

C 1x

I2 φ¨2

N2

T1 I1 φ¨1

m 1 y¨1 + C1 y

T2 F2

F1

N1

Figure B.1: Free-body diagram for the anti-squat design. → → → → Referring to Fig. B.1, let Q = x − x + y− y in the fixed coordinate system, where − x and − y are unit vectors parallel to the coordinate axes. We first write down the coordinates of the following points: → → A = (x + (h − x1,0 ) cos φ3 − a sin φ3 )− x + (y + (h − x1,0 ) sin φ3 + a cos φ3 )− y, → − → − B = (x + (h − x ) cos φ + b sin φ ) x + (y + (h − x ) sin φ − b cos φ ) y , 2,0

3

3

2,0

3

3

→ → C1 = (x + (h − x1,0 ) cos φ3 − a sin φ3 + l4 cos φ4 )− x + (y + (h − x1,0 ) sin φ3 + a cos φ3 + l4 sin φ4 )− y, → → C = (x + (h − x ) cos φ + b sin φ + l cos φ )− x + (y + (h − x ) sin φ − b cos φ − l sin φ )− y. 2

2,0

3

3

5

5

2,0

3

3

5

5

103

104

Appendix to Chapter 3

Now we derive the equations of motion for each element of the system: the sprung mass: m s x¨ + Ax + Bx

= 0,

(B.1)

m y y¨ + A y + B y + m s y¨ = 0,

(B.2)

−Is φ¨3 − T1 − T2 + Ax ((h − x1,0 ) sin φ3 + a cos φ3 ) − A y ((h − x1,0 ) cos φ3 − a sin φ3 ) +Bx ((h − x2,0 ) sin φ3 − b cos φ3 ) − B y ((h − x2,0 ) cos φ3 + b sin φ3 ) = 0;

(B.3)

the front trailing-arm A x + C 1x

= 0,

(B.4)

A y + C1 y

= 0,

(B.5)

−C1x l4 sin φ4 + C1 y l4 cos φ4 = 0;

(B.6)

the rear trailing-arm B x + C 2x

= 0,

(B.7)

B y + C2 y

= 0,

(B.8)

C2x l5 sin φ5 + C2 y l5 cos φ5 = 0;

(B.9)

the front wheel C1x + N1 = 0,

(B.10)

C1 y + m 1 y¨1 − F1 = 0,

(B.11)

T1 + F1r1 − I1 φ¨1 = 0;

(B.12)

C2x + N2 = 0,

(B.13)

C2 y + m 2 y¨2 − F2 = 0,

(B.14)

T2 + F2 r2 − I2 φ¨2 = 0.

(B.15)

the rear wheel

In addition there are the no-slip conditions: y1 = −r1 φ1 ,

(B.16)

y2 = −r2 φ2 .

(B.17)

B.1 Appendix to Anti-Squat Geometry

105

Geometrical constraints can also be derived from the coordinates of C1 , C2 as follows: x + (h − x1,0 ) cos φ3 − a sin φ3 + l4 cos φ4 = h − r1 ,

(B.18)

y + (h − x1,0 ) sin φ3 + a cos φ3 + l4 sin φ4 = y1 + a + y1,0 ,

(B.19)

x + (h − x2,0 ) cos φ3 + b sin φ3 + l5 cos φ5 = h − r2 ,

(B.20)

y + (h − x2,0 ) sin φ3 − b cos φ3 − l5 sin φ5 = y2 − b − y2,0 .

(B.21)

From (B.4 – B.5, B.7 – B.8, B.10 – B.11, B.13 – B.14) we can determine the forces acting on the trailing arms, and from (B.12, B.15, B.16 – B.17) we can determine the torques as: C 1x

= −Ax = −N1 ,

C 2x

= −Bx = −N2 ,

C1 y

= −A y = F1 − m 1 y¨1 ,

= −B y = F2 − m 2 y¨2 , I1 T1 = −F1r1 − y¨1 , r1 I2 T2 = −F2r2 − y¨2 . (B.22) r2 Therefore, we have nine equations (B.1–B.3, B.6, B.9, B.18–B.21) left for nine unknowns: φ3 , φ4 , φ5 , C2 y

N1 , N2 , x, y, y1 and y2 . These equations determine completely the time evolution of the trailing-arm model. It is well-known that these equations have a unique solution for given initial conditions. We now check that this unique solution corresponds to perfect anti-squat if the two anti-squat conditions (3.6), (3.8) hold: ( pMx − m 1 )(x1,0 − r1 ) − M y y1,0 = 0, ((1 − p)Mx − m 2 )(x1,0 − r2 ) − M y y2,0 = 0, where x1,0 = r1 + l4 cos φ4 (0), y1,0 = l4 sin φ4 (0), x2,0 = r2 + l5 cos φ5 (0), y2,0 = l5 sin φ5 (0). Namely, we check that the following solution: x(t) ≡ 0, y(t) ≡ y1 (t) ≡ y2 (t), φ3 (t) ≡ 0, φ4 (t) ≡ φ4 (0), φ5 (t) ≡ φ5 (0), satisfies all the equations (B.1–B.3, B.6, B.9, B.18–B.21). We substitute F1 (t) = pF(t) and F1 (t) = (1 − p)F(t) in to those equations. (B.2) gives F(t) = (m s + m 1 + m 2 ) y¨ . From (3.6) and (3.8), (B.6) and (B.9) give N1 = −M y y¨ and N2 = M y y¨ respectively, which satisfies (B.1). Substituting N1 , N2 into ((B.3) + (3.6) +(3.8)) verifies (B.3). Finally, the verification of (B.18–B.21) is obvious by the expression of x1,0 , y1,0 , x2,0 ,y2,0 given above.

106

Appendix to Chapter 3

B.2 Appendix to Anti-Dive Geometry (Outboard Braking) The derivation of the anti-dive case for the outboard braking system is similar to the anti-squat case given in the previous section. The dynamic equations are the same as (B.1–B.21) except (B.3), (B.6) and (B.9) replaced by: −Is φ¨3 + Ax ((h − x1,0 ) sin φ3 + a cos φ3 ) − A y ((h − x1,0 ) cos φ3 − a sin φ3 ) +Bx ((h − x2,0 ) sin φ3 − b cos φ3 ) − B y ((h − x2,0 ) cos φ3 + b sin φ3 ) = 0; (B.23) −C1x l4 sin φ4 + C1 y l4 cos φ4 − T1 = 0; (B.24) C2x l5 sin φ5 + C2 y l5 cos φ5 − T2 = 0, (B.25) respectively. And the forces Ax , A y , Bx , B y , C1,x , C1,y , C2,x , C2,y and torques T1 , T2 are the same as (B.22). The proof follows the same track as in the previous section. That is, the following solutions: x(t) ≡ 0, y(t) ≡ y1 (t) ≡ y2 (t), φ3 (t) ≡ 0, φ4 (t) ≡ φ4 (0), φ5 (t) ≡ φ5 (0) satisfy all the dynamic equations. Suppose the braking forces F1 (t) = q F(t) and F2 (t) = (1 − q)F(t). From (3.10) and (3.11), (B.24) and (B.25) give N1 = −M y y¨ and N2 = M y y¨ respectively. Substituting N1 , N2 into ((B.23) + (3.10) +(3.11)) verifies (B.23).

B.3 AutoSim Code of the Linearised Trailing-Arm Model ;;; linearised half-car trailing-arm model (reset) (si) (setsym *stiff-integrator* nil) ;; (add-gravity) (add-point ptQ

:coordinates (Qx

Qy

0))

(add-point ptA

:coordinates (Ax

Ay

0))

(add-point ptB

:coordinates (Bx

By

0))

(add-point ptC1 :coordinates (C1x C1y 0))

(add-point ptC2 :coordinates (C2x C2y 0))

(add-point ptD

:coordinates (Dx

Dy

0))

(add-point ptE

:coordinates (Ex

Ey

0))

(add-point ptG

:coordinates (Gx

Gy

0))

(add-point ptH

:coordinates (Hx

Hy

0))

;; add sprung mass (add-body smass

:name "spurng mass"

:joint-coordinates ptQ :cm-coordinates ptQ :body-rotation-axes z

:parent n :translate (x y)

:parent-rotation-axis z :reference-axis [nx]

:inertia-matrix (0 0 "Is")

:mass "ms")

(add-point smassA

:body smass

:coordinates ptA)

(add-point smassB

:body smass

:coordinates ptB)

;;; add trailing arms (add-body lead

:name "lead trailing arm"

:parent smass

:joint-coordinates smassA

:body-rotation-axes z

:parent-rotation-axis z

:reference-axis x

:inertia-matrix (0 0 "Ilead")

:mass "Mlead")

:name "tail trailing arm"

:parent smass

(add-body tail :joint-coordinates smassB

:body-rotation-axes z

:parent-rotation-axis z

:reference-axis x

:inertia-matrix (0 0 "Itail")

:mass "Mtail")

(add-point smassD

:body smass

(add-point smassE

:body smass

:coordinates ptD) :coordinates ptE)

(add-point leadG

:body lead

:coordinates ptG)

(add-point tailH

:body tail

:coordinates ptH)

;;; add wheels (add-body fwheel

:name "front wheel"

:parent lead

:joint-coordinates ptC1

:body-rotation-axes z

:parent-rotation-axis z

:reference-axis x

:inertia-matrix (0 0 "I1")

:mass "m1")

:name "rear wheel"

:parent tail

(add-body rwheel

B.3 AutoSim Code of the Linearised Trailing-Arm Model

:joint-coordinates ptC2

:body-rotation-axes z

:parent-rotation-axis z

:reference-axis x

:inertia-matrix (0 0 "I2")

:mass "m2")

107

;; no slide between road and tyres (add-position-constraint "(rq(smass)+rq(lead)+rq(fwheel))*r1+dot([ny],pos(fwheel0,ptC1))" :q "rq(fwheel)") (add-speed-constraint

"dot([nz],rot(fwheel))*r1+dot([ny],vel(fwheel0))" :u "ru(fwheel)" )

;; front tyre

(add-position-constraint "(rq(smass)+rq(tail)+rq(rwheel))*r2+dot([ny],pos(rwheel0,ptC2))" :q "rq(rwheel)") (add-speed-constraint

"dot([nz],rot(rwheel))*r1+dot([ny],vel(rwheel0))" :u "ru(rwheel)" )

;; rear tyre

;; add virtual roads (setsym vroad_f "dot([nx],pos(fwheel0,ptC1))") (setsym vroad_r "dot([nx],pos(rwheel0,ptC2))") ;;; 3. assign inputs ;;; (add-variables dyvars real

FFs TT3 TT1 TT2 Zr1 Zr2)

;;; 4. add loads ;;;;;;;;;;;;;;;;; (add-line-force Fload :direction [nx] (add-moment Fmom

:name "vertical load force"

:point1 smasscm

:magnitude "FFs" ) :name "rotational load torque"

:direction [nz]

:body1 smass

:magnitude "TT3")

;; apply the torques to both tyres (add-moment ftorque

:name "applied torque on front wheel"

:direction [nz]

:magnitude "TT1"

:body1 fwheel

:body2 lead)

(add-moment rtorque

;;; for inboard ‘‘:body2 smass’’

:name "applied torque on rear wheel"

:direction [nz]

:magnitude "TT2"

:body1 rwheel

:body2 tail)

;;; for inboard ‘‘:body2 smass’’

;; add passive suspensions (add-strut f_susp :point2 leadG

:point1 smassD :magnitude "-k1*(x-x0) -c1*v")

(add-strut r_susp :point2 tailH

:point1 smassE :magnitude "-k2*(x-x0) -c2*v")

;;; 5. add tyre force ;;;;;;;;;; (add-line-force Fr1 :point1 fwheelcm

:name "front tyre force" :direction [nx]

:magnitude "kt1*( Zr1 - @vroad_f ) " ) (add-line-force Fr2 :point1 rwheelcm

:name "rear tyre force" :direction [nx]

:magnitude "kt2*( Zr2 - @vroad_r ) " ) ;;; define outputs (add-out "dot([nx],pos(smasscm,ptQ))" "zs" (add-out "rq(smass)"

:body "smass" :units L)

"phi3" :body "smass" :units "rad")

(add-out "rq(lead)+rq(fwheel)" "phi14" :body "fwheel" :units "rad") ;;; for outboard ‘‘rq(fwheel)’’ (add-out "rq(tail)+rq(rwheel)" "phi25" :body "fwheel" :units "rad") ;;; for outboard ‘‘rq(rwheel)’’ (add-out "fm(Fr1)" "Fr1" :units F) (add-out "fm(Fr2)" "Fr2" :units F) (set-defaults m1 100 Mlead ms 1600

r1 0.15 0

m2 100

Ilead

Is 1000

0

r2 0.15

I1 1

Mtail

0

I2 1 Itail

0

v0 30

"tu(smass,2)" 15 Qx

0

Ax

0.1183 Ay

0 0.5035

Bx 0.6909

By -1.8099

C1x 0.35 C1y 1.3

C2x 0.35

C2y -1.3

Dx 0.1

Dy

Ex

Gx

Gy

Hx 0.35

Hy -1.3

0.1

k1 4000 ;

Qy

Ey -1.3 k2 4000

0.35

c1 1000

k1 400000 k2 400000 c1 100000 kt1 500000 kt2 500000 STOPT 10

1.3

1.3

c2 1000

;; soft settings

c2 100000

;; hard settings

STEP 0.0001 iprint 1000)

(linear :u ( FFs TT3 TT1 TT2 Zr1 Zr2)) (write-to-file write-matlab "w:\\PhD\\programs\\matlab_thesis\\trailing_out4_soft.m") ;(write-to-file write-matlab "w:\\PhD\\programs\\matlab_thesis\\trailing_out4_hard.m")

Appendix C

Appendix to Chapter 5 ### the general quarter-car model: with two measurement ############## with(linalg): exp1 := ms*sˆ2*zs-Fs+up: exp2 := mu*sˆ2*zu-Fr-up: exp1 := subs(up=(cs1*s+ks1)*(zs-zu)+(cs2*s+ks2)*(za-zu),exp1): exp2 := subs(up=(cs1*s+ks1)*(zs-zu)+(cs2*s+ks2)*(za-zu),exp2): exp1 := subs(Fr=kt*(zr-zu),exp1): exp2 := subs(Fr=kt*(zr-zu),exp2): exp1 := subs(za=zs - r*u,exp1): exp2 := subs(za=zs - r*u,exp2): exp1 := expand(exp1): exp2 := expand(exp2): L

:= matrix(2,2,0):

R

:= matrix(2,3,0):

L[1,1] := coeff(exp1,zs):

L[1,2] := coeff(exp1,zu):

R[1,1] := coeff(exp1,zr):

R[1,2] := coeff(exp1,Fs):

R[1,3] := coeff(exp1,u): L[2,1] := coeff(exp2,zs):

L[2,2] := coeff(exp2,zu):

R[2,1] := coeff(exp2,zr):

R[2,2] := coeff(exp2,Fs):

R[2,3] := coeff(exp2,u): G

:= multiply(inverse(L),-R):

d(s) := collect(det(L),s): P

:= matrix(4,3,0):

P[1,1] := simplify(G[1,1]):

P[1,2] := simplify(G[1,2]):

P[1,3] := simplify(G[1,3]): P[2,1] := simplify(G[2,1]):

P[2,2] := simplify(G[2,2]):

P[2,3] := simplify(G[2,3]): P[3,1] := simplify(P[1,1]*sˆ2):

P[3,2] := simplify(P[1,2]*sˆ2):

P[3,3] := simplify(P[1,3]*sˆ2): P[4,1] := simplify(P[1,1]-P[2,1]): P[4,2] := simplify(P[1,2]-P[2,2]): P[4,3] := simplify(P[1,3]-P[2,3]): P11 := matrix(2,2,[P[1,1],P[1,2],P[2,1],P[2,2]]): P12 := matrix(2,1,[P[1,3],P[2,3]]): P21 := matrix(2,2,[P[3,1],P[3,2],P[4,1],P[4,2]]): P22 := matrix(2,1,[P[3,3],P[4,3]]): #### calculate U2 #### T31 := submatrix(P21,1..2,1..1): U1

:= evalm(simplify(T31/sˆ2/kt/p1*d(s))):

U2

:= matrix(2,1,[0,1]):

U

:= concat(U1,U2):

Ut

:= simplify(inverse(U)):

U2t := submatrix(Ut,2..2,1..2); #### show U2P22 ### U2P22:= simplify(multiply(U2t,P22));

108

Appendix D

Appendix to Chapter 6 ### half-car model with four feedbacks with(linalg): exp1 := ms*sˆ2*zs-Fs+up1+up2: exp2 := Ip*sˆ2*zp-Fp+up1*l1-up2*l2: exp3 := m1*sˆ2*zu1-up1-Fr1: exp4 := m2*sˆ2*zu2-up2-Fr2: exp1 := subs(up1=c1*s*(zs+l1*zp-zu1)+k1*(za1-zu1),exp1): exp2 := subs(up1=c1*s*(zs+l1*zp-zu1)+k1*(za1-zu1),exp2): exp3 := subs(up1=c1*s*(zs+l1*zp-zu1)+k1*(za1-zu1),exp3): exp4 := subs(up1=c1*s*(zs+l1*zp-zu1)+k1*(za1-zu1),exp4): exp1 := subs(up2=c2*s*(zs-l2*zp-zu2)+k2*(za2-zu2),exp1): exp2 := subs(up2=c2*s*(zs-l2*zp-zu2)+k2*(za2-zu2),exp2): exp3 := subs(up2=c2*s*(zs-l2*zp-zu2)+k2*(za2-zu2),exp3): exp4 := subs(up2=c2*s*(zs-l2*zp-zu2)+k2*(za2-zu2),exp4): exp1 := subs(Fr1=kt1*(zr1-zu1),Fr2=kt2*(zr2-zu2),exp1): exp2 := subs(Fr1=kt1*(zr1-zu1),Fr2=kt2*(zr2-zu2),exp2): exp3 := subs(Fr1=kt1*(zr1-zu1),Fr2=kt2*(zr2-zu2),exp3): exp4 := subs(Fr1=kt1*(zr1-zu1),Fr2=kt2*(zr2-zu2),exp4): exp1 := subs(za1=zs+l1*zp-r*u1,za2=zs-l2*zp-r*u2,exp1): exp2 := subs(za1=zs+l1*zp-r*u1,za2=zs-l2*zp-r*u2,exp2): exp3 := subs(za1=zs+l1*zp-r*u1,za2=zs-l2*zp-r*u2,exp3): exp4 := subs(za1=zs+l1*zp-r*u1,za2=zs-l2*zp-r*u2,exp4): L

:= matrix(4,4,0):

R

:= matrix(4,6,0):

L[1,1] := coeff(exp1,zs): L[1,2] := coeff(exp1,zp): L[1,3] := coeff(exp1,zu1): L[1,4] := coeff(exp1,zu2): R[1,1] := coeff(exp1,zr1): R[1,2] := coeff(exp1,zr2): R[1,3] := coeff(exp1,Fs): R[1,4] := coeff(exp1,Fp): R[1,5] := coeff(exp1,u1): R[1,6] := coeff(exp1,u2): L[2,1] := coeff(exp2,zs): L[2,2] := coeff(exp2,zp): L[2,3] := coeff(exp2,zu1): L[2,4] := coeff(exp2,zu2): R[2,1] := coeff(exp2,zr1): R[2,2] := coeff(exp2,zr2): R[2,3] := coeff(exp2,Fs): R[2,4] := coeff(exp2,Fp): R[2,5] := coeff(exp2,u1): R[2,6] := coeff(exp2,u2): L[3,1] := coeff(exp3,zs): L[3,2] := coeff(exp3,zp): L[3,3] := coeff(exp3,zu1):

109

110

Appendix to Chapter 6

L[3,4] := coeff(exp3,zu2): R[3,1] := coeff(exp3,zr1): R[3,2] := coeff(exp3,zr2): R[3,3] := coeff(exp3,Fs): R[3,4] := coeff(exp3,Fp): R[3,5] := coeff(exp3,u1): R[3,6] := coeff(exp3,u2): L[4,1] := coeff(exp4,zs): L[4,2] := coeff(exp4,zp): L[4,3] := coeff(exp4,zu1): L[4,4] := coeff(exp4,zu2): R[4,1] := coeff(exp4,zr1): R[4,2] := coeff(exp4,zr2): R[4,3] := coeff(exp4,Fs): R[4,4] := coeff(exp4,Fp): R[4,5] := coeff(exp4,u1): R[4,6] := coeff(exp4,u2): G

:= simplify(multiply(inverse(L),-R)):

d(s) := collect(det(L),s): P

:= matrix(8,6,0):

row1

:= submatrix(G,1..1,1..6):

row2

:= submatrix(G,2..2,1..6):

row3

:= submatrix(G,3..3,1..6):

row4

:= submatrix(G,4..4,1..6):

row5

:= row1*sˆ2:

row6

:= row2*sˆ2:

row7

:= row1+l1*row2-row3:

row8

:= row1-l2*row2-row4:

P

:= stackmatrix(row1,row2,row3,row4,row5,row6,row7,row8):

P11

:= submatrix(P,1..4,1..4):

P12

:= submatrix(P,1..4,5..6):

P21

:= submatrix(P,5..8,1..4):

P22

:= submatrix(P,5..8,5..6):

#### calculate U2 #### T31 := submatrix(P21,1..4,1..2): F

:= matrix(2,2,[sˆ2/p3, 0, 0,

U1

:= evalm(simplify(multiply(T31,inverse(F)))):

sˆ2/p3]):

U2

:= matrix(4,2,[0,0,0,0,1,0,0,1]):

U

:= concat(U1,U2):

Ut

:= simplify(inverse(U)):

U1t := submatrix(Ut,1..2,1..4): U2t := submatrix(Ut,3..4,1..4); U2tP22 := simplify(multiply(U2t,P22)); #### note: #### (1). T31 has common factor of sˆ2, and degree 1 #### (2). T31 = U1 x F, where F = sˆ2/p3 * I_2 #### (3). U is unimodular by checking U1t in RH_\infty, (U2t in RH_\infty). ####

Appendix E

Appendix to Chapter 7 E.1 AutoSim Code of the Nonlinear Full-Car Model (reset) (si) (add-gravity :direction [nx]) (setsym *stiff-integrator* nil) (add-point ptQ

:coordinates (

0

0

0)) (add-point ptA1

(add-point ptA2

:coordinates (0.5

tf

Lf)) (add-point ptA3

(add-point ptA4

:coordinates (0.5

tr -Lr)) (add-point ptB1

:coordinates (0.7 -tf

(add-point ptB2

:coordinates (0.7

tf

:coordinates (0.7 -tr -Lr))

(add-point ptB4

:coordinates (0.7

tr -Lr))

Lf)) (add-point ptB3

:coordinates (0.5 -tf

Lf))

:coordinates (0.5 -tr -Lr)) Lf))

;;; 1. add sprung mass ;;;;;;;;;;; (add-body smass :cm-coordinates ptQ

:name "sprung mass"

:joint-coordinates ptQ

:translate ([nx] [ny] [nz])

:small-translations (N T N)

:body-rotation-axes (y z) :parent-rotation-axis [ny] :mass "ms"

:reference-axis [nz]

:inertia-matrix ("1000" "It" "Ip"))

(add-point smass_A1 :body smass :coordinates ptA1) (add-point smass_A2 :body smass :coordinates ptA2) (add-point smass_A3 :body smass :coordinates ptA3) (add-point smass_A4 :body smass :coordinates ptA4) ;;; 2. add unsprung masses ;;;;;;;;;;; (add-body umass1 :joint-coordinates ptB1

:name "front right unsprung mass"

:parent smass

:cm-coordinates ptB1

:translate (x )

:small-translations (N ) :mass "m1") (add-body umass2 :joint-coordinates ptB2 :small-translations (N) (add-body umass3 :joint-coordinates ptB3 :small-translations (N) (add-body umass4 :joint-coordinates ptB4

:name "front left unsprung mass"

:parent smass

:cm-coordinates ptB2

:translate (x )

:mass "m2") :name "rear right unsprung mass"

:parent smass

:cm-coordinates ptB3

:translate (x)

:mass "m3") :name "rear left unsprung mass"

:parent smass

:cm-coordinates ptB4

:translate (x)

:small-translations ( N) :mass "m4") ;;; add wheels (add-body wheel1

:name "front right wheel"

:parent umass1

:joint-coordinates umass10

:body-rotation-axes y

:parent-rotation-axis y

:reference-axis z

:inertia-matrix (0 "Iwheel" 0)

:mass "Mwheel")

:name "front left wheel"

:parent umass2

(add-body wheel2 :joint-coordinates umass20

:body-rotation-axes y

:parent-rotation-axis y

:reference-axis z

:inertia-matrix (0 "Iwheel" 0)

:mass "Mwheel")

:name "rear right wheel"

:parent umass3

(add-body wheel3 :joint-coordinates umass30

:body-rotation-axes y

:parent-rotation-axis y

:reference-axis z

:inertia-matrix (0 "Iwheel" 0)

:mass "Mwheel")

:name "rear left wheel"

:parent umass4

(add-body wheel4 :joint-coordinates umass40

:body-rotation-axes y

:parent-rotation-axis y

:reference-axis z

:inertia-matrix (0 "Iwheel" 0)

:mass "Mwheel")

;;; 3. manipulate inputs ;;; (install-table road "input profile([ny] vs. time)" :npts 1000 :deriv rp

:xunits t :yunits l

:table-function tabf :keyword Road-profile

:values ((0 0) (1 0) (1 1) (2 1) (2 0)))

111

112

Appendix to Chapter 7

;;; 4. call subroutine to calculate active controls ;;;;;;;;; (setsym zsddot "dxdt(dot([nx],vel(smass0)))") (setsym ztddot "dxdt(ru(smass,1))") (setsym zpddot "dxdt(ru(smass,2))") (setsym D1

"dot([nx],pos(smass_A1,umass1cm)) +0.2") (setsym D2

"dot([nx],pos(smass_A2,umass2cm)) +0.2")

(setsym D3

"dot([nx],pos(smass_A3,umass3cm)) +0.2") (setsym D4

"dot([nx],pos(smass_A4,umass4cm)) +0.2")

(add-variables dyvars real z1R z1pR z1p2R Ub1R Ub1d1R Ub1d2R E1R E1d1R Db1pR U1pR z2R z2pR z2p2R Ub2R Ub2d1R Ub2d2R E2R E2d1R Db2pR U2pR z3R z3pR z3p2R Uw3R Uw3d1R Uw3d2R E3R E3d1R Dw3pR U3pR z4R z4pR z4p2R Ur4R Ur4d1R Ur4d2R E4R E4d1R Dr4pR U4pR) (add-equation init &z1R

"0") (add-equation init &z1pR

"0")

(add-equation init &z1p2R

"0") (add-equation init &Ub1R

"0")

(add-equation init &Ub1d1R

"0") (add-equation init &Ub1d2R

"0")

(add-equation init &E1R

"0") (add-equation init &E1d1R

"0")

(add-equation init &Db1pR

"0") (add-equation init &U1pR

"0")

(add-equation init &z2R

"0") (add-equation init &z2pR

"0")

(add-equation init &z2p2R

"0") (add-equation init &Ub2R

"0")

(add-equation init &Ub2d1R

"0") (add-equation init &Ub2d2R

"0")

(add-equation init &E2R

"0") (add-equation init &E2d1R

"0")

(add-equation init &Db2pR

"0") (add-equation init &U2pR

"0")

(add-equation init &z3R

"0") (add-equation init &z3pR

"0")

(add-equation init &z3p2R

"0") (add-equation init &Uw3R

"0")

(add-equation init &Uw3d1R

"0") (add-equation init &Uw3d2R

"0")

(add-equation init &E3R

"0") (add-equation init &E3d1R

"0")

(add-equation init &Dw3pR

"0") (add-equation init &U3pR

"0")

(add-equation init &z4R

"0") (add-equation init &z4pR

"0")

(add-equation init &z4p2R

"0") (add-equation init &Ur4R

"0")

(add-equation init &Ur4d1R

"0") (add-equation init &Ur4d2R

"0")

(add-equation init &E4R

"0") (add-equation init &E4d1R

"0")

(add-equation init &Dr4pR

"0") (add-equation init &U4pR

"0")

(add-subroutine update fcontr2("@zsddot" "@ztddot" "@zpddot" "@D1" "@D2" "@D3" "@D4" &z1R &z1pR &z1p2R &Ub1R &Ub1d1R &Ub1d2R &E1R &E1d1R &Db1pR &U1pR &z2R &z2pR &z2p2R &Ub2R &Ub2d1R &Ub2d2R &E2R &E2d1R &Db2pR &U2pR &z3R &z3pR &z3p2R &Uw3R &Uw3d1R &Uw3d2R &E3R &E3d1R &Dw3pR &U3pR &z4R &z4pR &z4p2R &Ur4R &Ur4d1R &Ur4d2R &E4R &E4d1R &Dr4pR &U4pR dh)) ;;; 4. add suspension force ;;;;;;;; (setsym sf1 "ms*g*Lr/(Lf+Lr)/2") (setsym sf2 "ms*g*Lr/(Lf+Lr)/2") (setsym sf3 "ms*g*Lf/(Lf+Lr)/2") (setsym sf4 "ms*g*Lf/(Lf+Lr)/2")

;; static suspension forces

(setsym tyf1 "ms*g*Lr/(Lf+Lr)/2 +(m1+Mwheel)*g") (setsym tyf2 "ms*g*Lr/(Lf+Lr)/2 +(m2+Mwheel)*g") (setsym tyf3 "ms*g*Lf/(Lf+Lr)/2 +(m3+Mwheel)*g") (setsym tyf4 "ms*g*Lf/(Lf+Lr)/2 +(m4+Mwheel)*g") ;; static vertical tyre forces (add-strut

up1

:name "front right suspension strut"

:point1 wheel1cm

:point2 smass_A1

:point1 wheel2cm

:point2 smass_A2

:point1 wheel3cm

:point2 smass_A3

:point1 wheel4cm

:point2 smass_A4

:magnitude "@sf1 -k1*(x-x0) -c1*v ") ;

:magnitude "@sf1 -k1*(x-x0+E1R) -c1*v ")

(add-strut

up2

:name "front right suspension strut"

:magnitude "@sf2 -k2*(x-x0) -c2*v ") ;

:magnitude "@sf2 -k2*(x-x0+E2R) -c2*v ")

(add-strut

up3

:name "rear right suspension strut"

:magnitude "@sf3 -k3*(x-x0) -c3*v ") ;

:magnitude "@sf3 -k3*(x-x0+E3R) -c3*v ")

(add-strut

up4

:name " rear left suspension strut"

:magnitude "@sf4 -k4*(x-x0) -c4*v ") ;

:magnitude "@sf4 -k4*(x-x0+E4R) -c4*v ")

;;; 5. add tyre force ;;;;;;;;;; (add-line-force Fr1 :direction [nx] (add-line-force Fr2 :direction [nx] (add-line-force Fr3 :direction [nx] (add-line-force Fr4 :direction [nx]

:name "front right tyre force"

:point1 wheel1cm

:magnitude "-@tyf1 + kt1*( -dot([nx],pos(umass1cm,ptB1)) ) " ) :name "front left tyre force"

:point1 wheel2cm

:magnitude "-@tyf2 + kt2*( -dot([nx],pos(umass2cm,ptB2)) ) " ) :name "rear right tyre force"

:point1 wheel3cm

:magnitude "-@tyf3 + kt3*( -dot([nx],pos(umass3cm,ptB3)) ) " ) :name "front rear tyre force"

:point1 wheel4cm

:magnitude "-@tyf4 + kt4*( -dot([nx],pos(umass4cm,ptB4)) ) " )

E.1 AutoSim Code of the Nonlinear Full-Car Model

113

;;; 6. add loads ;;;;;;;;;;;;;;;;; (add-line-force Fs

:name "vertical load force"

:direction [nx]

:point1 smasscm

:magnitude "0" )

(add-moment Ttheta

:name "pitch torque"

:direction [ny]

:body1 smass

:magnitude "0")

(add-moment Tphi

:name "roll torque"

:direction [nz]

:body1 smass

:magnitude "0")

;; ;; apply the torques to both tyres ;; (install-table accetor "acceleration torque" :xunits "T"

:yunits "F*L"

(install-table braking "braking torque" :xunits "T"

:yunits "F*L"

:npts 1000

:values ((0 0) (1 1) (6 1) (6 0)) ) :npts 1000

:values ((0 0) (8 0) (9 -1) (10 -1) (11 -1)) )

(setsym z1dot "dot([nz],vel(umass10))")

;; absolute forward speed of the front right wheel

(setsym z2dot "dot([nz],vel(umass20))")

;; absolute forward speed of the front left wheel

(setsym z3dot "dot([nz],vel(umass30))")

;; absolute forward speed of the rear

right wheel

(setsym z4dot "dot([nz],vel(umass40))")

;; absolute forward speed of the rear

left wheel

(setsym t1dot "ru(wheel1)")

;; absolute forward rotational speed of the front right wheel

(setsym t2dot "ru(wheel2)")

;; absolute forward rotational speed of the front left wheel

(setsym t3dot "ru(wheel3)")

;; absolute forward rotational speed of the rear

right wheel

(setsym t4dot "ru(wheel4)")

;; absolute forward rotational speed of the rear

left wheel

(install-table TB "input profile(forward speed vs. braking torque)" :table-function tabf :npts 1000 :deriv TBp :xunits "l/t" :yunits "f*l" :keyword "braking torque-profile" :values ( (0 0) (0 1) (2 1) )) (install-table dz "dead zone" :npts 1000 :xunits "T" :yunits "F*L" :values ((0 0) (0 1) (0.01 1) (1 1))) (setsym T1 "0.2*braking(t,1,1)*TB(@t1dot,1,1)*Tbrake1*dz(abs(@t1dot),1,1)" )

;; applied torque; 0 when the forward speed equals to 0

(setsym T2 "0.2*braking(t,1,1)*TB(@t2dot,1,1)*Tbrake2*dz(abs(@t2dot),1,1)" )

;; applied torque; 0 when the forward speed equals to 0

(setsym T3 "0.2*braking(t,1,1)*TB(@t3dot,1,1)*Tbrake3*dz(abs(@t3dot),1,1)" )

;; applied torque; 0 when the forward speed equals to 0

(setsym T4 "0.2*braking(t,1,1)*TB(@t4dot,1,1)*Tbrake4*dz(abs(@t4dot),1,1)" )

;; applied torque; 0 when the forward speed equals to 0

(add-moment T1accel

:name "applied torque on front right wheel"

:magnitude "Taccel*accetor(t,1,1)" (add-moment T2accel

:magnitude "@T1" (add-moment Tbr2 :magnitude "@T2" (add-moment Tbr3 :magnitude "@T3" (add-moment Tbr4 :magnitude "@T4"

:body1 wheel2

:direction [umass3y]

:body2 smass)

:name "applied torque on rear left wheel" :body1 wheel4

:direction [umass2y]

:body2 smass)

:name "applied torque on rear right wheel" :body1 wheel3

:direction [umass1y]

:body2 smass)

:name "applied torque on front left wheel" :body1 wheel2

:direction [umass2y]

:body2 smass)

:name "applied torque on front right wheel" :body1 wheel1

:direction [umass1y]

:body2 smass)

:name "applied torque on front left wheel"

:magnitude "Taccel*accetor(t,1,1)" (add-moment Tbr1

:body1 wheel1

:direction [umass4y]

:body2 smass)

;;; add the tyre model (setsym tyv1 "dot([nz],vel(wheel10))") ;;; tyre forward velocity (setsym tyv2 "dot([nz],vel(wheel20))") (setsym tyv3 "dot([nz],vel(wheel30))") (setsym tyv4 "dot([nz],vel(wheel40))") (setsym kappa1 "-(@tyv1-rwheel*ru(wheel1))/abs(@tyv1)*100")

;;; kappa for each tyre

(setsym kappa2 "-(@tyv2-rwheel*ru(wheel2))/abs(@tyv2)*100") (setsym kappa3 "-(@tyv3-rwheel*ru(wheel3))/abs(@tyv3)*100") (setsym kappa4 "-(@tyv4-rwheel*ru(wheel4))/abs(@tyv4)*100") (add-variables dyvars real tys1 tys2 tys3 tys4)

;;; braking and accelerating tyre forces

(add-equation init &tys1

"0") (add-equation init &tys2

"0")

(add-equation init &tys3

"0") (add-equation init &tys4

"0")

114

Appendix to Chapter 7

(add-subroutine update tyre("-fm(Fr1)" @kappa1 &tys1))

;;; call subroutines to generate slip force

(add-subroutine update tyre("-fm(Fr2)" @kappa2 &tys2)) (add-subroutine update tyre("-fm(Fr3)" @kappa3 &tys3)) (add-subroutine update tyre("-fm(Fr4)" @kappa4 &tys4)) (install-table FB "input profile(forward speed vs. braking forces)" :table-function tabf

:npts 1000 :deriv FBp

:xunits "l/t" :yunits "f*l"

:keyword "braking torque-profile"

:values ((0 0) (0 1) (20 1) )) (add-line-force slip_f1 :name "front right tyre slip" :point1 wheel10

:direction [nz]

:magnitude "tys1*FB(@z1dot,1,1)")

(add-line-force slip_f2 :name "front left tyre slip" :point1 wheel20

:direction [nz]

:magnitude "tys2*FB(@z2dot,1,1)")

(add-line-force slip_f3 :name "rear right tyre slip" :point1 wheel30

:direction [nz]

:magnitude "tys3*FB(@z3dot,1,1)")

(add-line-force slip_f4 :name "rear left tyre slip" :point1 wheel40

:direction [nz]

:magnitude "tys4*FB(@z4dot,1,1)")

(add-moment slip_m1

:name "tyre slip torque on front right wheel"

:direction [wheel1y] (add-moment slip_m2

:body1 wheel1

:magnitude "-tys1*rwheel*FB(@z1dot,1,1)")

:name "tyre slip torque on front left wheel"

:direction [wheel2y] (add-moment slip_m3

:body1 wheel2

:magnitude "-tys2*rwheel*FB(@z2dot,1,1)")

:name "tyre slip torque on rear right wheel"

:direction [wheel3y] (add-moment slip_m4

:body1 wheel3

:magnitude "-tys3*rwheel*FB(@z3dot,1,1)");

:name "tyre slip torque on rear left wheel"

:direction [wheel4y]

:body1 wheel4

:magnitude "-tys4*rwheel*FB(@z4dot,1,1)")

;;; 7. measure outputs ;;;;;;;;;;; (add-out "1000*dot([nx],pos(smass0))" "1000zs") (add-out "1000*rq(smass,1)" "1000zt") (add-out "1000*rq(smass,2)" "1000zp") (add-out "1000*dot([nx],pos(umass1cm,ptB1))" "1000zu1") (add-out "1000*dot([nx],pos(umass2cm,ptB2))" "1000zu2") (add-out "1000*dot([nx],pos(umass3cm,ptB3))" "1000zu3") (add-out "1000*dot([nx],pos(umass4cm,ptB4))" "1000zu4") (add-standard-output) (add-out "fm(T1accel)+fm(Tbr1)"

"T1")

(add-out "fm(T2accel)+fm(Tbr2)"

"T2")

(add-out "fm(Tbr3)"

"T3")

(add-out "fm(Tbr4)"

"T4")

(finish) (setsym *h-file-names* (set-defaults

("sim.h" "fcontr2.h" "tyre.h"))

ms 1600

It 1000

Ip 450

c1 5000

c2 5000

c3 5000

m1 25

m2 25

k1 20000 k2 20000

k3 20000

k4 20000

Lf 1.15

tf 0.75

tr 0.75

Lr 1.35

kt1 250000

kt2 250000

m3 25

m4 25

c4 5000

kt3 250000 kt4 250000

Taccel 1000 Tbrake1 4200

Tbrake2 4200

Tbrake3 2800 Tbrake4 2800

"tu(smass,3)" 15e-4 "ru(wheel1,1)" 50e-4

"ru(wheel2,1)" 50e-4

"ru(wheel3,1)" 50e-4

"ru(wheel4,1)" 50e-4

rwheel 0.3 Mwheel 25 Iwheel 1 dh 0.00001 STOPT 15 STEP 0.00001 iprint 10000) (write-to-file write-c "w:\\PhD\\programs\\autosim_thesis\\c_programs\\fcar.c") (write-to-file write-h "w:\\PhD\\programs\\autosim_thesis\\c_programs\\sim.h")

E.2 C-Code for the Active Controller #include



#include



#include "deftypes.h" #include "simlib.h" #include "fcontr2.h" /* ---------------------------------------------------------------------------write a subroutine in C code; calculate active control in the sharp scheme

;;; *always* call it sim.h!!

E.2 C-Code for the Active Controller

115

---------------------------------------------------------------------------- */ void fcontr2(real_as zsddot, real_as ztddot, real_as zpddot, real_as D1, real_as D2, real_as D3, real_as D4, real_as *z1R, real_as *z1pR, real_as *z1p2R, real_as *Ub1R, real_as *Ub1d1R,

real_as *Ub1d2R,

real_as *E1R, real_as *E1d1R, real_as *Db1pR, real_as *U1pR, real_as *z2R, real_as *z2pR, real_as *z2p2R, real_as *Ub2R, real_as *Ub2d1R,

real_as *Ub2d2R,

real_as *E2R, real_as *E2d1R, real_as *Db2pR, real_as *U2pR, real_as *z3R, real_as *z3pR, real_as *z3p2R, real_as *Uw3R, real_as *Uw3d1R,

real_as *Uw3d2R,

real_as *E3R, real_as *E3d1R, real_as *Dw3pR, real_as *U3pR, real_as *z4R, real_as *z4pR, real_as *z4p2R, real_as *Ur4R, real_as *Ur4d1R,

real_as *Ur4d2R,

real_as *E4R, real_as *E4d1R, real_as *Dr4pR, real_as *U4pR, real_as h) { real_as b3_11, b2_11, b1_11, b0_11, a2_11, a1_11, a0_11, delta, wn; real_as b3_22, b2_22, b1_22, b0_22, a2_22, a1_22, a0_22; real_as b3_33, b2_33, b1_33, b0_33, a2_33, a1_33, a0_33; real_as b3_44, b2_44, b1_44, b0_44, a2_44, a1_44, a0_44; real_as tr, tf, lr, lf; real_as z1[2], z1p, z1p2, Ub1[2], Ub1d1[2], Ub1d2[2], Ub1d3[1],E1[2], E1d1[2], E1d2[1]; real_as z2[2], z2p, z2p2, Ub2[2], Ub2d1[2], Ub2d2[2], Ub2d3[1],E2[2], E2d1[2], E2d2[1]; real_as z3[2], z3p, z3p2, Uw3[2], Uw3d1[2], Uw3d2[2], Uw3d3[1],E3[2], E3d1[2], E3d2[1]; real_as z4[2], z4p, z4p2, Ur4[2], Ur4d1[2], Ur4d2[2], Ur4d3[1],E4[2], E4d1[2], E4d2[1]; real_as Db1[2], Db2[2], Dr1[2], Dr2[2], Dw3[2], Dr4[2]; real_as Db1d1[1], Db2d1[1], Dr4d1[1]; real_as z1d1[1], z1d2[1], z1d3[1], z2d1[1], z2d2[1], z2d3[1]; real_as z3d1[1], z3d2[1], z3d3[1], z4d1[1], z4d2[1], z4d3[1]; real_as Ur1[2], Ur2[2], U1[2], U2[2], U3[2], U4[2]; /* initialise variables */ tr

= 0.75;

tf

= 0.75;

lf

= 1.15;

lr

= 1.35;

b3_11 = -24.8061; a2_11 =

b2_11 = -4.2929e3; b1_11 = -3.6509e5; b0_11 = -7.3904e6;

210.9647; a1_11 =

b3_22 = -24.8061;

2.5073e4; a0_11 =

b2_22 = -4.2929e3; b1_22 = -3.6509e5; b0_22 = -7.3904e6;

a2_22 =

210.9647; a1_22 =

b1_33 =

-0.1036*300; b0_33 =

b3_44 = -24.8061; a2_44 = wn

1.8891e5;

2.5073e4; a0_22 = 300; a0_33 =

1.8891e5; 300;

b2_44 = -4.2929e3; b1_44 = -3.6509e5; b0_44 = -7.3904e6;

210.9647; a1_44 =

2.5073e4; a0_44 =

1.8891e5;

= 100; delta = 1/sqrt(2);

/* initialise states */ z1[0]

= *z1R;

Ub1[0]

= *Ub1R; Ub1d1[0]= *Ub1d1R; Ub1d2[0]= *Ub1d2R;

z1p

= *z1pR;

E1[0]

= *E1R;

E1d1[0] = *E1d1R;

Db1[0]

= *Db1pR;

z2[0]

= *z2R;

z2p

z2p2

= *z2p2R;

Ub2[0]

= *Ub2R; Ub2d1[0]= *Ub2d1R; Ub2d2[0]= *Ub2d2R;

E2[0]

= *E2R;

E2d1[0] = *E2d1R;

Db2[0]

= *Db2pR;

z3[0]

= *z3R;

z3p

z3p2

= *z3p2R;

Uw3[0]

= *Uw3R; Uw3d1[0]= *Uw3d1R; Uw3d2[0]= *Uw3d2R;

E3[0]

= *E3R;

E3d1[0] = *E3d1R;

Dw3[0]

= *Dw3pR;

z4[0]

= *z4R;

z4p

z4p2

= *z4p2R;

Ur4[0]

= *Ur4R; Ur4d1[0]= *Ur4d1R; Ur4d2[0]= *Ur4d2R;

E4[0]

= *E4R;

= *z2pR;

= *z3pR;

= *z4pR;

E4d1[0] = *E4d1R;

z1p2

Dr4[0]

= *z1p2R;

= *Dr4pR;

U1[0]

= *U1pR;

U2[0]

= *U2pR;

U3[0]

= *U3pR;

U4[0]

= *U4pR;

/* use Euler method to solve the differential equations */ Db1[1]

= (D1+D2)/2; Db2[1]

= (D3+D4)/2;

Dr1[1]

= (D1-D2)/2; Dr2[1]

= (D3-D4)/2;

Dw3[1]

= (tr*Dr1[1] -tf*Dr2[1])/(tf+tr);

Dr4[1]

= (Dr1[1]+Dr2[1])/(tf+tr);

/* step1: essential controller structure (U2) */ Db1d1[0]

= (Db1[1] - Db1[0])/h;

116

Appendix to Chapter 7

z1[1]

= (ms*lr*zsddot +It*ztddot +2*c1*(lr+lf)*Db1d1[0] +2*k1*(lr+lf)*Db1[0]

z1d1[0]

= (z1[1] - z1[0])/h;

z1d2[0]

= (z1[1] - 2*z1[0]+z1p)/(h*h);

z1d3[0]

= (z1[1] - 3*z1[0] + 3*z1p -z1p2)/(h*h*h);

-2*k1*(lr+lf)*z1[0])*h/(2*c1*(lr+lf)) +z1[0];

Db2d1[0]

= (Db2[1] - Db2[0])/h;

z2[1]

= (ms*lf*zsddot -It*ztddot +2*c3*(lr+lf)*Db2d1[0] +2*k3*(lr+lf)*Db2[0]

z2d1[0]

= (z2[1] - z2[0])/h;

z2d2[0]

= (z2[1] - 2*z2[0]+z2p)/(h*h);

z2d3[0]

= (z2[1] - 3*z2[0] + 3*z2p -z2p2)/(h*h*h);

z3[1]

= Dw3[1];

z3d1[0]

= (z3[1] - z3[0])/h;

z3d2[0]

= (z3[1] - 2*z3[0] + z3p)/(h*h);

z3d3[0]

= (z3[1] - 3*z3[0] + 3*z3p -z3p2)/(h*h*h);

-2*k3*(lr+lf)*z2[0])*h/(2*c3*(lr+lf)) +z2[0];

Dr4d1[0]

= (Dr4[1] - Dr4[0])/h;

z4[1]

= (Ip*zpddot +2*c1*tf*(tr+tf)*Dr4d1[0] +2*k1*tf*(tr+tf)*Dr4[0]

z4d1[0]

= (z4[1] - z4[0])/h;

z4d2[0]

= (z4[1]-2*z4[0]+z4p)/(h*h);

z4d3[0]

= (z4[1] - 3*z4[0] + 3*z4p -z4p2)/(h*h*h);

-2*k1*tf*(tr+tf)*z4[0])*h/(2*c1*tf*(tr+tf)) +z4[0];

/* step2: H_infinity controller design */ Ub1d3[0] = b3_11*(z1d3[0]) + b2_11*(z1d2[0]) + b1_11*(z1d1[0])

+ b0_11*(z1[0]) -a2_11*Ub1d2[0] - a1_11*Ub1d1[0] - a0_11*Ub1[0];

Ub1d2[1] = Ub1d2[0] + h*Ub1d3[0]; Ub1d1[1] = Ub1d1[0] + h*Ub1d2[0]; Ub1[1]

= Ub1[0]

+ h*Ub1d1[0];

Ub2d3[0] = b3_22*(z2d3[0]) + b2_22*(z2d2[0]) + b1_22*(z2d1[0])

+ b0_22*(z2[0]) -a2_22*Ub2d2[0] - a1_22*Ub2d1[0] - a0_22*Ub2[0];

Ub2d2[1] = Ub2d2[0] + h*Ub2d3[0]; Ub2d1[1] = Ub2d1[0] + h*Ub2d2[0]; Ub2[1]

= Ub2[0]

+ h*Ub2d1[0];

Uw3d1[0] = b1_33*(z3d1[0]) + b0_33*(z3[0]) - a0_33*Uw3[0]; Uw3[1]

= Uw3[0]

+ h*Uw3d1[0];

/* Uw3[1] = z3[0]; */ Ur4d3[0] = b3_44*(z4d3[0]) + b2_44*(z4d2[0])

+ b1_44*(z4d1[0])

Ur4d2[1] = Ur4d2[0] + h*Ur4d3[0]; Ur4d1[1] = Ur4d1[0] + h*Ur4d2[0]; Ur4[1]

= Ur4[0]

+ h*Ur4d1[0];

Ur1[1] =

Uw3[1] + tf*Ur4[1]; Ur2[1] = -Uw3[1] + tr*Ur4[1];

U1[1]

=

Ub1[1] + Ur1[1];

U2[1]

=

Ub1[1] - Ur1[1];

U3[1]

=

Ub2[1] + Ur2[1];

U4[1]

=

Ub2[1] - Ur2[1];

/* step3: including dynamics of the actuator */ E1d2[0] = wn*wn*U1[0] -2*delta*wn*E1d1[0] -wn*wn*E1[0]; E1d1[1] = E1d1[0] + h*E1d2[0]; E1[1]

= E1[0]

+ h*E1d1[0];

E2d2[0] = wn*wn*U2[0] -2*delta*wn*E2d1[0] -wn*wn*E2[0]; E2d1[1] = E2d1[0] + h*E2d2[0]; E2[1]

= E2[0]

+ h*E2d1[0];

E3d2[0] = wn*wn*U3[0] -2*delta*wn*E3d1[0] -wn*wn*E3[0]; E3d1[1] = E3d1[0] + h*E3d2[0]; E3[1]

= E3[0]

+ h*E3d1[0];

E4d2[0] = wn*wn*U4[0] -2*delta*wn*E4d1[0] -wn*wn*E4[0]; E4d1[1] = E4d1[0] + h*E4d2[0]; E4[1]

= E4[0]

+ h*E4d1[0];

/* step4: update states */ *z1R

= z1[1];

*Ub1R

= Ub1[1]; *Ub1d1R = Ub1d1[1]; *Ub1d2R = Ub1d2[1];

*z1pR

= z1[0];

*z1p2R

= z1p;

+ b0_44*(z4[0]) -a2_44*Ur4d2[0] - a1_44*Ur4d1[0] - a0_44*Ur4[0];

E.3 C-Code for the Tyre Model

117

*E1R

= E1[1];

*E1d1R

= E1d1[1];

*Db1pR

= Db1[1];

*z2R

= z2[1];

*z2pR

= z2[0];

*z2p2R

= z2p;

*Ub2R

= Ub2[1]; *Ub2d1R = Ub2d1[1]; *Ub2d2R = Ub2d2[1];

*E2R

= E2[1];

*E2d1R

= E2d1[1];

*Db2pR

= Db2[1];

*z3R

= z3[1];

*z3pR

= z3[0];

*z3p2R

= z3p;

*Uw3R

= Uw3[1]; *Uw3d1R = Uw3d1[1]; *Uw3d2R = Uw3d2[1];

*E3R

= E3[1];

*E3d1R

= E3d1[1];

*Dw3pR

= Dw3[1];

*z4R

= z4[1];

*z4pR

= z4[0];

*z4p2R

= z4p;

*Ur4R

= Ur4[1]; *Ur4d1R = Ur4d1[1]; *Ur4d2R = Ur4d2[1];

*E4R

= E4[1];

*E4d1R

= E4d1[1];

*Dr4pR

= Dr4[1];

*U1pR

*U2pR

*U3pR

*U4pR

= U1[1];

= U2[1];

= U3[1];

= U4[1];

}

E.3 C-Code for the Tyre Model #include



#include



#include "deftypes.h" #include "simlib.h" #include "tyre.h" /* ---------------------------------------------------------------------------write a subroutine in C code; calculate the accelerating and braking forces using magic formula ---------------------------------------------------------------------------- */ void tyre(real_as Fz, real_as kappa, real_as *Fx) { real_as a1, a2, a3, a4, a5, a6, a7, a8; real_as B, C, D, E, phi, temp; /* initialise variables */ a1 = -21.3; a2 = 1144;

a3 = 49.6;

a4 = 226;

a5 = 0.069; a6 = -0.006; a7 = 0.056; a8 = 0.486; /* use magic formula from the paper */ D

= a1*pow(Fz/1000,2) + a2*Fz/1000;

C

= 1.65;

temp = a5*Fz/1000; B

= (a3*pow(Fz/1000,2)+a4*Fz/1000)/(C*D*exp(temp));

E

= a6*pow(Fz/1000,2) + a7*Fz/1000 + a8;

phi = (1-E)*kappa +(E/B)*atan(B*kappa); *Fx = D*sin(C*atan(B*phi)); }

Appendix F

Appendix to Chapter 8 F.1 The Linearised Half-Car Double-Wishbone Model ;;; sharp scheme applied to a half-car double wishbone model (reset) (si) (setsym *stiff-integrator* nil) ;(add-gravity) (add-point ptQ :coordinates

(Qx

Qy

0))

(add-point ptrA :coordinates (rAx rAy 0)) (add-point ptlA :coordinates (lAx lAy 0)) (add-point ptrB :coordinates (rBx rBy 0)) (add-point ptlB :coordinates (lBx lBy 0)) (add-point ptrC :coordinates (rCx rCy 0)) (add-point ptlC :coordinates (lCx lCy 0)) (add-point ptrD :coordinates (rDx rDy 0)) (add-point ptlD :coordinates (lDx lDy 0)) (add-point ptrP :coordinates (rPx rPy 0)) (add-point ptlP :coordinates (lPx lPy 0)) (add-point ptrR :coordinates (rRx rRy 0)) (add-point ptlR :coordinates (lRx lRy 0)) (add-point ptrS :coordinates (rSx rSy 0)) (add-point ptlS :coordinates (lSx lSy 0)) (add-point ptrT :coordinates (rTx rTy 0)) (add-point ptlT :coordinates (lTx lTy 0)) ;;; add the sprung mass (add-body smass

:name "sprung mass"

:joint-coordinates ptQ

:cm-coordinates ptQ

:translate ([nx] [ny])

:body-rotation-axes z

:parent-rotation-axis [nz] :reference-axis [nx] :mass "ms"

:inertia-matrix (0 0 "Ip"))

(add-point smass_rA :body smass :coordinates ptrA)

(add-point smass_lA :body smass :coordinates ptlA)

(add-point smass_rB :body smass :coordinates ptrB)

(add-point smass_lB :body smass :coordinates ptlB)

(add-point smass_rR :body smass :coordinates ptrR)

(add-point smass_lR :body smass :coordinates ptlR)

;;; add the double-wishbone structure (add-body rlink3

:name "right upper wishbone link3"

:parent smass

:joint-coordinates ptrB

:cm-coordinates ptrB

:body-rotation-axes z

:parent-rotation-axis [smassz]

:reference-axis [smassx]

:mass "rm3"

:inertia-matrix (0 0 "rI3"))

(add-body rlink4

:name "right lower wishbone link4"

:parent smass

:joint-coordinates ptrA

:cm-coordinates ptrA

:body-rotation-axes z

:parent-rotation-axis [smassz]

:reference-axis [smassx]

:mass "rm4"

:inertia-matrix (0 0 "rI4"))

(add-body llink3

:name "left upper wishbone link3"

:parent smass

:joint-coordinates ptlB

:cm-coordinates ptlB

:body-rotation-axes z

:parent-rotation-axis [smassz]

:reference-axis [smassx]

:mass "lm3"

:inertia-matrix (0 0 "lI3"))

(add-body llink4

:name "left lower wishbone link4"

:parent smass

:joint-coordinates ptlA

:cm-coordinates ptlA

:body-rotation-axes z

:parent-rotation-axis [smassz]

:reference-axis [smassx]

:mass "lm4"

:inertia-matrix (0 0 "lI4"))

(add-point rlink3_rC :body rlink3 :coordinates ptrC) (add-point llink3_lC :body llink3 :coordinates ptlC) (add-point rlink4_rD :body rlink4 :coordinates ptrD) (add-point llink4_lD :body llink4 :coordinates ptlD)

118

F.1 The Linearised Half-Car Double-Wishbone Model

119

;;; add the unsprung masses (add-body rumass

:name "right unsprung mass"

:parent rlink3

:joint-coordinates ptrC

:cm-coordinates ptrP

:body-rotation-axes z

:parent-rotation-axis [rlink3z] :reference-axis [rlink3x] :mass "rmu"

:inertia-matrix (0 0 "rIu"))

(add-body lumass

:name "left unsprung mass"

:parent llink3

:joint-coordinates ptlC

:cm-coordinates ptlP

:body-rotation-axes z

:parent-rotation-axis [llink3z] :reference-axis [llink3x] :mass "lmu"

:inertia-matrix (0 0 "lIu"))

(add-point rumass_C :body rumass :coordinates ptrC) (add-point lumass_C :body lumass :coordinates ptlC) (add-point rumass_D :body rumass :coordinates ptrD) (add-point lumass_D :body lumass :coordinates ptlD) (add-point rumass_P :body rumass :coordinates ptrP) (add-point lumass_P :body lumass :coordinates ptlP) (add-point rumass_S :body rumass :coordinates ptrS) (add-point lumass_S :body lumass :coordinates ptlS) (add-point rumass_T :body rumass :coordinates ptrT) (add-point lumass_T :body lumass :coordinates ptlT) ;;; ------------------ Given the constraints of the 4-bar linkage ------------------(no-movement rlink4_rD rumass_D [ny] :q "rq(rlink3)" :u "ru(rlink3)") (no-movement rlink4_rD rumass_D [nx] :q "rq(rlink4)" :u "ru(rlink4)") (no-movement llink4_lD lumass_D [ny] :q "rq(llink3)" :u "ru(llink3)") (no-movement llink4_lD lumass_D [nx] :q "rq(llink4)" :u "ru(llink4)") ;;; define the exogenous and controlled inputs (add-variables dyvars real Zr1 Zr2 FFs FFp E1 E2) ;;; add active suspension forces (add-strut rsstrut

:name "right suspension strut"

:point1 smass_rR

:point2 rumass_S

:point1 smass_lR

:point2 lumass_S

:point1 rumass_T

:direction [nx]

:magnitude "-k2*(x-x0+E2) -c2*v") (add-strut lsstrut

:name "left suspension strut"

:magnitude "-k1*(x-x0+E1) -c1*v") ;;; add tyre forces (add-line-force rFr :name "right tyre force"

:magnitude "kt2*( Zr2 - dot([nx],pos(rumass_T,ptrT)))" ) (add-line-force lFr :name "left tyre force"

:point1 lumass_T

:direction [nx]

:magnitude "kt1*( Zr1 - dot([nx],pos(lumass_T,ptlT)))" ) ;;; add loads (add-line-force Fs

:name "load input"

:point1 smasscm

:direction [nx]

:magnitude "FFs")

(add-moment Ts

:name "moment input"

:body1 smass

:direction [nz]

:magnitude "FFp")

;;; define the outputs (add-out "dot([nx],pos(smasscm,ptQ))" "zs") (add-out "rq(smass)" "zsphi") (add-out "dot([nx], pos(lumass_P, ptlP))" "zu1") (add-out "dot([nx], pos(rumass_P, ptrP))" "zu2") ;;; define the measurement (add-out "dxdt(dot([nx],vel(smasscm,ptQ)))" "zsddot") (add-out "dxdt(ru(smass))" "zsphiddot") (add-out "mag(pos(lumass_S, smass_lR)) -sqrt((lSx-lRx)**2+(lSy-lRy)**2)" "D1") (add-out "mag(pos(rumass_S, smass_rR)) -sqrt((rSx-rRx)**2+(rSy-rRy)**2)" "D2") (linear :u (Zr1 Zr2 FFs FFp E1 E2)) (set-defaults

ms 625 Ip 170 m1 50 m2 50 c1 1000 c2 1000 k1 4000 k2 4000 kt1 500000 kt2 500000 l1 1.15 l2 1.35 rAx 0.25 rAy 1

rBx -0.05 rBy 0.94

rCx

rPx 0.2

Qx

rRx -0.25

rPy 1.5

0

Qy 0

rI3 0

rI4 0

0.15

rCy 1.4

rDx 0.25 rDy 1.4

rRy 1.04

rSx 0.2

rSy 1.4

rTx 0.35 rTy 1.5 rm3 0

rm4 0

lAx 0.25 lAy -1 lPx 0.2

rIu 0.1

lBx -0.05 lBy -0.94 lCx

lPy -1.5

rmu 50 0.15

lRx -0.25

lCy -1.4

lDx 0.25 lDy -1.4

lRy -1.04 lSx 0.2

lTx 0.35 lTy -1.5 lm3 0

lm4 0

lI3 0

lI4 0

lIu 0.1

lmu 50

hh 0.0001 STOPT 5 STEP 0.0001 iprint 1000) ;;; output the linearised model for analysis and controller design (write-to-file write-matlab "w:\\PhD\\programs\\matlab_thesis\\wb_hcar_lin4.m")

lSy -1.4

120

Appendix to Chapter 8

F.2 The Linearised Full-Car Double-Wishbone Model ;;; sharp scheme applied to double full-car wishbone model (reset) (si) (setsym *stiff-integrator* nil) ;(add-gravity) (add-point ptQ

:coordinates (Qx

Qy

Qz))

(add-point ptA1 :coordinates (A1x A1y A1z)) (add-point ptA2 :coordinates (A2x A2y A2z)) (add-point ptB1 :coordinates (B1x B1y B1z)) (add-point ptB2 :coordinates (B2x B2y B2z)) (add-point ptC1 :coordinates (C1x C1y C1z)) (add-point ptC2 :coordinates (C2x C2y C2z)) (add-point ptD1 :coordinates (D1x D1y D1z)) (add-point ptD2 :coordinates (D2x D2y D2z)) (add-point ptP1 :coordinates (P1x P1y P1z)) (add-point ptP2 :coordinates (P2x P2y P2z)) (add-point ptR1 :coordinates (R1x R1y R1z)) (add-point ptR2 :coordinates (R2x R2y R2z)) (add-point ptS1 :coordinates (S1x S1y S1z)) (add-point ptS2 :coordinates (S2x S2y S2z)) (add-point ptT1 :coordinates (T1x T1y T1z)) (add-point ptT2 :coordinates (T2x T2y T2z)) (add-point ptA3 :coordinates (A3x A3y A3z)) (add-point ptA4 :coordinates (A4x A4y A4z)) (add-point ptB3 :coordinates (B3x B3y B3z)) (add-point ptB4 :coordinates (B4x B4y B4z)) (add-point ptC3 :coordinates (C3x C3y C3z)) (add-point ptC4 :coordinates (C4x C4y C4z)) (add-point ptD3 :coordinates (D3x D3y D3z)) (add-point ptD4 :coordinates (D4x D4y D4z)) (add-point ptP3 :coordinates (P3x P3y P3z)) (add-point ptP4 :coordinates (P4x P4y P4z)) (add-point ptR3 :coordinates (R3x R3y R3z)) (add-point ptR4 :coordinates (R4x R4y R4z)) (add-point ptS3 :coordinates (S3x S3y S3z)) (add-point ptS4 :coordinates (S4x S4y S4z)) (add-point ptT3 :coordinates (T3x T3y T3z)) (add-point ptT4 :coordinates (T4x T4y T4z)) ;;; add the sprung mass (add-body smass

:name "sprung mass"

:joint-coordinates ptQ

:cm-coordinates ptQ

:translate ([nx])

:body-rotation-axes (y z)

:parent-rotation-axis [ny]

:reference-axis [nz]

:mass "ms"

:inertia-matrix ("Iyaw" "Ipitch" "Iroll"))

(add-point smass_A1 :body smass :coordinates ptA1) (add-point smass_A2 :body smass :coordinates ptA2) (add-point smass_B1 :body smass :coordinates ptB1) (add-point smass_B2 :body smass :coordinates ptB2) (add-point smass_R1 :body smass :coordinates ptR1) (add-point smass_R2 :body smass :coordinates ptR2) (add-point smass_A3 :body smass :coordinates ptA3) (add-point smass_A4 :body smass :coordinates ptA4) (add-point smass_B3 :body smass :coordinates ptB3) (add-point smass_B4 :body smass :coordinates ptB4) (add-point smass_R3 :body smass :coordinates ptR3) (add-point smass_R4 :body smass :coordinates ptR4) ;;; add the double-wishbone structure (add-body link3_1

:name "right front upper wishbone link3"

:parent smass

:joint-coordinates ptB1

:cm-coordinates ptB1

:body-rotation-axes z

:parent-rotation-axis [smassz]

:reference-axis [smassx]

:mass "lm3"

:inertia-matrix (0 0 "lI3"))

(add-body link4_1

:name "right front lower wishbone link4"

:parent smass

:joint-coordinates ptA1

:cm-coordinates ptA1

:body-rotation-axes z

:parent-rotation-axis [smassz]

:reference-axis [smassx]

:mass "lm4"

:inertia-matrix (0 0 "lI4"))

(add-body link3_2

:name "left front upper wishbone link3"

:parent smass

:joint-coordinates ptB2

:cm-coordinates ptB2

:body-rotation-axes z

:parent-rotation-axis [smassz]

:reference-axis [smassx]

:mass "lm3"

:inertia-matrix (0 0 "lI3"))

(add-body link4_2

:name "left front lower wishbone link4"

:parent smass

:joint-coordinates ptA2

:cm-coordinates ptA2

:body-rotation-axes z

:parent-rotation-axis [smassz]

:reference-axis [smassx]

:mass "lm4"

:inertia-matrix (0 0 "lI4"))

(add-body link3_3

:name "right rear upper wishbone link3"

:parent smass

:joint-coordinates ptB3

:cm-coordinates ptB3

:body-rotation-axes z

:parent-rotation-axis [smassz]

:reference-axis [smassx]

:mass "lm3"

:inertia-matrix (0 0 "lI3"))

(add-body link4_3

:name "right rear lower wishbone link4"

:parent smass

:joint-coordinates ptA3

:cm-coordinates ptA3

:body-rotation-axes z

:parent-rotation-axis [smassz]

:reference-axis [smassx]

:mass "lm4"

:inertia-matrix (0 0 "lI4"))

(add-body link3_4

:name "left rear upper wishbone link3"

:parent smass

:joint-coordinates ptB4

:cm-coordinates ptB4

:body-rotation-axes z

F.2 The Linearised Full-Car Double-Wishbone Model

:parent-rotation-axis [smassz]

:reference-axis [smassx]

:mass "lm3"

:inertia-matrix (0 0 "lI3"))

(add-body link4_4

121

:name "left rear lower wishbone link4"

:parent smass

:joint-coordinates ptA4

:cm-coordinates ptA4

:body-rotation-axes z

:parent-rotation-axis [smassz]

:reference-axis [smassx]

:mass "lm4"

:inertia-matrix (0 0 "lI4"))

(add-point link3_1C :body link3_1 :coordinates ptC1) (add-point link3_2C :body link3_2 :coordinates ptC2) (add-point link4_1D :body link4_1 :coordinates ptD1) (add-point link4_2D :body link4_2 :coordinates ptD2) (add-point link3_3C :body link3_3 :coordinates ptC3) (add-point link3_4C :body link3_4 :coordinates ptC4) (add-point link4_3D :body link4_3 :coordinates ptD3) (add-point link4_4D :body link4_4 :coordinates ptD4) ;;; add the unsprung masses (add-body umass1

:name "right front unsprung mass"

:parent link3_1

:joint-coordinates ptC1

:cm-coordinates ptP1

:body-rotation-axes z

:parent-rotation-axis [link3_1z]

:reference-axis [link3_1x]

:mass "m1"

:inertia-matrix (0 0 "I1"))

(add-body umass2

:name "left front unsprung mass"

:parent link3_2

:joint-coordinates ptC2

:cm-coordinates ptP2

:body-rotation-axes z

:parent-rotation-axis [link3_2z]

:reference-axis [link3_2x]

:mass "m2"

:inertia-matrix (0 0 "I2"))

(add-body umass3

:name "right rear unsprung mass"

:parent link3_3

:joint-coordinates ptC3

:cm-coordinates ptP3

:body-rotation-axes z

:parent-rotation-axis [link3_3z]

:reference-axis [link3_3x]

:mass "m3"

:inertia-matrix (0 0 "I3"))

(add-body umass4

:name "left rear unsprung mass"

:parent link3_4

:joint-coordinates ptC4

:cm-coordinates ptP4

:body-rotation-axes z

:parent-rotation-axis [link3_4z]

:reference-axis [link3_4x]

:mass "m4"

:inertia-matrix (0 0 "I4"))

(add-point umass1C :body umass1 :coordinates ptC1) (add-point umass2C :body umass2 :coordinates ptC2) (add-point umass1D :body umass1 :coordinates ptD1) (add-point umass2D :body umass2 :coordinates ptD2) (add-point umass1P :body umass1 :coordinates ptP1) (add-point umass2P :body umass2 :coordinates ptP2) (add-point umass1S :body umass1 :coordinates ptS1) (add-point umass2S :body umass2 :coordinates ptS2) (add-point umass1T :body umass1 :coordinates ptT1) (add-point umass2T :body umass2 :coordinates ptT2) (add-point umass3C :body umass3 :coordinates ptC3) (add-point umass4C :body umass4 :coordinates ptC4) (add-point umass3D :body umass3 :coordinates ptD3) (add-point umass4D :body umass4 :coordinates ptD4) (add-point umass3P :body umass3 :coordinates ptP3) (add-point umass4P :body umass4 :coordinates ptP4) (add-point umass3S :body umass3 :coordinates ptS3) (add-point umass4S :body umass4 :coordinates ptS4) (add-point umass3T :body umass3 :coordinates ptT3) (add-point umass4T :body umass4 :coordinates ptT4) ;;; ------------------ Given the constraints of the 4-bar linkage ------------------(no-movement link4_1D umass1D [umass1y] :q "rq(umass1)"

:u "ru(umass1)")

(no-movement link4_1D umass1D [umass1x] :q "rq(link4_1)" :u "ru(link4_1)") (no-movement link4_2D umass2D [umass2y] :q "rq(umass2)"

:u "ru(umass2)")

(no-movement link4_2D umass2D [umass2x] :q "rq(link4_2)" :u "ru(link4_2)") (no-movement link4_3D umass3D [umass3y] :q "rq(umass3)"

:u "ru(umass3)")

(no-movement link4_3D umass3D [umass3x] :q "rq(link4_3)" :u "ru(link4_3)") (no-movement link4_4D umass4D [umass4y] :q "rq(umass4)"

:u "ru(umass4)")

(no-movement link4_4D umass4D [umass4x] :q "rq(link4_4)" :u "ru(link4_4)") ;;; define the exogenous and controlled inputs (add-variables dyvars real Zr1 Zr2 Zr3 Zr4 FFs FFpitch FFroll E1 E2 E3 E4) ;;; define active suspension forces (add-strut strut1

:name "right front suspension strut"

:point1 smass_R1

:point2 umass1S

:point1 smass_R2

:point2 umass2S

:point1 smass_R3

:point2 umass3S

:point1 smass_R4

:point2 umass4S

:magnitude " -k1*(x-x0+E1) -c1*v ") (add-strut strut2

:name "left front suspension strut"

:magnitude " -k2*(x-x0+E2) -c2*v ") (add-strut strut3

:name "right rear suspension strut"

:magnitude " -k3*(x-x0+E3) -c3*v ") (add-strut strut4

:name "left rear suspension strut"

:magnitude " -k4*(x-x0+E4) -c4*v ") ;;; define the tyre forces (add-line-force Fr1

:name "right front tyre force"

:point1 umass1T

:direction [nx]

:magnitude "kt1*( Zr1 - dot([nx],pos(umass1T,ptT1)))" ) (add-line-force Fr2

:name "left front tyre force"

:point1 umass2T

:magnitude "kt2*( Zr2 - dot([nx],pos(umass2T,ptT2)))" )

:direction [nx]

122

Appendix to Chapter 8

(add-line-force Fr3

:name "right rear tyre force"

:point1 umass3T

:direction [nx]

:magnitude "kt3*( Zr3 - dot([nx],pos(umass3T,ptT3)))" ) (add-line-force Fr4

:name "left rear tyre force"

:point1 umass4T

:direction [nx]

:magnitude "kt4*( Zr4 - dot([nx],pos(umass4T,ptT4)))" ) ;;; define the loads (add-line-force Fs

:name "vertical load input"

:point1 smasscm

:direction [nx]

(add-moment Tp

:name "pitch moment input"

:body1 smass

:direction [ny]

:magnitude "FFpitch")

:magnitude "FFs")

(add-moment Tr

:name "roll moment input"

:body1 smass

:direction [nz]

:magnitude "FFroll")

;;; define the outputs (add-out "dot([nx],pos(smasscm,ptQ))" "zs") (add-out "rq(smass,1)" "zpitch") (add-out "rq(smass,2)" "zroll") (add-out "dot([nx], pos(umass1P, ptP1))" "zu1") (add-out "dot([nx], pos(umass2P, ptP2))" "zu2") (add-out "dot([nx], pos(umass3P, ptP3))" "zu3") (add-out "dot([nx], pos(umass4P, ptP4))" "zu4") ;;; define the measurements (add-out "dxdt(dot([nx],vel(smasscm)))" "zsddot") (add-out "dxdt(ru(smass,1))" "zpddot") (add-out "dxdt(ru(smass,2))" "zrddot") (add-out "sqrt( (dot([nx], pos(umass1S, smass_R1)))**2 +(dot([ny], pos(umass1S, smass_R1)))**2 +(dot([nz], pos(umass1S, smass_R1)))**2) -sqrt((S1x-R1x)**2+(S1y-R1y)**2+(S1z-R1z)**2)" "D1") (add-out "sqrt( (dot([nx], pos(umass2S, smass_R2)))**2 +(dot([ny], pos(umass2S, smass_R2)))**2 +(dot([nz], pos(umass2S, smass_R2)))**2) -sqrt((S2x-R2x)**2+(S2y-R2y)**2+(S2z-R2z)**2)" "D2") (add-out "sqrt( (dot([nx], pos(umass3S, smass_R3)))**2 +(dot([ny], pos(umass3S, smass_R3)))**2 +(dot([nz], pos(umass3S, smass_R3)))**2) -sqrt((S3x-R3x)**2+(S3y-R3y)**2+(S3z-R3z)**2)" "D3") (add-out "sqrt( (dot([nx], pos(umass4S, smass_R4)))**2 +(dot([ny], pos(umass4S, smass_R4)))**2 +(dot([nz], pos(umass4S, smass_R4)))**2) -sqrt((S4x-R4x)**2+(S4y-R4y)**2+(S4z-R4z)**2)" "D4") (linear :u (Zr1 Zr2 Zr3 Zr4 FFs FFpitch FFroll E1 E2 E3 E4)) (set-defaults

ms 625 lm3 0

Ipitch 260 lm4 0

Iroll

lI3 0

170

Iyaw

c1 500

k1 2000 kt1 250000

m1 46

I1 0.1

c2 500

k2 2000 kt2 250000

m2 46

I2 0.1

c3 500

k3 2000 kt3 250000

m3 60

I3 0.1

c4 500

k4 2000 kt4 250000

m4 60

I4 0.1

Qx

0

Qy

0

A1x 0.25 A1y -1

2000

lI4 0

Qz

0

A1z

1.5

B1x -0.05 B1y -0.94 B1z

1.5

C1x 0.15 C1y -1.4 C1z

1.5

D1x

1.5

P1x 0.2

P1y -1.5 P1z

1.5

R1x -0.25 R1y -1.04 R1z

1.5

S1x 0.2

S1y -1.4 S1z

1.5

T1x

1.5

0.25 D1y -1.4 0.35 T1y -1.5

D1z T1z

A2x 0.25 A2y

1

A2z

1.5

B2x -0.05 B2y

0.94 B2z

1.5

C2x 0.15 C2y

1.4 C2z

1.5

D2x

1.4

1.5

P2x 0.2

P2y

1.5 P2z

1.5

R2x -0.25 R2y

1.04 R2z

1.5

S2x 0.2

S2y

1.4 S2z

1.5

T2x

1.5

1.5

A3x 0.25 A3y -1

A3z -1.5

0.25 D2y 0.35 T2y

D2z T2z

B3x -0.05 B3y -0.94 B3z -1.5

C3x 0.15 C3y -1.4 C3z -1.5

D3x

P3x 0.2

P3y -1.5 P3z -1.5

R3x -0.25 R3y -1.04 R3z -1.5

S3x 0.2

S3y -1.4 S3z -1.5

A4x 0.25 A4y

1

C4x 0.15 C4y P4x 0.2

P4y

S4x 0.2

S4y

A4z -1.5

T3x

0.25 D3y -1.4 0.35 T3y -1.5

D3z -1.5 T3z -1.5

B4x -0.05 B4y

0.94 B4z -1.5

1.4 C4z -1.5

D4x

1.4

1.5 P4z -1.5

R4x -0.25 R4y

1.04 R4z -1.5

1.4 S4z -1.5

T4x

1.5

0.25 D4y 0.35 T4y

D4z -1.5 T4z -1.5

dh 0.0001 STOPT 2.5 STEP 0.0001 iprint 100) ;;; output the linearised model for analysis and controller design (write-to-file write-matlab "w:\\PhD\\programs\\matlab_thesis\\Auto_fcar_lin3.m")

Appendix G

Appendix to Chapter 9 G.1

AutoSim Code of the Nonlinear Trailing-Arm Model

(reset) (si) ;; (add-gravity) (setsym *stiff-integrator* nil) (add-point ptQ

:coordinates (Qx

Qy

0)) (add-point ptA

(add-point ptB

:coordinates (Bx

By

0)) (add-point ptC1 :coordinates (C1x C1y 0))

:coordinates (Ax

Ay

0))

(add-point ptC2 :coordinates (C2x C2y 0)) (add-point ptD

:coordinates (Dx

Dy

0))

(add-point ptE

:coordinates (Ex

Ey

0)) (add-point ptG

:coordinates (Gx

Gy

0))

(add-point ptH

:coordinates (Hx

Hy

0))

;; add sprung mass (add-body smass

:name "spurng mass"

:parent n

:joint-coordinates ptQ

:cm-coordinates ptQ

:translate (x y)

:body-rotation-axes z

:parent-rotation-axis z

:reference-axis [nx]

:inertia-matrix (0 0 "Is")

:mass "ms")

(add-point smassA

:body smass

:coordinates ptA) (add-point smassB

:body smass

:coordinates ptB)

(add-point smassD

:body smass

:coordinates ptD) (add-point smassE

:body smass

:coordinates ptE)

;;; add trailing arms (add-body lead

:name "lead trailing arm"

:parent smass

:joint-coordinates smassA

:body-rotation-axes z

:parent-rotation-axis z

:reference-axis x

:inertia-matrix (0 0 "Ilead")

:mass "Mlead")

:name "tail trailing arm"

:parent smass

(add-body tail :joint-coordinates smassB

:body-rotation-axes z

:parent-rotation-axis z

:reference-axis x

:inertia-matrix (0 0 "Itail")

:mass "Mtail")

:name "front wheel"

:parent lead

;;; add wheels (add-body fwheel :joint-coordinates ptC1

:body-rotation-axes z

:parent-rotation-axis z

:reference-axis x

:inertia-matrix (0 0 "I1")

:mass "m1")

:name "rear wheel"

:parent tail

(add-body rwheel :joint-coordinates ptC2

:body-rotation-axes z

:parent-rotation-axis z

:reference-axis x

:inertia-matrix (0 0 "I2")

:mass "m2")

(add-point leadG

:body fwheel

(add-point leadend :body lead

:coordinates ptG) (add-point tailH

:body rwheel

:coordinates ptC1) (add-point tailend :body tail

:coordinates ptH) :coordinates ptC2)

;; no slide between road and tyres (add-speed-constraint

"dot([nz],rot(fwheel))*r1+dot([ny],vel(fwheel0))" :u "ru(fwheel)" )

;; front tyre

(add-speed-constraint

"dot([nz],rot(rwheel))*r1+dot([ny],vel(rwheel0))" :u "ru(rwheel)" )

;; rear tyre

(setsym zsddot "dxdt(dot([nx],vel(smass0)))") (setsym ztddot "dxdt(ru(smass))") (setsym D1 "sqrt(dot(pos(smassD,leadG),pos(smassD,leadG)))-sqrt(dot(pos(ptD,ptG),pos(ptD,ptG)))") (setsym D2 "sqrt(dot(pos(smassE,tailH),pos(smassE,tailH)))-sqrt(dot(pos(ptE,ptH),pos(ptE,ptH)))") (add-variables dyvars real zsR

phi3R

w1R w1pR

w1p2R w2R w2pR

w2p2R

z1pR z1p2R

z1R z1d1R z1d2R U1R U1d1R U1d2R E1R E1d1R

z2pR z2p2R

z2R z2d1R z2d2R U2R U2d1R U2d2R E2R E2d1R)

123

124

Appendix to Chapter 9

(add-equation init &E1R

"0") (add-equation init &E2R

"0")

(add-equation init &zsR

"0") (add-equation init &ztR

"0")

(add-equation init &phi3R

"0") (add-equation init &w1R

"0")

(add-equation init &w1pR

"0") (add-equation init &w1p2R

"0")

(add-equation init &w2R

"0") (add-equation init &w2pR

"0")

(add-equation init &w2p2R

"0")

(add-equation init &z1pR

"0") (add-equation init &z1p2R

"0")

(add-equation init &z1R

"0") (add-equation init &z1d1R

"0")

(add-equation init &z1d2R

"0") (add-equation init &U1R

"0")

(add-equation init &U1d1R

"0") (add-equation init &U1d2R

"0")

(add-equation init &E1R

"0") (add-equation init &E1d1R

"0")

(add-equation init &z2pR

"0") (add-equation init &z2p2R

"0")

(add-equation init &z2R

"0") (add-equation init &z2d1R

"0")

(add-equation init &z2d2R

"0") (add-equation init &U2R

"0")

(add-equation init &U2d1R

"0") (add-equation init &U2d2R

"0")

(add-equation init &E2R

"0") (add-equation init &E2d1R

"0")

(add-subroutine update tcontr2("@zsddot" &zsR

"@ztddot"

&ztR

"@D1"

&w1R &w1pR

"@D2"

&w1p2R &w2R

&w2pR

&w2p2R

&z1pR &z1p2R

&z1R &z1d1R &z1d2R &U1R

&U1d1R &U1d2R &E1R &E1d1R

&z2pR &z2p2R

&z2R &z2d1R &z2d2R &U2R

&U2d1R &U2d2R &E2R &E2d1R

dh)) ;; add the conventional suspension ;; (add-strut f_susp

:point1 smassD

:point2 leadG

:magnitude "-k1*(x-x0) -c1*v ") ;

:magnitude " -k1*(x-x0+E1R) -c1*v")

(add-strut r_susp

:point1 smassE

:point2 tailH

:magnitude "-k2*(x-x0) -c2*v ") ;

:magnitude " -k2*(x-x0+E2R) -c2*v ")

;;; 5. add tyre force ;;;;;;;;;; (add-line-force Fr1

:name "front right tyre force"

:direction [nx]

:point1 fwheelcm

:magnitude "kt1*( -dot([nx],pos(fwheel0,ptC1)) ) " )

(add-line-force Fr2

:name "front left tyre force"

:direction [nx]

:point1 rwheelcm

:magnitude "kt2*( -dot([nx],pos(rwheel0,ptC2)) ) " )

;;; add load (add-line-force Fs

:name "vertical load"

:direction [nx]

:point1 smasscm

:magnitude "0" )

;; ;; apply the torques to both tyres ;; (install-table accetor "acceleration torque" :xunits "T"

:yunits "F*L"

(install-table braking "braking torque" :xunits "T"

:yunits "F*L"

:npts 1000

:values ((0 0) (1 1) (5 1) (5 0) (6 0)) ) :npts 1000

:values ((0 0) (6 0) (6 1) (14 1) (16 1)) )

(install-table TB "input profile(forward speed vs. braking torque)" :table-function tabf

:npts 1000

:keyword "braking torque-profile" (setsym t1dot "-dot([nz],rot(fwheel))")

:deriv TBp

:xunits "l/t" :yunits "f*l"

:values ((0 0) (0 1) (2 1) (3 1) (4 1)))

;; absolute forward speed of the front wheel

(setsym fwtor "braking(t,1,1)*TB(@t1dot,1,1)*(1146.66667)" ) (setsym t2dot "-dot([nz],rot(rwheel))")

;; applied torque; 0 when the forward speed equals to 0

;; absolute forward speed of the rear wheel

(setsym rwtor "braking(t,1,1)*TB(@t2dot,1,1)*(1686.66667)" ) (add-moment T2accel

:name "applied torque on rear wheel"

:magnitude "-400*accetor(t,1,1)" (add-moment T1accel

:body1 rwheel

(add-moment ftorque

:body1 fwheel :body1 rwheel

:direction [nz]

:body2 lead)

:name "applied torque on rear wheel"

:magnitude "0.5*@rwtor" (add-standard-output)

:direction [fwheelz]

:body2 smass)

:name "applied torque on front wheel"

:magnitude "0.5*@fwtor" (add-moment rtorque

:body1 fwheel

:direction [rwheelz]

:body2 smass)

:name "applied torque on rear wheel"

:magnitude "-800*accetor(t,1,1)"

;; applied torque; 0 when the forward speed equals to 0

:body2 tail)

:direction [nz]

G.2 C-Code for the Active Controller

125

(add-out "fm(t1accel)+fm(ftorque)" "T1") (add-out "fm(t2accel)+fm(rtorque)" "T2") (finish) (setsym *h-file-names* (set-defaults m1 100 Mlead ms 1600

("sim.h" "tcontr2.h")) r1 0.15 0

m2 100

Ilead

Is 1000

r2 0.15

I1 1

Mtail

0

0

I2 1 Itail

0

v0 30

"tu(smass,2)" 15e-4 Qx

0

Ax

0.15 Ay

Qy

0 0.6126

Bx 0.15

By -1.0008

C1x 0.35 C1y 1.3

C2x 0.35

C2y -1.3

Dx 0.1

Dy

Ex

Gx

Gy

Hx 0.35

Hy -1.3

0.1

Ey -1.3

0.35

k1 40000 k2 40000 c1 10000

1.3

c2 10000

STOPT 12 STEP 0.0001 iprint 500

1.3

kt1 500000 kt2 500000

dh 0.0001)

(write-to-file write-c "w:\\PhD\\programs\\autosim_thesis\\c_programs\\trailing.c") (write-to-file write-h "w:\\PhD\\programs\\autosim_thesis\\c_programs\\sim.h")

G.2

C-Code for the Active Controller

#include



#include



;;; *always* call it sim.h!!

#include "deftypes.h" #include "simlib.h" #include "tcontr2.h" /* ---------------------------------------------------------------------------write a subroutine in C code; calculate active control in the sharp scheme ---------------------------------------------------------------------------- */ void tcontr2(real_as zsddot, real_as ztddot, real_as D1, real_as D2, real_as *zsR,

real_as *ztR,

real_as *w2R,

real_as *w2pR,

real_as *w1R,

real_as *w1pR,

real_as *w1p2R,

real_as *w2p2R,

real_as *z1pR, real_as *z1p2R,

real_as *z1R,

real_as *U1R,

real_as *U1d2R,

real_as *E1R,

real_as *z2pR, real_as *z2p2R,

real_as *z2R,

real_as *z2d1R, real_as *z2d2R,

real_as *U2R,

real_as *U2d2R,

real_as *E2R,

real_as *U1d1R, real_as *U2d1R,

real_as *E2d1R,

real_as *z1d1R, real_as *z1d2R, real_as *E1d1R,

real_as h)

{ real_as b3_11, b2_11, b1_11, b0_11, b3_12, b2_12, b1_12, b0_12; real_as a2_11, a1_11, a0_11, delta, wn; real_as b3_21, b2_21, b1_21, b0_21, b3_22, b2_22, b1_22, b0_22; real_as a2_22, a1_22, a0_22; real_as zs[2], p3[2]; real_as y1d1, y2d1, w1d1[1], w1d2[1], w1d3[1], w2d1[1], w2d2[1], w2d3[1]; real_as w1[2], w1p, w1p2, w2[2], w2p, w2p2; real_as z1p, z1p2, z1[2], z1d1[2], z1d2[2], z1d3[1]; real_as z2p, z2p2, z2[2], z2d1[2], z2d2[2], z2d3[1]; real_as U1[2], U1d1[2], U1d2[2], U1d3[1], E1[2], E1d1[2], E1d2[1]; real_as U2[2], U2d1[2], U2d2[2], U2d3[1], E2[2], E2d1[2], E2d2[1]; /* initialise variables */ b3_11 = -1.1576;

b2_11 = -5.7234e3;

b1_11 = -3.8177e5;

b0_11 = -8.0420e6;

b3_12 = -5.3166;

b2_12 = -423.6377;

b1_12 = -1.5119e4;

b0_12 =

8.8098e3;

8.8200e4;

a2_11 =

307.7456; a1_11 =

b3_21 = -4.9241;

a0_11 =

7.5547e4;

126.7700;

b1_21 = -2.9504e4;

b0_21 =

b3_22 = -22.6155; b2_22 = -4.5931e3;

b1_22 = -2.9521e5;

b0_22 = -5.2791e6;

a2_22 =

a0_22 =

wn

b2_21 =

3.6067e4;

211.6167;a1_22 =

= 100;

2.4511e4;

4.9896e4;

delta = 0.5;

/* initialise states */ zs[0]

= *zsR;

zs[1]

= zsddot;

p3[0]

= *ztR;

p3[1]

= ztddot;

w1[0]

= *w1R;

w1p

= *w1pR;

w1p2

= *w1p2R;

w2[0]

= *w2R;

w2p

= *w2pR;

w2p2

= *w2p2R;

z1p

= *z1pR;

z1p2

= *z1p2R;

z1[0]

= *z1R;

z1d1[0] = *z1d1R;

U1[0]

= *U1R;

U1d1[0] = *U1d1R;

U1d2[0] = *U1d2R; E1[0]

= *E1R;

E1d1[0] = *E1d1R;

z2p

= *z2pR;

126

z2p2

Appendix to Chapter 9

= *z2p2R; z2[0]

= *z2R;

U2d1[0] = *U2d1R; U2d2[0] = *U2d2R;

z2d1[0] = *z2d1R;

U2[0]

E2[0]

E2d1[0] = *E2d1R;

= *E2R;

= *U2R;

/* use Euler method to solve the differential equations */ /* step1: essential controller structure (U2) (W = U2* Y) */ y1d1

= (zsddot-zs[0])/h;

y2d1

= (ztddot-*ztR)/h;

z1d2[0] = 0.0788*y1d1 + 0.3026*zs[0] -0.0385*y2d1 -0.1437*p3[0] -7.7537*z1d1[0] -15.0193*z1[0]; z2d2[0] = 0.0766*y1d1 + 0.3068*zs[0] +0.0356*y2d1 +0.1401*p3[0] -7.7537*z2d1[0] -15.0193*z2[0]; z1d1[1] = z1d1[0] +z1d2[0]*h;

z1[1]

= z1[0]

+z1d1[0]*h;

z2d1[1] = z2d1[0] +z2d2[0]*h;

z2[1]

= z2[0]

+z2d1[0]*h;

w1[1]

= z1[1] - D1; w2[1]

w1d1[0] = (w1[1]-w1[0])/h;

= z2[1] - D2; w1d2[0] = (w1[1]-2*w1[0]+w1p)/(h*h);

w1d3[0] = (w1[1]-3*w1[0]+3*w1p-w1p2)/(h*h*h); w2d1[0] = (w2[1]-w2[0])/h;

w2d2[0] = (w2[1]-2*w2[0]+w2p)/(h*h);

w2d3[0] = (w2[1]-3*w2[0]+3*w2p-w2p2)/(h*h*h); /* step2: H_infinity controller design */ U1d3[0] = b3_11*w1d3[0] + b2_11*w1d2[0] + b1_11*w1d1[0]

+ b0_11*w1[0]

+b3_12*w2d3[0] + b2_12*w2d2[0] + b1_12*w2d1[0]

+ b0_12*w2[0]

-a2_11*U1d2[0] - a1_11*U1d1[0] - a0_11*U1[0]; U1d2[1] = U1d2[0] + h*U1d3[0]; U1d1[1] = U1d1[0] + h*U1d2[0]; U1[1]

= U1[0]

+ h*U1d1[0];

U2d3[0] = b3_21*w1d3[0] + b2_21*w1d2[0] + b1_21*w1d1[0]

+ b0_21*w1[0]

+b3_22*w2d3[0] + b2_22*w2d2[0] + b1_22*w2d1[0]

+ b0_22*w2[0]

-a2_22*U2d2[0] - a1_22*U2d1[0] - a0_22*U2[0]; U2d2[1] = U2d2[0] + h*U2d3[0]; U2d1[1] = U2d1[0] + h*U2d2[0]; U2[1]

= U2[0]

+ h*U2d1[0];

/* step3: including dynamics of the actuator */ E1d2[0] = wn*wn*U1[0] -2*delta*wn*E1d1[0] -wn*wn*E1[0]; E1d1[1] = E1d1[0] + h*E1d2[0]; E1[1]

= E1[0]

+ h*E1d1[0];

E2d2[0] = wn*wn*U2[0] -2*delta*wn*E2d1[0] -wn*wn*E2[0]; E2d1[1] = E2d1[0] + h*E2d2[0]; E2[1]

= E2[0]

+ h*E2d1[0];

/* step4: update states */ *zsR

= ztddot; *w1R

= w1[1];

*w1pR

*w1p2R = w1p;

= zsddot; *ztR *w2R

= w2[1];

*w2pR

= w2[0];

*w2p2R = w2p;

*z1p2R = z1p;

*z1pR

= z1[0];

*z1R

= z1[1];

*z1d1R = z1d1[1];

*U1R

*U1d1R = U1d1[1];*U1d2R = U1d2[1];*E1R

= U1[1];

*E1d1R = E1d1[1];*z2p2R = z2p; *z2R

= z2[1];

*z2d1R = z2d1[1];*U2R

*U2d2R = U2d2[1];*E2R *z2d2R = p3[0]; }

*z2pR

= E2[1];

= w1[0];

= E1[1];

= z2[0]; = U2[1];

*U2d1R = U2d1[1];

*E2d1R = E2d1[1]; *z1d2R = ztddot;

Bibliography [1] R. Ayres. Thrust ssc environmental testing. Environmental Engineering, 9(2):28–30, June, 1996. [2] E. Bakker, L. Nyborg, and H.B. Pacejka. Tyre modelling for use in vehicle dynamics studies. Society of Automotive Engineerings Transactions, 96(2):190–204, 1988. [3] D. Bastow. Car Suspension and Handling. Pentech Press, 1980. [4] R.K. Brayton. Nonlinear reciprocal networks in mathematical aspects of electrical network analysis. SIAM-AMS Proceedings, pages 1–15, 1971. [5] C. Campbell. Automobile Suspensions. Chapman and Hall, 1981. [6] W.C. Char et al. First Leaves: A Tutorial Introduction to Maple V. Springer-Verlag, 1992. [7] D.A. Crolla and A.M.A. Aboul Nour. Theoretical comparisons of various active suspension systems in terms of performance and power requirements. Proceedings of IMecE Conference on Advanced Suspensions, C420/88:1–9, 24–25 October 1988. [8] J.C. Dixon. Tyres, Suspension and Handling. Cambridge University Press, first edition, 1991. [9] R.J. Dorling. Integrated Control of Road Vehicle Dynamics. PhD thesis, Cambridge University, April 1996. [10] B.A. Francis. A Course in H∞ Control Theory. Lecture Notes in Control and Information Sciences, Springer-Verlag Berlin, Heidelberg, 1987. [11] W. Harman and D. Lytle. Electrical and Mechanical Networks. McGraw-Hill, 1962. [12] K. Hayakawa, K. Matsumoto, M. Yamashita, Y. Suzuki, K. Fujimori, and H. Kimura. Robust h∞ feedback control of decoupled automobile active suspension systems. IEEE Transactions on Automat. Contr., 44(2):392–396, 1999. [13] J.K. Hedrick and T. Butsuen. Invariant properties of automotive suspensions. Proc. Instn. Mech. Engrs. part D: Journal of automobile engineering, 204:21–27, 1990. [14] D. Hrovat. A class of active lqg optimal actuators. Automatica, 18:117–119, 1982. 127

128

BIBLIOGRAPHY

[15] D. Hrovat and M. Hubbard. Optimal vehicle suspensions minimizing rms rattlespace, sprungmass acceleration and jerk. Trans. of the ASME, 103:228–236, 1981. [16] D. Karnopp. Theoretical limitations in active suspension. Vehicle system Dynamics, 15:41–54, 1986. [17] K.M. Malek and J.K. Hedrick. Decoupled active suspension design for improved automotive ride quality/handling performance. Supplement to Vehicle System Dynamics, 15:383–398, 1986. [18] D.C. McFarlane and K. Glover. Robust Control Design Using Normalized Coprime Factor Plant Descriptions. Lecture Notes in Control and Information Sciences, Springer-Verlag Berlin, Heidelberg, 1987. [19] T. Meller. Self-energising, hydropneumatic levelling systems. SAE papers 780052, 1978. [20] P.E. Mercier. Vehicle suspensions - a theory and analysis that accord with experiment. The Automobile Engineer, 32:405–410, 1942. [21] N.M. Morris. Electrical Circuit Analysis and Design. MacMillan Press, first edition, 1993. [22] R.W. Newcomb. Linear Multiport synthesis. McGraw-Hill, 1966. [23] K. Park and J.J. Bongiorno, Jr. Wiener-hopf design of servo-regulator-type multivariable control systems including feedforward compensation. International Journal of Control, 52(5):1189– 1216, 1990. [24] R. Pitcher, H. Hillel, and C.H. Curtis. Hydraulic suspensions with particular reference to public service vehicles. In Public Service Vehicles Conference. Mechanical Engineering Publications, 1977. [25] R.S. Sharp. The application of multi-body computer codes to road vehicle dynamics modelling problems. Proc. Instn. Mech. Engrs., Part D: Journal of Automobile Engineering, 208(1):55–61, 1994. [26] R.S. Sharp. Influences of suspension kinematics on pitching dynamics of cars in longitudinal manoeuvring. Vehicle System Dynamics Supplement, 33:23–36, 1999. [27] R.S. Sharp and S.A. Hassan. The relative performance capabilities of passive, active and semiactive car suspension systems. Proc. Instn. Mech. Engrs., 200:219–228, 1986. [28] R.S. Sharp and S.A. Hassan. On the performance capabilities of active automobile suspension systems of limited bandwidth. Vehicle System Dynamics, 16:213–225, 1987. [29] J.L. Shearer, A.T. Murphy, and H.H. Richardson. Introduction to system dynamics. AddisonWesley, 1967.

BIBLIOGRAPHY

129

[30] K.C.A. Smith and R.E. Alley. Electrical Circuits. Cambridge University Press, first edition, 1992. [31] M.C. Smith. Achievable dynamic response for automotive active suspension. Vehicle System Dynamics, 24:1–33, 1995. [32] M.C. Smith and G.W. Walker. Performance limitations and constraints for active and passive suspension: a mechanical multi-port approach. Vehicle System Dynamics, 33:137–168, 2000. [33] M.C. Smith and F-C. Wang. Controller parametrisation for disturbance response decoupling: Application to vehicle active suspension control. Proceedings of the 40th IEEE Conference on Decision and Control, Orlando, Florida, 2001. [34] M.C. Smith and F-C. Wang. Controller parametrisation for disturbance response decoupling: Application to vehicle active suspension control. IEEE Transactions on Control Systems Technology, to be published, 2001. [35] A.G. Thompson. Design of active suspensions. Proc. Instn. Mech. Engrs., 185:553–563, 1970– 1971. [36] M. Vidyasagar. Control System Synthesis: A Factorisation Approach. The MIT Press, 1985. [37] G.W. Walker. Constraints upon the Achievable Performance of Vehicle Suspension Systems. PhD thesis, Cambridge University, December 1997. [38] F-C. Wang and M.C. Smith. Active and passive suspension control for vehicle dive and squat. Automotive Control Workshop, Lund, Sweden, May 18-19, 2001. [39] R.A. Williams and A. Best. Control of a low frequency active suspension. IEE Control ’94, Conference Publication, 1(389):338–343, 1994. [40] R.A. Williams, A. Best, and I.L. Crawford. Refined low frequency active suspension. Int. Conf. on Vehicle Ride and Handling, Proc. ImechE, C466/028:285–300, 1993. [41] P.G. Wright and D.A. Williams. The application of active suspension to high performance road vehicles. Proceedings of IMecE Conference on Microprocessors in fluid power engineering, Mechanical Engineering Publications, London, C239/84:23–28, 1984. [42] P.G. Wright and D.A. Williams. The case for an irreversible active suspension system. SAE Transactions, J. of Passenger Cars, Sect. 6,, pages 83–90, 1989. [43] D.C. Youla and J.J. Bongiorno, Jr. A feedback theory of two-degree-of-freedom optimal wienerhopf design. IEEE Transactions, Automat. Contr., AC-30:652–665, 1985.

130

BIBLIOGRAPHY

[44] D.C. Youla, H.A. Jabr, and J.J. Bongiorno, Jr. Modern wiener-hopf design of optimal controllers – part ii: The multivariable case. IEEE Transactions, Automat. Contr., AC-21:319–338, 1976. [45] K. Zhou, J.C. Doyle, and K. Glover. Robust and Optimal Control. Prentice-Hall, 1996.

Suggest Documents