You are on page 1of 148

Design and Synthesis of Active and Passive Vehicle Suspensions

Fu-Cheng Wang
Queens College

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 rst 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-specied closed-loop transfer function xed. To facilitate the parametrisation at the required level of generality we dene 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 nancially, helps me concentrate on my research work in Cambridge. This work has been nancially 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 qualication 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 Acknowledgements Notation and Acronyms 1 Introduction 1.1 1.2 1.3 1.4 1.5 2 Passive Suspensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Active Suspensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controller Parametrisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Outline of the Dissertation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Software Used in This Dissertation . . . . . . . . . . . . . . . . . . . . . . . . . . . i iii xiii 1 1 2 3 3 5 7 7 7 8 10 10 11 12 14 15 17 17 19 19 22 25
v

Necessity of Active Suspension A Network Approach 2.1 Network Theorems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 2.1.2 2.2 2.2.1 2.2.2 2.3 2.4 2.5 Mechanical-Electrical Analogy . . . . . . . . . . . . . . . . . . . . . . . . Network and Passivity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Hand Derivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Computational Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

The Half-Car Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Full-Car Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Summary and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Analysis and Design for the Trailing-Arm Model 3.1 3.2 The Trailing-Arm Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anti-Squat and Anti-Dive Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 3.2.2 3.3 Anti-Squat Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anti-Dive Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

vi

CONTENTS

3.4 3.5 3.6

Comparison with the Work of Sharp [26] . . . . . . . . . . . . . . . . . . . . . . . . Passivity Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Summary and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26 27 30 31 31 34 41 44 46 49 49 54 56 57 57 58 58 59 60 61 61 64 65 66 66 67 68 68 69 71 71 73 73 74 75

4 Controller Parametrisation for Disturbance Response Decoupling 4.1 4.2 4.3 4.4 4.5 Normalrank Factorisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controller Parametrisation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . Design Freedom and Achievable Performance . . . . . . . . . . . . . . . . . . . . . Numerical Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Summary and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 Disturbance Response Decoupling for The Quarter-Car Model 5.1 5.2 5.3 5.4 The Quarter-Car with Two Measurements . . . . . . . . . . . . . . . . . . . . . . . The Quarter-Car with Three Measurements . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Alternative Controller Structures . . . . . . . . . . . . . . . . . . . . . . . . Quarter-Car Control Structures and Design . . . . . . . . . . . . . . . . . . . . . . . Achievable Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.1 5.4.2 5.5 5.6 Two Measurement Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . Three Measurement Case . . . . . . . . . . . . . . . . . . . . . . . . . . . .

A General Quarter-Car Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Summary and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6 Disturbance Response Decoupling for The Half-Car Model 6.1 6.2 6.3 6.4 The Half-Car Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Achievable Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Decoupling by Simplicity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rened Design for The Half-Car Model . . . . . . . . . . . . . . . . . . . . . . . . 6.4.1 6.4.2 6.4.3 6.4.4 6.5 Controller Structure of Design for Fs . . . . . . . . . . . . . . . . . . . . . Controller Structure of Design for F . . . . . . . . . . . . . . . . . . . . . The Relation Between the Controller Structures . . . . . . . . . . . . . . . . Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

7 Disturbance Response Decoupling for The Full-Car Model 7.1 7.2 The Dynamic Equations 7.2.1 7.2.2 7.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Symmetric Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bounce/Pitch Half-Car . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Roll/Warp Half-Car . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

CONTENTS

vii

7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 8

Bounce/Pitch Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Roll Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Warp Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The Full-Car Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vehicle Dynamics Simulations . . . . . . . . . . . . . . . . . . . . . . . . .

77 77 78 80 82 82 85 85 89 91 92 93 95 95 96 97 98 99 99

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

Numerical Calculation of the Controller Structure 8.1 8.2 The Half-Car Double-Wishbone Model . . . . . . . . . . . . . . . . . . . . . . . . The Full-Car Double-Wishbone Model . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.1 8.2.2 8.3 Special Treatment for the Warp Mode . . . . . . . . . . . . . . . . . . . . . Nonlinear Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . .

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

Active Suspension Design for the Trailing-Arm Model 9.1 9.2 9.3 9.4 Controller Design for Disturbance Response Decoupling . . . . . . . . . . . . . . . Network Analysis of the Active Trailing-Arm Models . . . . . . . . . . . . . . . . . Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Summary and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

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 D Appendix to Chapter 6 E Appendix to Chapter 7 108 109 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 F.1 F.2 118

The Linearised Half-Car Double-Wishbone Model . . . . . . . . . . . . . . . . . . 118 The Linearised Full-Car Double-Wishbone Model . . . . . . . . . . . . . . . . . . . 120 123

G Appendix to Chapter 9

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 2.2 2.3 2.4 2.5 2.6 2.7 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.1 4.2 4.3 4.4 5.1 5.2 5.3 5.4 5.5 5.6 5.7 A n-port network. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The quarter-car model, and as a two-port network. . . . . . . . . . . . . . . . . . . . Eigenvalues of (Y + Y )( j ) for the quarter-car model. . . . . . . . . . . . . . . . . The half-car model, and as a four-port network. . . . . . . . . . . . . . . . . . . . . Eigenvalues of (Y + Y )( j ) for the half-car model. . . . . . . . . . . . . . . . . . The full-car model, and as a seven-port network. . . . . . . . . . . . . . . . . . . . . Eigenvalues of (Y + Y )( j ) for the full-car model. . . . . . . . . . . . . . . . . . A half-car trailing-arm model with passive suspensions. . . . . . . . . . . . . . . . . Squat and dive motions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anti-squat design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Anti-dive design (outboard braking). . . . . . . . . . . . . . . . . . . . . . . . . . . Anti-squat/anti-dive design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simplied trailing-arm geometry: (a) anti-squat; (b) anti-dive with outboard braking. Compromised anti-squat/anti-dive geometry. . . . . . . . . . . . . . . . . . . . . . . The passivity analysis of the half-car trailing-arm model with outboard braking. . . . The passivity analysis of the half-car trailing-arm model with outboard braking (2). . Generalised model in LFT form. . . . . . . . . . . . . . . . . . . . . . . . . . . . . General controller structure and equivalent controller. . . . . . . . . . . . . . . . . . Controller structure as a left annihilator. . . . . . . . . . . . . . . . . . . . . . . . . Classical feedback interconnection. . . . . . . . . . . . . . . . . . . . . . . . . . . . The quarter-car model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controller structure for the quarter-car with two feedbacks. . . . . . . . . . . . . . . Passive suspension (Q 1 = 0, solid) and active suspension (Q 1 = 1.08, dashed). . . . Controller structure of R.A. Williams et al. . . . . . . . . . . . . . . . . . . . . . . . Controller structure for the quarter-car with three feedbacks. . . . . . . . . . . . . . A general quarter-car model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 10 12 13 14 15 16 18 19 20 22 24 25 28 29 29 34 38 39 41 50 52 52 54 56 59
ix

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

LIST OF FIGURES

6.1 6.2 6.3 6.4 7.1 7.2 7.3 7.4 7.5 7.6 7.7

The half-car model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controller structure for the half-car model. . . . . . . . . . . . . . . . . . . . . . . . Step responses of TFs s and TF : passive (solid) and active control (dashed). . . z z Closed-loop step responses using various controllers. . . . . . . . . . . . . . . . . . The full-car model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Control scheme for the full-car model. . . . . . . . . . . . . . . . . . . . . . . . . . The warp quarter-car. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Final controller structure for the full-car model. . . . . . . . . . . . . . . . . . . . . Step responses using active and passive suspensions. . . . . . . . . . . . . . . . . . Response of z u 1 to a step input of 1 cm at zr1 for AutoSim model. . . . . . . . . . . . Anti-dive and anti-squat effect in AutoSim model using active suspension (dashed), compared with passive suspension (solid). . . . . . . . . . . . . . . . . . . . . . . .

62 63 64 69 72 76 79 80 81 82 83 86 87 89 92

8.1 8.2 8.3 8.4 8.5 9.1 9.2

The half-car double-wishbone model. . . . . . . . . . . . . . . . . . . . . . . . . . Step responses for linearised model of TFs s and TF z z . . . . . . . . . . . . . .

Step responses for the linearised model of TFs s and TF with various controllers. 88 z z The full-car double-wishbone model. . . . . . . . . . . . . . . . . . . . . . . . . . . AutoSim nonlinear simulations: step responses of TFs s , TT and TT . . . . . z z z

The passivity analyses for (a): acceleration (or inboard braking); (b): outboard braking. 96 (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 2.2 5.1 5.2 Mechanical-electrical analogy force-current. . . . . . . . . . . . . . . . . . . . . . Mechanical-electrical analogy force-voltage. . . . . . . . . . . . . . . . . . . . . . The U2 structures and the transformed plants of the quarter-car model with various measurements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The U2 structures and the transformed plants of the general quarter-car model with various measurements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 7.1 7.2 Decoupled half-car by simplicity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Decoupled (symmetric) full-car. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Decoupled roll and warp modes of the full-car by simplicity. . . . . . . . . . . . . . 57 60 66 74 75 8 8

xi

Notation and Acronyms


Notations RH RHmn R C Q N, M N, M () ()
m

Set of stable and norm-bounded real-rational functions. Set of matrices with m rows and n columns, and all elements in RH . Set of real column vectors with m entries. Set of complex numbers. Youla parameter. Right coprime factorisation matrices. Left coprime factorisation matrices.
H -norm.

(A)

Largest singular value of matrix A. Transpose operator. Complex conjugate transpose operator. Laplace transform of functions w(t), z(t). Sprung mass. Unsprung masses. Suspension spring stiffnesses. Suspension damper damping ratios. Tyre spring stiffnesses. Controlled input. Measured output. Exogenous input. Regulated output. Strut deection. Generalised plant. Controller. Transfer function. Immitance matrix. Admittance matrix.

w, z ms m u , m 1, m 2, m 3, m 4, m f , mr k s , k 1 , k 2 , k 3 , k 4 , k f , kr cs , c1 , c2 , c3 , c4 , c f , cr kt , kt1 , kt2 , kt3 , kt4 , kt f , ktr u y w z D P K T G Y

xiii

xiv

NOTATION AND ACRONYMS

Z F A, B Subscripts b, b f , br f , r bp roll war p Acronyms SISO LFT lnf rnf

Impedance matrix. Force. Sets of proper, stable transfer matrices.

Bounce and rotation components in half-car model. Front and rear bounce components in full-car model. Front and rear roll components in full-car model. Bounce/pitch component in full-car model. Roll component in full-car model. Warp component in full-car model.

Single Input Single Output. Linear Fractional Transformation. Left Normalrank Factorisation. Right Normalrank Factorisation.

Chapter 1

Introduction
Suspension systems have been widely applied to vehicles, from the horse-drawn carriage with exible leaf springs xed 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 deection. 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 rene 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

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 signicantly greater freedom to optimise among the variety of performance specications. 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 ltered 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 nding in

1.3 Controller Parametrisation

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-specied closed-loop transfer function xed, 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 (Denition 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.

Introduction

Chapter 4: This chapter develops the general theorem for disturbance response decoupling, which improves the closed-loop responses while keeping some pre-specied transmission paths unchanged. A simplied 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 rened 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 signicant 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 exemplied 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 nal 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 difcult 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 signicantly 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

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 denes 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 rst 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

Necessity of Active Suspension A Network Approach

Mechanical Force Displacement Velocity Mass Spring rate Damping rate Power

Electrical

F x v m k c F v

Current Voltage Capacitance Inductance Resistance Power

i V C
1 L 1 R

V i

Table 2.1: Mechanical-electrical analogy force-current.

Mechanical Force Displacement Velocity Mass Spring rate Damping rate Power

Electrical

F x v m k c F v

Voltage Charge Current Inductance Capacitance Resistance Power

V q i L
1 C

R V i

Table 2.2: Mechanical-electrical analogy force-voltage.

2.1.2 Network and Passivity


i1 V1 i2 V2 i3 V3 n-port network i4 . . . . . . in V4

Vn

Figure 2.1: A n-port network.

A network can be represented as Fig. 2.1, where i s (V s) are called through (cross) variables. Such a network is called a n-port network [4]. Denition 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

which, unlike passive elements, are capable of energy amplication [30]. The basic dening property of passive elements is that they can only dissipate or store energy [21]. Expressed in mathematical terms this is as follows [22]: Denition 2.2 A multi-port network is dened to be passive if for all admissible V , i which are square integrable on (, t], 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 dened to be passive if
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 dene 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 E = = = =

V (t) i(t)dt
0

(=

i(t) V (t)dt) (Parseval theorem)

1 2 1 2 1 4

V ( j )i( j )dw

i( j ) Z ( j )i ( j )dw i( j )(Z ( j ) + Z ( j ))i( j )dw. (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 sufcient condition for passivity, positive realness is now dened. Denition 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 nite, and any poles of Z(s) on the imaginary axis or at innity are simple and have a non-negative denite, Hermitian residue. With the denition 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 difcult to derive. Fs ms u mu kt Fr zr zu zr zs Fr Fr G Fs Fs zs

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 ( s z u )+ks (z s z u ), z the transfer matrix of the mixed immittance can be expressed as: s zs r F where, G 11 = G 12 G 21 G 22 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 Fs s zr ,

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
s s u = cs ( s z u ) + ks (z s z u ) is implemented, and hard to load disturbance Fs as when a hard passive z h h suspension u = cs ( s z u ) + ks (z s z u ) is implemented, that is, z

s zs Fr

Gh Gs 11 12 Gh Gs 21 22

Fs s zr

(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,
h h s s m u = 35 kg, kt = 150 kN/m, and take ks = 120 kN/m, cs = 40 kNs/m, ks = 12 kN/m, cs = 4

kNs/m. In order to get a suitable scaling, we calculate the positive realness of another transformation matrix Y : Fs Fr = Y s zs s zr .

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
x 10
4

Necessity of Active Suspension A Network Approach

3 Eigenvalues (Ns/m)

2 2 10

10

10 10 Frequency (rad/sec)

10

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 m 1 zu1 m 2 zu2
in the form of Fig. 2.2 [32, Theorem 6]

= F u 1l1 + u 2 l2 , = u 1 + Fr1 , = u 2 + Fr2 ,

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

2.3 The Half-Car Model

13

where the tyre forces Fr1 , Fr2 are given by: Fr1 Fr2 = kt1 (zr1 z u 1 ), = kt2 (zr2 z u 2 ),

and u 1 = c1 ( s + l1 z z u 1 ) + k1 (z a1 z u 1 ), u 2 = c2 ( s l2 z z u 2 ) + k2 (z a2 z u 2 ) for passive z z suspensions. Fs z , F l1 u1 zu1 m1 k t1 z r1 m2 k t2 z r2 m s , I l2 u2 zu2 zs F z G Fr2 z r2 Fs Fr1 z r1 zs

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
s s s s zr1 , zr2 as when passive elements c1 , c2 , k1 , k2 are used, and hard to load disturbances Fs , F as when h h h h passive elements c1 , c2 , k1 , k2 are used, where s and h

represent soft and hard suspension settings. Fs F . s zr 1 s z r2

Therefore the transformation matrix can be expressed as: s zs Gh Gh Gs Gs 11 12 13 14 sz Gh Gh Gs Gs = 21 22 23 24 Fr Gh Gh Gs Gs 1 31 32 33 34 Fr2 Gh Gh Gs Gs 41 42 43 44

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
h h kN/m, l1 = 1.15 m, l2 = 1.35 m. As the suspension settings, we choose c1 = c2 = 10 kNs/m, h h s s s s k1 = k2 = 40 kN/m, c1 = c2 = 1 kNs/m, k1 = k2 = 4 kN/m. In order to get a suitable numerical scaling, we check the positive realness of another transformation matrix Y , where [ Fs , F , Fr1 , Fr2 ] =

Y [s z s , s z , s zr1 , s zr2 ] . 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
x 10
4

Necessity of Active Suspension A Network Approach

10

Eigenvalues (Ns/m)

5 2 10

10

10

10

10

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 m f zu1 m f zu2 mr zu3 mr zu4 = T + u 1l f + u 2l f u 3lr u 4 lr , = u 1 + Fr1 , = u 2 + Fr2 , = u 3 + Fr3 , = u 4 + Fr4 , I z = T u 1 t f + u 2 t f u 3 tr + u 4 tr ,

where the passive suspension forces u 1 ,,u 4 and the tyre forces Fr1 ,,Fr4 are given by: ui Fri = ci Di + ki Di , = kti (zri z u i ),

for i = 1, . . . , 4 and the strut deections 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


tr tr

15

u3 zu3 mr k t3 z s , Fs z , T m s , I , I lr mr

u4 zu4

z r3

k t4

z r4

Fr1
z , T tf tf lf

Fs

z r1 Fr2 z r2 T Fr3
zu2 u2

zs

u1 mf k t1 zu1 mf

G T

z r3 Fr4 z r4

z z

z r1

k t2

z r2

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: s z s , s z , s z , Fr1 , Fr2 , Fr3 , Fr4 = Gh , Gs Fs , F , F , s zr1 , s zr2 , s zr3 , s zr4 .

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 : Fs , F , F , Fr1 , Fr2 , Fr3 , Fr4 = 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
x 10
4

Necessity of Active Suspension A Network Approach

7 6 5 4

Eigenvalues (Ns/m)

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

10

10

10

10

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 coefcients: 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
y Fs

Analysis and Design for the Trailing-Arm Model

x Q E zs k2 T2 , 2 H c2 B m s , Is

Ts , 3 D

forward direction

k1 A y3

c1 G T1 , 1

C2 r2 N2 F2 z r2 y2 m 2 , I2

C1 r1 N1

:pin joint

m 1 , I1 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 roads 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) conguration 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 nd that using trailing arms can signicantly 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 signicant inuence of the trailing-arm geometry on the responses. For example, in the rst setting (A = (0.15, 0.5), B = (0.15, 0.5)), both the squat and dive motions are reduced. In the second

3.2 Anti-Squat and Anti-Dive Geometry

19

1000

12 10

0.05 0.04

torques (Nm)

500 0 500 1000 1500 2000 0

0.03 0.02

y3 (m/sec)

3 (rad)

0.01 0 0.01 0.02 0.03 0.04

6 4 2 0 0

sec
(a) applying torques

sec

0.05 0

sec

(b) forward velocity

(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 simplied version of this model is shown in Fig. 3.3. Because the geometric conguration 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 DAlembert 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

T2 ms y

T1

forward direction

T2 I2 2

T1 B A I1 1

h m2 y N2 P2 y2,0 L y1,0 x2,0 F2 P1 x1,0 m1 y N1

F1

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 = so that F1 , F2 can be expressed as: F1 = where Mx is dened 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 r 1 + m 2 y r 2 + I1 I2 y + y = 0, r1 r2 (3.2) pMx y , F2 = (1 p)Mx y , F1 + F2 , m1 + m2 + ms (3.1)

3.2 Anti-Squat and Anti-Dive Geometry

21

which gives N1 as: N1 = M y y , where M y is dened as: My = 1 I1 I2 (m s h + m 1r1 + m 2r2 + + ). L r1 r2 (3.4) (3.3)

3. Applying Newtons second law in the vertical direction for the whole system gives: N2 = N1 = M y y . 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) (3.5)

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. 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) (3.7)

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 satises 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 sufcient 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 sufcient conditions for anti-dive. Therefore, we consider only the anti-dive case with outboard braking.
y

Q ms y

forward direction

T2 I2 2 T2 m2 y N2
P2

T1 B A T1 x1,0 m1 y N1
P1

I1 1

h x2,0

F2 y2,0 L y1,0

F1

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 Newtons 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 ) + 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 ) + 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 x 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 xed 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. I2 r2 = 0, (3.11) I1 r1 = 0, (3.10)

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.

