Professional Documents
Culture Documents
Fu-Cheng Wang
Queens College
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vi
CONTENTS
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CONTENTS
vii
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
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 . . . . . . . . . . . . . . . . . . . . . . . . .
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
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
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
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
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.
xiii
xiv
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].
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.
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.
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.
Chapter 2
Mechanical Force Displacement Velocity Mass Spring rate Damping rate Power
Electrical
F x v m k c F v
i V C
1 L 1 R
V i
Mechanical Force Displacement Velocity Mass Spring rate Damping rate Power
Electrical
F x v m k c F v
V q i L
1 C
R V i
Vn
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
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
(=
1 2 1 2 1 4
V ( j )i( j )dw
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
(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).
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.
12
x 10
4
3 Eigenvalues (Ns/m)
2 2 10
10
10 10 Frequency (rad/sec)
10
10
(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.
1 If the transformation matrix is positive real, some additional conditions are necessary for realisation by passive control
13
where the tyre forces Fr1 , Fr2 are given by: Fr1 Fr2 = kt1 (zr1 z u 1 ), = kt2 (zr2 z u 2 ),
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
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
10
Eigenvalues (Ns/m)
5 2 10
10
10
10
10
10
Frequency (rad/sec)
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 ),
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
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
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.
16
x 10
4
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)
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
18
y Fs
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
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
19
1000
12 10
0.05 0.04
torques (Nm)
0.03 0.02
y3 (m/sec)
3 (rad)
6 4 2 0 0
sec
(a) applying torques
sec
0.05 0
sec
(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.
20
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
F1
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)
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
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
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,
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
(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
torques (Nm)
1500 20
y3 (m/sec)
15
10
sec
0 0
sec
3 (rad)
sec
(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
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.
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
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 .
27
28
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
torques (Nm)
y3 (m/sec)
0.05
6 4 2 0 2 0
3 (rad)
2 4 6 8
sec
sec
sec
(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
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 .
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)
(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)
(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
Chapter 4
32
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 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):
33
U1 U2
U1 U2
F 0
U1 , U2
F 0
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
U1 , U2
(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
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 ) }.
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)
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)
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
(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
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
(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 ) ,
P U2 Q1 U2 P22 (a) +
P U2 P
K1 (b)
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.
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
P
U2
K1
(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)
U P21,1 =
U1 U2
P21,1 =
F 0
40
F 0
= U1 F ,
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)
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)
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)
+u
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
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 |
|R1 ( j )| <
j small . Hence we can choose sufciently small so that sup[0,0 ] |R1 j +1 | <
<
and is therefore,
<
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
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
(R1 (1 (
j r ) )) j +1
<
<
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
(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 .
45
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)
(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-
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
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
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)
(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
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
(5.1)
(5.2)
49
50
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
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
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
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
x 10
F z
s
0 0
Figure 5.3: Passive suspension (Q 1 = 0, solid) and active suspension (Q 1 = 1.08, dashed).
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
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
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.
55
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
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.
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
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
U2
ms cs s+ks
U2 P22 1
ks (s) cs s+ks
zs
0 1
ms 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.
58
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.
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)
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)).
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
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
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.
Chapter 6
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
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)
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
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
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
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.
65
(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.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
Quarter-car ms mu ks cs kt Fs zs z u , z a , zr u
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)
0,
1 .
(6.21)
k1 , c2 s+k2
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.
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)
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
1 1
such that U2,Fs and U2,F are sub-matrices of U2 = W U2 , which is, from Lemma 4.6, an equivalent
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.
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.
69
1.4 1.2 1
x 10
Fs z s
9 8 7 6
x 10
F z
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).
(6.25)
Chapter 7
72
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
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)
73
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.
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
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
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.
76
wbp Pbp u bp K bp w wroll Proll (u)roll K roll wwar p Pwar p (u)war p K war p
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 =
(7.17)
z war p =
77
ybp = yroll =
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.
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.20)
78
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
79
(z s = 0) cs mu kt A ks zu zr za
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
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.
u f5 f4 K f3 f2 f1
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
81
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
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
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.
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
rad
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
86
zu2
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]).
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
. ,
(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
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 ,
89
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 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
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.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)
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
92
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 ,
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).
93
Chapter 9
96
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)
(9.2)
2 1.5 1
2 1.5 1
x 10
Eigenvalues (Ns/m)
Eigenvalues (Ns/m)
1 2 3 4 5
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
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.
torques (Nm)
y3 (m/sec)
800
15
10
sec
0 0
sec
10
12
T1
3 (rad)
3 (rad)
2 4 6 8 10 12
sec
0.005 0
sec
10
12
(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
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.
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.
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
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,
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.16) (B.17)
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
;; 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
;;; 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")
107
;; no slide between road and tyres (add-position-constraint "(rq(smass)+rq(lead)+rq(fwheel))*r1+dot([ny],pos(fwheel0,ptC1))" :q "rq(fwheel)") (add-speed-constraint (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 "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
c2 1000 c2 100000
(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):
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)):
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))
;;; 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]
(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 "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)) ) " )
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
: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
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))
(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")
kt2 250000
Taccel 1000 Tbrake1 4200 "tu(smass,3)" 15e-4 "ru(wheel1,1)" 50e-4 "ru(wheel3,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!!
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,
210.9647; a1_11 =
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 =
210.9647; a1_44 =
/* 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;
/* 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;
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];
/* 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];
117
*E1R *z2R *Ub2R *E2R *z3R *Uw3R *E3R *z4R *Ur4R *E4R }
*U1pR
= U1[1];
temp = a5*Fz/1000;
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
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 [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
(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
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
:name "right rear tyre force" :name "left rear tyre force"
: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
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
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 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]
;;; 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")
;; 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
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") "@D2" &w2pR &w2p2R &U1d1R &U1d2R &E1R &E1d1R &U2d1R &U2d2R &E2R &E2d1R
&w1R &w1pR
&w1p2R &w2R
&z1pR &z1p2R &z2pR &z2p2R dh)) ;; add the conventional suspension ;; (add-strut f_susp ; :point1 smassD
:point2 leadG
:magnitude "-k1*(x-x0) -c1*v ") :magnitude " -k1*(x-x0+E1R) -c1*v") :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"
:name "applied torque on front wheel" :body1 fwheel :body1 rwheel :body2 lead) :body2 tail) :name "applied torque on rear wheel"
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
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
#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,
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;
E1d1[0] = *E1d1R;
126
Appendix to Chapter 9
z2p2
= *z2p2R; z2[0]
= *z2R;
U2[0]
= *U2R;
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;
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];
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.