2000

25

0.06 0.05 0.04 0.03 0.02 0.01 0 0

torques (Nm)

1500 20

y3 (m/sec)

1000 500 0 500 1000 1500 0

15

10

sec

0 0

sec

3 (rad)

sec

(a) applied torques

(b) forward velocity

(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 = 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 sufcient 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 B A

r2 + h

C2 (1 p)L (a) pL

r1 + h

C1

P2 (1 q)L (b) qL

P1

Figure 3.6: Simplied 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 sufcient conditions for perfect anti-squat (or anti-dive with inboard brakes), and (3.10) and (3.11) are necessary and sufcient 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 dened in terms of mathematical relationships which determine the allowed motion of the hub carriers relative to the vehicle body. Specically, relationships are specied 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 specic 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 sufcient to ensure that these properties hold dynamically. (In the simulation we allow pitching motion and vertical movement of the sprung mass to occur, and nd that the anti-squat (resp. antidive) geometry ensures the geometric conguration 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 inuence 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 sufciently 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 nd 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 nd 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 of the improvement is illustrated in Fig. 3.7(c).

2000

12 10 8

0.08 0.07 0.06

torques (Nm)

1500 1000 500 0 500 1000 1500 0

y3 (m/sec)

0.05

6 4 2 0 2 0

3 (rad)
2 4 6 8

0.04 0.03 0.02 0.01 0 0.01 0

sec

sec

sec

(a) applied torques

(b) forward velocity

(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 deection 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 conicting 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 coefcients 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
s s s s h h h h c1 = c2 = 1 kNs/m, k1 = k2 = 4 kN/m, c1 = c2 = 100 kNs/m, k1 = k2 = 400 kN/m. The

tranformation matrix G can be expressed as: s z s , s 3 , s(1 4 ), s(2 5 ), N1 , N2 = [G h , G s ] Fs , Ts , T1 , T2 , s zr1 , s zr2 .

In order to get a suitable scale, we check the positive realness of Y instead of G, where Y is dened as: Fs , Ts , T1 , T2 , N1 , N2 = Y s z s , s 3 , s(1 4 ), s(2 5 ), s zr1 , s zr2 .

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.
6 x 10
5

1 4 zs z r1

T1 Fs N1

T2 Ts N2

2 5 3 z r2
Eigenvalues (Ns/m)

5 4 3 2 1 0 1 2 3 2 10

10

10

10

10

10

Frequency (rad/sec)

(a) The corresponding network.

(b) Eigenvalues of (Y + Y ).

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 dened as follows: T1 , T2 , N1 , N2 = Y s(1 4 ), s(2 5 ), s zr1 , s zr2 .

6 5 4

x 10

Eigenvalues (Ns/m)

1 4 z r1

T1 N1

T2

2 5 z r2

3 2 1 0 1 2 3 2 10

N2

10

10

10

10

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 specication. 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-specied closed-loop transfer function xed. 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 (Denition 4.1). Section 4.1 denes 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-specied closed-loop transfer function xed. Our basic results, which characterise the required structure of the Youla Q-parameter, are given in Theorems 4.14.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 dened by the total number of zeros of the element in the closed right half plane and at innity (counting multiplicities). The invertible elements in RH are called units, and are the elements with degree equal to zero. A matrix U RHmm 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 RHmn , 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. Denition 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 = (V1 , V2 ) 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 RHrc , 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, where U RHrr , V RHcc are unimodular, H RHrc . Suppose that H has r1 non-zero diagonal elements. Then we can write: H = = H1 0(rr1 )r1 Ir1 r1 0(rr1 )r1 Ir1 r1 , 0r1 (cr1 ) H1 , 0r1 (cr1 ) , (4.1)

(4.2)

where H1 RHr1 r1 . We also partition U and V conformably: U = (U1 , U2 ), V = V1 V2 ,

(cr where U1 RHrr1 , U2 RHr(rr1 ) , V1 RHr1 c , V2 RH 1 )c . We therefore obtain

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

where E RHrr1 , F RHr1 c 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 RHrc 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 RHr1 r1 such that U1 = U1 Z 1 and 1 F = Z 1 F.

(proof):

4.1 Normalrank Factorisations

33

1 () It is obvious that U1 F = (U1 Z 1 )(Z 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

U 1 = Then we can write: T = U1 , U2

U1 U2

U1 U2

F 0

U1 , U2

F 0

which gives F = X 1 F and F = Y1 F, where X 1 = (U1U1 ) and Y1 = (U1 U1 ) are square

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
1 hence are unimodular. Thus we can assign Z 1 = X 1 and Z 1 = Y1 to complete the proof.

Lemma 4.3 For any T RHrc with normalrank r1 , suppose both U1 F and U1 F are rnfs of T and (U1 , U2 ) is unimodular. Then the set of U2 RHr(rr1 ) such that (U1 , U2 ) is unimodular is given (rr by {U2 : U2 = U1 + U2 , where RHr1 (rr1 ) , is unimodular and RH 1 )(rr1 ) }. (proof): Suppose U = (U1 , U2 ), then for any U2 RHr(rr1 ) such that U = (U1 , U2 ) is

unimodular over RH , the matrix W = U 1 U is unimodular over RH . Therefore, we can write:


U1 , U2

U1 , U2

W11 W12 W21 W22

(4.3)

(rr where W11 RHr1 r1 , W12 RHr1 (rr1 ) , W21 RH(rr1 )r1 , W22 RH 1 )(rr1 ) , so that U1 = U1 W11 + U2 W21 . On the other hand, from Lemma 4.2, there exists a unimodular matrix Z 1 RHr1 r1 such that U1 = U1 Z 1 . Then we can write:

U1 , U2

W11 Z 1 W21

= 0,

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 RHr1 (rr1 ) and some unimodular matrix (rr RH 1 )(rr1 ) , then U1 , U2

U1 , U2

Z1 0

(4.4)

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

34

Controller Parametrisation for Disturbance Response Decoupling

Lemma 4.4 For any T RHrc 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 RHr1 r1 such that V1 = Z 2 V1 and
1 E = E Z2 .

Lemma 4.5 For any T RHrc with normalrank r1 , suppose both E V1 and E V1 are lnfs of T and
(cr (V1 , V2 ) is unimodular. Then the set of V2 RH 1 )c such that (V1 , V2 ) is unimodular is given (cr by {V2 : V2 = V1 + V2 , where RH(cr1 )r1 , is unimodular and RH 1 )(cr1 ) }.

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: P = P11 P21 P12 P22 ,

and further partitioned conformably with the disturbance signals as: P12,1 P11,11 P11,12 z1 = P11,21 P11,22 P12,2 z2 P22 y P21,1 P21,2

w1 w2 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 Tw1 1 (the transfer function from w1 to z 1 ) the same as for some given z stabilising controller K 0 . w1 w2 u K P z1 z2 y

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 , = ( X Q N )1 (Y Q M), (4.6) (4.7)

4.2 Controller Parametrisation Results

35

for Q RHm 3 p3 where X, Y, X , Y are matrices with elements in RH which satisfy the Bezout identity: X N Y M M N Y X = I.

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

w1 w2

z1 z2

= T1 T2 QT3 ,

(4.8)

where T1 , T2 , T3 have elements in RH and are given by: T1 = T2 = P11 + P12 M Y P21 , P12 M,

T3 = M P21 . Thus the problem reduces to parametrising all stabilising controllers which leave Tw1 1 = (T1 )1,1 . z These are characterised by all Q RHm 3 p3 such that (T2 QT3 )1,1 = T2,1 QT3,1 = 0, where T2,1 = P21,1 . We now introduce a lnf of T2,1 and a rnf of T3,1 as follows: P12,1 M and T3,1 = M T2,1 := E V1 , T3,1 := U1 F, (4.9) (4.10)

p1 p3 where E RH r2 , F RHr3 m 1 , U1 RH r3 , V1 RHr2 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 conguration of Fig. 4.1. All stabilising controllers such that the closed loop transfer function Tw1 1 = (T1 )1,1 are given by K expressed in the form of z (4.6) and (4.7) with Q = V1 V2
1

Q 1 U2 Q2

(4.11)

for Q 1 RHr2 ( p3 r3 ) and Q 2 RH(m 3 r2 ) p3 , V1 and U1 dened from the lnf and rnf factorisations (4.9) and (4.10), U2 , V2 are chosen such that (U1 , U2 ) and (V1 , V2 ) are unimodular, and U2 RH( p3 r3 ) p3 is a partition of U 1 : U 1 = (U1 , U2 )1 = U1 U2 .

36

Controller Parametrisation for Disturbance Response Decoupling

(proof): A stabilising controller in the form (4.7) leaves Tw1 1 = (T1 )1,1 if and only if (T2 QT3 )1,1 = z 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 ), for some Q 1 RHr2 ( p3 r3 ) . This gives V1 Q = (0, Q 1 )U 1 = Q 1 U2 . Next we see that V1 V2 Q = Q 1 U2 Q2 , (4.13) (4.12)

for some Q 2 RH(m 3 r2 ) p3 , which establishes (4.11). Conversely, if (4.11) holds for some Q 1 RHr2 ( p3 r3 ) and Q 2 RH(m 3 r2 ) p3 , then so does (4.13), from which follows V1 Q = (0, Q 1 )U 1 which again implies V1 QU1 = 0.

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 U2 term 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 matrix and then extracting U2 from the resulting matrix inverse. Since U1 and the completion are not unique then neither is U2 . It will be useful to characterise this non-uniqueness by parametrising the set {Q 1U2 : Q 1 RHr2 ( p3 r3 ) } directly. This is done in the following lemma.
Lemma 4.6 Given two sets A = {Q 1U2 : Q 1 RHrc } and B = {Q U2 : Q RHrc } where U2 , 1 1 U2 RHcq are full row normalrank, then (i) B A if and only if U2 is a left multiple of U2 over RH , i.e. there exists a W RHcc such that U2 = W U2 . (ii) B = A if and only if there exists a unimodular matrix W RHcc such that U2 = W U2 .

(proof):
(i) () Suppose U2 = W U2 where W RHcc , then B = {Q U2 } = {(Q W )U2 }. Clearly Q W 1 1 1

has elements in RH . Hence, any element of B is also an element of A. () Suppose B A, then for any Q RHrc there exist some Q 1 RHrc such that 1
Q U2 = Q 1 U2 . Let us now choose the rst row of Q to be [0, , 1, , 0] (with the 1 in 1 1

4.2 Controller Parametrisation Results

37

the ith place), and all other rows to be zero, and dene qi to be the rst row of the corresponding
Q 1 . Then [0, , 1, , 0]U2 = qi U2 , from which we conclude that U2 = W U2 where W = [q1 , q2 , , qc ] . Hence U2 is a left multiple of U2 . (ii) From (i) we know that B = A if and only if U2 is a left multiple of U2 and U2 is a left multiple of U2 . That is, U2 = W1 U2 and U2 = W2 U2 for some W1 , W2 RHcc . Hence we have U2 = W2 W1 U2 which gives (I W2 W1 )U2 = 0. Since U2 is full row normalrank, it is

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 simplied form, and as a result a further useful structural simplication can then be made. It will be convenient to summarise these simplications in the theorem below, which will then be applied directly throughout the dissertation. (The rst 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 . (i) There exists U2 RH( p3 r3 ) p3 such that all stabilising controllers which give Tw1 1 = (T1 )1,1 z can be parametrised as K = (I Q 1 U2 P22 )1 Q 1 U2 , for Q 1 RHr2 ( p3 r3 ) . (ii) A particular U2 RH( p3 r3 ) p3 for which (4.14) parametrises all stabilising controllers such that Tw1 1 = (T1 )1,1 can be calculated as follows: choose M = I , M = I , N = N = P22 , z X = I , X = I , Y = 0, Y = 0 and V1 = I , dene U1 from the rnf (4.10), and calculate U2 , U2 as in Theorem 4.1.
(iii) Consider any U2 such that K = (I Q 1 U2 P22 )1 Q 1 U2 parametrises all stabilising con-

(4.14)

trollers which give Tw1 1 = (T1 )1,1 . Then there exist a unimodular matrix W such that z
U2 = W U2 , where U2 is dened in (ii).

(iv) Let U2 be dened in (ii) and let K 1 be any stabilising controller for U2 P22 . Then K 1 U2 is a stabilising controller for P22 for which Tw1 1 = (T1 )1,1 . z (v) Let U2 be dened in (ii) and consider any stabilising controller K for P22 for which Tw1 1 = z (T1 )1,1 . Then we can write K = K 1 U2 , where K 1 is a stabilising controller for U2 P22 .

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).
(iii) Consider U2 and U2 such that all stabilising controllers can be parametrised as K = (I Q 1 U2 P22 )1 Q 1 U2 , Q 1 RHr2 ( p3 r3 ) and K = (I Q U2 P22 )1 Q U2 , Q RHr2 ( p3 r3 ) 1 1 1 respectively. We can check that K = K if and only if Q 1 U2 = Q U2 . From Lemma 4.6, this 1 means there exits a unimodular matrix W such that U2 = W U2 .

(iv) Since U2 , P22 have elements in RH , it follows from [45, Corollary 5.5] that K 1 stabilises U2 P22
m if and only if (I K 1 U2 P22 )1 K 1 RH3 ( p3 r3 ) , which is equivalent to (I K 1 U2 P22 )1 K 1 U2

RHm 3 p3 since U2 is right invertible over RH , which is the necessary and sufcient condition
m that K 1 U2 stabilises P22 . To complete the proof, let Q 1 = (I K 1U2 P22 )1 K 1 RH3 ( p3 r3 )

and note that K 1 = (I Q 1 U2 P22 )1 Q 1 . Therefore K = K 1 U2 will take the form of (4.14), from which the result follows. (v) Any stabilising controller K for which Tw1 1 = (T1 )1,1 takes the form of (4.14). We can z
m then dene a controller K 1 = (I Q 1 U2 P22 )1 Q 1 for some Q 1 RH3 ( p3 r3 ) such that m K = K 1 U2 . It can also be shown directly that (I K 1 U2 P22 )1 K 1 = Q 1 RH3 ( p3 r3 ) ,

which means that K 1 stabilises U2 P22 .

P U2 Q1 U2 P22 (a) +

P U2 P

K1 (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) shows that the essential feature in this controller structure is the presence of U2 as the rightmost term in (4.14). This is illustrated in the block diagram Fig. 4.2(b) where K 1 may be any stabilising controller for the transformed plant P . We now present a partial result to emphasise the role of U2 factor.

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 Tw1 1 the same as the open loop z
if U2 is a left annihilator of P21,1 .

(ii) if P12,1 is full column normalrank and the controller structure leaves Tw1 1 the same as the z
open loop for some controller K 1 for which Fig. 4.3 is closed-loop stable, then K 1 U2 is a left

annihilator of P21,1 .
m (iii) assuming (3) m 3 = r2 , then K = (I Q U2 P22 )1 Q U2 , where Q RH3 ( p3 r3 ) , 1 1 1 parametrises all stabilising controllers for P which leave Tw1 1 invariant if U2 RH( p3 r3 ) p3 z

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

P
U2

K1

Figure 4.3: Controller structure as a left annihilator.

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

(4.15)

which is invariant of the feedback control.


(ii) If P12,1 is full column normalrank and (4.15) holds for some controller K 1 , then K 1 U2 P21,1 = 0. That is K 1 U2 is a left annihilator of P21,1 . (iii) Suppose U1 RHr3 p3 is a completion of U2 such that U = (U1 , U2 ) is unimodular, and U 1 = U = (U1 , U2 ). Since U2 is a left annihilator of P21,1 , we can write

U P21,1 =

U1 U2

P21,1 =

F 0

40

Controller Parametrisation for Disturbance Response Decoupling

for some F RHr3 m 1 , which gives P21,1 =


U1 , U2

F 0

= U1 F ,

p3 where U1 RH r3 . 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 nd a rnf of P21,1 = U1 F, a unimodular matrix (U1 , U2 ) and its inverse (U1 , U2 ) so that K in (4.14) parametrises all stabilising controllers for some Q 1
RHr2 ( p3 r3 ) . We now wish to show that {Q U2 } = {Q 1U2 }. From Lemma 4.2 we know that 1 U1 = U1 Z 1 for some unimodular matrix Z 1 RHr1 r1 , and from Lemma 4.3 we know that U2 = (p U1 + U2 for some RH( p3 r3 )r3 and some unimodular matrix RH3 r3 )( p3 r3 ) .

Hence
U1 U2

= =

U1 , U2

Z1 0

U1 , U2

1 1 Z 1 U1 Z 1 1 U2

1 U2

, (4.16)

which results in {Q U2 } = {Q 1 U2 } from Lemma 4.6, since U2 = 1 U2 and 1 is unimodular. 1

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-specied 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 nd all stabilising controllers which have the same pre-specied closed-loop responses as those with a special controller. Theorem 4.4 Consider any stabilisable P in the conguration 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 M Q)(X N Q)1 can be expressed in the form of (4.6) and (4.7) with Q = Q+ with all the variables dened in Theorem 4.1. (proof): From (4.8), the closed-loop transfer function (T )1,1 remains the same as that of the controller K = (Y M Q)(X N Q)1 if and only if (T1 + T2 QT3 )1,1 = (T1 + T2 QT3 )1,1 , which is equivalent to (T2 (Q Q)T3 )1,1 = 0, which results in (4.17) by using Theorem 4.1. V1 V2
1

Q 1 U2 Q2

(4.17)

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 closed loop transfer function (T )1,1 the same as that of the controller K = (Y M Q)(X N Q)1 is parametrised by: Q = Q + Q 1 U2 . (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-specied transmission paths unchanged. To full this goal, we shrink the parametrisation set of all stabilising controllers from Q RHm 3 p3 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 nd a controller which xes Td1 y and improves Td1 y1 . The question is: can we actually do this? r =0 + + + d2 e y1 + + d1

+u

Figure 4.4: Classical feedback interconnection.

Clearly this is not possible since the closed-loop transfer function of the system is: y1 y = (I G K )1 G K (I G K )1 (I G K )1 G (I G K )1 G d1 d2 = T S SG SG d1 d2 ,

where S is the system sensitivity function and T = I S is the complementary sensitivity function. Hence Td1 y + Td1 y1 = 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: P = I I 0 G G 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 nd 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] = [E, E] V1 , which shares the same V1 in (4.11). Therefore, the parametrisation of all stabilising controllers which leave Td1 y1 xed is the same as the parametrisation of all stabilising controllers which leave Td1 [ y1 , y ] unchanged. As a result, Td1 y cannot be improved once Td1 y1 is xed. 2

We will now derive conditions under which the achievable performance of the system, when a certain transmission path is kept xed, is not reduced in a signicant 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 that R1 R2
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 nd a R2 B such < 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 denition R1 = G 1 Q for some Q RH and so
m m R2 = G 1 Q s1 = G 2 ( n1 (s1+1) Q) and ( n1 (s1+1) Q) RH . Therefore, we have: +1

R1 R2

R1

s s + 1

(4.20)

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

> 0 we can nd an 0 ( ) such independently of . for any >0

|R1 ( j )| <

Secondly, for [0, 0 ], max|

can be made as small as we like by choosing a sufciently


j sup |R1 j +1 |

j small . Hence we can choose sufciently small so that sup[0,0 ] |R1 j +1 | <

on this interval. Combining these together, we can ensure that (R1 R2 )( j )

<

and is therefore,

<

by choosing sufciently 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 nd a R2 = R1 which belongs to B in that R2 = G 1 Q = G 2 ( m11 Q) and ( m11 Q) RH , such that n n 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 afne 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 ( s1 )r is a matrix with elements in RH for some +1 r > 0 and any > 0. Then for any R1 A we can nd a R2 B such that R1 R2 for any > 0.

<

(ii) If G 1 and J are proper in RH then for any R1 A we can nd a R2 B such that R1 R2 (proof): (i) For any R1 A, we take the following candidate for R2 : R2 = R1 ( 1 )r , s + 1

= 0.

for some > 0. Note that R2 B since by denition R1 = G 1 Q for some Q which has elements in RH and so R2 = G 2 ( J ( s1 )r Q), where (J ( s1 )r Q) has elements in RH . +1 +1 Hence R1 R2

= R1 (1 (

1 )r ) 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 nd an 0 ( ) such that (R1 ( j )) < >0 (R1 ( j )) <
1 for > 0 , and >0 (R1 ( j )(1 ( j +1 )r )) 1 . Secondly, for [0, 0 ], (1 ( j +1 ))r can be made as small as

we like by choosing a sufciently small . Hence we can choose sufciently small so that
1 [0,0 ] (R1 (1 ( j +1 )r )) <

for any

> 0. Combining these together, we can ensure that

(R1 (1 (

j r ) )) j +1

<

for all 0, and therefore, (R1 R2 )( j )

<

by choosing

sufciently 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 ( s1 )r is a matrix with elements in RH for some +1 r > 0 and any > 0. Then for any R1 A we can nd a R2 B such that R1 R2 for any > 0.

<

(ii) If G 1 and J are proper in RH and then for any R1 A we can nd a R2 B such that R1 R2

= 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 ( s1 )r +1 is a matrix with elements in RH for some r > 0 and any > 0, then for any R1 A we can nd a R2 B such that R1 R2

<

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 nd 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 denition R1 = G 1 Q H1 for some Q which has elements RH and so R2 = G 2 ( J Q K ( s1 )r )H2 , where (J Q K ( s1 )r )H2 has elements in +1 +1 RH . Hence R1 R2

= R1 (1 (

1 )r ) 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+3

0
s+2 s+5

1 , 2

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 nd 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] and F = 1. Then we complete U1 with U2 = [1, 0] , and obtain U2 as follows: U2 = 1
1 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 RH11 . 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 nd the second term T2 QT3 in (4.8) takes the form with Q = [Q , Q ] given by: T2 QT3 =
Q +Q (s+4) , (s+3)(s+4) Q (s+2) (s+3)(s+5)

After the disturbance response decoupling, it becomes: T2 Q 1 U2 T3 = Setting G 1 =


(s+2) (s+3)(s+5) Q 1 (s+2) 0, (s+3)(s+4)(s+5)

(s+2) and G 2 = (s+3)(s+5)(s+4) , Lemma 4.7 shows that (T2 Q 1 U2 T3 )1,2 can approx-

imate (T2 QT3 )1,2 to an error of

in the H norm. In the matrix case approach, we have two sets

of strictly proper matrices: A = {T2 QT3,2 } and B = {T2 Q 1 U2 T3,2 } from Theorem 4.5, which gives G 1 = G 2 = T2 , H1 = T3,2 and H2 = U2 T3,2 . We nd that J = 1 and
1 K = H1 H2 =

0 (s + 4)

Therefore, from Theorem 4.5, the achievable performance of these transmission paths is not reduced in a signicant way after the disturbance response decoupling. Example 4.3 Given a plant P as follows: 2

P= 0 1

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

1 s+2 s+2 s+1

1 s+2

1 0 0
s+3 s+6

1 s+3 1 s+2

0
s+2 s+5

1 , 2 3

46

Controller Parametrisation for Disturbance Response Decoupling

which is partitioned in the obvious way, we nd a lnf of (T2 )1 = (P12 )1 as E = [1/(s + 3), 1/(s + 2)] and V1 = 1, and a a rnf of (T3 )1 = (P21 )1 as U1 = [1/(s + 4), 0, 1] and F = 1. Then we complete U1 with U2 = [0, 1; 1, 0; 0, 0], and obtain U2 as follows: U2 = 0 1 1 0 0
1 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 RH12 . 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: T2 QT3 =
Q +Q (s+4) (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)

(4.23)

After the disturbance response decoupling, suppose Q 1 = [Q 1,1 , Q 1,2 ], it becomes: T2 Q 1 U2 T3 = 0 0


Q 1,1 (s+4)(s+2)Q 1,2(s+5) (s+3)(s+4)(s+5) Q 1,1 (s+4)(s+2)Q 1,2(s+5) (s+2)(s+4)(s+5) Q 1,2 (s+4)(s+6) Q 1,2 (s+3) (s+2)(s+4)(s+6)

(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 setting G 1 = 1/(s + 6) and G 2 = 1/(s + 4)(s + 6), Lemma 4.7 shows that (T2 Q 1 U2 T3 )1,2 can approximate (T2 QT3 )1,2 to an error of in the H norm. In the matrix case approach, we use Theorem 4.5 by setting A = {T2 QT3,2 } and B = {T2 Q 1 U2 T3,2 }, which gives G 1 = G 2 = T2 , H1 = T3,2 and H2 = U2 T3,2 so that J = I and 0 1

1 . K = H1 H2 = 1 0 0 (s + 4) Therefore, from Theorem 4.5 the achievable performance is not reduced in a signicant way after the disturbance response decoupling. 2

4.5 Summary and Comments


This chapter has derived general theorems (Theorem 4.14.4) to parametrise all stabilising controllers which leave some pre-specied closed-loop transfer function xed. The motivation came from the vehicle active suspension design problem with particular regard for the potentially conicting 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 ltered version of the actuators command signal, i.e. z s z a = (s)u. As in [28], we use a second order lter to represent the actuator dynamics: (s) =
2 n . 2 s 2 + 2n s + n

(5.1)

(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 , m u z u = u p + Fr , where u p = cs ( s z u ) + ks (z a z u ), z Fr = kt (zr z u ). (5.3) (5.4)

(5.5) (5.6)

ms A ks mu kt

zs za

cs

zu

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 ] , w1 = zr , w2 = Fs , y = [ s , z s z u ] , z 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: zs zu s2 zs zs zu = P11 P21 P12 P22 zr Fs , u

5.1 The Quarter-Car with Two Measurements

51

with the transfer functions being given by: P11 = P12 = P21 = P22 = 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) 1 d(s) (s) d(s) 1 d(s) (s) d(s) kt (cs s + ks ) kt (m s s 2 + cs s + ks ) ks (m u s 2 + kt ) ks m s s 2 kt (m s s 2 ) ks (m u s 2 + kt )s 2 ks ((m u + m s )s 2 + kt ) , , m u s 2 + cs s + ks + kt cs s + ks , (5.7)

(5.8)

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

As expected, all roots of d(s) are in left-half plane, which can be conrmed 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 satised. We can then apply Theorem 4.2(ii) to nd the matrix U2 which denes the required control structure. Following the denitions in Theorem 4.2(ii) we rst nd: kt s 2 T3,1 = M P21,1 = d(s) cs s + ks m s ,

which has normalrank equal to one, i.e. r3 = 1. Hence we can select: F = kt s 2 p1 (s) , d(s) 1 p1 (s) cs s + ks m s ,

U1 =

where p1 (s) is any rst 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 ) = which gives U 1 = [U1 , U2 ] and U2 =
ms cs s+ks cs s+ks p1 (s) m s p1 (s)

0 1

(5.10)

Thus, all stabilising controllers which leave Tzr [zs , zu ] the same as in the open-loop can then be expressed as shown in Fig. 5.2 where K 1 = (I Q 1U2 P22 )1 Q 1 , for Q 1 RH11 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

zs ms u ks mu kt zs zu K1
ms cs s+ks

+ +

cs

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

Example 5.1 We now apply the above result to a specic 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 coefcients 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 TFs s (0) = z (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 1.5 1 0.5 0 0 1.5 1 0.5 0 0
1 0.8 0.6 0.4 0.2 x 10
4

Fs zs

2 z z
r

0 0

1
5

3 u

1 0.8 0.6 0.4 0.2

x 10

F z
s

0 0

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 U2 P22 . We select a weighting function as follows: W1 = 10(s + 80) , (s + 8)

so that the open-loop loop shape, W1 U2 P22 , has a gain crossover frequency at about 44 rad/s, somewhat 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 TFs s (0). This z choice of weighting function gives a stability margin of 0.3864. The nal controller takes the form K = K 1 U2 (see Fig. 5.2) where 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.
1 x 10
4

Fs z s

0.8

0.6

0.4

0.2

0 0

0.5

sec

1.5

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 ltering 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 lters 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 rst 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 lters 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.

zs ms ks A cs T (s)
ms m s s 2 +cs s+ks

F1


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

F2

mu kt

zs zu

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 deection) and rattle space (i.e. strut deection). 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 Tzr r u and Tzr s u can be deduced directly. A sim z z z z ilar 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 deection) 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 = [ s , z s z u , z u ] and all z 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 kt (m s s 2 ) kt (m s s 2 + cs s + ks )s 2 ks (m u s 2 + kt )s 2 (m u s 2 + cs s + ks + kt )s 2 (m u s 2 + kt ) (cs s + ks )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 denitions in Theorem 4.2(ii) we nd that kt s 2 T3,1 = M P21,1 = d(s) which gives r3 = 1. Hence we can select F = kt s 2 p2 (s) , d(s) 1 p2 (s) cs s + ks m s m s s 2 + cs s + ks

cs s + ks m s

U1 =

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 = [I22 , 021 ] to complete a unimodular matrix U to give U 1 = [U1 , U2 ] with U2 =
s+ks 1 0 m s sc2s+cs s+ks

0 1

ms m s s 2 +cs s+ks

(5.12)

Thus, all stabilising controllers which leave Tzr [ s , zu ] the same as in the open-loop can then be z expressed as shown in Fig. 5.6 where K 1 = (1 Q 1 U2 P22 )1 Q 1 , (5.13)

for any Q 1 RH12 or equivalently K 1 is any stabilising controller for U2 P22 (see Theorem 4.2).

56

Disturbance Response Decoupling for The Quarter-Car Model

zs ms cs A ks mu kt zs zu zu + u K1 + +

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

ms m s s 2 +cs s+ks

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

5.2.1 Alternative Controller Structures


As pointed out in Lemma 4.6 the exact form of U2 in (5.12) is not unique. Let us suppose that we prefer a structure with
U2 =

f1 1 0 1

0 f2

where f 1 , f 2 RH are strictly proper, motivated by a preference to use low-pass lters for the acceleration signals z s and z u while keeping the strut deection unltered. For U2 given by (5.12) the
identity U2 = W U2 implies that ms cs s+ks

W = and
U2 = ms cs s+ks

1 1 0

0 1 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 straightfor ward to show that the set {Q U2 : Q RH12 } is equal to the set {Q 1U2 : Q 1 RH12 , Q 1,1 () = 1 1

0}, i.e. the full parametrisation but with the rst element in Q 1 being strictly proper. Thus a con troller parametrisation with U2 replaced by U2 does not give all possible stabilising controllers which

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:
U2 =

f1 1 1 0

0 f2

5.3 Quarter-Car Control Structures and Design


where f 1 , f 2 RH are strictly proper. The identity U2 = W U2 now implies that ms cs s+ks

57

W = and
U2 = ms cs s+ks

1 0

1 0

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

Since W is unimodular, then U2 can be replaced by U2 in Fig. 5.6 to give a parametrisation of all

stabilising controllers (Theorem 4.2(iii)).

5.3 Quarter-Car Control Structures and Design


For direct controller design using Theorem 4.2, it is instructive to compute U2 P22 for the given choice of measurements. Table 5.1 shows U2 P22 for three different cases. It is interesting that U2 P22 takes a 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. measurements zs zs zu zs zu zu zs za za zu zs 0
ms cs s+ks

U2
ms cs s+ks

U2 P22 1
ks (s) cs s+ks

zs

s+ks 1 0 m s sc2s+cs s+ks

0 1

ms m s s 2 +cs s+ks

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

s2 1

1 0 0 1

(s)

1
cs s cs s+ks

Table 5.1: The U2 structures and the transformed plants of the quarter-car model with various measurements.

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: zs zu = P11,12 L 1 (s) 1 d(s) ks (m u s 2 + kt ) ks m s s 2 Fs , (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 (5.9). After disturbance response decoupling with the controller structure U2 given in (5.10), the load responses are given by: zs zu = P11,12 L 2 (s) 1 d(s) ks (m u s 2 + kt ) ks m s s 2 Fs , (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: zs zu = P11,12 L 3 (s) 1 d(s) ks (m u s 2 + kt ) ks m s s 2 Fs , (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 [ s , z s z u ] in that for any L 3 we can achieve a L 1 = L 3 by setting Q = Q + Q (cs s + z ks )/(m u s 2 + cs s + ks + kt ) and Q = Q in L 1 (s). After disturbance response decoupling with the controller structure U2 given in (5.12), and with the parameter Q 1 = [Q 1,1 , Q 1,2 ], the load responses are given by: zs zu = P11,12 L 4 (s) 1 d(s) ks (m u s 2 + kt ) ks m s s 2 Fs , (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 RH13 , and after disturbance response decoupling design the achievable load responses are T1,2 T2 Q 1 U2 T3,2 with Q 1 RH12 . Therefore, we can set A = {T2 QT3,2 } and B = {T2 Q 1 U2 T3,2 } in Theorem 4.5 and assign G 1 = G 2 = T2 , H1 = T3,2 and H2 = U2 T3,2 , so that J = I and K is found as follows: K = m s s 2 + cs s + ks d(s) m u s 2 + cs s + ks + kt 0 cs s + ks m u s 2 + kt , 0 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 za k s2 zu mu kt

cs1

k s1 cs2

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.15.2). We write the system in the form of Fig. 4.1 with z 1 = [z s , z u ] , w1 = zr , w2 = Fs , y = [ s , z s z u ] , u equals the actuator command z signal as in (5.1) and z 2 is omitted. From Theorem 4.2, it is easy to nd the controller structure U2 which leaves the road responses the same as in the passive case. Table 5.2 shows the controller structure U2 and U2 P22 of this general quarter-car model for the following cases: (1) two feedback y = [ s , z s z u ] , (2) three feedbacks y = [ s , z s z u , z u ] , (3) four feedbacks y = [ s , z s z u , z u , u p ] z z z 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 rst case is given in Appendix C.

60

Disturbance Response Decoupling for The Quarter-Car Model

measurements zs zs zu zs zu zu z z a s zu up zs zs

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

U2 P22 1
(cs2 s+ks2 ) (s) m s s 2 +(cs1 +cs2 )s+(ks1 +ks2 ) (cs2 +ks2 ) (s) (cs1 +cs2 )s+(ks1 +ks2 )

s1 2 1 0 m s s 2 +(cs s+cs

0 1 1 0 0 1 0 0

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

s2 1

((cs1 +cs2 )s+(ks1 +ks2 ))m s m s s 2 +(cs1 +cs2 )s+(ks1 +ks2 ) (cs1 +c 2 )s+(ks1 +k 2 ) m s s 2 +(cs s+cs )s+(ks s+ks ) 1 2 1 2 ms 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 )

m s s 2 s2 1

Table 5.2: The U2 structures and the transformed plants of the general quarter-car model with various 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 veried 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 deection 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 signicant 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 rened 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 ltered version of the actuators command signal, i.e. z s + l1 z z a1 = (s)u 1 , z s l2 z z a2 = (s)u 2 , (6.1) (6.2)

where (s) is dened as in (5.2). The linearised dynamic equations can be expressed as follows: m s z s = Fs u p1 u p2 , I z m 1 zu1 m 2 zu2 = F u p1 l1 + u p2 l2 , = u p1 + Fr1 , = u p2 + Fr2 , (6.3) (6.4) (6.5) (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 u p2 Fr1 Fr2 = c1 ( s + l1 z z u 1 ) + k1 (z a1 z u 1 ), z = c2 ( s l2 z z u 2 ) + k2 (z a2 z u 2 ), z = kt1 (zr1 z u 1 ), = kt2 (zr2 z u 2 ).

Fs z , F l1 l2 m s , I zs

z a1 c1 A1 k1 zu1 m1 k t1 z r1 m2 k t2 c2 A2 k2

z a2

zu2

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 ] , w1 = [zr1 , zr2 ] , w2 = [Fs , F ] , y = [ s , z , D1 , D2 ] where D1 = z s + l1 z z u1 , D2 = z s l2 z z u2 are z strut deections, u = [u 1 , u 2 ] 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 ] to [z s , z , z u 1 , z u 2 ] 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 denitions in Theorem 4.2(ii) we can choose a U1 = T3,1 p3 (s)/s 2 = P21,1 p3 (s)/s 2 RH42 and F = s 2 / p3 (s) I22 RH22 , where p3 (s) is any third order Hurwitz polynomial, to give a rnf of T3,1 , and complete this U1 to a unimodular matrix with U2 = 022 , I22 to give U2 =
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 U2 constructs two combinations of measurements, each of which is a suspension deection plus a low-pass ltered version of a sum of the two acceleration signals. A block diagram of this control structure is shown in Fig. 6.2. D1 + + zs
1 l1 +l2

1 c1 s+k1

m s l2

I z

+ +

1 c2 s+k2

m s l1 I

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

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

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 specic 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 will be applied to this half-car model. The essential controller structure U2 is given by (6.7). Setting a weighting function W1 as follows: W1 = s + 80 s+8 10 0 0 10 , (6.9)

means that the weighted plant W1 U2 P22 has a bandwidth of about 60 rad/sec and has an increased 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)

It is interesting to note that K 1 in (6.10) is a scalar matrix due to the fact that W1 U2 P22 is itself scalar (see (6.8)). This controller gives the d.c. gains TFs s (0) and TF (0) as 1.32 106 and z z responses using the controllers are shown in Fig. 6.3.
1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 x 10
5

8.39 107 respectively, compared with 1.36 105 and 8.64 106 using passive control. The step 2
6

Fs z s

9 8 7 6 5 4 3 2 1

x 10

F z

0.5

sec

1.5

0 0

0.5

sec

1.5

Figure 6.3: Step responses of TFs s and TF : passive (solid) and active control (dashed). z z

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 RH24 . After the disturbance response decoupling procedure, the load responses become T1,2 T2 Q 1 U2 T3,2 , where U2 is given by (6.7) and Q 1 RH22 . Therefore, we consider two sets of strictly proper matrices: A = {T2 QT3,2 } and B = {T2 Q 1U2 T3,2 } in Theorem 4.5, which gives G 1 = G 2 = T2 , H1 = T3,2 and H2 = U2 T3,2 . We nd J = I and K as follows: K
1 = H1 H2

1 o(s 9 ) o(s 9 ) = , 7 7 p8 (s) o(s ) o(s ) 7 7 o(s ) o(s )

o(s 9 ) o(s 9 )

(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 dene it as simple if the following equation holds: m1 k1 c1 kt l2 = = = 1 = . m2 k2 c2 k t2 l1 We introduce a transformation matrix L h as follows: Lh = and dene (x)b (x) = Lh x1 x2 , and

(6.13)

1 l1 + l2

l2

l1

1 1

(6.14)

where x may represent any of the following variables: z u , zr , z a or u, and the subscripts represent the bounce and rotation modes respectively. Under the assumption of simplicity, we can then rewrite (6.16.6) as follows: z s ( a )b = (s)(u)b , z z ( a ) = (s)(u) , z m s z s = Fs (c1 + c2 )( s ( u )b ) (k1 + k2 )((z a )b (z u )b ), z z I z (m 1 + m 2 )( u )b = (c1 + c2 )( s ( u )b ) (k1 + k2 )((z a )b (z u )b ) z z z +(kt1 + kt2 )((zr )b (z u )b ),
2 2 2 2 2 2 (m 1l1 + m 2l2 )( u ) = (c1l1 + c2l2 )( ( u ) ) + (k1l1 + k2l2 )((z a ) (z u ) ) z z z 2 2 +(kt1 l1 + kt2 l2 )((zr ) (z u ) ).

(6.15) (6.16) (6.17)

2 2 2 2 = F (c1l1 + c2l2 )( ( u ) ) + (k1l1 + k2l2 )((z a ) (z u ) ),(6.18) z z

(6.19)

(6.20)

Compared with (5.1), (5.3) and (5.4), we nd 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 dened by (6.14) up to scalar multiplication of each row.

66

Disturbance Response Decoupling for The Half-Car Model

Quarter-car ms mu ks cs kt Fs zs z u , z a , zr u

Half-car (bounce) ms m1 + m2 k1 + k2 c1 + c2 k t1 + k t2 Fs zs (z u )b , (z a )b , (zr )b (u)b

Half-car (rotation) I
2 2 m 1 l1 + m 2 l2 2 2 k1 l1 + k2 l2 2 2 c1l1 + c2 l2 2 2 k t1 l 1 + k t2 l 2

F z (z u ) , (z a ) , (zr ) (u)

Table 6.1: Decoupled half-car by simplicity.

6.4 Rened 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 satised 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 veried.

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 ] to z 1 = [z s , z , z u 1 , z u 2 ] 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 denitions in Theorem 4.2 we can nd 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] to give U2,Fs =
ms , c2 s+k2

0,

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

1 .

(6.21)

U2,Fs P22 = (s)

k1 , c2 s+k2

6.4 Rened Design for The Half-Car Model

67

It is interesting to note that U2,Fs P22 is independent of the masses, inertias and tyre spring constants, as the quarter-car models illustrated in Table 5.1. The achievable performance after the disturbance response decoupling design is checked by Theorem 4.5, setting A = {T2 QT3,2 } and B = {T2 Q 1 U2,Fs T3,2 }. We dene G 1 = G 2 = T2 , H1 = T3,2 and H2 = U2,Fs T3,2 so that J = I and K = 1 p8 (s) o(s 9 ) o(s 8 ) o(s 7 ) o(s 7 ) ,

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 ] to z 1 = [z s , z , z u 1 , z u 2 ] the same as in the open-loop. Again we can nd a lnf of T3,1 as T3,1 = U1,F FF with FF given by FF =
s2 p3 (s)

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] to give U2,F = 0,
I , (c2 s+k2 )l2 k1 l1 , (c2 s+k2 )l2 (c1 s+k1 )l1 , (c2 s+k2 )l2 k2 c2 s+k2

(6.22)

U2,F P22 = (s)

Again U2,F P22 is independent of the masses, inertias and tyre spring constants. The achievable performance after the disturbance response decoupling design is checked by Theorem 4.5, setting A = {T2 QT3,2 } and B = {T2 Q 1 U2,F T3,2 }. We dene G 1 = G 2 = T2 , H1 = T3,2 and H2 = U2,F T3,2 so that J = I and K = 1 p8 (s) o(s 8 ) o(s 9 ) o(s 7 ) o(s 7 ) ,

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: W =
c1 s+k1 c2 s+k2 (c1 s+k1 )l1 (c2 s+k2 )l2

1 1

such that U2,Fs and U2,F are sub-matrices of U2 = W U2 , which is, from Lemma 4.6, an equivalent

controller structure of U2 in (6.7) as follows:


U2 = W U2 =

U2,Fs U2,F

(6.23)

Moreover, it is also noticed that U2,Fs y = 0 and U2,F y = 0, where y = [ s , z , D1 , D2 ] , correz 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 rened 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 satised with the Fs responses in Example 6.1, but would like to make the suspension stiffer to F . To full this design goal, we rst nd the Q-parameter of the closed-loop controller as Q U2 = K 1 (I P22 K 1 )1 , where U2 is given by (6.7) and K 1 is given by (6.10). Now we nd the parametrisation of all stabilising controllers which leaves the responses from w1 = [zr1 , zr2 , Fs ] to z 1 = [z s , z , z u 1 , z u 2 ] the same as this closed-loop controller as: Q = Q U2 + Q 1 U2,F , (6.24)

where Q 1 RH21 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

for the transformed plant U2,F P22 . A second stage controller after model reduction is found as: K2 = (s + 38.96)(s + 69.35 74.05 j ) (s + 23.31)(s + 70.71 76.02 j ) 0.0356 0.0418 .

The Q-parameter for this second stage controller is Q 1 U2,F = K 2 (I P22 K 2 )1 . The closed-loop step responses of the system with the rst and nal controllers are shown in Fig. 6.4.

6.5 Summary and Comments

69

1.4 1.2 1

x 10

Fs z s

9 8 7 6

x 10

F z

0.8 0.6 0.4 0.2 0 0

5 4 3 2 1 0.5

sec
(a) Fs z s

1.5

0 0

0.5

sec
(b) F z

1.5

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

From (6.23) the parametrisation of (6.24) can be simplied as follows:


Q = QW 1 U2 + Q 1U2,F = ( QW 1 + 021 Q 1 )U2 ,

(6.25)

where Q RH22 , Q 1 RH21 . Therefore, the closed-loop performance with a controller


parametrised by (6.25) can also be achieved by Q = Q U2 where Q = ( QW 1 + 021 Q 1 ).

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 deection measurements. It was veried 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 rened design which allows further improvement of the closed-loop responses was also discussed. As illustrated in this chapter, this rened 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 deection 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 ltered version of the actuators 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

tr z a4 kr mr ktr zu4

cr zu3 mr

A3 kr

cr lr z s , Fs z , T

A4

z r3

ktr

m s , I , I z , T lf

z r4

tf

tf z a2 kf

cf

A1 kf mf kt f

z a1 cf zu1

A2

mf kt f

zu2

z r1

z r2

Figure 7.1: The full-car model.

in which (s) is dened 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 m f zu1 m f zu2 mr zu3 mr zu4 = T + u p1 l f + u p2 l f u p3 lr u p4 lr , = u p1 + Fr1 , = u p2 + Fr2 , = u p3 + Fr3 , = u p4 + Fr4 , I z = T u p1 t f + u p2 t f u p3 tr + u p4 tr , (7.1) (7.2) (7.3) (7.4) (7.5) (7.6) (7.7)

where the passive suspension forces u p1 ,,u p4 and the tyre forces Fr1 ,,Fr4 are given by: u pi u pj Fri Fr j = c f Di + k f (z ai z u i ), = cr D j + kr (z a j z u j ), = kt f (zri z u i ), = ktr (zr j z u j ), (7.8) (7.9)

7.2 Symmetric Transformation

73

for i = 1, 2, j = 3, 4 and the strut deections 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 : L f,1 1 0 0 1 1 = 2 1 1 0 0 0 0 1 1 1 1 0 0 , (7.10)

such that (x)b f (x)br (x) f (x)r = L f,1 x1 x2 x3 x4 , (7.11)

where x may represent any of the following variables: z u , zr , z a , strut deection 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.47.7) can be rearranged as follows: m s zs I z 2m f ( u )b f z 2m r ( u )br z = Fs 2c f (zs l f z ( u )b f ) 2k f ((z a )b f (z u )b f ) z 2cr ( s + lr z ( u )br ) 2kr ((z a )br (z u )br ), z z = T + {2c f ( s l f z ( u )b f ) + 2k f ((z a )b f (z u )b f )}l f z z {2cr ( s + lr z ( u )br ) + 2kr ((z a )br (z u )br )}lr , z z = 2c f ( s l f z ( u )b f ) + 2k f ((z a )b f (z u )b f ) + 2kt f ((zr )b f (z u )b f ), z z = 2cr ( s + lr z ( u )br ) + 2kr ((z a )br (z u )br ) + 2ktr ((zr )br (z u )br ). z z

It can be observed that the above equations take the same form as (6.36.6) under the transformations listed in the rst 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.37.7) can be rearranged as follows: I z = T {2c f (t f z ( u ) f ) + 2k f ((z a ) f (z u ) f )}t f z {2cr (tr z ( u )r ) + 2kr ((z a )r (z u )r )}tr , z 2m f ( u ) f z 2m r ( u )r z = 2c f (t f z ( u ) f ) + 2k f ((z a ) f (z u ) f ) + 2kt f ((zr ) f (z u ) f ), z = 2cr (tr z ( u )r ) + 2kr ((z a )r (z u )r ) + 2ktr ((zr )r (z u )r ). z

We observe that one equation is missing in this half-car compared to (6.36.6). This is because the chassis is modelled as being innitely 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.46.6) under the transformations listed in the second column of Table 7.1. Half-car ms I m1 m2 k1 k2 c1 c2 k t1 k t2 l1 l2 Fs F zs z zu1 , zu2 z r1 , z r2 z a1 , z a2 u1 , u2 Full-car (bounce/pitch) ms I 2m f 2m r 2k f 2kr 2c f 2cr 2kt f 2ktr lf lr Fs T zs z (z u )b f , (z u )br (zr )b f , (zr )br (z a )b f , (z a )br (u)b f , (u)br Full-car (roll/warp) I 2m f 2m r 2k f 2kr 2c f 2cr 2kt f 2ktr tf tr T z (z u ) f , (z u )r (zr ) f , (zr )r (z a ) f , (z a )r (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 (x)war p (x)roll = L f,2 (x) f (x)r , (7.15) 1 t f + tr tr 1 t f 1 , (7.14) (7.13)

where x can be z u , zr or z a , strut deection 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 ms mu ks cs kt Fs zs zu , za zr , u Full-car (Warp) 2(m f + m r ) 2(k f + kr ) 2(c f + cr ) 2(kt f + ktr ) (z u )war p , (z a )war p (zr )war p , (u)war p Full-car (Roll) I 2(m f t 2 + m r tr2 ) f 2(k f t 2 + kr tr2 ) f 2(c f t 2 + cr tr2 ) f 2(kt f t 2 + ktr tr2 ) f T z (z u )roll , (z a )roll (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 specic 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 innite. 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 Pbp u bp K bp w wroll Proll (u)roll K roll wwar p Pwar p (u)war p K war p

z bp ybp U2,bp zroll yroll U2,roll z war p ywar p z

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 dened as follows:

w = wbp = wroll =

Fs , T , T , zr1 , zr2 , zr3 , zr4 Fs , T , (zr )b f , (zr )br T , (zr )roll (zr )war p , , ,

(7.16)

wwar p = z = z bp = zroll =

zs , z , z , zu1 , zu2 , zu3 , zu4 z s , z , (z u )b f , (z u )br z , (z u )roll (z u )war p , , ,

(7.17)

z war p =

7.3 A Design Example for the Full-Car Model

77

ybp = yroll =

z s , z , (D)b f , (D)br z , (D)roll (D)war p , , ,

ywar p = u bp =

(u)b f , (u)br

and the subscripts b f , br , roll and war p are dened 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 coefcients: 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 structure U2,bp is given by (6.7) and Table 7.1 as: U2,bp = 1 0 0 1 . (7.18)

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 )

And the H controller was derived in Example 6.1 as: K bp = where K c was given in (6.11). Kc 0 0 Kc , (7.19)

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 coefcients: m s = 450 kg, m u = 112.5 kg, ks = 45 kN/m, cs = 11.25 kNs/m, kt = 562.5 kN/m. The required structure of U2 takes the following form after using Table 7.2, (5.10) and (7.13): U2,roll Given the weighting function: Wroll = 10(s + 80) , s+8 (7.21) =
I 2(c f s+k f )t f (tr +t f )

(7.20)

78

Disturbance Response Decoupling for The Full-Car Model

such that the weighted plant Wroll U2,roll P22 has a bandwidth of about 60 rad/sec, it is found that the 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 weighted plant Wroll U2,roll P22 is the same as the diagonal elements in the scalar matrix Wbp U2,bp P22 , to the passive suspension with d.c. gain TT (0) = 2.4 105 , a similar result to Fig. 5.4. z see (6.8) and Table 5.1.) This controller gives the steady state gain of TT as 2.33106 , compared z

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 corresponding to the strut deections: (D)war p = (z u )war p . For this reason there is no U2 block for 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 coefcients 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.45.6): m u s 2 z u = (cs s + ks ) u + ks z a + kt ( r z u ), z z which reduces to, using (5.15.2): (m u s 2 + cs s + ks + kt ks (s)K war p (s)) u = kt zr . z 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 Tzr u (0) = 1. We z 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.17.3) are equivalent to: 1 lf t f 1 lf tf 1 lr tr u p2 lr u p3 tr u p4 1 u p1 = 0. (7.24) (7.23)

7.3 A Design Example for the Full-Car Model

79

(z s = 0) cs mu kt A ks zu zr za

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: u p1 , u p2 , u p3 , u p4 = tr , tr , t f , t f (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 dened 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 , 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 1 = 2(tr + t f ) tr , tr , t f , t f (7.26)

(x)war p

x 2 , x3 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, 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 by (7.47.7), which in turn is equivalent to = 0 by (7.25). form: , , , z r1 z u 1 , z r2 z u 2 , z r3 z u 3 , z r4 z u 4 =0 It can be observed that the proposition holds if equation (7.26) is replaced by any equation of the

80

Disturbance Response Decoupling for The Full-Car Model

with > 0, i.e. the particular ratios chosen in the denition 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 Tzr u (0) = 1. z 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 signicantly with this modication or when the actuator dynamics are included. The step response with the nal controller, with improved warp behaviour compared to the passive case, is shown in Fig. 7.5.

7.3.4 The Full-Car Control


w P z

u f5 f4 K f3 f2 f1

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

As a nal step we can redraw Fig. 7.2 in the form of Fig. 7.4 where P is the full-car model represented by (7.17.7). In Fig. 7.4 the measurements y and control signals u are dened as follows: y = u = z s , z , z , D1 , D2 , D3 , D4 u1, u2, u3, u4 , ,

where Di and u i represent the strut deection 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 dened 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
I 2(c f s+k f )t f (tr +t f )

1 0 0 0

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 where L f,1 is dened in (7.10), L f,2 is dened in (7.14) and f 3 combines U2,bp dened in (7.18) and U2,roll dened in (7.20). Note that the third row in f3 reects the fact that there is only one measurement available for warp control. The controller K is dened 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 benets 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.
1.5 x 10
5

Fs zs
1 0.75 0.5

x 10

T z

0.5

0.25 0.5
5

0 0 2.5 2 1.5 1 0.5 0 0 x 10

1.5

0 0

0.5

1.5

T z
1 0.75 0.5 0.25 0.5 1 1.5 2 0 0

(zr)warp (zu)warp

0.5

1.5

Figure 7.5: Step responses of TFs s , TT , TT and T(r )war p ( u )war p using active (dashed) and z z z z z 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 rst 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 1 0.8 0.6 0.4 0.2 0 0

cm

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 signicantly 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 500

m/sec

Nm
5 10 15

10

5 500 0

5 0

1000 0

10

15

sec
(a) forward velocity

sec
(b) Applied torques on front wheels

0.08 0.06 0.04 0.02

0.05 0.04 0.03 0.02

rad

0 0.02 0.04 0.06 0.08 0 5 10 15

0.01 0 0.01 0.02 0

10

15

sec
(c) z

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 the matrix U2 which determines the required controller structure. Throughout the application of vehicle active suspension design in Chap. 57, it has always been possible to calculate U2 symbolically using 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 the controller structure U2 . Section 8.1 considers the linearised half-car double-wishbone model, and presents the procedure of numerically calculating the controller structure U2 . Section 8.2 considers 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 ltered version of the actuators command signal, as in (6.16.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 nd 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 difcult to derive. For example, this half-car
85

86

Numerical Calculation of the Controller Structure

Fs R1 B1 zu1 I1 m1 P1 C1 S1 T1 z r1 k t1 A1 D1 :pin joint :suspension strut x y z , F Q A2 D2 k t2 I , m s B2 zs I2 C2 m 2 P2 S2 T2 z r2 R2

zu2

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 ] , w1 = [zr1 , zr2 ] , w2 = [Fs , F ], y = [ s , z , D1 , D2 ] where D1 and D2 are the strut deections and z 2 omitted. The z 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) nd a suitable U1 from the lnf of T3,1 = U1 F; (2) partition U1 = [M , N ] where M is square; (3) nd a minimal realisation of L := N M 1 ; (4) nd a left coprime factorisation L = M 1 N and set U2 = [ N , M] (e.g. see [45, Theorem 12.19]).

8.1 The Half-Car Double-Wishbone Model

87

We note that steps (2)(4) of the above procedure provide a method of nding a matrix U2 without 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 a lnf. Finally we note the connection with Theorem 4.3 that U2 constructed in (4) is a left annihilator 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 passive suspension and improves the load disturbances responses, we nd the controller structure U2 , after model reduction, as: U2 =
2.54101 s+3.58 2.54101 s+3.58 4.56102 s+3.65 4.56102 s+3.65

1
8.7103 s+3.58

8.7103 s+3.58

(8.1)

Using H loop shaping method with the following weighting function: W1 = 8(s + 80) 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 TFs s (0) from 9.70105 to 1.8106 and TF (0) from 4.31105 to 8.31107 . z z Fs z s F z

1.2 1

x 10

4.5 4 3.5

x 10

0.8 0.6

3 2.5 2

0.4 0.2

1.5 1 0.5

0 0

sec

0 0

sec

Figure 8.2: Step responses for linearised model of TFs s and TF : passive (solid) and active z z 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 changing the other. To perform it, rstly we need to derive the controller structures U2,Fs and U2,F , which keep the responses to [zr1 , zr2 , F ] and [zr1 , zr2 , Fs ] xed respectively, as follows (after model

88

Numerical Calculation of the Controller Structure

reduction): U2,Fs U2,F = =


3.59101 , s+3.58

0, 0.7071, 0.7071 0.7071, 0.7071

. ,

(8.2) (8.3)

0,

6.45102 , s+3.65

Now we apply H loop shaping method for the designs. Suppose we want to improve the response of TFs s in Fig. 8.2 further, we choose a weighting function W1,Fs for the shaped plant U2,Fs P22 , z and nd a suitable controller K 1,Fs . Or if we want to improve the response of TF , we choose z a weighting function W1,F for the shaped plant U2,F P22 , and nd a suitable controller K 1,F . The following weighting functions: 8.3 102 (s + 40) 9.9 102 (s + 40) , W1,F = , s + 20 s + 20 are used for this model. Now we derive the following parameters from the controllers: W1,Fs = Q = (I K 1 P22 )1 K 1 , Q Fs Q F = (I K 1,Fs P22 )1 K 1,Fs , = (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 three cases: (1) Q = 0, i.e. passive system, (2) Q = Q, the rst stage design and (3) Q = Q + Q Fs + to 6.12 107 and 9.88 108 respectively.
1.2 1 0.8 0.6 x 10
4

Q F , the rened design. The nal controller reduces the d.c. gains of TFs s and TF further down z z Fs z s
5

4.5 4 3.5 3 2.5 2

x 10

F z

0.4 0.2

1.5 1 0.5

0 0

sec

0 0

sec

Figure 8.3: Step responses for the linearised model of TFs s and TF with controller K = z z (I Q P22 )1 Q with: Q = 0 passive (solid), Q = Q (dashed) and Q = Q + Q Fs + Q F (dashdotted).

It is also interesting to compare the controllers structures U2 , U2,Fs and U2,F in (8.18.3). We notice that U2,Fs and U2,F are close to sub-matrices of an equivalent structure of U2 as follows: U2,Fs U2,F 0.7071 0.7071 0.7071 0.7071 U2 ,

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. U2 ) using the full-car double-wishbone model. A full-car double-wishbone model is given in Fig. 8.4, 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 z ,T m s ,I ,I z ,T lf z (1) the front half-car (2) x y lr (4)

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 ] , w1 = [zr1 , zr2 , zr3 , zr4 ] , w2 = [Fs , T , T ] , y = [ s , z , z , D1 , D2 , D3 , D4 ] where D1 , . . . , D4 z are the strut deections and z 2 omitted. Using L f,1 , L f,2 given in (7.10) and (7.14), we dene the bounce/pitch, warp and roll modes of the full-car model as follows: (x)b f , (x)br , (x) f , (x)r (x)war p , (x)roll = L f,1 = L f,2 x1 , x2 , x3 , x4 (x) f , (x)r , ,

where x may represent any of the following variables: z u , zr , z a , strut deection 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 difcult 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 nd 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): U2,bp =
2.39101 d1 (s) 2.34101 d2 (s) 6.85102 d1 (s) 6.73102 d2 (s) 8103 d1 (s)

1
8103 d2 (s)

(8.4)

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

the controller K bp

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


29.70(s+16.47)(s+40.9650.04 j ) (s+1.92)(s+56.4692.79 j )

(8.5)

K bp =

0
29.71(s+15.98)(s+40.7946.39 j ) (s+1.92)(s+54.9489.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): U2,roll =
4.23102 , s+3.31

(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 nal controller layout as in Fig. 7.4, where f 3 is the overall controller structure: 6.85102 2.39101 8103 0 1 0 0 d1 (s) d1 (s) d1 (s) 1 2.3410 6.73102 8103 0 1 0 0 d2 (s) d2 (s) d2 (s) f3 = , 0 0 0 0 0 1 0 4.23102 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 dened 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, TFs s (0) was stiffened from 9.70 105 to 2.09 106 while TT (0) was z z stiffened from 4.31105 to 9.28107 and TT (0) was stiffened from 4.31105 to 9.20107 . z

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(r )war p ( u )war p (0) is not equal to 1. Because the sprung mass has no warp motion, z z 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: Tzri u i (0) = 0.9974, z 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(r )b f ( u )b f (0) = z z T(r )br ( u )br (0) = T(r )roll ( u )roll (0) = 1. Therefore, the twist comes from the warp quarter-car Pwar p , z z z z

92

Numerical Calculation of the Controller Structure

which can be expressed as: ( u )war p z ( D)war p where Pwar p (0) is found as: Pwar p (0) = Therefore, the problem can be simplied 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 nd K war p (0) = 1 gives the desired result, i.e. the d.c. gain: T(r )war p ( u )war p (0) = 1. Hence we can change K war p in (8.9) to z z be 1. As a consequence, the d.c. gain of each wheel station becomes: Tzri u i (0) = 1, z 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. 0.9897 0.0090 1.1295 0.0103 . = Pwar p ( r )war p z (u)war p ,

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.
1.2 1
3.5
3.5 3 2.5 2 1.5 1 0.5

x 10

Fs z s

4.5 4

x 10

T z

4.5 4

x 10

T z

0.8 0.6

3 2.5 2

0.4 0.2

1.5 1 0.5

0 0

0.5

sec

1.5

2.5

0 0

0.5

sec

1.5

2.5

0 0

0.5

sec

1.5

2.5

Figure 8.5: AutoSim nonlinear simulations: step responses of TFs s , TT and TT with passive z z z (solid) and active control (dashed).

8.3 Summary and Comments

93

8.3 Summary and Comments


In this chapter, we developed the procedure to numerically calculate the controller structure (U2 ), 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 nding 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 coefcients 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 rst 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 ] w1 = [zr1 , zr2 ] , w2 = [Fs , Ts , T1 , T2 ] , y = [ s , 3 , D1 , D2 ] , where D1 and D2 are strut deections, u = [u 1 , u 2 ] equals the actuator z 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

p2 = 0, p3 = 4. Following the computational procedure in Section 8.1, the controller structure U2 after model reduction is found as: U2 =
0.0788(s+3.8402) (s+3.9793)(s+3.7744) 0.0766(s+4.0033) (s+3.9793)(s+3.7744) 0.0385(s+3.7307) (s+3.9793)(s+3.7744) 0.0356(s+3.9341) (s+3.9793)(s+3.7744)

1 0

0 1

(9.1)

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

an H loop-shaping controller after model reduction can be obtained as: K1 =


1.1576(s+4.8769103)(s+33.665917.0618 j ) (s+2.1332)(s+152.81109.84 j ) 4.9241(s3.0241)(s11.360276.1179 j ) (s+2.0724)(s+104.77114.45 j ) 5.3166(s0.5734)(s+40.128135.7700 j ) (s+2.1332)(s+152.81109.84 j ) 22.6155(s+29.3460)(s+86.875520.1755 j ) (s+2.0724)(s+104.77114.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 control K 1 and U2 from (9.1) and (9.2) are then implemented to get the closed-loop responses.
x 10
5

2 1.5 1

2 1.5 1

x 10

Eigenvalues (Ns/m)

Eigenvalues (Ns/m)
1 2 3 4 5

0.5 0 0.5 1 1.5 2 2.5 3 0 10

0.5 0 0.5 1 1.5 2 0 10

10

10

10

10

10

10

10

10

10

10

Frequency (rad/sec)

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 dened as: Fs , Ts , T1 , T2 , N1 , N2 = Y s z s , s 3 , s(1 3 ), s(2 3 ), s zr1 , s zr2

9.3 Simulation Results

97

for acceleration (or inboard braking) in Fig. 9.1(a), or Fs , Ts , T1 , T2 , N1 , N2 = Y s z s , s 3 , s(1 4 ), s(2 5 ), s zr1 , s zr2

for outboard braking in Fig. 9.1(b). It conrms 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 rst tested at zero velocity with various load inputs. The closed-loop responses of the active systems reduced the d.c. gain of TFs s from 1.35 105 to z 1.12 106 , TTs 3 from 7.99 106 to 6.60 107 , TT1 s from 2.66 105 to 2.47 107 , z TT2 s from 5.33 105 to 4.94 107 , TT1 3 from 9.83 106 to 1.84 106 , TT2 3 from z 1.44 105 to 1.61 106 . As expected, the active controller signicantly reduces the load and torque responses without changing the road responses.
1000 20

torques (Nm)

600 400 200 0 200 400 600 800 0 2 4 6 8 10 12

y3 (m/sec)

800

15

10

sec

0 0

sec

10

12

(a) applied torques:

T1

(b) forward velocity

(solid), T2 (dash dotted)


0.035 0.03 0.04 0.035

3 (rad)

3 (rad)
2 4 6 8 10 12

0.025 0.02 0.015 0.01 0.005 0 0.005 0

0.03 0.025 0.02 0.015 0.01 0.005 0

sec

0.005 0

sec

10

12

(c) kt1 = kt2 = , with no-slip constraints

(d) kt1 = kt2 = 500 kN/m, with magic formula tyre 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-specied transfer function unchanged. For some special systems, like the vehicle models demonstrated throughout this dissertation, a simplied 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 veried 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 veried 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 dened to perform the controller parametrisation. For the vehicle models, this factorisation is in a rather simple form, and we did not encounter much difculty in obtaining a suitable one. However, an algorithm to nd a lnf and rnf would be particularly benecial 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 nd 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 structure U2 as a left annihilator of the open-loop system (Theorem 4.3). It is an open area for 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 :joint-coordinates ptQ :translate [nx] :name "sprung mass" :cm-coordinates ptQ :mass "ms")

(add-point smass_A :body smass :coordinates ptA) ;;; add unsprung mass (add-body umass :joint-coordinates ptB :translate ([nx]) :name "unsprung mass" :cm-coordinates ptB :mass "mu")

;;; first add the external variables (add-variables dyvars real Fs Zr) ;;; add suspension force (add-strut u :point1 smass_A :point2 umasscm ;;; add tyre force (add-line-force Fr :point1 umasscm :name "tyre force" :direction [nx] :name "suspension strut" :magnitude "-ks*(x-x0) -cs*v")

:magnitude "kt*(Zr- dot([nx],pos(umasscm,ptB)))" ) (add-line-force FFs :point1 smasscm :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 ; cs 40000 ks 120000 kt 150000 zr 0 Qx 0 ;; soft settings ;; hard settings Ax 0.5 Bx 0.7) :name "force acting on sprung mass" :direction [nx]

(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 G_v sys = sbs(abv(Y11_v,Y21_v),abv(Y12_v,Y22_v)); = vpck(sbs(abv(G11_v,G21_v),abv(G12_v,G22_v)),w); = madd(Y_v , vcjt(Y_v));

sys_E = veig(sys); re1 re2 tt = real(vunpck(sel(sys_E,1,1))); = real(vunpck(sel(sys_E,2,1))); = 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 z x T2 ms y Bx By l5 5 C2 y C 2x C 2x m 2 y2 + C2 y T2 F2 C 1x C 1x m 1 y1 + C1 y T1 I1 1 F1 Bx B By Ax 4 C1 y Q Is 3 T1 Ax ms x Ay Ay l4 a

I2 2

N2

N1

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

C1 = (x + (h x1,0 ) cos 3 a sin 3 + l4 cos 4 ) + (y + (h x1,0 ) sin 3 + a cos 3 + l4 sin 4 ) , x y C = (x + (h x ) cos + b sin + l cos ) + (y + (h x ) sin b cos l sin ) . x 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 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; the front trailing-arm A x + C 1x A y + C1 y = 0, = 0, (B.4) (B.5) (B.6) (B.3) = 0, (B.1) (B.2)

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

C1x l4 sin 4 + C1 y l4 cos 4 = 0; the rear trailing-arm B x + C 2x B y + C2 y = 0, = 0,

(B.7) (B.8) (B.9)

C2x l5 sin 5 + C2 y l5 cos 5 = 0; the front wheel C1x + N1 = 0, C1 y + m 1 y1 F1 = 0, T1 + F1r1 I1 1 = 0; the rear wheel C2x + N2 = 0, C2 y + m 2 y2 F2 = 0, T2 + F2 r2 I2 2 = 0. In addition there are the no-slip conditions: y1 = r1 1 , y2 = r2 2 .

(B.10) (B.11) (B.12)

(B.13) (B.14) (B.15)

(B.16) (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 , y + (h x1,0 ) sin 3 + a cos 3 + l4 sin 4 = y1 + a + y1,0 , x + (h x2,0 ) cos 3 + b sin 3 + l5 cos 5 = h r2 , y + (h x2,0 ) sin 3 b cos 3 l5 sin 5 = y2 b y2,0 . (B.18) (B.19) (B.20) (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 C 2x C1 y C2 y = Ax = N1 , = Bx = N2 , = A y = F1 m 1 y1 ,

= B y = F2 m 2 y2 , I1 T1 = F1r1 y1 , r1 I2 T2 = F2r2 y2 . (B.22) r2 Therefore, we have nine equations (B.1B.3, B.6, B.9, B.18B.21) left for nine unknowns: 3 , 4 , 5 , 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), satises all the equations (B.1B.3, B.6, B.9, B.18B.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 satises (B.1). Substituting N1 , N2 into ((B.3) + (3.6) +(3.8)) veries (B.3). Finally, the verication of (B.18B.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.1B.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)) veries (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 (add-point ptA (add-point ptD (add-point ptG :coordinates (Qx :coordinates (Ax :coordinates (Dx :coordinates (Gx Qy Ay Dy Gy 0)) 0)) 0)) 0)) (add-point ptB (add-point ptE (add-point ptH :coordinates (Bx :coordinates (Ex :coordinates (Hx By Ey Hy 0)) 0)) 0)) (add-point ptC2 :coordinates (C2x C2y 0))

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

;; add sprung mass (add-body smass :body-rotation-axes z (add-point smassA (add-point smassB :name "spurng mass" :parent n :translate (x y) :mass "ms") :coordinates ptA) :coordinates ptB) :joint-coordinates ptQ :cm-coordinates ptQ :inertia-matrix (0 0 "Is") :body smass :body smass

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

;;; add trailing arms (add-body lead :joint-coordinates smassA :reference-axis x (add-body tail :joint-coordinates smassB :reference-axis x (add-point smassD (add-point smassE (add-point leadG (add-point tailH ;;; add wheels (add-body fwheel :joint-coordinates ptC1 :reference-axis x (add-body rwheel :name "front wheel" :body-rotation-axes z :inertia-matrix (0 0 "I1") :name "rear wheel" :parent lead :parent-rotation-axis z :mass "m1") :parent tail :body smass :body smass :body lead :body tail :name "lead trailing arm" :body-rotation-axes z :inertia-matrix (0 0 "Ilead") :name "tail trailing arm" :body-rotation-axes z :inertia-matrix (0 0 "Itail") :coordinates ptD) :coordinates ptE) :coordinates ptG) :coordinates ptH) :parent smass :parent-rotation-axis z :mass "Mlead") :parent smass :parent-rotation-axis z :mass "Mtail")

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

107

:joint-coordinates ptC2 :reference-axis x

:body-rotation-axes z :inertia-matrix (0 0 "I2")

:parent-rotation-axis z :mass "m2")

;; 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 (add-speed-constraint ;; 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) "dot([nz],rot(fwheel))*r1+dot([ny],vel(fwheel0))" :u "ru(fwheel)" ) "dot([nz],rot(rwheel))*r1+dot([ny],vel(rwheel0))" :u "ru(rwheel)" ) ;; front tyre ;; rear tyre (add-position-constraint "(rq(smass)+rq(tail)+rq(rwheel))*r2+dot([ny],pos(rwheel0,ptC2))" :q "rq(rwheel)")

;;; 4. add loads ;;;;;;;;;;;;;;;;; (add-line-force Fload :direction [nx] (add-moment Fmom :direction [nz] :name "vertical load force" :magnitude "FFs" ) :name "rotational load torque" :magnitude "TT3") :body1 smass :point1 smasscm

;; apply the torques to both tyres (add-moment ftorque :direction [nz] :body1 fwheel (add-moment rtorque :direction [nz] :body1 rwheel :name "applied torque on front wheel" :magnitude "TT1" :body2 lead) ;;; for inboard :body2 smass :name "applied torque on rear wheel" :magnitude "TT2" :body2 tail) ;;; for inboard :body2 smass

;; add passive suspensions (add-strut f_susp :point2 leadG (add-strut r_susp :point2 tailH :point1 smassD :magnitude "-k1*(x-x0) -c1*v") :point1 smassE :magnitude "-k2*(x-x0) -c2*v")

;;; 5. add tyre force ;;;;;;;;;; (add-line-force Fr1 :point1 fwheelcm (add-line-force Fr2 :point1 rwheelcm :name "front tyre force" :direction [nx] :name "rear tyre force" :direction [nx]

:magnitude "kt1*( Zr1 - @vroad_f ) " )

: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 Qx Ax Ex ; 0 r1 0.15 0 Is 1000 Qy 0 0.5035 Gx Bx 0.6909 0.35 Gy By -1.8099 Dx 0.1 Hx 0.35 Dy 1.3 Hy -1.3 ;; soft settings ;; hard settings C2x 0.35 c1 1000 C2y -1.3 1.3 m2 100 0 v0 30 r2 0.15 Mtail I1 1 0 I2 1 Itail 0

Ilead

"tu(smass,2)" 15 0.1183 Ay 0.1

C1x 0.35 C1y 1.3 Ey -1.3 k2 4000 k1 4000

c2 1000 c2 100000

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

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*s2*zs-Fs+up: exp2 := mu*s2*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 R := matrix(2,2,0): := matrix(2,3,0): L[1,2] := coeff(exp1,zu): R[1,2] := coeff(exp1,Fs): L[2,2] := coeff(exp2,zu): R[2,2] := coeff(exp2,Fs):

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

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

d(s) := collect(det(L),s): P := matrix(4,3,0): P[1,2] := simplify(G[1,2]): P[2,2] := simplify(G[2,2]): P[3,2] := simplify(P[1,2]*s2):

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

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 U2 U Ut := evalm(simplify(T31/s2/kt/p1*d(s))): := matrix(2,1,[0,1]): := concat(U1,U2): := 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*s2*zs-Fs+up1+up2: exp2 := Ip*s2*zp-Fp+up1*l1-up2*l2: exp3 := m1*s2*zu1-up1-Fr1: exp4 := m2*s2*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 R := matrix(4,4,0): := 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 row1 row2 row3 row4 row5 row6 row7 row8 P P11 P12 P21 P22 := matrix(8,6,0): := submatrix(G,1..1,1..6): := submatrix(G,2..2,1..6): := submatrix(G,3..3,1..6): := submatrix(G,4..4,1..6): := row1*s2: := row2*s2: := row1+l1*row2-row3: := row1-l2*row2-row4: := stackmatrix(row1,row2,row3,row4,row5,row6,row7,row8): := submatrix(P,1..4,1..4): := submatrix(P,1..4,5..6): := submatrix(P,5..8,1..4): := submatrix(P,5..8,5..6):

#### calculate U2 #### T31 := submatrix(P21,1..4,1..2): F U1 U2 U Ut := matrix(2,2,[s2/p3, 0, 0, s2/p3]): := evalm(simplify(multiply(T31,inverse(F)))): := matrix(4,2,[0,0,0,0,1,0,0,1]): := concat(U1,U2): := 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 s2, and degree 1 #### (2). T31 = U1 x F, where F = s2/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 (add-point ptA2 (add-point ptA4 (add-point ptB2 (add-point ptB4 :coordinates ( 0 0 tf tf 0)) (add-point ptA1 Lf)) (add-point ptA3 Lf)) (add-point ptB3 :coordinates (0.5 -tf :coordinates (0.7 -tf Lf)) Lf))

:coordinates (0.5 :coordinates (0.5 :coordinates (0.7 :coordinates (0.7

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

tr -Lr)) (add-point ptB1 tr -Lr))

;;; 1. add sprung mass ;;;;;;;;;;; (add-body smass :cm-coordinates ptQ :mass "ms" :name "sprung mass" :translate ([nx] [ny] [nz]) :joint-coordinates ptQ :small-translations (N T N) :reference-axis [nz]

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

: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 (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 right unsprung mass" :cm-coordinates ptB1 :name "front left unsprung mass" :cm-coordinates ptB2 :mass "m2") :name "rear right unsprung mass" :cm-coordinates ptB3 :mass "m3") :name "rear left unsprung mass" :cm-coordinates ptB4 :parent smass :translate (x) :parent smass :translate (x) :parent smass :translate (x ) :parent smass :translate (x )

:small-translations (N ) :mass "m1")

:small-translations ( N) :mass "m4") ;;; add wheels (add-body wheel1 :joint-coordinates umass10 :reference-axis z (add-body wheel2 :joint-coordinates umass20 :reference-axis z (add-body wheel3 :joint-coordinates umass30 :reference-axis z (add-body wheel4 :joint-coordinates umass40 :reference-axis z ;;; 3. manipulate inputs ;;; (install-table road "input profile([ny] vs. time)" :npts 1000 :deriv rp :xunits t :yunits l :values ((0 0) (1 0) (1 1) (2 1) (2 0))) :table-function tabf :keyword Road-profile :name "front right wheel" :body-rotation-axes y :inertia-matrix (0 "Iwheel" 0) :name "front left wheel" :body-rotation-axes y :inertia-matrix (0 "Iwheel" 0) :name "rear right wheel" :body-rotation-axes y :inertia-matrix (0 "Iwheel" 0) :name "rear left wheel" :body-rotation-axes y :inertia-matrix (0 "Iwheel" 0) :parent umass1 :parent-rotation-axis y :mass "Mwheel") :parent umass2 :parent-rotation-axis y :mass "Mwheel") :parent umass3 :parent-rotation-axis y :mass "Mwheel") :parent umass4 :parent-rotation-axis y :mass "Mwheel")

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 (setsym D3 "dot([nx],pos(smass_A1,umass1cm)) +0.2") (setsym D2 "dot([nx],pos(smass_A3,umass3cm)) +0.2") (setsym D4 "dot([nx],pos(smass_A2,umass2cm)) +0.2") "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 (add-equation init &z1p2R (add-equation init &Ub1d1R (add-equation init &E1R (add-equation init &Db1pR (add-equation init &z2R (add-equation init &z2p2R (add-equation init &Ub2d1R (add-equation init &E2R (add-equation init &Db2pR (add-equation init &z3R (add-equation init &z3p2R (add-equation init &Uw3d1R (add-equation init &E3R (add-equation init &Dw3pR (add-equation init &z4R (add-equation init &z4p2R (add-equation init &Ur4d1R (add-equation init &E4R (add-equation init &Dr4pR "0") (add-equation init &z1pR "0") (add-equation init &Ub1R "0") (add-equation init &Ub1d2R "0") (add-equation init &E1d1R "0") (add-equation init &U1pR "0") (add-equation init &z2pR "0") (add-equation init &Ub2R "0") (add-equation init &Ub2d2R "0") (add-equation init &E2d1R "0") (add-equation init &U2pR "0") (add-equation init &z3pR "0") (add-equation init &Uw3R "0") (add-equation init &Uw3d2R "0") (add-equation init &E3d1R "0") (add-equation init &U3pR "0") (add-equation init &z4pR "0") (add-equation init &Ur4R "0") (add-equation init &Ur4d2R "0") (add-equation init &E4d1R "0") (add-equation init &U4pR "0") "0") "0") "0") "0") "0") "0") "0") "0") "0") "0") "0") "0") "0") "0") "0") "0") "0") "0") "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

:magnitude "@sf1 -k1*(x-x0) -c1*v ") :magnitude "@sf1 -k1*(x-x0+E1R) -c1*v ") up2 :name "front right suspension strut" :point1 wheel2cm :point2 smass_A2 :magnitude "@sf2 -k2*(x-x0) -c2*v ") ; :magnitude "@sf2 -k2*(x-x0+E2R) -c2*v ") up3 :name "rear right suspension strut" :point1 wheel3cm :point2 smass_A3 :magnitude "@sf3 -k3*(x-x0) -c3*v ") ; :magnitude "@sf3 -k3*(x-x0+E3R) -c3*v ") up4 :name " rear left suspension strut" :point1 wheel4cm :point2 smass_A4 :magnitude "@sf4 -k4*(x-x0) -c4*v ") ; :magnitude "@sf4 -k4*(x-x0+E4R) -c4*v ") (add-strut (add-strut (add-strut

;;; 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" :name "front left tyre force" :name "rear right tyre force" :name "front rear tyre force" :point1 wheel1cm :point1 wheel2cm :point1 wheel3cm :point1 wheel4cm :magnitude "-@tyf1 + kt1*( -dot([nx],pos(umass1cm,ptB1)) ) " ) :magnitude "-@tyf2 + kt2*( -dot([nx],pos(umass2cm,ptB2)) ) " ) :magnitude "-@tyf3 + kt3*( -dot([nx],pos(umass3cm,ptB3)) ) " ) :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 :direction [nx] (add-moment Ttheta :direction [ny] (add-moment Tphi :direction [nz] ;; ;; apply the torques to both tyres ;; (install-table accetor "acceleration torque" :xunits "T" :xunits "T" :yunits "F*L" :yunits "F*L" (install-table braking "braking torque" :npts 1000 :npts 1000 :values ((0 0) (1 1) (6 1) (6 0)) ) :values ((0 0) (8 0) (9 -1) (10 -1) (11 -1)) ) ;; absolute forward speed of the front right wheel ;; absolute forward speed of the front left wheel ;; absolute forward speed of the rear ;; absolute forward speed of the rear right wheel left wheel :name "vertical load force" :magnitude "0" ) :name "pitch torque" :magnitude "0") :name "roll torque" :magnitude "0") :body1 smass :body1 smass :point1 smasscm

(setsym z1dot "dot([nz],vel(umass10))") (setsym z2dot "dot([nz],vel(umass20))") (setsym z3dot "dot([nz],vel(umass30))") (setsym z4dot "dot([nz],vel(umass40))") (setsym t1dot "ru(wheel1)") (setsym t2dot "ru(wheel2)") (setsym t3dot "ru(wheel3)") (setsym t4dot "ru(wheel4)")

;; absolute forward rotational speed of the front right wheel ;; absolute forward rotational speed of the front left wheel ;; absolute forward rotational speed of the rear ;; absolute forward rotational speed of the rear right wheel 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)" ) (setsym T2 "0.2*braking(t,1,1)*TB(@t2dot,1,1)*Tbrake2*dz(abs(@t2dot),1,1)" ) (setsym T3 "0.2*braking(t,1,1)*TB(@t3dot,1,1)*Tbrake3*dz(abs(@t3dot),1,1)" ) (setsym T4 "0.2*braking(t,1,1)*TB(@t4dot,1,1)*Tbrake4*dz(abs(@t4dot),1,1)" ) (add-moment T1accel (add-moment T2accel :name "applied torque on front right wheel" :body1 wheel1 :body1 wheel2 :name "applied torque on front left wheel" ;; applied torque; 0 when the forward speed equals to 0 ;; applied torque; 0 when the forward speed equals to 0 ;; applied torque; 0 when the forward speed equals to 0 ;; applied torque; 0 when the forward speed equals to 0

:direction [umass1y] :direction [umass2y]

:magnitude "Taccel*accetor(t,1,1)" :magnitude "Taccel*accetor(t,1,1)" (add-moment Tbr1 :magnitude "@T1" (add-moment Tbr2 :magnitude "@T2" (add-moment Tbr3 :magnitude "@T3" (add-moment Tbr4 :magnitude "@T4"

:body2 smass) :body2 smass) :direction [umass1y] :direction [umass2y] :direction [umass3y] :direction [umass4y]

:name "applied torque on front right wheel" :body1 wheel1 :body1 wheel2 :body1 wheel3 :body1 wheel4 :body2 smass) :body2 smass) :body2 smass) :body2 smass) :name "applied torque on front left wheel" :name "applied torque on rear right wheel" :name "applied torque on rear left wheel"

;;; 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") (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) (add-equation init &tys1 (add-equation init &tys3 ;;; braking and accelerating tyre forces "0") "0") ;;; kappa for each tyre

"0") (add-equation init &tys2 "0") (add-equation init &tys4

114

Appendix to Chapter 7

(add-subroutine update tyre("-fm(Fr1)" @kappa1 &tys1)) (add-subroutine update tyre("-fm(Fr2)" @kappa2 &tys2)) (add-subroutine update tyre("-fm(Fr3)" @kappa3 &tys3)) (add-subroutine update tyre("-fm(Fr4)" @kappa4 &tys4))

;;; call subroutines to generate slip force

(install-table FB "input profile(forward speed vs. braking forces)" :table-function tabf :xunits "l/t" :yunits "f*l" :values ((0 0) (0 1) (20 1) )) (add-line-force slip_f1 :name "front right tyre slip" :point1 wheel10 :point1 wheel20 :point1 wheel30 :point1 wheel40 (add-moment slip_m1 :direction [wheel1y] (add-moment slip_m2 :direction [wheel2y] (add-moment slip_m3 :direction [wheel3y] (add-moment slip_m4 :direction [wheel4y] (add-line-force slip_f2 :name "front left tyre slip" (add-line-force slip_f3 :name "rear right tyre slip" (add-line-force slip_f4 :name "rear left tyre slip" :direction [nz] :direction [nz] :direction [nz] :direction [nz] :npts 1000 :deriv FBp :keyword "braking torque-profile"

:magnitude "tys1*FB(@z1dot,1,1)") :magnitude "tys2*FB(@z2dot,1,1)") :magnitude "tys3*FB(@z3dot,1,1)") :magnitude "tys4*FB(@z4dot,1,1)") :name "tyre slip torque on front right wheel" :body1 wheel1 :body1 wheel2 :body1 wheel3 :body1 wheel4 :magnitude "-tys1*rwheel*FB(@z1dot,1,1)") :magnitude "-tys2*rwheel*FB(@z2dot,1,1)") :magnitude "-tys3*rwheel*FB(@z3dot,1,1)"); :magnitude "-tys4*rwheel*FB(@z4dot,1,1)") :name "tyre slip torque on front left wheel" :name "tyre slip torque on rear right wheel" :name "tyre slip torque on rear left wheel"

;;; 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)" (add-out "fm(T2accel)+fm(Tbr2)" (add-out "fm(Tbr3)" (add-out "fm(Tbr4)" (finish) (setsym *h-file-names* (set-defaults ms 1600 c1 5000 Lf 1.15 ("sim.h" "fcontr2.h" "tyre.h")) It 1000 c2 5000 Lr 1.35 Ip 450 c3 5000 k3 20000 tf 0.75 m1 25 m2 25 m3 25 m4 25 "T3") "T4") "T1") "T2")

c4 5000 k4 20000 tr 0.75 Tbrake3 2800 Tbrake4 2800

k1 20000 k2 20000 kt1 250000

kt2 250000

kt3 250000 kt4 250000 Tbrake2 4200

Taccel 1000 Tbrake1 4200 "tu(smass,3)" 15e-4 "ru(wheel1,1)" 50e-4 "ru(wheel3,1)" 50e-4

"ru(wheel2,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") ;;; *always* call it sim.h!!

E.2 C-Code for the Active Controller


#include #include <stdio.h> <math.h> #include "deftypes.h" #include "simlib.h" #include "fcontr2.h" /* ---------------------------------------------------------------------------write a subroutine in C code; calculate active control in the sharp scheme

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 *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 *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 *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 *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 tf lf lr = 0.75; = 0.75; = 1.15; = 1.35; b2_11 = -4.2929e3; b1_11 = -3.6509e5; b0_11 = -7.3904e6; 2.5073e4; a0_11 = 1.8891e5; real_as *Ur4d2R, real_as *Uw3d2R, real_as *Ub2d2R, real_as *Ub1d2R,

b3_11 = -24.8061; a2_11 =

210.9647; a1_11 =

b3_22 = -24.8061; a2_22 = b1_33 =

b2_22 = -4.2929e3; b1_22 = -3.6509e5; b0_22 = -7.3904e6; 2.5073e4; a0_22 = 300; a0_33 = 1.8891e5; 300;

210.9647; a1_22 =

-0.1036*300; b0_33 =

b3_44 = -24.8061; a2_44 = wn

b2_44 = -4.2929e3; b1_44 = -3.6509e5; b0_44 = -7.3904e6; 2.5073e4; a0_44 = 1.8891e5;

210.9647; a1_44 =

= 100; delta = 1/sqrt(2);

/* initialise states */ z1[0] Ub1[0] E1[0] z2[0] Ub2[0] E2[0] z3[0] Uw3[0] E3[0] z4[0] Ur4[0] E4[0] = *z1R; = *E1R; = *z2R; = *E2R; = *z3R; = *E3R; = *z4R; = *E4R; z1p = *z1pR; z1p2 Db1[0] z2p2 Db2[0] z3p2 Dw3[0] z4p2 Dr4[0] = *z1p2R; = *Db1pR; = *z2p2R; = *Db2pR; = *z3p2R; = *Dw3pR; = *z4p2R; = *Dr4pR; U4[0] = *U4pR; U3[0] = *U3pR; U2[0] = *U2pR; U1[0] = *U1pR; = *Ub1R; Ub1d1[0]= *Ub1d1R; Ub1d2[0]= *Ub1d2R; E1d1[0] = *E1d1R; z2p = *z2pR;

= *Ub2R; Ub2d1[0]= *Ub2d1R; Ub2d2[0]= *Ub2d2R; E2d1[0] = *E2d1R; z3p = *z3pR;

= *Uw3R; Uw3d1[0]= *Uw3d1R; Uw3d2[0]= *Uw3d2R; E3d1[0] = *E3d1R; z4p = *z4pR;

= *Ur4R; Ur4d1[0]= *Ur4d1R; Ur4d2[0]= *Ur4d2R; E4d1[0] = *E4d1R;

/* use Euler method to solve the differential equations */ Db1[1] Dr1[1] Dw3[1] Dr4[1] = (D1+D2)/2; Db2[1] = (D1-D2)/2; Dr2[1] = (D3+D4)/2; = (D3-D4)/2;

= (tr*Dr1[1] -tf*Dr2[1])/(tf+tr); = (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] z1d1[0] z1d2[0] z1d3[0] Db2d1[0] z2[1] z2d1[0] z2d2[0] z2d3[0] z3[1] z3d1[0] z3d2[0] z3d3[0] Dr4d1[0] z4[1] z4d1[0] z4d2[0] z4d3[0]

= (ms*lr*zsddot +It*ztddot +2*c1*(lr+lf)*Db1d1[0] +2*k1*(lr+lf)*Db1[0] -2*k1*(lr+lf)*z1[0])*h/(2*c1*(lr+lf)) +z1[0]; = (z1[1] - z1[0])/h; = (z1[1] - 2*z1[0]+z1p)/(h*h); = (z1[1] - 3*z1[0] + 3*z1p -z1p2)/(h*h*h); = (Db2[1] - Db2[0])/h; = (ms*lf*zsddot -It*ztddot +2*c3*(lr+lf)*Db2d1[0] +2*k3*(lr+lf)*Db2[0] -2*k3*(lr+lf)*z2[0])*h/(2*c3*(lr+lf)) +z2[0]; = (z2[1] - z2[0])/h; = (z2[1] - 2*z2[0]+z2p)/(h*h); = (z2[1] - 3*z2[0] + 3*z2p -z2p2)/(h*h*h); = Dw3[1]; = (z3[1] - z3[0])/h; = (z3[1] - 2*z3[0] + z3p)/(h*h); = (z3[1] - 3*z3[0] + 3*z3p -z3p2)/(h*h*h); = (Dr4[1] - Dr4[0])/h; = (Ip*zpddot +2*c1*tf*(tr+tf)*Dr4d1[0] +2*k1*tf*(tr+tf)*Dr4[0] -2*k1*tf*(tr+tf)*z4[0])*h/(2*c1*tf*(tr+tf)) +z4[0]; = (z4[1] - z4[0])/h; = (z4[1]-2*z4[0]+z4p)/(h*h); = (z4[1] - 3*z4[0] + 3*z4p -z4p2)/(h*h*h);

/* step2: H_infinity controller design */ Ub1d3[0] = b3_11*(z1d3[0]) + b2_11*(z1d2[0]) + b1_11*(z1d1[0]) Ub1d2[1] = Ub1d2[0] + h*Ub1d3[0]; Ub1d1[1] = Ub1d1[0] + h*Ub1d2[0]; Ub1[1] = Ub1[0] + h*Ub1d1[0]; + b0_22*(z2[0]) -a2_22*Ub2d2[0] - a1_22*Ub2d1[0] - a0_22*Ub2[0]; + b0_11*(z1[0]) -a2_11*Ub1d2[0] - a1_11*Ub1d1[0] - a0_11*Ub1[0];

Ub2d3[0] = b3_22*(z2d3[0]) + b2_22*(z2d2[0]) + b1_22*(z2d1[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]) Ur4d2[1] = Ur4d2[0] + h*Ur4d3[0]; Ur4d1[1] = Ur4d1[0] + h*Ur4d2[0]; Ur4[1] Ur1[1] = U1[1] U3[1] = = = Ur4[0] + h*Ur4d1[0]; + b1_44*(z4d1[0]) + b0_44*(z4[0]) -a2_44*Ur4d2[0] - a1_44*Ur4d1[0] - a0_44*Ur4[0];

Uw3[1] + tf*Ur4[1]; Ur2[1] = -Uw3[1] + tr*Ur4[1]; Ub1[1] + Ur1[1]; Ub2[1] + Ur2[1]; U2[1] U4[1] = = Ub1[1] - Ur1[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 *Ub1R = z1[1]; *z1pR = z1[0]; *z1p2R = z1p; = Ub1[1]; *Ub1d1R = Ub1d1[1]; *Ub1d2R = Ub1d2[1];

E.3 C-Code for the Tyre Model

117

*E1R *z2R *Ub2R *E2R *z3R *Uw3R *E3R *z4R *Ur4R *E4R }

= E1[1]; = z2[1]; = E2[1]; = z3[1]; = E3[1]; = z4[1]; = E4[1];

*E1d1R *z2pR *E2d1R *z3pR *E3d1R *z4pR *E4d1R

= E1d1[1]; = z2[0]; = E2d1[1]; = z3[0]; = E3d1[1]; = z4[0]; = E4d1[1];

*Db1pR *z2p2R *Db2pR *z3p2R *Dw3pR *z4p2R *Dr4pR

= Db1[1]; = z2p; = Db2[1]; = z3p; = Dw3[1]; = z4p; = Dr4[1];

*U1pR

= U1[1];

= Ub2[1]; *Ub2d1R = Ub2d1[1]; *Ub2d2R = Ub2d2[1]; *U2pR = U2[1];

= Uw3[1]; *Uw3d1R = Uw3d1[1]; *Uw3d2R = Uw3d2[1]; *U3pR = U3[1];

= Ur4[1]; *Ur4d1R = Ur4d1[1]; *Ur4d2R = Ur4d2[1]; *U4pR = U4[1];

E.3 C-Code for the Tyre Model


#include #include <stdio.h> <math.h> #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 C B E = a1*pow(Fz/1000,2) + a2*Fz/1000; = 1.65; = (a3*pow(Fz/1000,2)+a4*Fz/1000)/(C*D*exp(temp)); = a6*pow(Fz/1000,2) + a7*Fz/1000 + a8;

temp = a5*Fz/1000;

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 :joint-coordinates ptQ :translate ([nx] [ny]) :mass "ms" :name "sprung mass" :cm-coordinates ptQ :body-rotation-axes z :inertia-matrix (0 0 "Ip")) (add-point smass_lA :body smass :coordinates ptlA) (add-point smass_lB :body smass :coordinates ptlB) (add-point smass_lR :body smass :coordinates ptlR)

:parent-rotation-axis [nz] :reference-axis [nx] (add-point smass_rA :body smass :coordinates ptrA) (add-point smass_rB :body smass :coordinates ptrB) (add-point smass_rR :body smass :coordinates ptrR) ;;; add the double-wishbone structure (add-body rlink3 :parent smass :cm-coordinates ptrB :parent-rotation-axis [smassz] :mass "rm3" (add-body rlink4 :parent smass :cm-coordinates ptrA :parent-rotation-axis [smassz] :mass "rm4" (add-body llink3 :parent smass :cm-coordinates ptlB :parent-rotation-axis [smassz] :mass "lm3" (add-body llink4 :parent smass :cm-coordinates ptlA :parent-rotation-axis [smassz] :mass "lm4" :name "right upper wishbone link3" :joint-coordinates ptrB :body-rotation-axes z :reference-axis [smassx] :inertia-matrix (0 0 "rI3")) :name "right lower wishbone link4" :joint-coordinates ptrA :body-rotation-axes z :reference-axis [smassx] :inertia-matrix (0 0 "rI4")) :name "left upper wishbone link3" :joint-coordinates ptlB :body-rotation-axes z :reference-axis [smassx] :inertia-matrix (0 0 "lI3")) :name "left lower wishbone link4" :joint-coordinates ptlA :body-rotation-axes z :reference-axis [smassx] :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 :parent rlink3 :cm-coordinates ptrP :mass "rmu" (add-body lumass :parent llink3 :cm-coordinates ptlP :mass "lmu" :name "right unsprung mass" :joint-coordinates ptrC :body-rotation-axes z :inertia-matrix (0 0 "rIu")) :name "left unsprung mass" :joint-coordinates ptlC :body-rotation-axes z :inertia-matrix (0 0 "lIu"))

:parent-rotation-axis [rlink3z] :reference-axis [rlink3x]

:parent-rotation-axis [llink3z] :reference-axis [llink3x] (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 (add-strut lsstrut :name "right suspension strut" :name "left suspension strut" :point1 smass_rR :point1 smass_lR :point2 rumass_S :point2 lumass_S :magnitude "-k2*(x-x0+E2) -c2*v") :magnitude "-k1*(x-x0+E1) -c1*v") ;;; add tyre forces (add-line-force rFr :name "right tyre force" (add-line-force lFr :name "left tyre force" :point1 rumass_T :point1 lumass_T :direction [nx] :direction [nx] :magnitude "kt2*( Zr2 - dot([nx],pos(rumass_T,ptrT)))" ) :magnitude "kt1*( Zr1 - dot([nx],pos(lumass_T,ptlT)))" ) ;;; add loads (add-line-force Fs (add-moment Ts :name "load input" :name "moment input" :point1 smasscm :body1 smass :direction [nx] :direction [nz] :magnitude "FFs") :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 rPx 0.2 rm3 0 lPx 0.2 lm3 0 rPy 1.5 rm4 0 lPy -1.5 lm4 0 lI3 0 lI4 0 rTx 0.35 rTy 1.5 rI3 0 rI4 0 rIu 0.1 rmu 50 0.15 lCy -1.4 lDx 0.25 lDy -1.4 lSy -1.4 lRy -1.04 lSx 0.2 lAx 0.25 lAy -1 lTx 0.35 lTy -1.5 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") lBx -0.05 lBy -0.94 lCx rBx -0.05 rBy 0.94 Qx 0 Qy 0 rCx 0.15 rCy 1.4 rRy 1.04 rDx 0.25 rDy 1.4 rSx 0.2 rSy 1.4 rRx -0.25

lRx -0.25

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 :joint-coordinates ptQ :translate ([nx]) :parent-rotation-axis [ny] :mass "ms" :name "sprung mass" :cm-coordinates ptQ :body-rotation-axes (y z) :reference-axis [nz] :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 :parent smass :cm-coordinates ptB1 :parent-rotation-axis [smassz] :mass "lm3" (add-body link4_1 :parent smass :cm-coordinates ptA1 :parent-rotation-axis [smassz] :mass "lm4" (add-body link3_2 :parent smass :cm-coordinates ptB2 :parent-rotation-axis [smassz] :mass "lm3" (add-body link4_2 :parent smass :cm-coordinates ptA2 :parent-rotation-axis [smassz] :mass "lm4" (add-body link3_3 :parent smass :cm-coordinates ptB3 :parent-rotation-axis [smassz] :mass "lm3" (add-body link4_3 :parent smass :cm-coordinates ptA3 :parent-rotation-axis [smassz] :mass "lm4" (add-body link3_4 :parent smass :cm-coordinates ptB4 :name "right front upper wishbone link3" :joint-coordinates ptB1 :body-rotation-axes z :reference-axis [smassx] :inertia-matrix (0 0 "lI3")) :name "right front lower wishbone link4" :joint-coordinates ptA1 :body-rotation-axes z :reference-axis [smassx] :inertia-matrix (0 0 "lI4")) :name "left front upper wishbone link3" :joint-coordinates ptB2 :body-rotation-axes z :reference-axis [smassx] :inertia-matrix (0 0 "lI3")) :name "left front lower wishbone link4" :joint-coordinates ptA2 :body-rotation-axes z :reference-axis [smassx] :inertia-matrix (0 0 "lI4")) :name "right rear upper wishbone link3" :joint-coordinates ptB3 :body-rotation-axes z :reference-axis [smassx] :inertia-matrix (0 0 "lI3")) :name "right rear lower wishbone link4" :joint-coordinates ptA3 :body-rotation-axes z :reference-axis [smassx] :inertia-matrix (0 0 "lI4")) :name "left rear upper wishbone link3" :joint-coordinates ptB4 :body-rotation-axes z

F.2 The Linearised Full-Car Double-Wishbone Model

121

:parent-rotation-axis [smassz] :mass "lm3" (add-body link4_4 :parent smass :cm-coordinates ptA4 :parent-rotation-axis [smassz] :mass "lm4"

:reference-axis [smassx] :inertia-matrix (0 0 "lI3")) :name "left rear lower wishbone link4" :joint-coordinates ptA4 :body-rotation-axes z :reference-axis [smassx] :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 :parent link3_1 :cm-coordinates ptP1 :parent-rotation-axis [link3_1z] :mass "m1" (add-body umass2 :parent link3_2 :cm-coordinates ptP2 :parent-rotation-axis [link3_2z] :mass "m2" (add-body umass3 :parent link3_3 :cm-coordinates ptP3 :parent-rotation-axis [link3_3z] :mass "m3" (add-body umass4 :parent link3_4 :cm-coordinates ptP4 :parent-rotation-axis [link3_4z] :mass "m4" :name "right front unsprung mass" :joint-coordinates ptC1 :body-rotation-axes z :reference-axis [link3_1x] :inertia-matrix (0 0 "I1")) :name "left front unsprung mass" :joint-coordinates ptC2 :body-rotation-axes z :reference-axis [link3_2x] :inertia-matrix (0 0 "I2")) :name "right rear unsprung mass" :joint-coordinates ptC3 :body-rotation-axes z :reference-axis [link3_3x] :inertia-matrix (0 0 "I3")) :name "left rear unsprung mass" :joint-coordinates ptC4 :body-rotation-axes z :reference-axis [link3_4x] :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)" (no-movement link4_2D umass2D [umass2y] :q "rq(umass2)" (no-movement link4_3D umass3D [umass3y] :q "rq(umass3)" (no-movement link4_4D umass4D [umass4y] :q "rq(umass4)" :u "ru(umass1)") :u "ru(umass2)") :u "ru(umass3)") :u "ru(umass4)") (no-movement link4_1D umass1D [umass1x] :q "rq(link4_1)" :u "ru(link4_1)") (no-movement link4_2D umass2D [umass2x] :q "rq(link4_2)" :u "ru(link4_2)") (no-movement link4_3D umass3D [umass3x] :q "rq(link4_3)" :u "ru(link4_3)") (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 (add-strut strut2 (add-strut strut3 (add-strut strut4 :name "right front suspension strut" :name "left front suspension strut" :name "right rear suspension strut" :name "left rear suspension strut" :point1 smass_R1 :point1 smass_R2 :point1 smass_R3 :point1 smass_R4 :point2 umass1S :point2 umass2S :point2 umass3S :point2 umass4S :magnitude " -k1*(x-x0+E1) -c1*v ") :magnitude " -k2*(x-x0+E2) -c2*v ") :magnitude " -k3*(x-x0+E3) -c3*v ") :magnitude " -k4*(x-x0+E4) -c4*v ") ;;; define the tyre forces (add-line-force Fr1 (add-line-force Fr2 :name "right front tyre force" :name "left front tyre force" :point1 umass1T :point1 umass2T :direction [nx] :direction [nx] :magnitude "kt1*( Zr1 - dot([nx],pos(umass1T,ptT1)))" ) :magnitude "kt2*( Zr2 - dot([nx],pos(umass2T,ptT2)))" )

122

Appendix to Chapter 8

(add-line-force Fr3 (add-line-force Fr4

:name "right rear tyre force" :name "left rear tyre force"

:point1 umass3T :point1 umass4T

:direction [nx] :direction [nx]

:magnitude "kt3*( Zr3 - dot([nx],pos(umass3T,ptT3)))" ) :magnitude "kt4*( Zr4 - dot([nx],pos(umass4T,ptT4)))" ) ;;; define the loads (add-line-force Fs (add-moment Tp (add-moment Tr :name "vertical load input" :name "pitch moment input" :name "roll moment input" :point1 smasscm :body1 smass :body1 smass :direction [nx] :direction [ny] :direction [nz] :magnitude "FFs") :magnitude "FFpitch") :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 c1 500 c2 500 c3 500 c4 500 Qx 0 Ipitch 260 lm4 0 Iroll 170 lI4 0 m1 46 m2 46 m3 60 m4 60 I1 0.1 I2 0.1 I3 0.1 I4 0.1 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 Iyaw 2000

lI3 0

k1 2000 kt1 250000 k2 2000 kt2 250000 k3 2000 kt3 250000 k4 2000 kt4 250000 Qy 0 Qz A1z 0 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5

A1x 0.25 A1y -1 P1x 0.2 S1x 0.2

B1x -0.05 B1y -0.94 B1z D1x T1x D2x T2x D3x T3x D4x T4x 0.25 D1y -1.4 0.35 T1y -1.5 0.25 D2y 0.35 T2y 1.4 1.5 D1z T1z D2z T2z R1x -0.25 R1y -1.04 R1z B2x -0.05 B2y R2x -0.25 R2y 0.94 B2z 1.04 R2z

C1x 0.15 C1y -1.4 C1z P1y -1.5 P1z S1y -1.4 S1z 1 A2z 1.4 C2z 1.5 P2z 1.4 S2z

A2x 0.25 A2y C2x 0.15 C2y P2x 0.2 S2x 0.2 P2y S2y

A3x 0.25 A3y -1 P3x 0.2 S3x 0.2

A3z -1.5

B3x -0.05 B3y -0.94 B3z -1.5 0.25 D3y -1.4 0.35 T3y -1.5 0.25 D4y 0.35 T4y 1.4 1.5 D3z -1.5 T3z -1.5 D4z -1.5 T4z -1.5 R3x -0.25 R3y -1.04 R3z -1.5 B4x -0.05 B4y R4x -0.25 R4y 0.94 B4z -1.5 1.04 R4z -1.5

C3x 0.15 C3y -1.4 C3z -1.5 P3y -1.5 P3z -1.5 S3y -1.4 S3z -1.5 1 A4z -1.5 1.4 C4z -1.5 1.5 P4z -1.5 1.4 S4z -1.5

A4x 0.25 A4y C4x 0.15 C4y P4x 0.2 S4x 0.2 P4y S4y

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 (add-point ptB (add-point ptE (add-point ptH :coordinates (Qx :coordinates (Bx :coordinates (Ex :coordinates (Hx Qy By Ey Hy 0)) (add-point ptA :coordinates (Ax :coordinates (Dx :coordinates (Gx Ay Dy Gy 0)) 0)) 0))

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

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

;; add sprung mass (add-body smass :joint-coordinates ptQ :body-rotation-axes z (add-point smassA (add-point smassD :name "spurng mass" :cm-coordinates ptQ :parent-rotation-axis z :mass "ms") :coordinates ptA) (add-point smassB :coordinates ptD) (add-point smassE :body smass :body smass :coordinates ptB) :coordinates ptE) :parent n :translate (x y) :reference-axis [nx]

:inertia-matrix (0 0 "Is") :body smass :body smass

;;; add trailing arms (add-body lead :joint-coordinates smassA :reference-axis x (add-body tail :joint-coordinates smassB :reference-axis x ;;; add wheels (add-body fwheel :joint-coordinates ptC1 :reference-axis x (add-body rwheel :joint-coordinates ptC2 :reference-axis x (add-point leadG :name "front wheel" :body-rotation-axes z :inertia-matrix (0 0 "I1") :name "rear wheel" :body-rotation-axes z :inertia-matrix (0 0 "I2") :body fwheel :parent lead :parent-rotation-axis z :mass "m1") :parent tail :parent-rotation-axis z :mass "m2") :body rwheel :coordinates ptH) :coordinates ptC2) :name "lead trailing arm" :body-rotation-axes z :inertia-matrix (0 0 "Ilead") :name "tail trailing arm" :body-rotation-axes z :inertia-matrix (0 0 "Itail") :parent smass :parent-rotation-axis z :mass "Mlead") :parent smass :parent-rotation-axis z :mass "Mtail")

:coordinates ptG) (add-point tailH

(add-point leadend :body lead

:coordinates ptC1) (add-point tailend :body tail

;; no slide between road and tyres (add-speed-constraint (add-speed-constraint "dot([nz],rot(fwheel))*r1+dot([ny],vel(fwheel0))" :u "ru(fwheel)" ) "dot([nz],rot(rwheel))*r1+dot([ny],vel(rwheel0))" :u "ru(rwheel)" ) ;; front tyre ;; 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 z2pR z2p2R

z1R z1d1R z1d2R U1R U1d1R U1d2R E1R E1d1R z2R z2d1R z2d2R U2R U2d1R U2d2R E2R E2d1R)

123

124

Appendix to Chapter 9

(add-equation init &E1R (add-equation init &zsR (add-equation init &phi3R (add-equation init &w1pR (add-equation init &w2R (add-equation init &w2p2R (add-equation init &z1pR (add-equation init &z1R (add-equation init &z1d2R (add-equation init &U1d1R (add-equation init &E1R (add-equation init &z2pR (add-equation init &z2R (add-equation init &z2d2R (add-equation init &U2d1R (add-equation init &E2R

"0") (add-equation init &E2R "0") (add-equation init &ztR "0") (add-equation init &w1R "0") (add-equation init &w1p2R "0") (add-equation init &w2pR "0") "0") (add-equation init &z1p2R "0") (add-equation init &z1d1R "0") (add-equation init &U1R "0") (add-equation init &U1d2R "0") (add-equation init &E1d1R "0") (add-equation init &z2p2R "0") (add-equation init &z2d1R "0") (add-equation init &U2R "0") (add-equation init &U2d2R "0") (add-equation init &E2d1R "@ztddot" "@D1"

"0") "0") "0") "0") "0")

"0") "0") "0") "0") "0") "0") "0") "0") "0") "0") "@D2" &w2pR &w2p2R &U1d1R &U1d2R &E1R &E1d1R &U2d1R &U2d2R &E2R &E2d1R

(add-subroutine update tcontr2("@zsddot" &zsR &ztR

&w1R &w1pR

&w1p2R &w2R

&z1pR &z1p2R &z2pR &z2p2R dh)) ;; add the conventional suspension ;; (add-strut f_susp ; :point1 smassD

&z1R &z1d1R &z1d2R &U1R &z2R &z2d1R &z2d2R &U2R

:point2 leadG

:magnitude "-k1*(x-x0) -c1*v ") :magnitude " -k1*(x-x0+E1R) -c1*v") :point1 smassE :point2 tailH :magnitude "-k2*(x-x0) -c2*v ") ; :magnitude " -k2*(x-x0+E2R) -c2*v ") (add-strut r_susp

;;; 5. add tyre force ;;;;;;;;;; (add-line-force Fr1 :direction [nx] (add-line-force Fr2 :direction [nx] ;;; add load (add-line-force Fs :direction [nx] ;; ;; apply the torques to both tyres ;; (install-table accetor "acceleration torque" :xunits "T" :xunits "T" :yunits "F*L" :yunits "F*L" (install-table braking "braking torque" :npts 1000 :npts 1000 :values ((0 0) (1 1) (5 1) (5 0) (6 0)) ) :values ((0 0) (6 0) (6 1) (14 1) (16 1)) ) :name "vertical load" :magnitude "0" ) :point1 smasscm :name "front right tyre force" :name "front left tyre force" :point1 fwheelcm :point1 rwheelcm :magnitude "kt1*( -dot([nx],pos(fwheel0,ptC1)) ) " ) :magnitude "kt2*( -dot([nx],pos(rwheel0,ptC2)) ) " )

(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" (setsym t1dot "-dot([nz],rot(fwheel))") (setsym t2dot "-dot([nz],rot(rwheel))") :values ((0 0) (0 1) (2 1) (3 1) (4 1)))

;; absolute forward speed of the front wheel ;; applied torque; 0 when the forward speed equals to 0 ;; applied torque; 0 when the forward speed equals to 0 ;; absolute forward speed of the rear wheel

(setsym fwtor "braking(t,1,1)*TB(@t1dot,1,1)*(1146.66667)" ) (setsym rwtor "braking(t,1,1)*TB(@t2dot,1,1)*(1686.66667)" ) (add-moment T2accel (add-moment T1accel :name "applied torque on rear wheel" :body1 rwheel :body1 fwheel :name "applied torque on rear wheel"

:direction [rwheelz] :direction [fwheelz]

:magnitude "-400*accetor(t,1,1)" :magnitude "-800*accetor(t,1,1)" (add-moment ftorque (add-moment rtorque

:body2 smass) :body2 smass) :direction [nz] :direction [nz]

:name "applied torque on front wheel" :body1 fwheel :body1 rwheel :body2 lead) :body2 tail) :name "applied torque on rear wheel"

:magnitude "0.5*@fwtor" :magnitude "0.5*@rwtor" (add-standard-output)

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 Qx Ax Ex 0 ("sim.h" "tcontr2.h")) r1 0.15 0 Is 1000 Qy 0 0.6126 Gx Bx 0.15 0.35 Gy By -1.0008 Dx 0.1 Hx 0.35 Dy 1.3 1.3 Hy -1.3 C2x 0.35 C2y -1.3 c2 10000 m2 100 0 v0 30 r2 0.15 Mtail I1 1 0 I2 1 Itail 0

Ilead

"tu(smass,2)" 15e-4 0.15 Ay 0.1

C1x 0.35 C1y 1.3 Ey -1.3

k1 40000 k2 40000 c1 10000

kt1 500000 kt2 500000

STOPT 12 STEP 0.0001 iprint 500

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") ;;; *always* call it sim.h!!

G.2
#include #include

C-Code for the Active Controller


<stdio.h> <math.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 *w2R, real_as *U1R, real_as *U2R, { 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; b3_12 = -5.3166; a2_11 = b2_11 = -5.7234e3; b2_12 = -423.6377; 3.6067e4; 126.7700; 2.4511e4; b1_11 = -3.8177e5; b1_12 = -1.5119e4; a0_11 = 7.5547e4; b0_21 = 8.8200e4; b0_11 = -8.0420e6; b0_12 = 8.8098e3; real_as *ztR, real_as *w2pR, real_as *U1d1R, real_as *U2d1R, real_as h) real_as *w1R, real_as *w1pR, real_as *w1p2R, real_as *w2p2R, real_as *z1R, real_as *U1d2R, real_as *z2R, real_as *U2d2R, real_as *z1d1R, real_as *z1d2R, real_as *E1R, real_as *E2R, real_as *E1d1R, real_as *z2d1R, real_as *z2d2R,

real_as *z1pR, real_as *z1p2R, real_as *z2pR, real_as *z2p2R, real_as *E2d1R,

307.7456; a1_11 = b2_21 =

b3_21 = -4.9241; a2_22 = wn

b1_21 = -2.9504e4; b1_22 = -2.9521e5; a0_22 = 4.9896e4;

b3_22 = -22.6155; b2_22 = -4.5931e3; 211.6167;a1_22 = = 100; delta = 0.5;

b0_22 = -5.2791e6;

/* initialise states */ zs[0] w1[0] w2p z1[0] = *zsR; = *w1R; = *w2pR; = *z1R; zs[1] w1p w2p2 = zsddot; = *w1pR; = *w2p2R; = *E1R; p3[0] w1p2 z1p U1[0] = *ztR; = *w1p2R; = *z1pR; = *U1R; p3[1] w2[0] z1p2 z2p = ztddot; = *w2R; = *z1p2R; = *z2pR;

z1d1[0] = *z1d1R;

U1d1[0] = *U1d1R;

U1d2[0] = *U1d2R; E1[0]

E1d1[0] = *E1d1R;

126

Appendix to Chapter 9

z2p2

= *z2p2R; z2[0]

= *z2R;

z2d1[0] = *z2d1R; E2[0] = *E2R;

U2[0]

= *U2R;

U2d1[0] = *U2d1R; U2d2[0] = *U2d2R;

E2d1[0] = *E2d1R;

/* 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; z2d1[1] = z2d1[0] +z2d2[0]*h; w1[1] = z1[1] - D1; w2[1] z1[1] z2[1] = z1[0] = z2[0] +z1d1[0]*h; +z2d1[0]*h;

= z2[1] - D2; w1d2[0] = (w1[1]-2*w1[0]+w1p)/(h*h); w2d2[0] = (w2[1]-2*w2[0]+w2p)/(h*h);

w1d1[0] = (w1[1]-w1[0])/h; w2d1[0] = (w2[1]-w2[0])/h;

w1d3[0] = (w1[1]-3*w1[0]+3*w1p-w1p2)/(h*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] +b3_12*w2d3[0] + b2_12*w2d2[0] + b1_12*w2d1[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]; + b0_21*w1[0] + b0_22*w2[0] + b0_11*w1[0] + b0_12*w2[0]

U2d3[0] = b3_21*w1d3[0] + b2_21*w1d2[0] + b1_21*w1d1[0] +b3_22*w2d3[0] + b2_22*w2d2[0] + b1_22*w2d1[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 = zsddot; *ztR *w2R *z1pR = ztddot; *w1R = w2[1]; = z1[0]; *w2pR *z1R *z2pR = w1[1]; = w2[0]; = z1[1]; = z2[0]; = U2[1]; *U2d1R = U2d1[1]; *w1pR = w1[0]; *w1p2R = w1p; *z1p2R = z1p; *U1R *z2R = U1[1]; = z2[1]; *w2p2R = w2p; *z1d1R = z1d1[1]; = E1[1];

*U1d1R = U1d1[1];*U1d2R = U1d2[1];*E1R *z2d1R = z2d1[1];*U2R = E2[1];

*E1d1R = E1d1[1];*z2p2R = z2p; *U2d2R = U2d2[1];*E2R *z2d2R = p3[0]; }

*E2d1R = E2d1[1]; *z1d2R = ztddot;

Bibliography
[1] R. Ayres. Thrust ssc environmental testing. Environmental Engineering, 9(2):2830, 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):190204, 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 115, 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:19, 2425 October 1988. [8] J.C. Dixon. Tyres, Suspension and Handling. Cambridge University Press, rst 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):392396, 1999. [13] J.K. Hedrick and T. Butsuen. Invariant properties of automotive suspensions. Proc. Instn. Mech. Engrs. part D: Journal of automobile engineering, 204:2127, 1990. [14] D. Hrovat. A class of active lqg optimal actuators. Automatica, 18:117119, 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:228236, 1981. [16] D. Karnopp. Theoretical limitations in active suspension. Vehicle system Dynamics, 15:4154, 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:383398, 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:405410, 1942. [21] N.M. Morris. Electrical Circuit Analysis and Design. MacMillan Press, rst 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):5561, 1994. [26] R.S. Sharp. Inuences of suspension kinematics on pitching dynamics of cars in longitudinal manoeuvring. Vehicle System Dynamics Supplement, 33:2336, 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:219228, 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:213225, 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, rst edition, 1992. [31] M.C. Smith. Achievable dynamic response for automotive active suspension. Vehicle System Dynamics, 24:133, 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:137168, 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:553563, 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):338343, 1994. [40] R.A. Williams, A. Best, and I.L. Crawford. Rened low frequency active suspension. Int. Conf. on Vehicle Ride and Handling, Proc. ImechE, C466/028:285300, 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 uid power engineering, Mechanical Engineering Publications, London, C239/84:2328, 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 8390, 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:652665, 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:319338, 1976. [45] K. Zhou, J.C. Doyle, and K. Glover. Robust and Optimal Control. Prentice-Hall, 1996.

You might also like