Further Studies into the Dynamics of a Supercavitating Torpedo
Transcription
Further Studies into the Dynamics of a Supercavitating Torpedo
Further Studies into the Dynamics of a Supercavitating Torpedo Eric A. Euteneuer University of Minnesota Department of Aerospace Engineering and Mechanics 107 Akerman Hall 110 Union ST SE Minneapolis, MN 55455 July 18, 2003 Acknowledgements I would like to thank Mike Elgersma, Ph.D. for his technical help and guidance on this work and thesis. His attention to detail and vast dynamics knowledge has saved me an immense amount of time and headache. I would also like to thank my advisor Prof. Gary Balas for his guidance and patience throughout this work. Also deserving mention is Ivan Kirschner at Anteon Corporation. His work, and that of his peers, helped provide the backbone to this thesis work. i For my Sara… Thank you! ii Table of Contents Further Studies into the Dynamics of a Supercavitating Torpedo....................................... i Acknowledgements.............................................................................................................. i Table of Contents............................................................................................................... iii List of Figures .................................................................................................................... iv Lift of Tables....................................................................................................................... v List of Symbols .................................................................................................................. vi Abstract ............................................................................................................................... 1 1 Introduction................................................................................................................. 1 1.1 Focus of Thesis ................................................................................................... 2 2 General Hydrodynamics ............................................................................................. 3 3 Vehicle Dynamics....................................................................................................... 6 3.1 Coordinate System, States, and Control Variables ............................................. 6 3.1.1 Flow Angles ................................................................................................ 8 3.1.2 Torpedo Dimensions................................................................................... 8 3.2 Cavity Dynamics................................................................................................. 9 3.2.1 Maximum Cavity Dimensions .................................................................. 10 3.2.2 Cavity Centerline ...................................................................................... 10 3.2.3 Cavity Closure .......................................................................................... 15 3.2.4 Final Cavity Shape.................................................................................... 17 3.3 Cavitator Forces ................................................................................................ 18 3.4 Fin Forces.......................................................................................................... 21 3.4.1 Cavity-Fin Interaction............................................................................... 27 3.4.2 Computation of the Fin Forces and Moments........................................... 28 3.4.3 Notes on Fin Forces .................................................................................. 33 3.5 Planing Forces................................................................................................... 33 3.5.1 Computation of the Planing Forces........................................................... 37 3.5.1.1 Pressure Forces and Moments .............................................................. 38 3.5.1.2 Skin Friction Forces.............................................................................. 39 3.5.1.3 Added Mass and Impact Forces............................................................ 40 3.5.1.4 Total Planing Forces and Moments ...................................................... 40 3.5.2 Effects of Planing...................................................................................... 41 3.6 Mass and Inertial Forces ................................................................................... 42 3.6.1 Center of Mass .......................................................................................... 43 3.6.2 Mass Moments of Inertia .......................................................................... 44 3.7 Putting it all Together ....................................................................................... 46 3.7.1 EOM about an Arbitrary Point.................................................................. 48 3.7.2 Implementation ......................................................................................... 49 4 Linearization ............................................................................................................. 51 4.1 General Linearization Procedures and Information.......................................... 52 4.1.1 Limitations of Linearization ..................................................................... 53 5 Flight Envelope......................................................................................................... 54 6 Stability and System Poles........................................................................................ 56 6.1 Phase Plane Analysis ........................................................................................ 58 iii 6.2 Simulation and Integration Schemes ................................................................ 58 6.3 Nominal System Stability ................................................................................. 59 7 Control Law Design.................................................................................................. 63 7.1 Transfer Functions ............................................................................................ 64 7.1.1 1DOF Controller ....................................................................................... 66 7.1.2 Closed-Loop Transfer Functions .............................................................. 67 7.2 Continuous-Time Linear Quadratic Controller................................................. 68 7.2.1 Closed-Loop Dynamics ............................................................................ 69 7.3 Transformed System ......................................................................................... 72 8 Model Uncertainty .................................................................................................... 74 8.1.1 Open-Loop Effects of Parametric Uncertainty ......................................... 76 8.1.2 General Control Configuration with Uncertainty ..................................... 78 9 General Conclusions ................................................................................................. 79 10 Bibliography ......................................................................................................... 81 Appendix A: Fin Force and Moment Coefficient Data Computed Directly From Anteon’s Fin Look-up Table ............................................................................................................ 83 Appendix B ..................................................................................................................... 100 Appendix C ..................................................................................................................... 154 Appendix D..................................................................................................................... 156 List of Figures Figure 1: Schematic of Cavitation Flow Regimes [6] ........................................................ 4 Figure 2: Moment and Angular Rotation Notation............................................................. 7 Figure 3: Artists Conception of a Supercavitating Torpedo ............................................... 9 Figure 4: Displacement Model Comparisons ................................................................... 12 Figure 5: Pole Comparison of Systems with Delays vs. "Classic" Centerline Displacement............................................................................................................. 15 Figure 6: Cavity Closure Schemes.................................................................................... 16 Figure 7 : Cavity Shape Components ............................................................................... 17 Figure 8: Overall Cavity Shape......................................................................................... 17 Figure 9: Cavitator Free-Body Diagram ........................................................................... 18 Figure 10: Cavitator Forces and Moments - α Test.......................................................... 20 Figure 11: Cavitator Forces and Moments - β Test ........................................................ 21 Figure 12: Fin Geometry................................................................................................... 22 Figure 13: Representation of a Subset of Forces Acting on the Fin and the Appropriate Flow Regimes ........................................................................................................... 23 Figure 14: Anteon Look-Up Table Data........................................................................... 24 Figure 15: Coefficient Data Using Least Squares Approximations.................................. 27 Figure 16: Fin and Supercavity Interaction ...................................................................... 28 Figure 17: Cruciform Orientation of Fins (View from Nose)........................................... 28 Figure 18: Fin Forces and Moments - α Test ................................................................... 32 Figure 19: Fin Forces and Moments - β Test.................................................................... 33 Figure 20: Displacement Hull........................................................................................... 34 Figure 21: Planing Hull..................................................................................................... 34 iv Figure 22: Possible Supercavitating Flow Schemes with Planing Forces ........................ 35 Figure 23: Spring-Mass 2nd Order System with Dead-Zone ........................................... 35 Figure 24: Cavity Behavior in an Extreme Turn [1]......................................................... 37 Figure 25: Sketch of Planing Region of Torpedo ............................................................. 38 Figure 26: FFT of Planing Forces..................................................................................... 42 Figure 27: Drawing of Torpedo (In Sectional Form)........................................................ 44 Figure 28: Simulation Time Step Comparisons: 1 deg Step in Elevators......................... 50 Figure 29: Torpedo Flight Envelope for Non-Planing Flight ........................................... 55 Figure 30: Nominal System Pole-Zero Map..................................................................... 60 Figure 31: Nonlinear Step Responses ............................................................................... 61 Figure 32: Comparison of Nonlinear and Linear System Transients with a 1 deg Elevator Step ........................................................................................................................... 62 Figure 33: Closed-Loop Block Diagrams ......................................................................... 66 Figure 34:Closed-Loop Pole-Zero Map of Nominal System with LQR Controller ......... 70 Figure 35: Closed-Loop Transients (1 deg/sec Step in r) ................................................. 71 Figure 36: Pole-Zero Map of Transformed System.......................................................... 73 Figure 37: System Dynamics Comparison for a Varying Cavitation Number ................. 77 Figure 38: Generalized Control Configuration (for Controller Synthesis)....................... 78 Lift of Tables Table 1: Choices for State Variables .................................................................................. 7 Table 2: Equation Coefficient Values............................................................................... 26 Table 3: Coefficient %-Errors........................................................................................... 26 Table 4: Nominal System Pole Information ..................................................................... 59 Table 5: Eigenvectors of Unstable Poles of Nominal System .......................................... 60 Table 6: Uncertain Parameters.......................................................................................... 75 v List of Symbols psv saturated vapor pressure p∞ free-stream pressure pc cavity pressure ρ water density V free-stream velocity σ cavitation number σi cavitation “boundary” Fr Froude Number CQ ventilation coefficient Q volumetric ventilation flow rate g gravitational acceleration Dcav cavitator diameter Rcav cavitator radius CDo cavitator drag coefficient at zero angle of attack x state vector Δ control vector α angle of attack β side-slip angle Rc maximum cavity radius Lc maximum cavity length rc local cavity radius ηc, hc cavity centerline displacements aturn apparent turn acceleration ag apparent tail-up acceleration Fp “perpendicular” force acting on the cavitator lcav moment arm, distance from the cavitator to the origin of the system αcav cavitator apparent angle of attack βcav cavitator apparent side-slip angle vi xcg position of the center of gravity, distance behind the cavitator Fcav , M cav cavitator forces and moments, respectively imm fin immersion ratio swp fixed fin sweep swpf apparent fin sweep CF, CM fin force and moment coefficients P vector of coefficients used to calculate the fin force and moment coefficients E %-error of the least-squares approximation used for fin coefficient computations Φ vector of angles representing the radial locations of the fins xpiv, rpiv location of the fin pivot points on the torpedo F fin , M fin fin forces and moments, respectively Lplane length of the torpedo hull that is planing hplane maximum planing depth αplane planing immersion angle θplane angle measurement of the lateral displacement of the torpedo compared to the cavity centerline Δp radius difference of the cavity and the torpedo at the transom of the planing section F plane , M plane planing forces and moments, respectively J rotational inertia ν velocity vector, [u, v, w]T ω rotational velocity vector, [p, q, r]T M mass matrix Ω rotational velocity matrix y system output G system transfer function d system disturbance [A,B,C,D] system state-space matrices vii K control law r reference signal e error signal n noise signal Λ general uncertainty block viii Abstract Supercavitating torpedoes are complex systems that require an active controller, which can ensure stability while enabling the torpedo to track a target. In addition, the control law design process requires a dynamic model that captures the physics of the problem. It is therefore necessary to define a full 6DOF nonlinear model that lends itself to linearization for use in the control law design process. This thesis defines such a model and also discusses such topics as control, model uncertainty, and sensitivity analysis in order to provide a stepping stone for further studies. Keywords: Cavitation, Supercavitation, Torpedo, Nonlinearities, Linearization 1 Introduction As is known, water is a nearly incompressible medium having properties weakly changing under great pressure. However, when the pressure in liquid is reduced lower than the saturated vapor pressure p sv = 0.021 MPascal, discontinuities in the form of bubbles, foils and cavities, which are filled by water vapor, are observed in water. Froude was the first to investigate this phenomenon and gave it the name cavitation, originating from the Greek word cavity. The history of hydrodynamics research displays an emphasis on eliminating cavitation, chiefly because of the erosion, vibration, and acoustical signatures that often accompany the effect. The drag-reducing benefits of cavitation, however, were noted during the first half of the last century, and have received significant attention over the last decade. The invention of the Russian Shkval, a supercavitating torpedo that was demonstrated in the 1990’s, is proof of this. The issue with these torpedoes is that they currently act like underwater bullets, projectiles that have no active control. In order to design a control system for these types of vehicles so that they may track targets, the dynamics must be modeled and analyzed. There are special conditions that make modeling and control a challenge. The main difficulties of using the supercavitating flow for underwater objects are connected 1 with a necessity of ensuring the object’s stability in conditions where there is a loss of Archimedes buoyancy forces and where the location of the center of pressure is well forward of the center of gravity. Also, whereas a fully-wetted vehicle develops substantial lift in a turn due to vortex shedding off the hull, a supercavitating vehicle does not develop significant lift over its gas-enveloped surfaces. These difficulties are in addition to the highly nonlinear interaction between the cavity and the torpedo body. However, with proper design, supercavitating vehicles can achieve high velocities by virtue of reduced drag via a cavitation bubble generated at the nose of the vehicle such that the skin fraction drag is drastically reduced. Depending on the type and shape of the supercavitating vehicle under consideration, the overall drag coefficient can be reduced by an order of magnitude compared to a fully-wetted vehicle. Currently, the U.S. is pursuing supercavitating marine technology (specifically torpedoes and other projectiles) and is looking for ways to guaranty stability while tracking a target through active control, unlike the passively controlled Shkval that only capable of traveling in straight lines. Supercavitating weapons work in the U.S. is being directed by the Office of Naval Research (ONR) in Arlington, Va. In general, the ONR’s efforts are aimed at developing two classes of supercavitating technologies: projectiles and torpedoes. The focus of this thesis is on supercavitating torpedoes. 1.1 Focus of Thesis The forces on cavitating bodies have been studied at least as far back as the 1920s; an example reference is Brodetsky (1923). Interest increased as focus shifted to cavitating hydrofoils and propellers; see, for example, Tulin (1958). Since the late 1980s, the emphasis has returned to nominally axis-symmetric bodies, although vehicle control requires incorporation of cavitating lifting surface theory as well. Kirschner, et. al. (1995), Fine and Kinnas (1993), and Savchenko, et al (1997) serve as suitable introductions and May (1975) is an invaluable resource. The foreign literature contains several landmark works, for example, Logvinovich, et al, (1985). Given the scope of this research, the most valuable reference has been Kirschner, et. al at Anteon Corp. [1] This 2 reference provides the background and basic dynamic model on which most of this research is based on and provides a model that the ONR is starting to use as a benchmark. The main point that all these references make is that supercavitating torpedoes are complex systems, systems that will require the use of an active controller in order to guarantee stability while performing advanced maneuvers. This controller is necessary to ensure stability and to enable the torpedo to track a target. However, the control law design process requires a dynamic model that captures the physics of the problem. Existing (public) models currently don’t model full six degree-of-freedom (6DOF) dynamics and/or have other issues with them such as mismatching dynamic properties between the linear and nonlinear models as does the current benchmark model used by the Office of Naval Research (ONR). This full 6DOF model used by the ONR produces stable nonlinear transients while the linearized model indicates that the system is unstable. This prevents the use of the linear representation of the dynamics from being used in control law design because it does not have the same dynamics as the nonlinear model and thus eliminates many of the control designer’s tools. Therefore it is convenient to define a full 6DOF nonlinear model that lends itself to linearization for use in the control law design process. This thesis defines such a model and also discusses such topics as control, model uncertainty, and sensitivity analysis in order to provide a stepping stone for further studies. 2 General Hydrodynamics As is known, water is a practically incompressible medium having properties weakly changing under pressure in hundreds and thousands of atmospheres. However, when the pressure in the liquid reduces to the saturated vapor pressure, psv = 0.021 MPascals owing to the action of extending stresses, discontinuities on the form of bubbles, foils and cavities which are filled by water vapor, are observed in water. Cavitating flows are commonly described by the cavitation number, σ, and is expressed as 3 σ = p∞ − pc 1 ρV 2 2 Equation 1 where ρ is the fluid density, V is the free-stream velocity, and p∞ and p c are the ambient and cavity pressures, respectively. According to the degree, or size of σ, three cavitation stages are defined: 1. Initial cavitation is the bubble stage and it is accompanied by the strong characteristic noise of collapsing bubbles and is capable of destroying solid material; for example, blades of screws, pumps, turbines. 2. Partial cavitation is the stage when arising cavities cover a cavitating body part. The cavity pulses and is unstable. 3. Fully developed cavitation – supercavitation is the stage when the cavity dimensions considerably exceed the body dimensions. These stages are better illustrated in Figure 1. This figure shows a fictional cavitation experiment that holds the velocity constant and allows varying amounts of ambient pressure; various amounts of cavitation can be observed. Figure 1: Schematic of Cavitation Flow Regimes [6] 4 Here, σi can be thought of as a type of performance boundary where σ > σ i results in no cavitation. For this study, the cavitation number is assumed constant, σ = 0.029, which is low enough for natural supercavitation to occur. Noncavitating flows occur at sufficiently high pressures. Supercavitation occurs at very low pressures where a very long vapor cavity exists and in many cases the cavity wall appears glassy and stable except near the end of the cavity. Limited cavitation is seen between these two flow regimes. Other parameters used to describe the supercavitating flows are the Froude (Fr) number and the ventilation coefficient (CQ) and are shown below (respectively). Fr = CQ = V Equation 2 gDcav Q 2 VDcav Equation 3 Here g is the gravitational acceleration, the cavitator diameter is Dcav, V is the magnitude of the vehicle’s velocity vector, and Q is the volumetric rate at which ventilation gas is supplied to the cavity. The Froude number characterizes the importance of gravity to the flow, and therefore governs distortions to the nominally axis-symmetric cavity centerline shape. The ventilation coefficient governs the time-dependent behavior of the cavity as ventilation gas is entrained by the flow. For the trajectories considered in this thesis, the Froude number is typically on the order of 90 to 110. [1] A supercavity can be maintained in one of two ways: (1) achieving such a high speed that the water vaporizes near the nose of the body; or, (2) supplying gas to the cavity at nearly ambient pressure. The first technique is known as vaporous or natural cavitation. The second is termed ventilation, or artificial, cavitation. Note that each concept involves some sort of cavitator with a clean edge to provide the sharp drop in pressure required to form a clean cavity near the nose of the body. For simplicity, only natural cavitation is considered in this thesis and thus the ventilation coefficient is zero. It is, however, conceivable to think of controlling the ventilation, and thus the cavitation number to affect the dynamics of the system. The effects of varying cavitation numbers will be described in Section 8.1.1. 5 3 Vehicle Dynamics As was mentioned in the introduction, the bulk of this dynamic model is based on, and expanded from, the work done by Ivan Kirschner et. al. at Anteon Corp under direction of the ONR. For completeness, all the dynamics will be described in detail here. 3.1 Coordinate System, States, and Control Variables The model developed by Anteon uses the cavitator pivot point as the torpedo's origin. However, for simplicity and for reasons of common convention, this thesis computes the dynamics with the torpedo’s center of gravity as the origin. The coordinate system was chosen to be the same as is defined by Kirschner et. al. That is, ξ is positive forward of the center of mass, η is positive to the starboard portion of the torpedo, and h is positive, as is defined by the right-hand rule, down. This coordinate system will make up the body coordinate system. The symbols used throughout the text correspond generally to current usage and are used in a consistent manner. The states of the system are the body component states, one set of the two widely used. The two different choices can be seen in Table 1. 6 Table 3-1: Choices for State Variables Body Components Flight Path Components Variable Symbol Units Variable Symbol Units Roll Rate p rad/sec Roll Rate p rad/sec Pitch Rate q rad/sec Pitch Rate q rad/sec Yaw Rate r rad/sec Yaw Rate r rad/sec Longitudinal Velocity u ft/sec Velocity Magnitude V ft/sec Lateral Velocity v ft/sec Sideslip Angle β rad Normal Velocity w ft/sec Angle of Attack α rad Euler Roll Angle φ rad Bank Angle (about velocity vector) μ rad Euler Pitch Angle θ rad Flight Path Angle γ rad Euler Yaw Angle Ψ rad Heading Angle χ rad North Position ξ ft North Position ξ ft East Position η ft East Position η ft Depth h ft Depth h ft Appropriate conversions can be seen in [4] and [2] if flight path components of the states are desired. The notation defining the positive moments and the positive angular rotations about the body axes can be seen in Figure 2. Positive velocity components are along the directions of the axes. ξ η Mx, p My, q Mz, r h Figure 2: Moment and Angular Rotation Notation The choice of control surfaces is the same as is presented in Kirchner et. al. except an additional degree of freedom has been given to the control of the cavitator; in 7 addition of pivoting in the pitch axis, rotation in the yaw axis has also been considered in the equations of motion. Therefore, our states and controls are: x = [ξ η [ Δ = δ f1 h φ θ ψ δf 2 δf 3 δf 4 p q r] T u v w δ cav pitch δ cav yaw ] However, since the water density variation with depth is not modeled in this investigation, all the position states, North, East, and depth position states, are just kinematics and play no role in the dynamics modeled below. The state vector then becomes x = [φ θ ψ u v w p q r] T 3.1.1 Flow Angles It is useful to define the orientation of the torpedo about the velocity vector as these values are often used to compute the forces and moments acting on the body. The inclination of the body to the velocity vector is defined by the angle of attack and the sideslip angle such that α = tan −1 β = sin −1 w u Equation 4 v Equation 5 u 2 + v 2 + w2 3.1.2 Torpedo Dimensions Simulation was conducted on a vehicle with the following characteristics: 4.0 m in length, 0.2 m in diameter, and with a cavitator diameter of 0.07 m. The fins were located 3.5 m aft of the cavitator, and were swept back at 45º. Although the mass 8 properties of the vehicle will change as the rocket and ventilation fuels are consumed, they are assumed constant for purposes of the current analysis. This model is an Applied Research Lab (ARL) defined model. 3.2 Cavity Dynamics The behavior of the cavity is central to the dynamics of a supercavitating vehicle. It is the cavity that makes this dynamical system not only highly nonlinear, but dependent on the history of the vehicle’s motion. The nominally steady cavity behavior forms the basis of the quasi-time dependent model implemented for the current investigation. The cavity model not only affects the forces acting at the nose of the vehicle, but also has a strong influence on the fin forces and moments via the amount the fins are immersed in the free-stream flow and the planing forces, both of which will be discussed in more detail later in the thesis. During supercavitation, the cavity stays attached to the body and the cavity closure is far downstream. The length of the cavity does not vary significantly even though considerable oscillations can occur at its closure. However, the cavity acts as if it were an extension of the body. In this case, the same flow field would exist around a solid body having a shape comprising of the wetted nose plus the free-cavity profile as might be see in Figure 3. Figure 3: Artists Conception of a Supercavitating Torpedo 9 3.2.1 Maximum Cavity Dimensions The cavity itself is slender, and its maximum diameter is at least 5 times greater than the cavitator diameter. For axis-symmetric flows, the maximum cavity diameter (made dimensionless with the cavitator diameter) is a strong function of the cavitator drag coefficient and the cavitation number, and is otherwise nearly independent of the cavitator shape (Reichardt, 1946). In fact, both the cavity diameter and the cavity length increase with cavitator drag and decrease with cavitation number. Various analytical, numerical, and semi- and fully-empirical models have been developed that provide estimates of the maximum cavity radius, Rc, and cavity length, Lc. The analytical formulae of Reichardt (1946) provide useful and reasonably accurate 1 approximations for investigation of cavity dynamics. These relations can be seen in Equations 6-7. ( C D = C D0 * 1 + σ + 0.028σ 2 ) Equation 6 Rc = Rcav 1.35C Dσ −0.93 ( Lc = Dcav C D 1.24σ −1.123 − 0.6 Equation 7 ) Equation 8 where C D0 = 0.8050 = const. , Rcav is the cavitator radius, and Dcav is the cavitator diameter. It is important to note that since the cavitation number σ is assumed constant for this investigation, the drag coefficient is considered constant. This means that the maximum cavity length and radius is assumed constant and will also affect the way that the cavitator forces are computed. This is a very large assumption since physics dictate that the cavitation number is going to change as the velocity and cavity change. 3.2.2 Cavity Centerline There are essentially three methods (which are practical for time-based simulations) to compute the cavity centerline: (1) Analytical formula developed by Münzer and Reichardt (1950) which are described in the paper by Kirschner [1], (2) 1 The approximations are accurate for completely horizontal flows only. 10 “Classic” displacement equations based on acceleration, and (3) Use of past (delayed) position states 2 which are “coincident with the cavity centerline.” Let us first consider the first two methods which are a function of the instantaneous states. If the analytical formulas of Münzer and Reichardt as presented by Kirschner [1] are used, the local cavity radius, η-, and h-offsets for a given distance behind the cavitator are given in Equations 9-11, respectively. ⎡ ⎛ x / D − L / 2D cav c cav rc = Rc ⎢1 − ⎜⎜ / 2 L D ⎢⎣ ⎝ c cav 1 a ⎛ x η c ( x) = 2 turn ⎜⎜ Fr g ⎝ Dcav ⎞ ⎟⎟ ⎠ 2 1 ag ⎛ x ⎜ hc ( x) = − 2 Fr g ⎜⎝ Dcav ⎞ ⎟⎟ ⎠ 2 ⎞ ⎟⎟ ⎠ 2 ⎤ ⎥ ⎥⎦ 1 2.4 Equation 9 Equation 10 Equation 11 where Fr is the Froude number, g is gravity, aturn is the apparent turn acceleration and ag is the apparent tail-up acceleration of the cavity (which are both functions of the states). ag is also a function of buoyancy, 8.29 m/s2. Although distortions to the cavity shape due to turning and gravity have been considered, distortions associated with cavitator lift have been ignored. For more information on how pitching the cavitator can affect cavity dimensions see reference [9]. If the classic physics equations are used, η- and h-offsets are calculated by Equations 12-13. ⎛x⎞ ⎝V ⎠ 2 ⎛x⎞ hc ( x ) = − a g ⎜ ⎟ ⎝V ⎠ 2 η c (x ) = 12 aturn ⎜ ⎟ Equation 12 1 2 Equation 13 Figure 4 shows the drastic difference between the analytical set of equations (Eq.’s 10 & 11) derived by Munzer and Reichardt and the classic displacement equations (Eq’s 12 & 2 Position states (ξ, η, and h) were the option chosen by the researchers at Anteon, though they are not the only option. Delayed Euler angles would be another suitable option. 11 13). Notice that the analytical equations (those supposedly derived from experiments) are much more sensitive to acceleration than the classic physics equations. Centerline Displacement Comparisons 0.5 Classic: (1/2)*a*t 2 Analytical 0.45 0.4 Displacement (m) 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0 0 0.5 1 1.5 2 2.5 3 3.5 Position (aft of cavitator) (m) 4 4.5 5 Figure 4: Displacement Model Comparisons In fact, if a velocity of 77 m/s is considered, it turns out that the analytical equations are nearly 30 times more sensitive to accelerations than classical physics equations predict. This ultimately shows that if the analytical equations are used, then planing will be much more likely to occur and thus the model would be much more sensitive to angular accelerations and turn rates. Since the code produced by Anteon uses the classic physics equations to project the displacement of the cavity due to buoyancy and because it makes the model much less sensitive to accelerations, the classic physics equations represented by Equations 12 and 13 appears to be the better method to model the cavity centerline displacements in the presence of apparent acceleration. However, critics will note that assuming that the cavity centerline changes instantaneously for various accelerations goes against the physics of cavitation and will argue that the method that uses delayed states should be used. In order to understand the particulars of the cavity dynamics, consider a projectile moving through a liquid at a speed that induces natural supercavitation. Now consider a point along the boundary of the cavity directly behind the cavitator, located at the nose of the projectile. This point is 12 stationary in the ξ-axis. In other words, the projectile moves, not the boundary. Now this point is a function of the current states of the projectile. By the time the projectile has moved and its states have changed, the point along the boundary still is associated with the original states and is now relatively further behind the cavitator. This delay in states has an overall effect on the dynamics, but the question is how much? To answer this, a Dutch-Roll 3 model with the slide-slip angle and yaw rate used as the representative states of the torpedo is considered. After the torpedo dynamics are identified, two methods are created to compute the cavity centerline; the “simple” model uses the classic displacement equations mentioned above, and the second, more complex model, uses a set of delayed states. The number of delays needed for each state is dependent upon the number of sections the model designer wants to divide the cavity profile into; in this case ten sections were chosen and the delays are then assumed to be variable time delays that are dependent upon the velocity of the torpedo. Interpolation techniques can then be used to find data between the specified sections. Note that the more sections that the cavity is divided into, the more accurate the cavity dimensions can be calculated at any given point behind the cavitator. In order to take the delays of the more complex system into consideration, it is common practice to use a nonlinear 2nd order Padé approximation 4 to model this delay. This not only ensures that the delays are represented in the model, but also guarantees that the delays are differentiable. A 2nd order approximation is given by the transfer function written in Equation 14. e −τs 1 − τs 2 + (τs ) 12 2 ≅ Equation 14 1 + τs 2 + (τs ) 12 2 where τ is the time delay given in seconds. The consequence of using these approximations is that it adds two poles and zeros 5 to the linear model for every Padé approximation used. This ultimately affects the 3 There are many sources out there that describe how to model the Dutch-Roll dynamics. One of these is by Etkin [2]. 4 Other models have tried to model these delays through use of a “state buffer” in which the states are stored in an array and then accessed in the functions. This is potentially dangerous as it can result in misrepresentation of the nonlinear dynamics during linearization. 5 Poles, zeros, and other linearization information are described in more depth later in the thesis. 13 stability and controllability of the linear state-space representation of the nonlinear system. In order to express how this happens, consider the linearized system A matrix, ∂f ( xi , Δ ) , of the Dutch-Roll model based on instantaneous changes in the cavity ∂x j centerlinewhich is a function of the torpedo states only and call it A(xt). Now consider a new A matrix that has components from the Padé approximations and call it A(xPadé). The resultant A matrix is similar to a model based on a nonlinear model which includes the both the torpedo model and the associated Padé approximations needed for the correct computation of the cavity shape and would be similar to the one described in Equation 15. a ⎤ ⎡ A( x Dutch− Roll ) A=⎢ b A( x Pade′ )⎥⎦ ⎣ Equation 15 If a and b are nonzero, it is possible that the system poles would be different from those just computed from the torpedo states, or the “simple” model. In addition, in the process of designing a controller, one would need to design a Kalman filter in order to approximate the torpedo states before an actual control law could be defined, a possibly difficult design process in itself. Now that the differences between the “simple” and “complex” systems have been defined, the dynamics of the two systems can be compared by examining Figure 5. 14 Pole-Zero Map: Centerline Method Comparison 60 0.84 0.72 0.58 0.44 0.3 0.14 Delayed States Method Poles Delayed States Method Zeros "Classic" Method Poles 40 0.92 Imaginary Axis 20 0.98 80 0 60 40 20 -20 0.98 -40 0.92 0.84 -60 -100 -90 0.72 -80 -70 -60 0.58 -50 -40 0.44 -30 0.3 -20 0.14 -10 0 Real A xis Figure 5: Pole Comparison of Systems with Delays vs. "Classic" Centerline Displacement The dynamics of interest in this graph are shown in the RHP. These poles represent the dominating dynamics of the two systems. Note that the two poles lie in nearly the same location. This means that the extra states associated with the 20 delays (ten for each state, some not shown in the above graph) have little influence on the torpedo’s motion (assuming that the steady-state gains are equal). What it also means is that it is reasonable 6 to use the “classic” displacement equations which are dependent upon the instantaneous states to compute the distortion of the cavity centerline. 3.2.3 Cavity Closure A description of the cavity closure zone is the most difficult issue when describing cavity shape and how it affects the overall cavity dynamics. According to the 6 There is some concern that it will not match in the pitch axis because of the buoyancy forces acting on the cavity, but the same type of pole matching seen in Figure 5 occurs with a 1-g turn trim condition, a condition similar to straight-and-level flight with buoyancy affecting the cavity shape in the vertical direction. This leads us to the assumption that the delays will have a similar effect on a full 6DOF. 15 known theoretical closure schemes (described below) the cavity may be closed on a solid body (such as a torpedo) in the following manner(s): [5] • Ryabushinsky scheme: A cavity is closed on the solid surface analogous to the cavitator (Figure 6, a). • Zhukovsky-Roshko scheme: A cavity is closed on the cylinder with diameter Dc equal to the diameter of the biggest cavity section (Figure 6, b). • Brilluene scheme: A cavity is closed on the solid body with a base cavity formation, where “pc2 > po and σ < 0”. 7 In this case the base cavity is closed without a critical point formation (Figure 6, c). • Efros scheme: A cavity is closed with formation of a reentrant jet which may have effect on the body (Figure 6, d). Figure 6: Cavity Closure Schemes The cavity modeled in this study most closely resembles the Ryabushinsky scheme, similar to the Kutta condition 8 with the exception that our model has a more elliptical shape near the transom rather than the blunt tail depicted in the drawing. 7 Note that this condition states that σ < 0. THIS IS NOT POSSIBLE! However, this was stated in the source [6] and I can not translate, or track, the source of this condition in order to correct this apparent typo. 8 Kutta condition: A body with a sharp trailing edge in motion through a fluid creates about itself a circulation of sufficient strength to hold the rear stagnation point at the trailing edge of finite angle to make 16 3.2.4 Final Cavity Shape When all is said and done, the following ellipsoid represents the cavity shape (with no other accelerations except buoyancy): Cavity Shape yc 1 0 -1 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 0 zc -0.005 -0.01 -0.015 rc 0.2 0.1 0 x Figure 7 : Cavity Shape Components Figure 8: Overall Cavity Shape the flow along the trailing edge bisector angle smooth. For a body with a cusped trailing edge where the upper and lower surfaces meet tangentially, a smooth flow at the trailing edge requires equal velocities on both sides of the edge in the tangential direction. Essentially it means that there can be no velocity discontinuities at the trailing edge, or in this case, the transom (rear) of the cavity. 17 Remember that a negative h-value means “up.” If the torpedo were making a starboard turn, the η-component of the cavity centerline would be nonzero and positive and similar in shape to the h-component. 3.3 Cavitator Forces Throughout this study of the supercavitating torpedo dynamics, several attempts were made to describe the disk-cavitator forces. The first attempt didn’t proportionally take into consideration the cavitator’s relative angle of attack or bank angle and the second failed to model the lift and side forces correctly. However, by taking the apparent flow angles into account (as shown in Figure 9), the cavitator forces can be computed as a function of the disk’s “perpendicular” force, apparent angle of attack and apparent sideslip angle. xcav ybody Fp βcav αcav ycav xbody zbody zcav Figure 9: Cavitator Free-Body Diagram where ( ) 2 F p = 12 ρV 2 πRcav CD α cav = α − β cav = β − ql cav u 2 + v 2 + w2 rl cav u 2 + v 2 + w2 Equation 16 − δ cav pitch Equation 17 − δ cav yaw Equation 18 18 Fp is the “perpendicular” force acting on the cavitator, and lcav is the distance from the cavitator to the origin of the system (in this case, the distance to the center of gravity). Fp is considered perpendicular because the equation used to compute the force is based on flows that are perpendicular to the cavitator disc. The body components of the cavitator forces then become: Fcav ⎡ Fcavx ⎤ ⎡− F p cos α cav cos β cav ⎤ ⎢ ⎥ ⎢ ⎥ = ⎢ Fcav y ⎥ = ⎢ F p sin β cav ⎥ ⎢ Fcav ⎥ ⎢ F p sin α cav cos β cav ⎥ ⎦ ⎣ z⎦ ⎣ Equation 19 The moments acting about the cavitator’s center of effect are assumed to be negligible, but the moment about the center of gravity due to the forces is not. Since the origin of the system is the center of gravity and the center of gravity is assumed to lie on the ξ-axis, the moment arm, lcav, is equal to the location of the center of mass (xcg) and is measured as the distance aft of the nose of the torpedo. Therefore, the moments produced by the cavitator forces are: [ M cav = x cg ] 0 0 × Fcav T Equation 20 Remember that the assumption was made that the drag coefficient remains constant and so Fp is always constant if the velocity is held constant. This means that the cavitator forces and moments are only going to be a function of the apparent flow angles α cav and β cav . In order to get a better idea of both the sign convention and sensitivity of the cavitator forces to the apparent flow angles, a straight-and-level flight condition with a velocity of 77 m/s is considered and α cav and β cav are allowed to vary. 19 Cavitator Forces - α Test 5000 F cav 0 Fx Fy Fz -5000 -10000 -15000 -20 1 x 10 -15 -10 -5 0 5 10 15 Mx My Mz 0.5 M cav 20 Cavitator Moments - α Test 4 0 -0.5 -1 -20 -15 -10 -5 0 5 10 15 20 α (deg) Figure 10: Cavitator Forces and Moments - α Test Notice from Figure 10 that the forces and moments are “centered” about a negative α cav value. This means that the cavitator has to be pitched down or the angle of attack as to be negative in order to provide the lift force needed to help support the weight of the torpedo since fin or planing forces would be insufficient to support the weight alone and since a controllable forward force is necessary for active control. Figure 11 shows the effects of varying β cav values. 20 Cavitator Forces - β Test 5000 F cav 0 Fx Fy Fz -5000 -10000 -15000 -20 1 -15 x 10 -10 -5 0 5 10 15 20 Cavitator Moments - β Test 4 M cav 0.5 0 Mx My Mz -0.5 -1 -20 -15 -10 -5 0 5 10 15 20 β (deg) Figure 11: Cavitator Forces and Moments - β Test Here the β cav forces and moments are “centered” at zero because the torpedo is not in a turn. If it were, a similar “centering” shift would be noticed as was noticed in the α example. However, notice that the My value is nonzero for the β example. This is because of the nonzero pitch control of the cavitator. 3.4 Fin Forces The forces acting on the fins were predicted using a fully three-dimensional boundary-element method supplemented with a viscous drag correction 9 . The basic computational approach is summarized in Fine and Kinnas (1993). A high level of detail was required over even the limited operational range considered, because several cavity detachment modes must be taken into account. The simple fin geometry considered for this investigation (depicted in Figure 12) would be easily fabricated and appropriate to operation in the supercavitating regime, but is probably not optimal. The wedge shape 9 The source of the viscous drag correction is unknown. It is mentioned by Kirschner in both the paper and the code, but no direct source was given for this computation so no further explanation can be given. 21 also provides “good strength characteristics.” In addition, for small wedge angles, the unsteady effects associated with the transition between partial cavitation and supercavitation are confined to a very limited range of deflection angles. [1] Fin Geometry L Wedge Half-Angle β S Sweepback Angle, θ Angle of Attack, α ρ Fin Immersion y z Inflow velocity, V θ y z x x So δ α = sin−1[sinδ cosθ ] Body Cavity Figure 12: Fin Geometry The forces acting on the cavitating fins are complicated by the different flow regimes that can be encountered. Some of these regimes include base cavitation, partial cavitation, and supercavitation. 22 z Supercavity x 0.050 0.045 0.040 0.035 Fz 0.030 0.025 Partial Cavity 0.020 0.015 Base Cavity 0.010 0.005 0.000 0.0 5.0 10.0 15.0 Angle of Attack (deg) Figure 13: Representation of a Subset of Forces Acting on the Fin and the Appropriate Flow Regimes The force and moment coefficients were computed with these various cavitating schemes in mind and were provided via a look-up table computed by Anteon. Each coefficient is a function of the individual fin’s apparent angle of attack, apparent sweep, and immersion ratio, all of which are a function of the local cavity dimensions, fin sweep, and torpedo velocity (both linear and angular) components. However, the original fin force and moment coefficient look-up table contained data that produced a non-differential data space. Recall that one issue with previous models is that the nonlinear system was not represented in the linearization. One major contributor of this nonlinear and linear model mismatch actually has to do with the fin force and moment coefficient computation. The reason behind this inconsistency is shown graphically in Figures 1-3 in Appendix A which depict the fin forces and moments for each axis as a function of fin angle of attack and immersion ratio which were computed directly from the given look-up table for a sweep of 45 degrees. Notice that there are small symbols on the surface plots. These symbols represent the mapping of each fin and their associated values during the linearization process. What is important to notice is that for some forces and moments there are two fins that lie on vertices of the coefficient data surface. These vertex locations are easy to see in Figure 14 and are not differentiable. Mathematically, these vertices can be depicted as a type of relay (similar to an absolute function). 23 F y for Sw eep = 45 deg. (Look-up Table) x 10 -4 2 0 -2 Fy -4 -6 -8 -10 -12 -2 0.5 -1 0.6 α 0 1 0.8 2 0.7 Imm 0.9 Figure 14: Anteon Look-Up Table Data Figure 14 clearly illustrates the lines of discontinuity that are present in the y-component of the fin force coefficient which make the coefficient nondifferentiable. Similar lines of discontinuity appear in other coefficient values as well. The locations of these lines are also important. For example, if the system were to be linearized about a straight-andlevel flight condition, the rudder fins (fins 2 and 4) would have zero angle of attack and thus put their operating space on a line of discontinuity and would make the linearization invalid. If the linearization were to take place in a different region of the space, (for example, α = 1 deg, imm = 0.75) the linearization may work for a trim condition in this region, but there is no guarantee that the entire flight envelope of the torpedo would be differentiable. This result means that we have to find a new way to represent the fin force and moment coefficients (or rather “smooth” the look-up table) so that a linear model may be 24 computed in order to understand the system properties and to facilitate a (linear) control law design. In order to make the fin operating space completely differentiable for all flow conditions, a parabolic least squares function was fitted to each of the fin force and moment coefficients. This involves a least-squares type approximation to the fin force and moment data provided by Anteon such that C F , C M = f (α , imm, swp f ) . Since the data is not completely linear, it makes sense to fit a higher order equation to the data. In indicial notation: C i , j = p1 ⋅ α i3 + p 2 ⋅ imm 3j + p3 ⋅ α i2 ⋅ imm j + p 4 ⋅ α i ⋅ imm 2j + p5 ⋅ α i ⋅ imm j + p 6 ⋅ α i + p 7 ⋅ imm j + p8 Equation 21 Note that the higher the order of the approximation, the more accurate the approximation will be. In order to solve for the coefficients pi the system can be solved as follows: First define the vectors as follows ⎤ ⎡ α i3 ⎥ ⎢ 3 ⎢ imm j ⎥ ⎢α i2 ⋅ imm j ⎥ ⎥ ⎢ α i ⋅ imm 2j ⎥ ⎢ A= ⎢ α ⋅ imm ⎥ j ⎥ ⎢ i ⎥ ⎢ αi ⎢ imm ⎥ j ⎥ ⎢ 1 ⎦⎥ ⎣⎢ ⎡ p1 ⎤ ⎢p ⎥ P = ⎢ 8⎥ ⎢ Μ⎥ ⎢ ⎥ ⎣ p8 ⎦ B = Ci , j Now the coefficients pi can be solved… A⋅ P = B [A A]P = A B P = [A A] T T T −1 Equation 22 T A B 25 To get a measure of how good the approximation is to the original data, an averaged value representing the %-error can be computed using Equation 23. E= A⋅ P − B Equation 23 B Note that these approximations must be done for each coefficient. Using this method, the coefficients pi and their representative %-errors can be seen in Tables 2 & 3. Coefficient Fx Fy Fz Mx My Mz p1 0.0000E+00 0.0000E+00 -6.5104E-06 -2.6977E-06 2.1674E-06 0.0000E+00 p2 5.0856E-03 -4.8993E-03 0.0000E+00 0.0000E+00 0.0000E+00 -1.1683E-03 p3 4.6230E-05 -4.4502E-05 0.0000E+00 0.0000E+00 0.0000E+00 -4.0303E-05 p4 0.0000E+00 0.0000E+00 1.0074E-02 1.3920E-03 -1.6503E-03 0.0000E+00 Coefficient Fx Fy Fz Mx My Mz p5 0.0000E+00 0.0000E+00 -1.3193E-03 2.1428E-03 -1.8498E-03 0.0000E+00 p6 0.0000E+00 0.0000E+00 2.6340E-04 -2.8316E-04 2.7272E-04 0.0000E+00 p7 5.6605E-04 1.0178E-03 0.0000E+00 0.0000E+00 0.0000E+00 -1.4744E-03 p8 -4.7508E-04 1.7334E-04 0.0000E+00 0.0000E+00 0.0000E+00 5.8590E-04 Table 3-2: Equation Coefficient Values Coefficient Fx Fy Fz Mx My Mz % Error 12.99% 16.71% 11.06% 14.53% 13.90% 17.92% Table 3-3: Coefficient %-Errors Examples showing the difference between the two coefficient data spaces ((1) Anteon look-up table data, (2) Least-squares approximations) can be seen in Figures 14 and 15. 26 F y for Sw eep = 45 deg. (Least Squares Fit) x 10 -4 5 Fy 0 -5 -10 -15 -2 0.5 -1 0.6 0 α 0.7 1 0.8 2 0.9 Imm Figure 15: Coefficient Data Using Least Squares Approximations Figure 15 shows that by taking a least squares approximate fit to the data, the lines of discontinuities are removed and the entire operating space of the fins would be differentiable. 3.4.1 Cavity-Fin Interaction Note that with the occurrence of cavitation at the fins, there is some interaction between the supercavity surrounding the entire torpedo and the fin cavities. It has been shown at the University of Minnesota in water tunnel tests that there will be some loss of cavity gas (particularly in ventilated cavities) due to the interaction of the fin cavities and the supercavity enveloping the torpedo. 27 Figure 16: Fin and Supercavity Interaction For simplicity, this interaction is ignored. However, it will have an effect on the cavitation number and thus the dynamics of the model itself. Further studies will need to explore this interaction and its effects. 3.4.2 Computation of the Fin Forces and Moments Before the fin forces and moments are computed, the orientation of the fins have to be considered. For the model presented here, the fins are arranged in a cruciform formation as shown in Figure 17. 4 η 3 1 2 h Figure 17: Cruciform Orientation of Fins (View from Nose) This orientation is represented by a vector of angles, Φ = [0 o 90 o 180 o o 270 ] , where the index is associated with the fin number. Note that this is not the only way to orient the fins and that the following equations used to compute the fin forces and moments would work for any fin configuration. Fins 1 and 3 are elevators. Depending 28 on the case considered, they provide some component of steady lift to support the afterbody, and would be important to depth changes. Fins 2 and 4 are rudders that stabilize the vehicle in roll, and are otherwise deflected only during maneuvers. In addition to angular placement, the location of the fins on the torpedo body itself is defined by the variables xpiv and rpiv where xpiv = 0.85 Lbody rpiv = 0.9 Rbody These positions define the pivot points of the fins. Also shown in Figure 17 is the sign convention of the fin lift forces (Fz), the moments (My), and pitch rotation or each fin. The straight arrows on each fin show the positive direction of the lift force. This type of convention is needed because the fin force and moment coefficients computed by Anteon were computed for a general wedgetype fin. This requires special attention to reference frames when computing the total fin forces in the body reference frame. The following steps walk through the computations of the individual fin forces and moments and the appropriate reference frame conversions used to compute the general fin forces and moments in the body reference frame. 1. Determine the local centerline values for each fin. ycen (i ) = y finc cos(Φ(i )) + z fin c sin (Φ (i )) zcen (i ) = − y finc sin (Φ (i )) + z finc cos(Φ (i )) where y finc , z finc , and rfinc are the cavity centerline values at xpiv. 2. Find the intersection of the cavity and the local fin. 2 yR (i ) = rfin − zcen (i ) c 3. Calculate the fin immersion ratio. 29 imm(i ) = 0.7 * (r tip − ycen (i ) + yR (i )) b fin + 0.3 imm(i ) < 0 ⎧0 ⎪ imm(i ) = ⎨imm(i ) 0 < imm(i ) < 1 ⎪1 imm(i ) > 1 ⎩ Equation 24 where bfin is the span of the fin and rtip is the sum of the span and the pivot radius. 4. Calculate the apparent sweep. swp f (i ) = swp − α sin (Φ (i )) + β cos(Φ(i )) Equation 25 5. Calculate the approximate center of effect on the submerged portion of the fin. (1 − imm(i )) sin (swp (i )) f x f (i ) = x piv + b fin 2 (1 − imm(i )) cos(swp (i )) rf (i ) = rpiv + b fin f 2 y f (i ) = rf (i )sin (Φ (i )) z f (i ) = rf (i )cos(Φ (i )) 6. Compute the apparent flow angles in the body-fixed frame. x fin (i ) = x f (i ) − xorigin α body (i ) = α + (qx (i ) + py (i )) y α body (i ) = − β + fin f u + v + w2 (− rx fin (i ) + pz f (i )) 2 2 u 2 + v 2 + w2 y 7. Transform the apparent flow angles to the appropriate fin reference frame (designated as the LSCAV frame in the Anteon code) α LSCAV (i ) = α body cos(Φ (i )) + α body sin (Φ (i )) y z 8. Add fin actuator angle to compute final angle of attack of each fin 30 atk (i ) = α LSCAV (i ) + δ fin (i )cos(swp f (i )) Equation 26 9. Compute force and moment coefficients from Anteon precomputed data as a function of imm(i), spwf(i), and atk(i). 10. Add any uncertainty associated with the coefficients 10 . 11. Dimensionalize the force and moment coefficients. qF = 1 2 ρ (u 2 + v 2 + w 2 )b 2fin [ F = q F C Fx [ C Fy M = q F b fin C M x C Fz CM y ] T CM z ] + [x T fin (i ) ] 0 0 ×F T 12. Once all the forces and moments are calculated for each fin sum and rotate the forces and moments into the correct body axis and sum the values N fin F fin (1) = − ∑ Fi (1) i =1 N fin F fin (2 ) = ∑ Fi (2 ) cos(Φ(i )) + Fi (3)sin (Φ (i )) Equation 27 i =1 N fin F fin (3) = ∑ Fi (3)sin (Φ (i )) − Fi (3) cos(Φ (i )) i =1 N fin M fin (1) = − ∑ M i (1) i =1 N fin M fin (2 ) = ∑ M i (2 ) cos(Φ(i )) + M i (3)sin (Φ (i )) Equation 28 i =1 N fin M fin (3) = ∑ M i (3)sin (Φ(i )) − M i (3) cos(Φ (i )) i =1 Now that the computations of the fin forces and moments have been defined, as was done for the cavitator forces and moments, the fin forces and moments are shown in 10 System uncertainty is discussed later in the thesis. 31 Figures 18 and 19 for various flow angles, α and β. These graphs not only show the effects of the flow angles on the forces and moments, but also provide insight into the effects of the fin control surfaces (as they are currently modeled). The effects of various angles of attack on the fin forces and moments are first shown in Figure 16. 1 x 10 Fin Forces - α Test 4 Fx Fy Fz F f in 0.5 0 -0.5 -1 -20 1 x 10 -15 -10 -5 0 5 10 15 Fin Moments - α Test 4 Mx My Mz 0.5 M f in 20 0 -0.5 -1 -20 -15 -10 -5 0 5 10 15 20 α (deg) Figure 18: Fin Forces and Moments - α Test Again, the forces and moments are not centered at zero degrees angle of attack because the elevator (fins 1 and 3) control values are not set to zero in order to help support the weight of the torpedo. Notice that unlike the cavitator forces and moments these forces and moments are nonlinear. This is apparent by the curved lines representing the dominant fin forces and moments and is the result of different amounts of cavitation that can occur for various angles of attack. This type of effect was illustrated in Figures 13-15. Similar comparisons can be made of the β test shown in Figure 19. 32 1 x 10 Fin Forces - β Test 4 Fx Fy Fz F f in 0.5 0 -0.5 -1 -20 1 x 10 -15 -10 -5 0 5 10 15 20 Fin Moments - β Test 4 M f in 0.5 0 Mx My Mz -0.5 -1 -20 -15 -10 -5 0 5 10 15 20 β (deg) Figure 19: Fin Forces and Moments - β Test 3.4.3 Notes on Fin Forces The fin forces and moment presented here do not specifically model any damping forces and moments. This ultimately has an effect on the system poles and zeros and is most important when considering the roll motion. While the sweep of the fins provides a local lateral force which acts like a passive control surface helping to control pitch and yaw, there is no such force helping to prevent roll motion. This means that the roll motion, just based on the fin forces only, is neutrally stable. This makes roll a potentially hard state to control as the other torpedo dynamics can easily make this motion unstable. 3.5 Planing Forces Common planing forces are typically associated with boats. At rest, the planing hull and displacement hull both displace the water around them. 33 Figure 20: Displacement Hull In this case, the planing hull reacts nearly the same as a displacement hull when it initially gets underway – it takes considerable power to produce a small increase in speed. But at a certain point, external forces acting on the shape cause an interesting effect, the hull is lifted up onto the surface of the water. Figure 21: Planing Hull The planing hull skims along the surface of the water whereas the displacement hull always forces water around it. This “skimming” along the water’s surface is called planing. Once “on top,” the power/speed ratio is considerably altered – very little power is needed to get a large increase in speed. These types of forces occur with supercavitating torpedo schemes when the torpedo attitude is larger than the allowable space defined by the cavity shape and dimensions. However, unlike the boat application, these forces are not desirable for the reason that, while drag may be reduced as compared to a fully-wetted vehicle, the planing vehicle will produce more drag than the vehicle entirely enveloped in a supercavity. Two possible schemes of a planing supercavitating torpedo are shown in Figure 22 (Savchenko et al 1998, Savchenko et al 1999). [5] 34 Figure 22: Possible Supercavitating Flow Schemes with Planing Forces In the two possible motion schemes the object’s weight G is compensated by two hydrodynamic forces, G = Y1 + Y2 , where Y1 is the lift on the cavitator and Y2 is the lift on the planing part of the hull. The top part of Figure 22 represents a type of steady-state planing force that is being used to help support the weight of the body. The bottom part displays a situation where the body is bouncing around the inside of the cavity. Upon further investigation into the torpedo model’s behavior, it is observed that the planing forces represent a force with a deadzone, much like the one shown in massspring example in Figure 23: (dampener) M (Spring) Figure 23: Spring-Mass 2nd Order System with Dead-Zone Here we can see that the spring force will only exist when the end of the spring hits one of the edges of the mass. The area between the two edges of the mass is the 35 deadzone. This deadzone is similar to the inside of the cavity and the mass edges are similar to the cavity boundaries (dimensions). What this means is that a linearized system would not be representative of all the possible dynamics. In other words, when planing forces exist, the torpedo is actually a different system. For this spring mass example shown above, there would have to be three linear models to represent the three systems: (1) when the spring is not hitting the edge of the mass, (2) when the spring hits the bottom edge, and (3) when the spring hits the top edge. A similar process must be applied to the torpedo model for when the torpedo is planing and when it is not. There are numerous studies in how to handle these types of nonlinearities in control law design if one decides that it is possible to control the torpedo (given the very high bandwidth) in the presence of strong and frequent planing forces. Planing of a slender afterbody on a supercavitating boundary also distorts the flow (Logvinovich, 1980). The pressure increase on the wetted portion of the section is associated with the deflection of the streamlines toward the cavity region. This results in a jet of fluid into the cavity on each side of the body similar to the spray jet observed along planing hulls. Both types of secondary flows – due to the fins and to the afterbody planing – have been ignored in the current investigation, although the theory used to estimate the afterbody planing forces accounts for the lowest-order effect of the spray jet. [1] Planing forces acting on the blast tube used for propulsion is assumed to be negligible for reasons that this aft part of the cavity will, in reality, have a large void fraction and so the hydrodynamic forces acting on the blast tube would be small. Further studies have been done on the afterbody cavity dynamics by Travis Schauer at the University of Minnesota and more information regarding these void fractions can be seen in his Master’s thesis. The importance of cavity distortion in high turn rates is apparent in Figure 24 which represents results for an extreme turn (in this case, a 5-g turn, which is probably impractical, but is illustrative for the cavity-body interactions important to the dynamics). 36 X Y Z Z X Y Figure 24: Cavity Behavior in an Extreme Turn [1] The submergence of the afterbody into the flow is clear in this diagram. This is a cause of nonlinear forces acting on the torpedo. First, as the cavity distorts from a nominally axisymmetric configuration, the immersion of the fins into the ambient liquid outside the cavity becomes asymmetric. Therefore, the couple associated with symmetric or anti-symmetric fin forces and moments will be associated with a nonlinear system response. Secondly, a supercavitating system designed for a nominally axisymmetric cavity (or even one designed for cavity tail-up) will be subject to nonlinear forces associated with afterbody planing. 3.5.1 Computation of the Planing Forces The planing forces are computed using an extension of Wagner planing theory developed by Logvinivich (for example, 1980). What this means is that the planing region of the hull can be approximated as a wedge-type immersion as presented in Figure 25. 37 Figure 25: Sketch of Planing Region of Torpedo where • a = Lplane = xentry - xtransom • o = hplane = htransom • α = αplane = π + atan2(hplane,Lplane) • θ = θplane = 0.25(αentry+3αtransom); a conical average weighted to the transom • Δp = Rcavity at transom – Rhull at transom and correspond to the notation used in Figure 25. 3.5.1.1 Pressure Forces and Moments The drag force associate with planing has two components, pressure drag (form drag) and skin friction drag (viscous drag). Most of the drag is typically caused by pressure drag. The pressure drag is caused by a combination of the build of pressure in front of the submerged portion of the body and the decrease in pressure behind. The pressure force normal to the inclined longitudinal axis of the cylindrical hull is then given by Equation 29 Δp rh + h plane ⎛⎜ ⎛ ⎜ − 1 Fp = π ρ r u (sin α plane )( cos α plane ) rh + 2h plane ⎜ ⎜⎝ h plane + Δ p ⎝ 2 c 2 ⎞ ⎟ ⎟ ⎠ 2 ⎞ ⎟ ⎟ ⎠ Equation 29 38 where rh is the hull radius (assumed to be constant over the planing region), rc, αplane, and Δ are (respectively) the cavity radius (at transom), the angle of attack between the longitudinal axes of the body and the cavity, and the difference between the cavity and hull radii (all averaged along the planing region); and h0 is the immersion depth at the transom measured normal to the cavity centerline. Similarly, the moment of pressure forces about the transom can be expressed as M p = π ρ r u cos α plane 2 c 2 rh + h plane 2 2 h plane Equation 30 rh + 2h plane h plane + Δ p 3.5.1.2 Skin Friction Forces The skin friction forces, caused by the viscosity of water, were computed using the following set of equations [1]: h plane uc = us = Cd = Δp 2 rh Δ p h plane 0.031 ⎛ uL plane ⎜⎜ ⎝ ν S w = 4rh 1 ⎞7 ⎟⎟ ⎠ Δp tan α plane [(1 + u )arctan u 2 c [( c ] − uc + rh3 u s2 − 12 arcsin u s + 12 u s 1 − u s2 2Δ p tan α plane ) F f = 12 ρu 2 cos 2 α plane S w C d ] Equation 31 39 where u is the forward velocity state and the moments are assumed to be negligible. 3.5.1.3 Added Mass and Impact Forces The extra terms that are now added to the planing force computation is the unsteady force which is proportional to the acceleration and the impact force which is proportional to the impact speed and the speed of sound in water. The impact force is important for the case when the hull of the torpedo hits the surface of the cavity. The generic forces due to acceleration and impact are represented as Facceleration = C a madded a Equation 32 Fimpact = C i mimpact CVA pw Equation 33 where C is the speed of sound in water, a and V are the acceleration and velocities of the center of mass of the wetted wedge (computed using the norm of the q and r components of the state-space derivative and state-space, respectively), Apw is the projected area of the surface area of the wetted wedge, and Ca and Ci are coefficients for the acceleration and impact forces respectively and are yet to be determined through CFD analysis. Currently, an upper limit based on a fully wetted cylindrical body, the values of Ca and Ci are 1 and ½, respectively. madded and mimpact are related to the geometry. For a noncavitating sphere the added mass is equal to half the displaced water, but for a cavitating body, there is no such compact result. For now, a crude approximation is to set the added mass equal to the cavity volume and the impact mass to the mass of the displaced water by the impacting hull. 3.5.1.4 Total Planing Forces and Moments The total planing forces and moments then become 40 F plane M plane ⎡ ⎤ Ff ⎢ ⎥ = ⎢− (F p + Facceleration + Fimpact )cos θ plane ⎥ ⎢ (F p + Facceleration + Fimpact )sin θ plane ⎥ ⎣ ⎦ ⎡ ⎤ 0 ⎡ xcg ,wedge ⎤ ⎢ ⎥ = ⎢ M p sin θ c ⎥ + F plane × ⎢⎢ 0 ⎥⎥ ⎢− M p cos θ c ⎥ ⎢⎣ 0 ⎥⎦ ⎣ ⎦ Equation 34 Equation 35 3.5.2 Effects of Planing The magnitude of the forces are large (on the order of 6000 N!) and occur at dominating frequencies 11 of about 10 Hz, 25 Hz, and 50 Hz as seen in Figure 26. Keep in mind that these frequencies and forces are specific to the torpedo geometry described above as well as the flight condition and may be different for other torpedo models. Due to the large forces and the high frequency (with dominant modes as high as 50 Hz) of these forces, not to mention the large increase in drag associated with planing, planing forces are considered undesirable and are not required for the overall stability of the torpedo as long as there are other control surfaces such as fins to help support the weight. In addition, the model becomes a switching model with the cavity dimensions at the transom of the torpedo representing the dead-zone region. Since the dominant frequencies of the planing forces are about 10 Hz, 25 Hz, and 50 Hz it would take significant control effort as well as very fast and expensive actuators and sensors to actively control the torpedo at this high of a bandwidth. This is why this thesis treats the planing forces as a general disturbance (which is a function of the states) in the nonlinear model which means that these forces are not used to compute the linear model used for control law design. Rather, they will be used to help specify the constraints on the turning accelerations for the horizontal trajectories considered in order to minimize the allowable planing forces. In other words, allowable trajectories will be based on the steady-state turn rate required to produce planing forces. 11 These frequencies are based on the original model developed by Anteon for fin and planing force supported, straight-and-level flight at a speed of 77 m/s. 41 x 10 8 FFT of Norm al P laning Force 3 S teady-Flow A ll P laning Term s 2.5 |F| 2 1.5 1 0.5 0 0 10 20 30 40 50 Frequency (Hz) 60 70 80 Figure 26: FFT of Planing Forces 3.6 Mass and Inertial Forces This thesis treats the torpedo as an ideal rigid body. The term rigid is in reality a mathematical idealization, because all bodies deform by a certain amount under the application of loads. If the deformation is small compared to the overall dimensions of the body, and energy dissipation due to elastic effects is negligible, the rigid body assumption can safely be used. This is not to say that the high frequency dynamics associated with an elastic body is not important, but rather that the low frequency dynamics must be thoroughly understood first. A rigid body is defined as a body with physical dimensions where the distances between the particles that constitute the body remain unchanged. One needs to consider the rotational motion of a rigid body; thus six degrees of freedom, three translational and three rotational, are required to completely describe the vehicles motion. In addition, one needs to develop qualities that give information regarding the distribution of mass along the body. Just as the mass of a body represents its resistance to translational motion, the 42 distribution of the mass about a certain axis represents the body’s resistance to rotational motion about that axis. 3.6.1 Center of Mass A rigid body can be considered as a collection of particles in which the number of particles approaches infinity and in which the distances between the individual masses remain the same. As N approaches infinity, each particle can be treated as a differential mass element dm and the mass of the body is computed as an integral over the body dimensions m= ∫ dm body where the nominal mass is set at 175.7 Kg for this investigation. The location of the center of mass can then be defined as rG = 1 ∫ r ⋅ dm m body where r is the vector from the origin to the differential element dm. Since the torpedo is symmetric about the ξ-axis, the only nonzero element of rG is the ξ-component and will be defined as xcg and is measured in units aft of the cavitator. The center of mass is a very important quantity, as its use simplifies the analysis of bodies considerably. One has to perform the integrations above in order to find the center of mass. These integrals in general are triple integrals, but in order to simplify the problem the geometry of the torpedo is considered and uniform density is assumed. As is shown in Figure 27, the torpedo geometry can be broken into four main sections: (1) the cavitator/pivot joints, (2) nose cone, (3) body cylinder, and (4) the blast tube. Since it is reasonable to consider most of the mass to be contained in the nose cone and the cylindrical body, we just need to know the simple geometry of those sections. 43 xcg ξ h Figure 27: Drawing of Torpedo (In Sectional Form) With just two components of the torpedo represented with simple geometry, it is straight forward to compute the position of the center of mass xcg. xcg = mcone xcg cone + mcylinder xcg cylinder Equation 36 mtotal 3.6.2 Mass Moments of Inertia While the center of mass provides valuable information and simplifies the analysis of translational motion, it gives no measure of the way the mass is distributed on the body. The mass of a body describes the amount of matter contained in the body and the resistance of the body to translational motion. The resistance of the body to rotation is dependant upon how the mass is distributed. This resistance is known as the second moment of inertia 12 or rotational inertia. A coordinate system xyz fixed to a point on the body (the center of gravity in this study) and describe the configuration of a differential mass element by the vector r = xi + yj + zk where x is positive forward of the origin and negative aft of the origin. There are typically two quantities of interest: the distribution of the mass with respect to a certain axis; and the distribution of mass with respect to a certain plane. Consider the x-axis first. The perpendicular distance of a differential element dm from 12 The first moment of inertia refers to translational inertia and is just the total mass mtotal. 44 the x-axis is R x = y 2 + z 2 . The mass moment of inertia about the x-axis is then computed as J xx = ∫R 2 x ⋅ dm = body ∫y 2 + z 2 ⋅ dm Equation 37 body In a similar fashion, the mass moments of inertia about the y and z axes are defined as J yy = ∫R 2 y ⋅ dm = body J zz = ∫R 2 z ∫x 2 + z 2 ⋅ dm Equation 38 ∫x 2 + y 2 ⋅ dm Equation 39 body ⋅ dm = body body One quick observation is that the mass moment of inertia of a body about a certain axis becomes larger as the axis is selected further away from the body. This is an indication that mass moments of inertia will be useful in describing the rotational motion of a body. Consider the distribution of the mass with respect to the xy, xz, and yz planes; these produce the products of inertia. J xy = ∫ xy ⋅ dm Equation 40 ∫ yz ⋅ dm Equation 41 ∫ xz ⋅ dm Equation 42 body J yz = body J xz = body It is clear that Jxy=Jyx, and so forth. In general, the products of inertia do not contribute too much to the physical description of the mass distribution, unless there are certain symmetry properties with respect to the coordinate axes. Since the fins are oriented in the cross formation and line up with the principal axes, the products of inertia are zero unless an origin is chosen to be something other than the center of mass. The moments and products of inertia form the so called inertia matrix, denoted by [J] and is defined as 45 ⎡ J xx [J ] = ⎢⎢− J xy ⎢ − J xz ⎣ − J xy J yy − J yz − J xz ⎤ ⎥ − J yz ⎥ J zz ⎥⎦ Equation 43 The diagonal elements of [J] are the principal moments of inertia and they are all positive quantities, each obtained by integration of a positive integrand. The mass, center of mass, and the inertia matrix of a rigid body specify what are called the internal properties is the body completely. For an elastic body, one needs to know measures of the resistance of the body to deformation, in addition to the internal properties. To compute the components of the inertia matrix, the simple torpedo geometry can be taken advantage of again by use of the parallel axis theorem. In other words, the moments of inertia are computed for the cone and the cylinder separately taking into consideration the distance from the section’s center of gravity to the origin and then performing the following calculation (parallel axis theorem). J Bi = J Gi ⎡d y2 + d z2 ⎢ + mi ⎢ − d x d y ⎢ − dxdz ⎣ − dxd y d x2 + d z2 − d ydz − dxdz ⎤ ⎥ − d ydz ⎥ d x2 + d y2 ⎥⎦ Equation 44 where JG are the moments of inertia of the individual section, mi is the mass of the section, and dx, dy, and dz represent the distances to the origin in the ξ-, η-, and h-axes. The total inertia is then computed by summing the two sections of inertia. 3.7 Putting it all Together A variety of methods exist for writing equations of motion (EOM) for dynamical systems. One of the most common is the Newton-Euler formulation. From a historical perspective, Newton developed his laws for the motion of rigid bodies, even though we first study them within the context of particles. Defining the inertia force acting on the body as –macg, Newton’s second law can be described as the inertia force being equal and opposite to the applied forces. The law governing rotational motion was formally stated by Euler in 1775. The law states that the rate of change of the angular momentum about 46 the center of mass of a rigid body is equal to the sum of all applied moments about the center of mass. [8] Using this methodology, the system dynamics about the center of gravity in an inertial coordinate system are computed as shown in the following matrix notation form of the EOM. ⎡mI 3×3 ⎢ 0 ⎣ 0 ⎤ ⎡ν&⎤ ⎡− ω~ 0 ⎤ ⎡mI 3×3 = J cg ⎥⎦ ⎢⎣ω&⎥⎦ cg ⎢⎣ 0 − ω~ ⎥⎦ ⎢⎣ 0 0 ⎤ ⎡ν ⎤ ⎡∑F ⎤ +⎢ ⎥ ⎥ ⎢ ⎥ J cg ⎦ ⎣ω ⎦ cg ⎣∑ M ⎦ cg Equation 45 where ν = [u v w]T ω = [ p q r ]T are the linear and angular velocity vectors, respectively, F and M are the external forces and moments acting about the center of gravity, and the tilde (~) character is used to represent the cross product of a vector in matrix form. The inertia about the center of gravity is defined as Jcg. The tilde character is used as follows: κ = [a b c ] T ⎡ 0 −c b ⎤ ~ → κ = ⎢⎢ c 0 − a ⎥⎥ ⎢⎣− b a 0 ⎥⎦ and is the same as using the cross product as is illustrated below. ⎡a ⎤ ⎡ l ⎤ ⎡ 0 − c b ⎤ ⎡ l ⎤ ⎢b ⎥ × ⎢ m ⎥ = ⎢ c 0 − a ⎥⎥ ⎢⎢m⎥⎥ ⎢ ⎥ ⎢ ⎥ ⎢ ⎢⎣ c ⎥⎦ ⎢⎣ n ⎥⎦ ⎢⎣− b a 0 ⎥⎦ ⎢⎣ n ⎥⎦ Note that the tilde matrix representation is a skew-symmetric matrix. It is often convenient to write the EOM in short-hand notation with the help of the tilde operation described above. Defining a mass matrix, M, and angular rate matrix, Ω, such that 47 ⎡mI 3×3 0 ⎤ M =⎢ J cg ⎥⎦ ⎣ 0 ⎡− ω~ 0 ⎤ Ω=⎢ ~⎥ ⎣ 0 − ω⎦ The equations of motion about the center of gravity (Equation 45) are then written as ⎡∑F ⎤ ⎡ν&⎤ ⎡ν ⎤ M ⎢ ⎥ = ΩM ⎢ ⎥ + ⎢ ⎥ ⎣ω&⎦ cg ⎣ω ⎦ cg ⎣∑ M ⎦ cg Equation 46 3.7.1 EOM about an Arbitrary Point If it is desired to compute the EOM about an arbitrary point other than the center of mass (such as the cavitator pivot point as is considered by Anteon), appropriate transformations must be added to these system equations of motion. If a vector defining the distance to the arbitrary point from the center of mass is defined as [ r = rx ry rz ] T where distances are positive in the positive directions of the coordinate system, the velocity components of the system are transformed to the new coordinate system. In other words, we substitute the velocity components about the center of gravity with the transformed values such that ⎡ I 3×3 ⎡ν ⎤ ⎢ω ⎥ = ⎢ 0 ⎣ ⎦ cg ⎣ ~ r ⎤ ⎡ν ⎤ ⎡ν ⎤ = R⎢ ⎥ ⎥ ⎢ ⎥ I 3×3 ⎦ ⎣ω ⎦ ⎣ω ⎦ Equation 47 where R is the origin transformation matrix. Substituting and making sure that the forces and moments are in the correct reference frames, the EOM become ⎡∑F ⎤ ⎡ν&⎤ ⎡ν ⎤ R T MR ⎢ ⎥ = R T ΩMR ⎢ ⎥ + R T ⎢ ⎥ ⎣ω&⎦ ⎣ω ⎦ ⎣∑ M ⎦ cg 48 Equation 48 If one wanted to compare the two models (Equation 46 vs. Equation 48), there are certain intricacies that occur when changing between coordinates. These issues become apparent when investigating system dynamics such as nonlinear transients and system poles and zeros. To make sure that the user’s code is debugged, it is suggested that the energy and momentum are conserved and that the values compare between the two models. However, since it assumed that the mass remains constant such that the center of gravity is not a function of time, it is convenient and easier to post-process the states of the EOM represented in Equation 46. This would create fewer errors when trying to compare the system poles and zeros (they should be the same) between the EOM in Equation 46 and the EOM in Equation 48 and give the same results in nonlinear transients. This type of post-processing can be best described in the following block diagram 13 . Remember that the states are the Euler angles, the translational velocities, and the angular velocities as defined above. 3.7.2 Implementation The dynamic system was implemented, simulated, and analyzed using MATLAB, a standard in today’s engineering research community. For simplification and for future use in control law design, the dynamics were simulated in Simulink using a fixed-step, 4th order Runge-Kutta integration method with a time step of 0.001 sec. This is a sufficiently small time step as is shown in Figure 28. This figure displays the most interesting transients of this test case and displays how they change as a function of the time step. The transients are representative of a 1 deg step in the “elevator” fins (fins 1 13 Note that this block diagram uses the Simulink to make this block diagram. 49 and 3). Though the transients are fairly close for time steps of 0.005 seconds and 0.001 seconds, to be safe and thorough, a time step of 0.001 seconds was chosen. Simulation Time Step Comparisons 0.02 θ (rad) 0.01 Δt = Δt = Δt = Δt = 0 -0.01 -0.02 0.05 sec 0.01 sec 0.005 sec 0.001 sec 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 0 0.2 0.4 0.6 0.8 1 1.2 time (sec) 1.4 1.6 1.8 2 82.28 u (m/s) 82.26 82.24 82.22 82.2 82.18 0.2 q (rad/s) 0.1 0 -0.1 -0.2 Figure 28: Simulation Time Step Comparisons: 1 deg Step in Elevators The simulation block diagrams as well as the code used to compute the forces and moments can be examined in Appendix B. 50 4 Linearization A classical dilemma in modeling physical systems is the trade-off between model accuracy and tractability. While sophisticated models might provide accurate descriptions of system behavior, the resulting analysis can be considerably more complicated. Simpler models, on the other hand, may make analysis easier and offer more insight, but might neglect important system behaviors. The required fidelity of a model depends on the intended utility. For example, one may use a very simplified model for the sake of control design, but then use a sophisticated model to simulate the overall control system. One instance where this dilemma manifests itself is the use of linear versus nonlinear models. Nonlinearities occur in most physical systems. Simple examples include saturations, rate limiters, dead-zones, and backlash. Further examples include inherently nonlinear behavior of systems such as chemical process plants, aircraft, and the torpedo model under inspection. However, methods for analysis and control design are considerably more available and developed for linear systems than nonlinear systems. One approach is to directly address the nonlinear behavior of such systems, and nonlinear control design remains a topic of active research. An alternative method is to linearize the system dynamics; i.e. to approximate the nonlinear model by a linear one. Some immediate consequences are that (1) the linear model can only give a local description of the system behavior and (2) some of the intricacies of the system behavior may be completely neglected – even locally. In some cases, these consequences are tolerable, and one may then employ methods for linear systems. Recall that the main reason for continuing to understand and further the development of the torpedo’s dynamic model (rather than diving into control law design) is because there is an issue with the previous model developed by Kirschner et. al; that is that the stable nonlinear transients did not match the unstable linear description of the model. This means that it is probable that some of the model intricacies were not being captured by the linearization process. The following provides detailed description of the process of linearization and situations when this process fails in a general form. 51 4.1 General Linearization Procedures and Information The goal of linearization is to provide insight into nonlinear system behavior about an equilibrium point and to give the engineer some useful tools for attacking certain classes of nonlinear problems. Many systems with mild, sufficiently smooth nonlinearities can be treated by using a linear approximate model, obtained by linearizing about a known nominal solution or operating point. Most control design is based on behavior in the vicinity of an “operating point.” Many aircraft, rocket, and spacecraft control systems have been successfully designed using linear behavior in the neighborhood of a nominal trajectory. Consider the general time-invariant nonlinear state variable mode of Equations 49 and 50: x&= f ( x, Δ ) Equation 49 y = g ( x, Δ ) Equation 50 where x is the state vector, Δ is the input vector, and y is the output vector. Suppose that a nominal solution xn, Δn, and yn, such as an equilibrium point, is known. The difference between the nominal vector functions and some slightly perturbed functions x, Δ, and y can be defined by δx = x − x n δΔ = Δ − Δ n δy = y − y n Then Equations 49 and 50 can be written as x&n + δx&= f (x n + δx, Δ n + δΔ ) ⎡ ∂f ⎤ ⎡ ∂f ⎤ = f ( x n ,U n ) + ⎢ ⎥ δx + ⎢ ⎥ δΔ + h.o.t ⎣ ∂x ⎦ n ⎣ ∂Δ ⎦ n y n + δy = g (x n + δx, U n + δU ) 52 Equation 51 ⎡ ∂g ⎤ ⎡ ∂g ⎤ = g ( y n , U n ) + ⎢ ⎥ δx + ⎢ ⎥ δΔ + h.o.t ⎣ ∂x ⎦ n ⎣ ∂Δ ⎦ n Equation 52 where []n means that the derivatives, the Jacobians, are evaluated on the nominal solutions. Since the nominal solutions satisfy Equations 49 and 50, the first terms in the preceding Taylor’s series expansion cancel. One other condition must also hold. For sufficiently small δx , δΔ , and δy perturbations, the higher-order terms must approach zero as x approaches xn, that is: lim sup h.o.t. x → xn t ≥ 0 x =0 Equation 53 Since these higher-order terms can be neglected, this leaves the linear time-invarient (LTI) equations ⎡ ∂f ⎤ ⎡ ∂f ⎤ δx + ⎢ ⎥ δΔ ⎥ ⎣ ∂x ⎦ n ⎣ ∂Δ ⎦ n ⎡ ∂g ⎤ ⎡ ∂g ⎤ δy = ⎢ ⎥ δx + ⎢ ⎥ δΔ ⎣ ∂x ⎦ n ⎣ ∂Δ ⎦ n δx&= ⎢ Equation 54 which is equal to x&= Ax + BΔ Equation 55 y = Cx + DΔ when (xn, Δn) is equal to (0,0) and the matrices A, B, C, and D are the respective Jacobians. 4.1.1 Limitations of Linearization There are a couple of nonlinearities that do not lend themselves to linearizationbased analysis. Consider the system x&= Ax + BN (Δ) Equation 56 This system represents linear dynamics where the input u first passes through a nonlinearity, N. Some common nonlinearities are: 53 saturation 14 : Δ ≥1 ⎧1 ⎪ N ( Δ ) = ⎨Δ − 1 ≤ Δ ≤ 1 ⎪ − 1 Δ ≤ −1 ⎩ Equation 57 deadzone: ⎧Δ − 1 Δ ≥ 1 ⎪ N (Δ ) = ⎨0 −1 ≤ Δ ≤ 1 ⎪ Δ + 1 Δ ≤ −1 ⎩ Equation 58 and relay: ⎧1 Δ>0 N (Δ) = ⎨ ⎩− 1 Δ < 0 Equation 59 Other nonlinearities include backlash and hysteresis. All of these nonlinearities result in a failure in linearization-based analysis because the linearization completely removes the intricacies that the nonlinearities cause. i.e. N(Δ) is not differentiable (the slope is not smooth). 5 Flight Envelope In order to define the flight envelope, the constant cavitation number of 0.029 must be considered. Given the definition of σ in Equation 1 the velocity needed to maintain this cavitation number can be solved providing we know something about the freestream pressure, cavity pressure, and water density. If the freestream pressure is assumed to be about 101325 Pa and the cavity pressure is assumed to be water vapor pressure at a temperature of 41o F (871.928 Pa) and a density of 1024 kg/m3, the velocity required to maintain the cavitation number of 0.029 would be about 82.25 m/s. Since the temperature of the water and operating depth (assumed to be about ten meters) greatly affect the density and pressure, the velocity value is allowed to vary by 10% of the nominal value. This gives a velocity operating range of about V = [74,90] m/s. Note that 14 Note that from the definition of Equation 51 that this is only true when the Δ has hit a saturation point. 54 even at the lower bound, the velocity is still high enough to produce a cavity that completely envelopes the torpedo body. In many ways, the cavity dimensions and profile can be thought of as a dynamic constraint imposed on the torpedo dynamics. If the pitch or yaw angle become too great (in terms of trim or turning accelerations), the hull of the torpedo starts to incur cavity disruptive planing forces that add extra drag and create a very difficult problem for the control and actuator designers. Therefore, the flight envelope is designed such that the planing forces should not occur which places limits on the turn rates. Since the allowable turning rates are a function of the velocity, the rates must be computed for each velocity value. Doing so produces the flight envelope shown in Figure 29. Flight Envelope 5 4 4 3 3 Turning Rate (G's) 2 1 nom 2 1 0 -1 -2 -3 5 6 -4 -5 60 65 70 75 80 85 Velocity (m/s) 90 95 100 Figure 29: Torpedo Flight Envelope for Non-Planing Flight Note that this flight envelope is dependent upon the geometry of the torpedo. If a different torpedo configuration were to be used, the flight envelope would need to be recomputed. 55 In order to fully understand the torpedo model, several linear models of the openloop torpedo model for various trim conditions should be computed and analyzed. In order to get a representation of the full flight envelope, a linear model should be taken for the nominal model (V = 82.25 m/s, turning acceleration = 0 g’s) as well as six other trim conditions indicated in Figure 29. What’s more important is that since the controller can typically only be designed with one nominal model, it is important to test the closed-loop system with all trim conditions in order to make sure that the controller performs as intended for all possible flight conditions. 6 Stability and System Poles One of the most important characteristics of both nonlinear and linear systems is its stability. For completeness and in order to better understand the analysis of the torpedo, the definitions of stability and some of the tools used to determine system stability are presented below. Consider the state equation written in Equation 49. For the continuous-time case with zero input x&= f ( x,0) with the origin defined at the equilibrium trim condition, the following apply. Definition 1 The origin is a stable equilibrium point if there exists an ε > 0 and a δ(ε,t0) > 0, such that if x(t 0 ) < δ, then the resultant motion x(t) satisfies x(t ) < ε for all t > t0. This definition of stability is sometimes called stability in the sense of Lyapunov, abbreviated as stable i.s.L. If a system possesses this type of stability, then it is ensured 56 that the state can be kept within ε, in norm, of the origin by restricting the initial perturbation to be less than δ, in norm. Note that it is necessarily true that δ ≤ ε . Definition 2 The origin is an asymptotically stable stable equilibrium point if (a) it is stable, and if in addition, (b) there exists a number δ(t0) > 0 such that whenever x(t 0 ) < δ (t 0 ) the resultant motion satisfies lim x(t ) = 0 . t →∞ The following is a standard analysis result based on Definition 2. The equilibrium point xn equal to x0 is asymptotically stable if all of the eigenvalues (poles 15 ) of the Jacobian ∂f ( xi , Δ ) (the state-space A-matrix) have negative real parts. It is unstable if A ∂x j has an eigenvalue with a positive real part. If one or more of the eigenvalues are on the jϖ axis and all others are in the left-half plane, no conclusions about stability can be drawn from the linear model. Whether the actual behavior of the system is divergent or convergent will then depend upon the higher-order terms in the Taylor’s Series expansion. Thus, except for the borderline jϖ axis case, this result states that the linearization can provide sufficient conditions for stability of the nonlinear system in a neighborhood of an equilibrium point. When nonzero inputs Δ(t) are considered, additional types of stability are often used. Definition 3 (Bounded input, bounded output stability) Let u be a bounded input with Km as the least upper bound. If there exists a scalar α such that for every t, the output satisfies y ≤ αK m , then the system is bounded input, bounded output stable, abbreviated as BIBO stable. 15 When the system equations are simultaneous linear ordinary differential equations (ODEs), the transfer function that results will be a ratio of polynomials; that is, H (s ) = b(s ) a (s ) . If we assume that b and a have no common factors (as is usually the case), then values of s such that a(s)=0 will represent points where H(s) is infinity. These s-values are called poles of H(s). Values of s such that b(s)=0 are points where H(s)=0, and the corresponding s-locations are called zeros. 57 Some useful tools to analyze BIBO stability and full nonlinear stability include phase-plane analysis and simulation. 6.1 Phase Plane Analysis Phase-plane representations of nonlinear systems are used at various times to analyze stability of a system because of the insight they provide. Although general phase-plane analysis techniques exist, they are fully effective only for second-order systems and are not pursued in detail here. 6.2 Simulation and Integration Schemes Because of the lack of analytical solutions for nonlinear system equations, simulation takes on a much greater significance. Many numerical integration schemes will diverge if the integration step is too large for the frequency of the signal being integrated. The major danger in applying fixed-step integration schemes to nonlinear systems whose response frequencies may not be known in advance is that the numerical algorithm instability may be falsely interpreted as a system instability. One approach suggests that when a simulated response appears to be diverging, the simulation should be retried using a smaller integration time-step. Our simulations have been run with a time-step of 0.001 seconds with a 4th order Runge-Kutta integration scheme. This time step appears to be sufficient, as was shown in Figure 28, and allows the simulation to finish in a reasonable amount of time. Note that there are other integration schemes that allow variable step sizes which are adjusted based on the change in states, the errors associated with these methods can be unquantifiable. 58 6.3 Nominal System Stability Consider the nominal system presented above (straight-and-level flight with a forward velocity of 82.25 m/s. The poles of the nominal system are displayed in Table 4 and Figure 30. Unstable Pole Index 1 2 Real Imaginary Frequency Damping 0.0000E+00 -1.9100E-02 7.9389E-01 -1.5710E+00 -9.6386E+00 -2.3886E+00 -2.3886E+00 2.7866E+00 2.7866E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 0.0000E+00 -2.1893E+01 2.1893E+01 -2.2634E+01 2.2634E+01 0.0000E+00 1.9100E-02 7.9389E-01 1.5710E+00 9.6386E+00 2.2023E+01 2.2023E+01 2.2804E+01 2.2804E+01 NaN 1.0000E+00 -1.0000E+00 1.0000E+00 1.0000E+00 1.0846E-01 1.0846E-01 -1.2220E-01 -1.2220E-01 Table 6-1: Nominal System Pole Information The highlighted values in Table 4 and the “x’s” in the right half plane (RHP) of Figure 30 correspond to the unstable poles. 59 Open-Loop Pole-Zero Map 25 0.32 0.23 0.16 0.1 0.05 20 20 0.44 15 15 0.6 10 Imaginary Axis 10 5 0.84 5 0.84 5 0 -5 -10 10 0.6 -15 15 -20 0.44 20 0.32 -25 -10 -8 0.23 -6 0.16 0.05 0.1 -4 -2 0 2 4 Real A xis Figure 30: Nominal System Pole-Zero Map To get an idea about which states play the largest role in these unstable poles, the eigenvectors are examined and displayed in Table 5. Unstable Pole 1 Index phi 7.7052E-01 theta 0.0000E+00 psi 1.2016E-01 u 0.0000E+00 v -9.3310E-02 w 0.0000E+00 p 6.1159E-01 q 0.0000E+00 r 9.5397E-02 2 -1.1408e-002 -2.1663e-002i 0.0000E+00 -9.7572e-003 -7.3079e-004i 0.0000E+00 7.9872E-01 0.0000E+00 -5.2205e-001 +1.9757e-001i 0.0000E+00 -4.3730e-002 +2.1880e-001i Table 6-2: Eigenvectors of Unstable Poles of Nominal System 60 Based on the eigenvectors presented, the states representing roll (φ), roll-rate (p), and starboard velocity (v) appear to be the main contributors to the system instabilities. This is verified by examining the nonlinear step responses (applied to the states) where the step is a scaled version of the eigenvector corresponding to the unstable pole of 0.794 0.7 82.28 0.6 0.5 82.275 0.5 0.4 82.27 0.3 82.265 0.4 0.3 0.2 82.26 0.2 0.1 82.255 0.1 0 82.25 2 0 x 10 1 2 3 0 1 2 0 3 0.15 0.1 0.03 -2 0.05 0.025 -4 -6 0 -0.05 2 3 0 1 2 3 0 1 2 3 0.02 0.015 -8 -0.1 0.01 -10 -0.15 0.005 0 1 0.035 0 -12 0 -3 q (rad/sec) θ (rad) p (rad/sec) 82.285 0.6 u (m/s) 0.7 v (m/s) φ (rad) (since it already has real components) shown in Figure 30. 1 2 -0.2 3 0.1 0 1 2 0 3 0.04 0.15 0.02 0.1 0.08 0.04 r (rad/sec) z (m/s) ψ (rad) 0.06 0 0.02 -0.02 0.05 0 0 -0.02 0 1 2 Time (sec) 3 -0.04 0 1 2 3 -0.05 Time (sec) Time (sec) Figure 31: Nonlinear Step Responses Note that it is apparent that the φ and p step response transients appear to be the most unstable as was predicted by the eigenvector corresponding to the unstable pole of 0.794. Also keep in mind that these are nonlinear transients which include the higher order terms that the linearization procedure doesn’t capture. Since there is a good match between the dynamics represented in the state-space (linear) model and those in the nonlinear 61 transients, the linear model represents a good approximation so the state-space model can be used to design a control law. Another comparison can be seen in Figure 32 where an elevator step of 1 degree given at 0.5 seconds. 1 82.28 Nonlinear Linear 0.5 p (rad/sec) u (m/s) 82.24 82.22 0 0.5 1 1.5 2 82.18 0.02 Nonlinear Linear 0 0.5 1 1.5 -1 2 1 Nonlinear Linear 0.01 v (m/s) 0 -0.005 0 2 Nonlinear Linear 0 -0.05 -0.15 0 0.5 1 1.5 -1 2 0 0.5 1 1.5 -0.2 2 1 -0.5 0 -0.5 1.5 2 -1 1.5 2 0.5 r (rad/sec) z (m/s) 0 1 Time (sec) 1 Nonlinear Linear 0.5 0.5 0.5 Nonlinear Linear 0.5 0 0 1 Nonlinear Linear ψ (rad) 1.5 -0.1 -0.5 1 -1 1 0.05 -0.01 -0.015 0.5 0.1 0.5 0.005 0 0.15 Nonlinear Linear 0.015 0 -0.5 82.2 q (rad/sec) φ (rad) 0 -0.5 θ (rad) Nonlinear Linear 82.26 0.5 -1 1 0 -0.5 0 0.5 1 Time (sec) 1.5 2 -1 0 0.5 1 Time (sec) 1.5 2 Figure 32: Comparison of Nonlinear and Linear System Transients with a 1 deg Elevator Step Note that the nonlinear and the linear responses are nearly identical. This is an important comparison as one of the main purposes of this thesis was to design a full 6DOF model that has matching nonlinear and linear dynamics. To get an idea of the dynamics in the remainder of the flight envelope, pole-zero maps for the six trim conditions identified in Figure 29 are displayed in Appendix C. The 62 basic conclusion from those results is that as the velocity increases, the plant becomes more unstable. Also displayed in Appendix C is the state-space matrix for a straight-and-level flight condition with a forward velocity of 88.25 m/s so that these results may be readily verified by other researchers. 7 Control Law Design The objective of a control system is to make the output y behave in a desired way by manipulating the plant input Δ. The regulator problem is to manipulate Δ to counteract the effect of a disturbance d. The servo problem is to manipulate Δ to keep the output close to a given reference input r. Thus, in both cases we want the control error e = y − r to be small. The algorithm for adjusting Δ based on the available information is the controller K. To arrive at a good design for K, a priori information is needed about the expected disturbances and reference inputs, and of the plant model (G) and the disturbance model (Gd). In this thesis, control design makes use of the linear models for the form y = GΔ + Gd d Equation 60 A major source of difficulty is that the models G and Gd are approximations and may be inaccurate and can possibly change with time (when planing for instance). In particular, inaccuracy in G may cause problems because the plant will be part of the feedback loop. To deal with such a problem, there is the concept of model uncertainty. For example, instead of a single nominal model G, the behavior of a class of models, G p = G + E , where the “uncertainty” or “perturbation” E is bounded, but otherwise unknown. In most cases, weighting functions w(s) are used to express E = wΛ in terms of the normalized perturbations, Λ, where the magnitude (norm) of Λ is less than or equal to 1. When considering such a design process, the following terms are useful: • Nominal Stability (NS): The nominal system is stable with no uncertainty. 63 • Nominal Performance (NP): The system satisfies the performance specifications with no model uncertainty. • Robust Stability (RS): The system is stable for all perturbed plans about the nominal model up to worst-case model uncertainty. • Robust Performance (RP): The system satisfies the performance specifications for all perturbed plants about the nominal model up to the worst-case model uncertainty. 7.1 Transfer Functions The remainder of this thesis makes extensive use of transfer functions, G(s), and of the frequency domain, which are very useful in applications for the following reasons: • Invaluable insights are obtained from simple frequency-dependent plots. • Important concepts for feedback such as bandwidth and peaks of closed-loop transfer functions may be defined. • G(jω) gives the response to sinusoidal input of frequency ω. • A series interconnection of systems corresponds in the frequency domain to multiplication of the individual transfer functions, whereas in the time domain, the evaluation of complicated convolution integrals is required. • Poles and zeros appear explicitly in factorized scaler transfer functions. • Uncertainty is more easily handled in the frequency domain. This is related to the fact that two systems can be described as close (i.e. have similar behavior) if the frequency responses are similar. On the other hand, a small change in a parameters in a state-space description can result in an entirely different system response. Reconsider the linear, time invariant system from Equation 55 whose input-output responses are governed by linear ODE’s with constant coefficients. x = Ax + BΔ y = Cx + DΔ 64 For a proper system, with the number of poles greater than or equal to the number of zeros, the transfer function can be written from the above state-space realization as G (s ) = C (sI − A) B + D −1 Equation 61 Note that for multivariable system such as this torpedo model, G(s) is a matrix of transfer functions. For closed-loop transfer functions S denotes the sensitivity of the plant output, and T = I − S denotes the complimentary sensitivity. With negative feedback, S = (I + L ) and T = L(I + L ) , where L is the transfer function around the loop as seen −1 −1 from the output. In most cases, L=GK, but if measurement dynamics are also included ( ym = Gm y + n ) then L=GKGm. The corresponding transfer functions as seen from the input of the plant are LI=KG or (LI=KGmG), SI=(I+LI)-1 and TI=LI(I+LI)-1. Typical representations of closed-loop systems in block diagram form are shown in Figure 33; case (a) is a one degree-of-freedom (1DOF) feedback loop and (b) is the general structure. 65 Figure 33: Closed-Loop Block Diagrams Here n is the noise, w is the exogenous inputs such as commands, disturbances, and noise, z is the exogenous outputs such as the “errors” to be minimized, e.g. y-r, and v is the controller inputs for the general configuration, e.g. commands, measured plant outputs, measured disturbances, etc. 7.1.1 1DOF Controller The input to the controller K is r-ym where ym = y+n is the measured output and n is the measurement noise. Thus, the input to the torpedo model is Δ = K (r − y − n ) Equation 62 The objective of control is to manipulate Δ (design K) such that the control error e remains small in spite of disturbances d. The control error e is defined as 66 e = y−r Equation 63 where r denotes the reference point of the output. 7.1.2 Closed-Loop Transfer Functions The plant model is written as y = GΔ + Gd d Equation 64 and for a 1DOF controller and substitution of Equation 62 into Equation 64 yields y = GK (r − y − n ) + G d d (I + GK ) y = GKr + Gd d − GKn −1 −1 −1 y = (I + GK ) GK r + (I + GK ) G d d − (I + GK ) GK n 1 4 4 2 4 43 1 4 2 43 1 4 4 2 4 43 T S Equation 65 T Equation 65 represents the closed-loop response. The control error is e = y − r = − Sr + SGd d − Tn Equation 66 The corresponding plant input signal is Δ = KSr − KSG d d − KSn From the above equations, it is clear that S is the closed-loop transfer function from the output disturbances to the outputs, while T is the closed-loop transfer function from the reference signals to the outputs. The term complimentary sensitivity follows from the identity: S +T = I Equation 67 This is a fundamental design constraint for the control designer. What it means is that there is ultimately a trade-off between disturbance rejection and closed-loop performance; the designer cannot improve one without hindering the other. 67 7.2 Continuous-Time Linear Quadratic Controller There are many methods used today to design controllers, some better than others depending on the application. Common methods include PID, LQR, LQG, H∞, μ, Dynamic Inversion, etc. However, since the focus of this thesis is really to define the torpedo dynamic model, just a “simple” linear quadratic regulator (LQR) stabilizing controller is synthesized here. The purpose being that this provides a stepping-stone to further the control design process. The LQR is a cornerstone of modern optimal control design. It has a wide range of relevance, because many systems are linear to begin with, and in this case, the torpedo model can be linearized when operating near an equilibrium point. To design the optimal LQR, the design engineer must first select the design parameter weight matrices Q (the state weighting) and R (the control weighting) in the performance index shown in Equation 68. t1 [ ] J = ∫ x T Qx + ΔT RΔ dt Equation 68 t0 Q and R are symmetric matrices of design parameters chosen by the designer depending on the control objectives. The weight matrix Q is assumed positive-semidefinite (Q ≥ 0 ) . Thus Q has nonnegative eigenvalues so that xTQx is nonnegative for all x. Likewise, it will be assumed that R is positive definite (R > 0), that is, R has positive eigenvalues so that ΔT RΔ > 0 for all Δ. In this case, J is always bounded below zero, so that a sensible minimization problem results. Since the squares of the states and control inputs occur in Equation 68, the performance index is a form of generalized energy and minimizing it will keep the states and controls small. For starting purposes, the gains for Q and R used in the original Anteon model provide a good starting point. Thus, the weighting matrices chosen are Q = diag (1 1 1 0 0 0 0.1 0.5 0.1) R = diag (1 1 1 1 0.1 01.) 68 The LQR design procedure is in stark contrast to classical control design where the gain matrix K is selected directly. In modern optimal control design, some parameter matrices Q and R are selected by the engineer. Then, the feedback gain K is automatically given by matrix design equations (see MATLAB’s lqr command). This has the significant advantages of allowing all the control loops in a multiloop system to be closed simultaneously, while guaranteeing closed-loop stability. 7.2.1 Closed-Loop Dynamics Once the LQR controller has been defined, system dynamics can be analyzed and simulated time histories can be examined. As expected the LQR design created a stable closed-loop system as is shown in Figure 34 where the closed-loop poles and zeros are presented. Notice that there are no RHP poles in the system. This means that our system is stable. However, note that there are two very small damping ratios of about 0.28 and four poles that have large frequencies. The low damping ratios means it will take longer for some signals to come to there steady-state values and the high frequencies means that there will be some transients that have fast oscillations and also means that faster, more expensive actuators would be needed to perform the necessary control action. 69 Closed-Loop Pole-Zero Map 30 0.64 0.5 0.38 0.28 0.17 0.08 0.8 25 20 20 15 10 Imaginary Axis 10 0.94 5 0 5 -10 0.94 10 15 -20 20 0.8 0.64 -30 -30 -25 0.5 -20 0.38 -15 0.28 -10 0.17 -5 0.08 25 0 Real A xis Figure 34:Closed-Loop Pole-Zero Map of Nominal System with LQR Controller Note that the large negative pole at -536 (lies on the Real axis) is not shown in the above pole-zero map. Figure 35 displays the nonlinear (solid, blue line) and linear (red, dashed line) transients of a closed-loop system that utilizes the designed LQR controller after a step in the yaw-rate state, r, with magnitude of 1 deg/sec at 0.5 sec. 70 1 x 10 -3 82.251 15 Nonlinear Linear 0.8 Nonlinear Linear 82.249 82.248 0 x 10 0.5 1 1.5 2 0 1.5 -5 2 1.5 Nonlinear Linear 0.1 0 x 10 0.5 1 1.5 2 -5 Nonlinear Linear 1 1.231 1.23 q (rad/sec) 0 v (m/s) -0.1 -0.2 0.5 0 -0.3 1.229 -0.4 1.228 -0.5 0 x 10 0.5 1 1.5 2 -3 1.8 1.6 4 1.4 z (m/s) 6 2 0 Nonlinear Linear 0 0.5 1 Time (sec) 1.5 2 -0.5 0 x 10 0.5 1 1.5 -1 2 -3 20 Nonlinear Linear 1.2 0 -5 1 Time (sec) 1.5 1 2 1.5 2 Nonlinear Linear 5 1 0.5 x 10 0.5 -3 10 0.8 0 0 15 r (rad/sec) θ (rad) 1 0.2 Nonlinear Linear 1.232 ψ (rad) 0.5 -3 1.233 -2 5 0 0.2 8 p (rad/sec) u (m/s) φ (rad) 0.4 1.234 -3 10 82.25 0.6 0 x 10 Nonlinear Linear 0 0.5 1 Time (sec) 1.5 2 Figure 35: Closed-Loop Transients (1 deg/sec Step in r) Since the step was in the yaw-rate state, r, and since the controller is supposed to drive the errors to zero, there apparently is a problem with the performance of the LQR designed controller. One would expect that the yaw rate approach 1 deg/sec = 0.01745 rad/sec and remain at that value. Instead, the nonlinear r doesn’t even approach 0.01 rad/sec. Both the linear and nonlinear r signals settle back to zero which means that there is a steady-state error in r of 1 deg/sec. Clearly this is not a sufficient controller. The only thing that this particular LQR controller was good for was guaranteeing nominal stability for the nominal torpedo model. There are numerous and varying methods for designing control laws and that is to this day an active field of research and development. As was stated earlier, the purpose of this thesis was not to present a controller, but to present a description of a supercavitating torpedo model and all the associated issues it has and purposes it will 71 fulfill such as control law design as well as to provide some reference for comparison between the benchmark torpedo model and this updated model. 7.3 Transformed System It is common in most aerospace applications that control of the torpedo be broken up into two different loops. The inner loop which would control the angular rates p, q, and r while the outer loop which would control the Euler angles φ, θ, and ψ. An additional guidance loop is wrapped around these two loops for such applications such as missiles and torpedoes. In order to stick with this convention and in order to get a better idea of how the open-loop model behaves in terms of rate inputs to rate outputs (this is currently difficult given the complex orientation and interaction between the torpedoes control surfaces). To do this, the linear state-space must be transformed. In order to get the desired inner-loop transfer functions, a new output matrix must be defined. φ θ ψ CT u ⎡0 0 0 0 = ⎢⎢0 0 0 0 ⎢⎣0 0 0 0 v 0 0 0 w p q r 0 1 0 0⎤ 0 0 1 0⎥⎥ 0 0 0 1⎥⎦ so that the angular rates can be pulled out of the state-space model. A transformation matrix is then defined as [ T = (CT Bol ) CT Bol (CT Bol ) T ] T −1 = pinv(CT Bol ) Equation 69 which is the pseudo inverse of the product of CT and Bol where Aol and Bol are the B B dynamics and input Jacobean matrices representing the linearization of the open-loop torpedo model. The transformed system then becomes the state-space representation defined in Equation 70. 72 x = Aol x + Bol TΔ Equation 70 y = CT x Notice that in this transformed system, the new A matrix is the same as before, so the new system poles representing the transfer functions from angular rate input to angular rate output are the same as before the transformation. This means that the previous stability analysis will still be useful. The multivariable transformed system is represented in the following pole-zero map. Pole-Zero Map of Transf ormed Multivariable System 25 0.32 0.23 0.16 0.1 0.05 20 20 0.44 15 15 0.6 10 Imaginary Axis 10 5 0.84 5 0.84 5 0 -5 -10 10 0.6 -15 15 -20 0.44 20 0.32 -25 -10 -8 0.23 -6 0.16 0.1 -4 0.05 -2 0 2 4 Real A xis Figure 36: Pole-Zero Map of Transformed System Close investigation would show that there are two zeros with the value of zero in addition to the RHP poles. This adds difficulty to the control law design, particularly if Dynamic Inversion was the designer’s preferred method since the nonminimum phase zeros would cause problems. 73 The purpose of this section is not necessarily to develop a controller for the innerloop, but rather to present a new method/model for control law design that is typically of interest. Once a controller is designed for this inner loop, the outer-loop design for the Euler angles becomes a much easier problem. 8 Model Uncertainty A control system is robust if it is insensitive to differences between the actual system and the model of the system which was used to design the controller. These differences are referred to as model/plant mismatch or simply model uncertainty. Uncertainty in the plant model may have several origins: 1. There are always parameters in the linear model which are only known approximately or are simply in error. 2. The parameters in the linear model may vary due to nonlinearities or changes in the operating conditions. 3. Measurement devices have imperfections. This may even give rise to uncertainty on the manipulated inputs, since the actual control input is often measured and adjusted in a cascade manner. For example, this is often the case with valves used to measure flow. In other cases limited valve resolution may cause input uncertainty. 4. At high frequencies even the structure and the model order is unknown and the uncertainty will always exceed 100% at some frequency. 5. Even when a very detailed model is available we may choose to work with a simpler (low-order) nominal model and represent neglected dynamics as “uncertainty”. 6. Finally, the controller implemented may differ from the one obtained by solving the synthesis problem. In this case one may include uncertainty to allow for controller order reduction and implementation inaccuracies. 74 The various sources of model uncertainty mentioned above may be grouped into two main classes: 1. Parametric Uncertainty: Here the structure of the model (including the order) is known, but some of the parameters are uncertain. 2. Neglected and unmodelled dynamics uncertainty: Here the model is in error because of missing dynamics, usually at high frequencies, either through deliberate neglect of because of a lack of understanding of the physical process. Any model of a real system will contain this source of uncertainty. Parametric uncertainty will be quantified by assuming that each uncertain parameter is bounded within some region [γmin, γmax]. That is, we have parameter sets of the form γ p = γ (1 + rγ Λ ) Equation 71 where γ is the mean parameter value, rγ = (γ max − γ min ) γ max + γ min is the relative uncertainty in the parameter, and Λ is any real scaler satisfying Λ ≤ 1 . The parameters and their ranges identified in this thesis can be seen in Table 6. Parameter Nominal Value % Variation (+/-) Cavitation 0.029 100 Number Cavitator 0.805 10 Cd0 Fin Cfx 13 Computed Using the Fin Cfy 17 Least-Squares Fin Cfz 12 Approximations for Fin Cmx 15 Varying a.o.a. and Fin Cmy 14 immersion ratios Fin Cmz 18 Table 8-1: Uncertain Parameters The amount the cavitation number is allowed to vary is conservative since, in reality, a cavitation number of zero is not achievable. The fin force and moment coefficient variations are based on the %-error associated with the least-squares fit. i.e. they do not 75 contain any errors due to the original model not being accurate. If one wanted to take these type of errors into account, then the %-variation must be increased. Neglected and unmodelled dynamics uncertainty is somewhat less precise and thus more difficult to quantify, but it appears that the frequency domain is well suited for this class. This leads to complex perturbations which we normalize that Λ ∞ ≤ 1 . Some examples of unmodelled dynamics in this application would include the purposely neglected time delays that were discussed when the cavity shape was defined. For completeness one may consider a third class of uncertainty (which is really a combination of the two). 3. Lumped Uncertainty: Here the uncertainty description represents one or several sources of parametric and/or unmodelled dynamics uncertainty combined into a single lumped perturbation of a chosen structure. Parametric uncertainty is sometimes called structured uncertainty as it models the uncertainty in a structured manner. Analogously, lumped dynamics uncertainty is sometimes called unstructured uncertainty. However, one should be careful when using these terms because there are several levels of structure, especially for MIMO systems such as this torpedo. 8.1.1 Open-Loop Effects of Parametric Uncertainty Some effects of model uncertainty can be seen in the way various parameters effect the overall system dynamics. In order to examine these results, the uncertain parameters identified above were examined by comparing the dynamics of the “nominal” system with the systems with the minimum and maximum parameter variations. One example of this comparison can be seen in Figure 37. 76 Open-Loop Pole-Zero Map f or σ parameter 25 0.36 20 0.26 0.18 0.06 0.11 0.48 20 15 15 0.66 10 10 Imaginary Axis 0.86 Nominal Minimum Maximum 5 5 0 -5 5 0.86 -10 10 0.66 -15 -20 15 20 0.48 0.36 -25 -12 -10 0.26 -8 0.18 -6 -4 0.11 0.06 -2 0 2 4 Real A xis Figure 37: System Dynamics Comparison for a Varying Cavitation Number Figure 37 displays the effects of varying cavitation numbers via a pole-zero map (note that there are no zeros). In this case, the cavitation number is allowed to vary from zero to 0.058 (two times the nominal value of 0.029). The arrows in the figure show the trends of the system poles for increasing values in the parameter. Remember that the lower the cavitation number, the more likely cavitation is to occur and the larger the cavity will be. However, the figure shows that the larger cavitation numbers makes the system more stable and increases the damping ratios of already stable poles but also increases the frequency which means the controller will have to be designed for a higher bandwidth. Similar types of pole-zero maps can be seen in Appendix D. In each case, the pole-zero map must be studied to determine the overall effects that the varying parameter will have on the open-loop dynamics. In addition, these types of studies help to identify model parameters that must be studied in more depth so that a more precise value can be 77 determined. With a more precise measurement, the size of the uncertainty can be reduced and a more accurate, less conservative, and most likely a better performing controller can be designed. 8.1.2 General Control Configuration with Uncertainty The starting point for uncertain control law design and robustness analysis is a system representation in which the uncertain parameters are “pulled out” into a block diagonal matrix, ⎡Λ 1 ⎢ Ο Λ = diag{Λ i } = ⎢ ⎢ ⎢ ⎣ Λi ⎤ ⎥ ⎥ ⎥ ⎥ Ο⎦ Equation 72 where each Λi represents a specific source of uncertainty. If the controller K is also pulled out, a generalized plant, P, configuration is developed and is represented in Figure 38, Λ d P e K Figure 38: Generalized Control Configuration (for Controller Synthesis) where d and e are the generalized disturbances and errors, respectively. This form is useful for controller synthesis In order to describe the uncertainty, one method that would be useful and easy to implement is one that is described by A. Helmersson’s Ph.D. thesis “Methods for Robust Gain Scheduling”. It describes a method for computing the uncertainty matrix by 78 differencing the A matrices of the nominal system with the system linearized with a min and max value of an uncertain parameter and adding the unmodelled dynamics where appropriate. This method would save on the work needed to pull out the uncertain parameters from the code and represent them individually, though this method would be marginally more accurate. Numerous references exist which describe uncertainty in more detail and how to design a controller that takes the various types of uncertainty into consideration. If circumstances were different, this would have been the topic of this thesis, but due to time constraints and other commitments, this work must be handed to another. 9 General Conclusions Supercavitating torpedoes are complex systems that require an active controller, which can ensure stability and enable the torpedo to track a target. In addition, the control law design process requires a dynamic model that captures the physics of the problem. Existing public 6DOF models were not able to fully capture the dynamics of the torpedo and provide a good platform with which to design a feedback controller. This thesis was able to design such a model and it was shown that the complex nonlinear and simple linear model (used for control design) had matching dynamics via computer simulation. In addition, parameters within the model that are uncertain were identified and it was described how to incorporate them into the control law design process. By designing such a model, several interesting properties of the torpedo were discovered. The first, and maybe one of the most important, is that if the planing forces are used to help support the weight of the torpedo the large planing forces occur at such a high frequency (~50 Hz) that designing a controller with the appropriate bandwidth would be extremely difficult in addition to expensive. This is why the thesis treated the occurrence of planing forces as a type of operating boundary since the forces produced by the cavitator and fins are sufficient to support the vehicles weight. This also helps to reap the benefits of a supercavitating torpedo – less drag. 79 Unfortunately, this model is not open-loop stable as is represented by the three open-loop system RHP poles. The states that contribute the most to these unstable poles are roll, roll-rate, and side velocity. In addition, two of the poles have a large frequency which means that a robustly stable controller will be much harder to design since it will have to have a high bandwidth. Other interesting system properties are those that are observed when model parameters are allowed to vary. Some of the more interesting affects were noticed when the velocity and the cavitation number was allowed to vary. For example, as the velocity increases, the plant becomes more unstable. When considering the cavitation number, remember that the lower the cavitation number, the more likely the cavitation occurs and the larger the cavity will be. However, open-loop sensitivity analysis showed that the larger cavitation number not only made the system more stable and increased the damping ratios of already stable poles but also increased the frequency. Similar types of effects can be seen in other parameters as well as can be seen in Appendix D. Further work into this subject should yield a robust feedback controller and further analysis into the worst-case performance. 80 10 Bibliography [1] Ivan N. Kirschner, et al. “Control Strategies For Supercavitating Vehicles.” University of Minnesota Graduate Seminar Series (2001) [2] Etkin, Bernard. Dynamics of Flight: Stability and Control. Second Edition Ney York, John Wiley & Sons. 1958 [3] Enns, Dale Ph. D., AEM 4303 Flight Dynamics and Control Handout. University of Minnesota, Minneapolis. Spring Semester, 2000 [4] Honeywell Technology Center, Lockheed Martin Skunk Works, Lockheed Martin Tactical Aircraft Systems, “Application of Multivariable Control Theory to Aircraft Control Laws.” WL-TR-96-3099 [5] Yuriy N. Savchenko, “SUPERCAVITATION – PROBLEMS AND PERSPECTIVES.” National Academy of Sciences − Institute of Hydromechanics, Kyiv, Ukraine, CAV2001:lecture.003. 2001 [6] Stinebring, Billet, and Lindau, Kunz, “Developed Cavitation- Cavity Dynamics.” Applied Research Laboratory, Penn State [7] Mike Elgersma, “Multibody Dynamics Using a Projection Method (Kane’s Equations).” Honeywell Labs, Internal Document, November, 1989 [8] Burah, Haim. Analytical Dynamics. Boston, WCB McGraw-Hill. 1999 [9] R.L. Waid , “Cavity Shapes for Circular Disks at Angles of Attack” California Institute of Technology Hydrodynamics Laboratory Report No. E-73.4 Pasadena, CA. 1957 [10] Blakelock, John H., Automatic Control of Aircraft and Missiles. Second Edition New York: John Wiley & Sons, Inc, 1991 [11] Kirschner, Ivan, “Numerical Modeling of Supercavitating Flows.” Anteon/Engineering Technology Center. February, 2001 [12] Savchecnko, Yu. N., “Control of Supercavitation Flow and Stability of Supercavitating Motion of Bodies.” Ukranian National Academy of Sciences – Institute of Hydromechanics. Kyiv, Ukraine. 2001 [13] Savchecnko, Yuriy N., “Supercavitation – Problems and Perspectives.” National Academy of Sciences – Institute of Hydromechanics. Kyiv, Ukraine [14] Michel, J.M., “Introduction of Cavitation and Supercavitation.” Laboratoire des 81 Ecoulements Geophysiques et Industriels. Grenoble Cedex 9, France. 2001 [15] Savchenko, Yu. N., “Experimental Investigation of Supercavitating Motion of Bodies.” Ukranian National Academy of Sciences – Institute of Hydromechanics. Kyiv, Ukraine. 2001 [16] Uhlman, J.S., Fine, N.E., and Kring, D.C., “Calculation of Added Mass and Damping Forces on Supercavitating Bodies.” Engineering Technology Center, a Division of Anteon Coorporation. Middletown, RI. 2001 [17] Streeter, Handbook of Fluid Dynamics. pp 12-25 – 12-45 [18] Savchenko, Yu. N., “Supercavitating Object Propulsion.” Ukranian National Academy of Sciences – Institute of Hydromechanics. Kyiv, Ukraine. 2001 [19] Serebryakov, Vladimmir V., “Some Models of Prediction of Supercavitation Flows Based on Slender Body Approximation.” Institute of Hydromechanics of NASU, Kieve, Ukraine. 2001 [20] Levine, William S., The Control Handbook. IEEE Press. pp 82-83, 388-393, 417-418, 457-458, 762-768, 889-891, 1105-1107 [21] Shin, Jong-Yeob, Balas, Gary J., and Packard, Andrew K., “Worst-Case Analysis of the X-38 Crew Return Vehicle Flight Control System.” Journal of Guidance, Control and Dynamics. Vol. 24, No.2, March-April 2001 82 Appendix A: Fin Force and Moment Coefficient Data Computed Directly From Anteon’s Fin Look-up Table This appendix provides graphs of the provided fin force and moment coefficient look-up table as a function of angle of attack and immersion ratios. Only limited regions of the computed/possible operating spaces are presented in order to better show the portion of the space the linearization occurs in. It should be noted, however, that these linearization values or points in the table space are based in linearization of the original Anteon model code and does not represent data for the updated/corrected model. 83 F x for Sweep = 45o x 10 -3 2.5 Fx 2 1.5 1 0.5 2 0.8 0.75 1 0.7 0 0.65 -1 0.6 -2 α 0.55 Imm M x for Sweep = 45o 0.01 Mx 0.005 0 -0.005 -0.01 2 1 0.8 0.75 0 0.7 -1 α 0.65 -2 0.6 0.55 Imm Figure 39: Map of the x-Component of the Fin Force and Moment Coefficients 84 F y for Sweep = 45o x 10 -3 0 -0.2 Fy -0.4 -0.6 -0.8 -1 -1.2 -2 0.55 0.6 -1 0.65 0 0.7 1 0.75 2 0.8 Imm α M y for Sweep = 45o 0.01 My 0.005 0 -0.005 -0.01 0.8 -2 0.75 -1 0.7 0 0.65 1 0.6 0.55 2 α Imm Figure 40: Map of the y-Component of the Fin Force and Moment Coefficients 85 F z for Sweep = 45o 0.02 0.01 Fz 0 -0.01 2 -0.02 0.55 1 0.6 0 0.65 0.7 -1 0.75 0.8 -2 α Imm M z for Sweep = 45o x 10 -4 -2 -4 Mz -6 -8 -10 2 -12 0.55 1 0.6 0 0.65 0.7 -1 0.75 0.8 -2 α Imm Figure 41: Map of the z-Component of the Fin Force and Moment Coefficients 86 2.4 x 10 F x for Sweep = 45o -3 2.2 2 1.8 Fx 1.6 1.4 1.2 1 0.8 0.6 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 0.5 1 1.5 2 α 8 x 10 M x for Sweep = 45o -3 6 4 Mx 2 0 -2 -4 -6 -8 -2 -1.5 -1 -0.5 0 α 87 0 x 10 F y for Sweep = 45o -3 -0.2 Fy -0.4 -0.6 -0.8 -1 -1.2 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 0.5 1 1.5 2 α 8 x 10 M y for Sweep = 45o -3 6 4 My 2 0 -2 -4 -6 -8 -2 -1.5 -1 -0.5 0 α 88 F z for Sweep = 45o 0.02 0.015 0.01 0.005 Fz 0 -0.005 -0.01 -0.015 -0.02 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 0.5 1 1.5 2 α -2 x 10 M z for Sweep = 45o -4 -3 -4 -5 Mz -6 -7 -8 -9 -10 -11 -2 -1.5 -1 -0.5 0 α 89 2.4 x 10 F x for Sweep = 45o -3 2.2 2 1.8 Fx 1.6 1.4 1.2 1 0.8 0.6 0.55 0.6 0.65 0.7 0.75 0.8 0.75 0.8 Imm 8 x 10 M x for Sweep = 45o -3 6 4 Mx 2 0 -2 -4 -6 -8 0.55 0.6 0.65 0.7 Imm 90 0 x 10 F y for Sweep = 45o -3 -0.2 Fy -0.4 -0.6 -0.8 -1 -1.2 0.55 0.6 0.65 0.7 0.75 0.8 0.75 0.8 Imm 8 x 10 M y for Sweep = 45o -3 6 4 My 2 0 -2 -4 -6 -8 0.55 0.6 0.65 0.7 Imm 91 F z for Sweep = 45o 0.02 0.015 0.01 0.005 Fz 0 -0.005 -0.01 -0.015 -0.02 0.55 0.6 0.65 0.7 0.75 0.8 0.75 0.8 Imm -2 x 10 M z for Sweep = 45o -4 -3 -4 -5 Mz -6 -7 -8 -9 -10 -11 0.55 0.6 0.65 0.7 Imm 92 2.5 x 10 F x for Sweep = 45o -3 Fx 2 1.5 1 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 0.5 1 1.5 2 α 8 x 10 M x for Sweep = 45o -3 6 4 Mx 2 0 -2 -4 -6 -8 -2 -1.5 -1 -0.5 0 α 93 -2 x 10 F y for Sweep = 45o -4 -4 Fy -6 -8 -10 -12 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 0.5 1 1.5 2 α 8 x 10 M y for Sweep = 45o -3 6 4 My 2 0 -2 -4 -6 -8 -2 -1.5 -1 -0.5 0 α 94 F z for Sweep = 45o 0.02 0.015 0.01 0.005 Fz 0 -0.005 -0.01 -0.015 -0.02 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 0.5 1 1.5 2 α -3 x 10 M z for Sweep = 45o -4 -4 -5 Mz -6 -7 -8 -9 -10 -11 -2 -1.5 -1 -0.5 0 α 95 F z for Sweep = 45o 0.02 0.015 0.01 0.005 Fz 0 -0.005 -0.01 -0.015 -0.02 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 0.5 1 1.5 2 α -3 x 10 M z for Sweep = 45o -4 -4 -5 Mz -6 -7 -8 -9 -10 -11 -2 -1.5 -1 -0.5 0 α 96 2.5 x 10 F x for Sweep = 45o -3 Fx 2 1.5 1 0.55 0.6 0.65 0.7 0.75 0.8 0.75 0.8 Imm 8 x 10 M x for Sweep = 45o -3 6 4 Mx 2 0 -2 -4 -6 -8 0.55 0.6 0.65 0.7 Imm 97 -2 x 10 F y for Sweep = 45o -4 -4 Fy -6 -8 -10 -12 0.55 0.6 0.65 0.7 0.75 0.8 0.75 0.8 Imm 8 x 10 M y for Sweep = 45o -3 6 4 My 2 0 -2 -4 -6 -8 0.55 0.6 0.65 0.7 Imm 98 F z for Sweep = 45o 0.02 0.015 0.01 0.005 Fz 0 -0.005 -0.01 -0.015 -0.02 0.55 0.6 0.65 0.7 0.75 0.8 0.75 0.8 Imm -3 x 10 M z for Sweep = 45o -4 -4 -5 Mz -6 -7 -8 -9 -10 -11 0.55 0.6 0.65 0.7 Imm 99 Appendix B This appendix contains the Simulink and MATLAB code used to simulate the model and compute all appropriate forces. 100 Phi Theta Psi u v w p q r Phi Theta 0 0 0 0 0 0 0 -9.8100E+00 9.8100E+00 0 0 0 0 0 0 0 0 0 Phi Theta Psi u v w p q r p 1.0000E+00 0 0 0 2.5156E-02 0 -9.0922E+00 0 -4.2581E-02 q 0 1.0000E+00 0 -3.1469E-01 4.0440E-12 7.5629E+01 -1.2524E-09 -3.2889E+00 -1.1247E-11 Psi 0 0 0 0 0 0 0 0 0 u 0 0 0 -1.5892E+00 4.0441E-12 -2.3353E-01 8.3493E-10 8.8772E-03 -5.6233E-12 v 0 0 0 0 -1.5279E+00 0 1.3780E+00 8.9974E-11 6.4222E+00 w 0 0 0 -1.0785E-01 4.9423E-17 -1.4891E+00 -4.1746E-10 -6.3489E+00 -3.3003E-16 r 0 0 1.0000E+00 1.6176E-11 -8.1673E+01 6.4705E-11 6.4728E+01 0 7.3486E+00 Table A-1: A-Matrix for Straight-and-Level Flight with V = 82.25 m/s Phi Theta Psi u v w p q r u1 u2 u3 u4 u5 u6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.8872 0 1.8872E+00 0 3.5329E+00 0 -1.8166E+00 7.3874E+01 -1.8166E+00 -5.9306E+01 0 -6.2846E+01 -6.5488E+01 0 6.5488E+01 0 -6.2747E+01 0 -8.4284E+02 -9.2238E+02 -8.4284E+02 -7.8728E+02 0 0 -1.1525E+02 0 1.1525E+02 0 1.9623E+02 0 3.3651E+00 -1.2983E+02 3.3651E+00 1.0449E+02 0 -1.9654E+02 Table 0-2: B-Matrix for Straight-and-Level Flight with V = 82.25 m/s The C-matrix is the identity matrix and the D-matrix is [zero]. This flight condition is given here so that the results may be easily duplicated without reproducing all the code. It also provides a method to check the nonlinear code given in this appendix. 101 102 103 104 105 106 do_6DOF.m % This is a script designed to simulate the nonlinear 6DOF EOM and % compute the appropriate linear model. This model is slightly different % than the original EOM in that I moved the origin to the center of mass. warning off %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Set up model information %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % set the global variables global planeModel mass inertia body cav cavity DELTA global sim hwait d2r = pi/180; r2d = 180/pi; % set constants and model data [mass, inertia, body, cav, cavity, rho] = setup_sim_data; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Setup simulation parameters %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% sim.dt = 0.001; %sec sim.t_stop = 2; %sec sim.simulating = false; ol_sim = true; ol_lin_sim = false; cl_sim = false; cl_lin_sim = false; % set the nominal speed V = 82.25; % set the turning acceleration turnG = 0; % set the flight condition: % 'straight-and-level' % 'turn' flight_con = 'straight-and-level'; %flight_con = 'turn'; % set the initial heading initial_heading = 0; % set the output reference frame and appropriate transformation matrix mass.origin_method = 'U of MN'; %('U of MN','Anteon') switch mass.origin_method case 'U of MN' dist = [0;0;0]; case 'Anteon' dist = [mass.x_cg;0;0]'; 107 otherwise error('Incorrect origin setting') end r_tilde = [0,-dist(3),dist(2); dist(3),0,-dist(1); -dist(2),dist(1),0]; R = [eye(3),r_tilde; zeros(3),eye(3)]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Define Initial/Trim Conditions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % set the planing model (no planing is desired) planeModel = 'Hassan'; % set the appropraite trim conditions switch flight_con case 'straight-and-level' x0 = [0,0,initial_heading,V,0,0,0,0,0]'; thrust = -1*compute_drag(x0,zeros(6,1),rho); u0 = [0,0,0,0,0,0,thrust,0,0]'; [x0,u0,y0,dx,options] = trim('trim_6DOF_model',x0,u0,[],... [1,2,3,4,5,6,7,8,9],[2,4,6,8,9]); case 'turn' x0 = [0,0,initial_heading,V,0,0,0,0,(turnG*9.81)/V]'; x_dot = zeros(9,1); s1= sin(x0(1)); c1= cos(x0(1)); s2= sin(x0(2)); c2= cos(x0(2)); tan2= tan(x0(2)); sec2= sec(x0(2)); Tb2i_ang= [1, s1*tan2, c1*tan2 ; ... 0, c1, -s1 ; ... 0, s1*sec2, c1*sec2 ]; x_dot(1:3) = Tb2i_ang*x0(7:9); x_dot(1) = 0; thrust = -1*compute_drag(x0,zeros(6,1),rho); u0 = [0,0,0,0,0,0,thrust,0,0]'; [x0,u0,y0,dx,options] = trim('trim_6DOF_model',x0,u0,[],... [9],[8,9],[],x_dot,[1,2,3,4,5,6,7,8,9]); otherwise disp('Incorrect flight condition setting') return end % check for engineering zeros in x0 and u0 tol = 1e-9; for i = 1:length(x0) if abs(x0(i)) < tol x0(i) = 0; end end for i = 1:length(u0) if abs(u0(i)) < tol u0(i) = 0; end end % display the trim conditions disp(' ') 108 disp('The trim conditions are as follows:') disp(' x0 u0 y0 dx0') disp([x0,u0,y0,dx]) % set the initial conditions thrust = u0(7:9); u0 = u0(1:6); x0 = x0; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Simulate the open-loop nonlinear model %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % set the step sizes for simulation %input_step_matrix = diag([1*d2r,0,-1*d2r,0,0,0]); input_step_matrix = zeros(6,6); state_step_matrix = 1/10*diag([7.7052e-001 -1.5297e-010 1.2016e-001 5.6766e-010 -9.3310e002 8.2390e-009 6.1159e-001 -1.2144e-010 9.5397e-002]); %state_step_matrix = zeros(9,9); if ol_sim == true % set the planing model to be used planeModel = 'Hassan'; %('Hassan,'Hassan_and_Song','None') % simulate the openloop response sim.simulating = true; hwait = waitbar(0,'open-loop simulation running. Please wait...'); [t_ol,x_ol,y_ol] = sim('ol_model'); sim.simulating = false; close(hwait) % make plots of output make_graphs(t_ol,y_ol) end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Linearize the model %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % compute the linear model planeModel = 'Hassan'; [A_ol,B_ol,C_ol,D_ol] = linmod('ol_model'); ol_sys = ss(A_ol,B_ol,C_ol,D_ol); % Check the controllability of the system if rank(ctrb(A_ol,B_ol),0.001) < 9 disp('Base open-loop plant is not controllable!') end % Check the observability of the system designKalman = false; if rank(obsv(A_ol,C_ol),0.001) < 9 disp('System is not observable!') end 109 % display the eigen value data [ol_eigVec,ol_eigVal] = eig(A_ol); disp(' ') disp('The open-loop plant eigenvalues are:') rifd(eig(A_ol)) % disp(' ') % disp('The open-loop plant eigenvectors are:') % ol_eigVec % make a pole-zero map figure pzmap(ol_sys) grid on title('Open-Loop Pole-Zero Map') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % simulate the Open-Loop linearized model %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if ol_lin_sim == true [t_ol_lin,x_ol_lin,y_ol_lin] = sim('ol_lin_model'); % make plots of output make_graphs(t_ol_lin,y_ol_lin) % compare liner and nonliner sim results if ol_sim == true make_comp_graphs(t_ol,y_ol,y_ol_lin); end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Design the controller(s) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Q = diag([1,1,1,0,0,0,.1,.5,.1]); R = diag([1,1,1,1,.1,.1]); [K_lqr,S,cl_eigVal_lqr] = lqr(A_ol,B_ol,Q,R); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Simulate the closed-loop nonlinear system %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % set the step command values ref_step_matrix = diag([0,0,0,0,0,0,0,0,1*d2r]); ref_state = x0; if cl_sim == true % simulate the closed-loop response planeModel = 'Hassan'; hwait = waitbar(0,'Closed-loop simulation running. Please wait...'); sim.simulating = true; 110 [t_cl,x_cl,y_cl] = sim('cl_model'); sim.simulating = false; close(hwait) % plot the output make_graphs(t_cl,y_cl) end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Linearize the closed-loop system %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % compute the linear model planeModel = 'None'; [A_cl,B_cl,C_cl,D_cl] = linmod('cl_model'); cl_sys = ss(A_cl,B_cl,C_cl,D_cl); % display the eigen value data [cl_eigVec,cl_eigVal] = eig(A_cl); disp(' ') disp('The closed-loop system eigenvalues are:') rifd(eig(A_cl)) % make a pole-zero map figure pzmap(cl_sys) grid on title('Closed-Loop Pole-Zero Map') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % simulate the closed-loop linearized model %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if cl_lin_sim == true [t_cl_lin,x_cl_lin,y_cl_lin] = sim('cl_lin_model'); % make plots of output make_graphs(t_cl_lin,y_cl_lin) % compare liner and nonliner sim results if cl_sim == true make_comp_graphs(t_cl,y_cl,y_cl_lin); end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Transform the system to examine multi-variable inner-loop (p,q,r) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Define ol system G_ss = minreal(ss(A_ol,B_ol,C_ol,D_ol)); G_tf = minreal(tf(G_ss)); 111 %Define the transformation Ct = zeros(3,9); Ct(1:3,7:9) = eye(3); Dt = zeros(3,3); T = Ct*B_ol; T_inv = pinv(T); %Define the transformed system [Gt_ss,U] = minreal(ss(A_ol,B_ol*T_inv,Ct,Dt)) Gt_tf = minreal(tf(Gt_ss)); % display the transformed system information disp(' ') disp('The transformed system poles are:') rifd(pole(Gt_ss)) disp(' ') disp('The transformed transmision zeros are:') rifd(zero(Gt_ss)) figure pzmap(Gt_ss) grid on title('Pole-Zero Map of Transformed Multivariable System') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Transform the system to examine multi-variable inner-loop (p,q,r) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % find the individual loop information p_tf = minreal(Gt_tf(1,1)); p_ss = minreal(ss(p_tf)); p_tf = minreal(tf(p_ss)); q_tf = minreal(Gt_tf(2,2)); q_ss = minreal(ss(q_tf)); q_tf = minreal(tf(q_ss)); r_tf = minreal(Gt_tf(3,3)); r_ss = minreal(ss(r_tf)); r_tf = minreal(tf(q_ss)); % display the loop information disp(' ') disp('The info for transformed ol p/p_cmd is:') p_tf [z,p,k] = zpkdata(p_tf,'v') disp(' ') disp('The info for transformed ol q/q_cmd is:') q_tf [z,p,k] = zpkdata(q_tf,'v') disp(' ') disp('The info for transformed ol r/r_cmd is:') 112 r_tf [z,p,k] = zpkdata(r_tf,'v') 113 setup_sim_data.m function [mass, inertia, body, cav, cavity, rho] = setup_sim_data() global DELTA %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Define the uncertain parameters and the their associated range of values % (in percent difference) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % uncertainty in cavitator Cd0 DELTA.Cd0_range = [-.05 0 0.05]; % +/- 5% DELTA.Cd0_rval = 2; % uncertainty in the fin force and moment coefficients DELTA.Cfin_range = [-.13, 0, .13; -.17, 0, .17; -.12, 0, .12; -.15, 0, .15; -.14, 0, .14; -.18, 0, .18]; DELTA.Cfin_rval = 2; DELTA.Cfin_coef = 1; % uncertainty in the cavitation number DELTA.sigma_range = [-.029 0 .029]; DELTA.sigma_rval = 2; % uncertainty in the position of the center of gravity. This could account % for variations in mass as fuel is depleted much like an aircraft deals % with forward-heavy and aft-light conditions. DELTA.xcg_range = [-.1 0 .1]; %+/- 10% DELTA.xcg_rval = 2; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % define the water density % NOTE: This constant should actually become a function since the density % changes with water depth %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% rho = 1024; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % torpedo body related constants (geometry) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % maximum dimensions body.L = 4.064; % overall body length [m] body.R = 0.1015; % maximum body radius [m] % body/section lengths (aft of cavitator) secL = [0.0625, 0.2500, 0.59375, 0.09375]; xlast = 0; for i = 1:4 body.x1(i) = xlast; body.x2(i) = xlast + secL(i)*body.L; 114 xlast = body.x2(i); end % define the body's radii body.r1 = [0.345, 0.5, 1.0, 0.375]*body.R; body.r2 = [0.345, 1.0, 1.0, 0.500]*body.R; % fin data body.fin.x_piv = 0.85*body.L; %location of fins (aft of cavitator) body.fin.r_piv = 0.9*body.R; %pivot point of fins (out from centerline) body.fin.Phi = (pi/180)*[0,90,180,270]; %angular locations of fins body.fin.swp = 45*(pi/180); %fin sweep angle body.fin.b = 0.14; %fin span (m) % define the sections of the body that are assumed to incurr planing forces body.planeSec = [0,0,1,0]; %sections that are presumed to plane body.nSec = 4; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % mass and inertia related constants %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% mass.m = 175.7; % Nominal body mass (kg) mass.g = 9.81; %m/sec^2 mass.origin_method = 'U of MN'; %('U of MN','Anteon') inertia = set_inertia(body,mass); mass.x_cg = inertia.x_cg; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Disk Cavitator constants %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% cav.Cd0 = 0.805; cav.R = 0.0350; cav.D = 2*cav.R; cav.sigma = 0.029; %cavitation number assumed constant cav.model = 'U of MN'; %('U of MN','Anteon') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % cavity subsection information % NOTE: This section is intended for use with delays states to compute the % cavity centerline and local radii % % This data is only used int he "complex" models %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [Rc,Lc] = max_cavity_dimensions(cav); cavity.n = 10; %NOTE: if this number changes, the number of modeled delays %has to change in the simulink file cavity.dx = Lc/cavity.n; 115 cavitator_forces.m function [out] = cavitator_forces(in) global cav mass DELTA % Compute the cavitator forces and moments acting in the by-direction % set the input eul = in(1:3); %[phi,theta,psi] vel = in(4:6); %[u,v,w] omg = in(7:9); %[p,q,r] delta = in(10:15); rho = in(16); u = vel(1); v = vel(2); w = vel(3); p = omg(1); q = omg(2); r = omg(3); delta_pitch = delta(5); delta_yaw = delta(6); % define the effectiveness of the cavitator actuator motion tau = 1; % compute alpha and beta from the velocity vector [alpha,beta] = compute_alpha_beta(vel); % set the moment arm arm = mass.x_cg; %(forward of cg) % set the apparent sideslip angle alpha_flow = -arm*q/norm(vel); beta_flow = arm*r/norm(vel); alpha_cav = alpha + alpha_flow - tau*delta_pitch; beta_cav = beta + beta_flow - tau*delta_yaw; % add any uncertain terms Cd0 = cav.Cd0 + cav.Cd0*DELTA.Cd0_range(DELTA.Cd0_rval); sigma = cav.sigma + cav.sigma*DELTA.sigma_range(DELTA.sigma_rval); % compute the normal force to the disk switch cav.model case 'U of MN' Fp = 0.5*rho*norm(vel)^2*(pi*cav.R^2)*Cd0*(1+sigma+0.028*sigma^2); % define some transformation matrices T1 = [ cos(beta_cav), sin(beta_cav), 0; -sin(beta_cav), cos(beta_cav), 0; 0, 0, 1]; T2 = [ cos(alpha_cav), 0, sin(alpha_cav); 0, 1, 0; -sin(alpha_cav), 0, cos(alpha_cav)]; T = T2*T1; % compute the body components of the normal force Fcav = T*[-Fp,0,0]'; 116 case 'Anteon' % Force perpendicular to disk, drag reduced for apparent angles of attack Fp= 0.5*rho*norm(vel)^2*(pi*cav.R^2) * ... Cd0*(1+sigma+.028*sigma^2)*cos(alpha_cav)*cos(beta_cav); % Forces in body-frame of reference fx= -Fp*cos(delta_pitch)*cos(delta_yaw); fy= -Fp*cos(delta_pitch)*sin(delta_yaw); fz= Fp*sin(delta_pitch); Fcav = [fx,fy,fz]'; otherwise disp('Unknown cavitator model') end % compute the moments caused by the cavitator Mcav = cross([arm,0,0]',Fcav); % set the output out = [Fcav; Mcav]; return 117 fin_forces.m function [out] = fin_forces(in) global mass body DELTA % Compute the total fin forces and their components in the body axis % Constants r2d = 180/pi; d2r = pi/180; % define the states, state derivatives, and input x = in(1:9); %states x_dot = in(10:18); %state derivatives delta = in(19:24); %[uf1,uf2,uf3,uf4,ucp,ucy] rho = in(25); eul = x(1:3); %[phi,theta,psi] vel = x(4:6); %[u,v,w] omg = x(7:9); %[p,q,r] u = vel(1); v = vel(2); w = vel(3); p = omg(1); q = omg(2); r = omg(3); % compute alpha and beta [alpha,beta] = compute_alpha_beta(vel); % compute the cavity dimensions at the fins [yfin_c,zfin_c,rfin_c] = local_cav_dimensions(x,x_dot,body.fin.x_piv); % CALCULATE THE FIN IMMERSION r_tip = body.fin.b+body.fin.r_piv; % calulate the forces for each fin F_fin = zeros(3,1); M_fin = zeros(3,1); for i = 1:4 % Determine the local centerline for each fin ycen(i) = yfin_c*cos(body.fin.Phi(i)) + zfin_c*sin(body.fin.Phi(i)); zcen(i) = -yfin_c*sin(body.fin.Phi(i)) + zfin_c*cos(body.fin.Phi(i)); % Find the intersection of the cavity and the local fin yR(i) = sqrt(rfin_c^2-zcen(i)^2); % Calculate the fin immersion imm(i) = 0.7 * (r_tip-(ycen(i)+yR(i)))/body.fin.b + 0.3; if imm(i) < 0 imm(i) = 0; %disp('Warning: Saturated Fin Immersion') elseif imm(i) > 1 imm(i) = 1; %disp('Warning: Saturated Fin Immersion') end % Calculate the apparent sweep 118 swp_f(i) = body.fin.swp - ... (alpha*sin(body.fin.Phi(i)) + beta*cos(body.fin.Phi(i))); % COMPUTE THE APPARENT ANGLE OF ATTACK % Calculate the approximate center of effect on the submerged portion % of the fin xf(i) = body.fin.x_piv + body.fin.b*(1-imm(i)/2)*sin(swp_f(i)); rf(i) = body.fin.r_piv + body.fin.b*(1-imm(i)/2)*cos(swp_f(i)); yf(i) = rf(i)*cos(body.fin.Phi(i)); zf(i) = rf(i)*sin(body.fin.Phi(i)); % Compute the apparent flow angles in the body-fixed frame x_fin = xf(i) - mass.x_cg; %(aft of cg) alpha_yb = alpha + (q*x_fin + p*yf(i))/norm(vel); alpha_zb = -beta + (-r*x_fin + p*zf(i))/norm(vel); % transform y-component (parallel to flow) t0 LSCAV frame a_LSCAV(i) = alpha_yb*cos(body.fin.Phi(i))+alpha_zb*sin(body.fin.Phi(i)); % add fin actuator angle to compute final angle of attack atk(i) = a_LSCAV(i) + delta(i)*cos(swp_f(i)); % COMPUTE THE FIN FORCE AND MOMENT COEFFICIENTS load LS_finCoef8; %coefficients for LS equations % for coef = 1:6 % finCoef(coef) = LS_finCoef6(coef,1)*(atk(i)*r2d)^2 + ... % LS_finCoef6(coef,2)*atk(i)*r2d*imm(i) + ... % LS_finCoef6(coef,3)*imm(i)^2 + ... % LS_finCoef6(coef,4)*atk(i)*r2d + ... % LS_finCoef6(coef,5)*imm(i) + ... % LS_finCoef6(coef,6); % end for coef = 1:6 finCoef(coef) = LS_finCoef8(coef,1)*(atk(i)*r2d)^3 + ... LS_finCoef8(coef,2)*imm(i)^3 + ... LS_finCoef8(coef,3)*(atk(i)*r2d)^2*imm(i) + ... LS_finCoef8(coef,4)*(atk(i)*r2d)*imm(i)^2 + ... LS_finCoef8(coef,5)*(atk(i)*r2d)*imm(i) + ... LS_finCoef8(coef,6)*(atk(i)*r2d) + ... LS_finCoef8(coef,7)*imm(i) + ... LS_finCoef8(coef,8); end % Add the coefficient uncertainty finCoef(DELTA.Cfin_coef) = finCoef(DELTA.Cfin_coef) + ... finCoef(DELTA.Cfin_coef)*DELTA.Cfin_range(DELTA.Cfin_coef,DELTA.Cfin_rval); % Dimensionalize the Force and moment Coefficients qbar_f = 0.5*rho*norm(vel)^2*body.fin.b^2; arm = abs(mass.x_cg-body.fin.x_piv); F = qbar_f*[finCoef(1:3)]'; M = qbar_f*body.fin.b*[finCoef(4:6)]' + ... cross([arm,0,0]',F); 119 % rotate the forces and moments into the corect body axis ci = cos(body.fin.Phi(i)); si = sin(body.fin.Phi(i)); F_fin(1) = F_fin(1) - F(1); F_fin(2) = F_fin(2) + F(2)*ci + F(3)*si; F_fin(3) = F_fin(3) + F(2)*si - F(3)*ci; M_fin(1) = M_fin(1) - M(1); M_fin(2) = M_fin(2) + M(2)*ci + M(3)*si; M_fin(3) = M_fin(3) + M(2)*si - M(3)*ci; end out = [F_fin;M_fin]; return 120 planing_forces.m function [out] = planing_forces(in) global planeModel body cav mass % Evaluates the immersion of the transom and resulting forces. % Typically only the midbody and tail will be examined. % % Fplane(1:3)= [Fx,Fy,Fz]' Mplane(1:3)= [Mx,My,Mz]' % % Hassan's forces and moments are computed at the transom % centerline with the x-axis pointing along the body toward % the nose and the y-axis pointing to starboard (right) so % that the z-axis points below. % % ref: NUWC-NOT Technical Memorandum 990085 % Scott E. Hassan, "Analysis of Hydrodynamic Planing Forces % Associated with Cavity Riding Vehicles", July, 1999. % define the input x = in(1:9); %states x_dot = in(10:18); %state derivatives rho = in(19); eul = x(1:3); %[phi,theta,psi] vel = x(4:6); %[u,v,w] omg = x(7:9); %[p,q,r] u = vel(1); v = vel(2); w = vel(3); p = omg(1); q = omg(2); r = omg(3); p_dot = x_dot(7); q_dot = x_dot(8); r_dot = x_dot(9); % initialize the forces and moments Fplane = [0,0,0]'; Mplane = [0,0,0]'; % Assume that the only section of the hull that planes is the third % section, the cylindrical hull portion pSec = 3; % define transom position and determine immersion there xTransom = body.x2(pSec); planeLength = 0; [hTransom,aTransom] = body_immersion(x,x_dot,xTransom,pSec,body); % if the tail/transom of the torpedo is dry, skip to the end of the % loop if ((hTransom > 0) & (body.planeSec(pSec) == 1)) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Determine planing depth & length, immersion angle, contact angle %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % find the entry point along the x-axis where the body becomes wet % (or where the body breaks the cavity wall, where immDepth == 0) xFwd = body.x1(pSec); [hFwd,aFwd] = body_immersion(x,x_dot,xFwd,pSec,body); 121 if (hFwd*hTransom > 0) warning('Not a wedge-type immersion.') xEntry = xFwd; else if (hFwd == 0) xEntry = xFwd; else xguess = [xTransom,xFwd]; warning off MATLAB:fzero:UndeterminedSyntax xEntry = fzero('immersion_depth',xguess,[],x,x_dot,pSec,body); if ((xEntry > xTransom) | (xEntry < xFwd)) error('Entry root outside bounds.'); end end end [hEntry,aEntry] = body_immersion(x,x_dot,xEntry,pSec,body); % Find the depth of the immersed planing region if (hTransom > body.r2(pSec)) warning('Transom submergence is greater than body radius.') planeDepth = body.r2(pSec); else planeDepth = hTransom; end % Find the length of the immersed planing region planeLength = xTransom-xEntry; if planeLength > body.x2(pSec)-body.x1(pSec) warning('Planing length is longer than currect planing section.') planeLength = body.x2(pSec)-body.x1(pSec); end % determine the body's contact angles planeIncline = atan2(planeDepth,planeLength); planeContact = 0.25*(aEntry+3.*aTransom); % a conical average, % weighted to the % transom % display the planing length and contact angle (the angle around % the x-axis that defines the location of the planing forces) disp(sprintf(' planing: length = %11.4e, contact = %10.1f',... planeLength,planeContact*180/pi)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Planing Forces and Moment, aligned with contact angle % moments about transom %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % calculate the skin friction drag kvisc = 1.4e-6; Cd = 0.031/(norm(vel)*planeLength/kvisc)^(1/7); % calculate force and moment components rTransom = body.r2(pSec); % transom radius % Cavity radius at transom 122 [junk,junk,Rc] = local_cav_dimensions(x,x_dot,xTransom); R = body.r2(pSec); dim = rho*pi*Rc^2*norm(vel)^2; del = Rc-rTransom; h0 = planeDepth; r2r = (rTransom+h0)/(rTransom+2*h0); sa = sin(planeIncline); ca = cos(planeIncline); ta = tan(planeIncline); % Normal pressure forces Fp = dim*sa*ca*(1-(del/(h0+del))^2)*r2r; Mp = dim*ca*ca*(h0^2/(h0+del))*r2r; Lp = (Mp/Fp); % note: this center is measured forward % from the transom of the planing section % Friction forces uc= sqrt(h0/del); us= 2/R*sqrt(del*h0); % note: corrected Hassan's result for Sw Sw= 4*R*del/ta * ((1+uc*uc)*atan(uc)-uc) + ... R^3/(2*del*ta) * ((us^2-0.5)*asin(us)+0.5*us*sqrt(1-us^2)); Ff= 0.5*rho*norm(vel)^2*ca*ca*Sw*Cd; % neglect moment for now Mf= 0; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Additional planing forces, acceleration and impact % % F_a = C_a*m_added*a % F_i = C_i*m_imapct*C*V_ang % % a Acceleration (some combination of p_dot or q_dot % V_ang angular velocity % m_added This is an added mass based on the geometry of the torpedo. % m_impact volume of displaced water as a result of the impact % C_a & C_i coefficients yet to be determined. % (Waiting for results from Dr. Charles Song) % C speed of sound in water %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% K_plane = 1; %some fration of the added mass Ca_plane = 1; %coefficient for acceleration forces Ci_plane = 0.5; %coefficient for impact forces C = 1500; %(m/s) approximate speed of sound in salt water % set the acceleration to some combination of r_dot and q_dot arm = abs(mass.x_cg-xTransom)-(1/3)*planeLength; V_ang = sqrt(r^2+q^2)*arm; a = sqrt(r_dot^2+q_dot^2)*arm; % Determine the volumes needed for m_added and m_impact n_sec = 20; 123 [Rc,Lc] = max_cavity_dimensions(cav); xc_sec = [0:Lc/n_sec:Lc]; rc_sec = []; yc_sec = []; zc_sec = []; for i = 1:n_sec [yc_sec(i),zc_sec(i),rc_sec(i)] = ... local_cav_dimensions(x,x_dot,xc_sec(i)); end vol_cavShell = 0; for i = 1:(n_sec-1) center_i1 = [xc_sec(i+1),yc_sec(i+1),zc_sec(i+1)]'; center_i = [xc_sec(i),yc_sec(i),zc_sec(i)]'; vol_cavShell = vol_cavShell + ... ((rc_sec(i+1)+rc_sec(i))/2)^2 * norm(center_i1-center_i); end vol_torpedo = 0; for i=1:4 vol_torpedo = vol_torpedo + ... ((body.r1(i)+body.r2(i))*body.R/2)^2 * ... (body.x2(i)-body.x1(i))*body.L; end [junk,junk,rEntry] = local_cav_dimensions(x,x_dot,xEntry); width = (pi/4)*(rEntry+rTransom); vol_wedge = (1/3)*planeLength*planeDepth*width; % projected area of the torpedo wetted area proj_area = 2*sqrt(rTransom^2-planeDepth^2); % masses m_added = K_plane*(vol_cavShell-vol_torpedo+vol_wedge); m_impact = rho*vol_wedge; % additional forces F_acc = Ca_plane*m_added*a; %acceleration forces F_im = Ci_plane*m_impact*C*V_ang*proj_area; %impact forces %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Rotate and shift from transom contact to body-frame % % Fx= Ff % Fy= -Fp*cos(contactAngle) % Fz= -Fp*sin(contactAngle) % Mx= 0 % My= (Mp+Mf)*sin(contactAngle) - xTransom*Fz % Mz= -(Mp+Mf)*cos(contactAngle) + xTransom*Fy %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % set the moment arm xPlane = xTransom-(1/3)*planeLength-mass.x_cg; % compute the forces and moments switch planeModel case 'Hassan' 124 Fplane = [Ff, -Fp*cos(planeContact), -Fp*sin(planeContact) ]'; Mplane = [0, (Mp+Mf)*sin(planeContact), -(Mp+Mf)*cos(planeContact)]'; Mplane = Mplane + cross([mass.x_cg-xPlane,0,0]',Fplane); case 'Hassan_and_Song' Fplane = [Ff, -(Fp+F_acc+F_im)*cos(planeContact), ... -(Fp+F_acc+F_im)*sin(planeContact) ]'; Mplane = [0, (Mp+Mf)*sin(planeContact), -(Mp+Mf)*cos(planeContact)]'; Mplane = Mplane + cross([mass.x_cg-xPlane,0,0]',Fplane); otherwise disp('The planing forces were not computed') end %switch end %if ((hTransom > 0) & (body.planeSec(i) == 1)) out = [Fplane; Mplane]; return 125 set_inertia.m function inertia = set_inertia(body,mass) % Set the inertia % % Currently only written for HSW testbed geometry with homogenous % mass distribution % % This is here (rather than in the setup file) because it is possible to % model the reduction in mass to use of fuel. % % See Analytical Dynamics by Haim Baruh for reference on how inertia was % computed. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % determine the x_cg of the torpedo as well as the mass of the individual % sections and the total mass %(only considers 2 section, Anteon Legacy code) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Forward cone (includes the cavitator portion of torpedo) L(1) = body.x2(2); R(1) = body.r2(2); vol(1) = (1/3)*pi*R(1)^2*L(1); xcg(1) = (3/4)*L(1); %aft of cavitator % midbody cylinder L(2) = body.x2(3)-body.x1(3); R(2) = body.r2(3); vol(2) = pi*R(2)^2*L(2); xcg(2) = body.x2(3)-0.5*L(2); % aft of cavitator % determine the mass of each section tot_vol = sum(vol); rho_b = mass.m/tot_vol; m(1) = vol(1)/tot_vol * mass.m; m(2) = vol(2)/tot_vol * mass.m; % determine the center of mass x_cg = (1/mass.m) * (m(1)*xcg(1)+m(2)*xcg(2)); %aft of cavitator inertia.x_cg = x_cg; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Determine the inertia about the center of gravity % origin = x_cg % % Inertia Matrix % % [Ixx -Ixy -Ixz % I = -Ixy Iyy -Iyz % -Ixz -Iyz Izz] % % Transformation matrix with a dummy transformation vector % (Parallel Axis Theorem) 126 % Tvec = [dx,dy,dz]; % Tmat = [ (dx^2+dy^2), -dx*dy, -dx*dz; % -dx*dy, (dx^2+dz^2), -dy*dz; % -dx*dz, -dy*dz, (dx^2+dy^2)]; % % such that I = Ig + m*Tmat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % calculate the inertia of the cone (about cone's cg) Iyy = (3/20)*m(1)*R(1)^2 + (3/80)*m(1)*L(1)^2; Izz = Iyy; Ixx = (3/10)*m(1)*R(1)^2; Icone = diag([Ixx,Iyy,Izz]); % Transform the cone inertia to the origin dx = xcg(1) - x_cg; dy = 0; dz = 0; Tmat = [ (dy^2+dz^2), -dx*dy, -dx*dz; -dx*dy, (dx^2+dz^2), -dy*dz; -dx*dz, -dy*dz, (dx^2+dy^2)]; Icone = Icone + m(1)*Tmat; % calculate the inertia of the cylinder (about cylinder's cg) Iyy = (1/4)*m(2)*R(2)^2 + (1/12)*m(2)*L(2)^2; Izz = Iyy; Ixx = (1/2)*m(2)*R(2)^2; Icyl = diag([Ixx,Iyy,Izz]); % Transform the cylinder inertia to the origin dx = xcg(2) - x_cg; dy = 0; dz = 0; Tmat = [ (dy^2+dz^2), -dx*dy, -dx*dz; -dx*dy, (dx^2+dz^2), -dy*dz; -dx*dz, -dy*dz, (dx^2+dy^2)]; Icyl = Icyl + m(2)*Tmat; % Compute the total angular inertia inertia.J = Icone + Icyl; 127 mass_forces.m function [out] = mass_forces(in) global mass body inertia % gravity forces and moments % set the input eul = in(1:3); %[phi,theta,psi]' vel = in(4:6); %[u,v,w]' omg = in(7:9); %[p,q,r]' phi = eul(1); theta = eul(2); psi = eul(3); % Define the transformation matrix to bring the gavity forces to body % forces c1 = cos(phi); c2= cos(theta); c3= cos(psi); s1 = sin(phi); s2= sin(theta); s3= sin(psi); T_i2b = [ c3*c2, -c1*s3+c3*s1*s2, s1*s3+c3*c1*s2 ; ... s3*c2, c1*c3+s3*s1*s2, -s1*c3+s3*c1*s2 ; ... -s2, s1*c2, c1*c2]; T_b2i = T_i2b'; % compute the gravity forces and moments Fgrav = T_b2i*[0,0,mass.m*mass.g]'; Mgrav = zeros(3,1); % set the output out = [Fgrav; Mgrav]; return 128 sixDofEom.m function [out] = sixDofEom(in) global sim hwait mass body inertia % define the input eul = in(1:3); %[phi,theta,psi] vel = in(4:6); %[u,v,w] omg = in(7:9); %[p,q,r] Fcav = in(10:12); Mcav = in(13:15); Ffin = in(16:18); Mfin = in(19:21); Fplane = in(22:24); Mplane = in(25:27); Fmass = in(28:30); Mmass = in(31:33); thrust = in(34:36); t = in(37); phi = eul(1); theta = eul(2); psi = eul(3); % update the waitbar if sim.simulating == true waitbar(t/sim.t_stop,hwait) end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % compute the kinematics %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% s1= sin(phi); c1= cos(phi); s2= sin(theta); c2= cos(theta); tan2= tan(theta); sec2= sec(theta); Tb2i_ang= [1, s1*tan2, c1*tan2 ; ... 0, c1, -s1 ; ... 0, s1*sec2, c1*sec2 ]; eul_dot = Tb2i_ang*omg; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % compute the dynamics % % NOTE: The dynamics equations assumes that the reference frame % being used is about the cg %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % compute the moments produced by the thrust vector about the cg Mthrust = cross([body.L-mass.x_cg,0,0]',thrust); % compute the omega shorthand matrix p = omg(1); q = omg(2); r = omg(3); omg_tilde = [0,-r,q; r,0,-p; -q,p,0]; OMG = [-omg_tilde,zeros(3); zeros(3),-omg_tilde]; % compute the mass shorthand matrix M = [mass.m*eye(3),zeros(3); zeros(3),inertia.J]; 129 % sum forces and moments about the cg Ftot = (Fmass+Fcav+Ffin+Fplane+thrust); Mtot = (Mmass+Mcav+Mfin+Mplane+Mthrust); % EOM accel = inv(M) * (OMG*M*[vel;omg] + [Ftot;Mtot]); vel_dot = accel(1:3); omg_dot = accel(4:6); % set the output out = [eul_dot; vel_dot; omg_dot]; 130 body_immersion.m function [depth, angle] = body_immersion(x,x_dot,X,pSec,body) % This function calculates the torpedo body immersion % initialize output angle = 0; depth = 0; % calculate the slope of the body's radius x1 = body.x1(pSec); x2 = body.x2(pSec); r1 = body.r1(pSec); r2 = body.r2(pSec); Rb = (r1-r2)/(x1-x2)*(X-x2)+r2; % check that x is within body section if ((X > x2 | X < x1) & (X ~= x2) & (X ~= x1)) warning('Outside specified body section.'); return end % Interpolate cavity profile to find radius and center offset at chosen x % position (behind the cavitator) [yc,zc,rc] = local_cav_dimensions(x,x_dot,X); angle = pi + atan2(zc,yc); depth = Rb + (sqrt(yc^2+zc^2)-rc); return 131 cavity_info.m function [out] = cavity_info(r_vec,beta_dot_vec,V) global cavity % Calculate three sets of vectors representing the cavity centerline and % the local radii. These vectors will be used to interpret the local % cavity states at a given distance behind the cavitator. % define the x distance behind the cavitator xc(1) = 0; for i = 2:cavity.n xc(i) = xc(i-1)+cavity.dx; end % determine the sectional centerline offset and radii for i = 1:cavity.n x = [r_vec(i),0]; x_dot = [0,beta_dot_vec(i)]; [yc(i),zc(i),rc(i)] = local_cav_dimensions(x,x_dot,xc(i),V); end % define the output out = [xc, yc, zc, rc]; 132 compute_alpha_beta.m function [alpha,beta] = compute_alpha_beta(vel) % compute alpha and beta as defined by Etkin (pg 10-11) u = vel(1); v = vel(2); w = vel(3); speed = norm(vel); alpha = atan2(w,u); beta = asin(v/speed); return; 133 compute_drag.m function drag = compute_drag(x,u,rho) % set the global variables global planeModel mass inertia body cav cavity DELTA % define the state derivatives x_dot = zeros(9,1); s1= sin(x(1)); c1= cos(x(1)); s2= sin(x(2)); c2= cos(x(2)); tan2= tan(x(2)); sec2= sec(x(2)); Tb2i_ang= [1, s1*tan2, c1*tan2 ; ... 0, c1, -s1 ; ... 0, s1*sec2, c1*sec2 ]; x_dot(1:3) = Tb2i_ang*x(7:9); % compute the cavitator forces and moments cav_FandM = cavitator_forces([x;u;rho]); Fcav_x = cav_FandM(1); % Check the fin forces fin_FandM = fin_forces([x;x_dot;u;rho]); Ffin_x = fin_FandM(1); % check planing forces plane_FandM = planing_forces([x;x_dot;rho]); Fplane_x = plane_FandM(1); % check mass moments and forces mass_FandM = mass_forces(x); Fmass_x = mass_FandM(1); % sum the forces to get the drag value drag = Fcav_x + Ffin_x + Fplane_x + Fmass_x; 134 eval_fintable.m function finCoef= eval_fintable(atk1,imm1,swp1,finTable) % Given the local angle of attack, immersion ration, and sweepback angle, % this function evaluates the six generalized % fin forces from the table of fin-force coefficients. % % Input: % atk1 - local angle of attack [deg] % imm1 - immersion as a fraction of fin span [] % swp1 - sweep back angle [deg] % FinTable - fin-force coefficient table % Output: % finCoef(1:6)= [CFx,CFy,CFz,CMx,CMy,CMz] % % Note: The table of fin force coefficients is based on the LSCAV local fin % coordinate system and the angle of attack in finTable is assumed to be in % degrees. % localize FinTable nFrc= finTable.nFrc; nSweep= finTable.nSweep; nImmersion= finTable.nImmersion; nAttack= finTable.nAttack; sweepAngle(1:nSweep)= finTable.sweepAngle(1:nSweep); immersionRatio(1:nImmersion)= finTable.immersionRatio(1:nImmersion); attackAngle(1:nAttack)= finTable.attackAngle(1:nAttack); % account for symmetry atk= abs(atk1); frcsymm= [1 1 1 1 1 1]; if (atk1 < 0) frcsymm= [1 1 -1 -1 -1 1]; end % check bounds on angle of attack, immersion, and sweepback angle atk= bind(atk,attackAngle(1),attackAngle(nAttack)); imm= bind(imm1,immersionRatio(1),immersionRatio(nImmersion)); swp= bind(swp1,sweepAngle(1),sweepAngle(nSweep)); % setup the linear interpolation for the given sweep and immersion [jSwp1,jSwp2,sSwp]= interp_nodes(swp,sweepAngle); [jImm1,jImm2,sImm]= interp_nodes(imm,immersionRatio); % set the table fit near the given angle of attack, sweep, and immersion Evaluate and interpolate at given angle of attack clear fit11 fit12 fit21 fit22; if (atk < finTable.attackBreak1) nP= 2; fit11(1:nP,1:6)= finTable.partialFit(1:nP,jImm1,jSwp1,1:6); fit12(1:nP,1:6)= finTable.partialFit(1:nP,jImm1,jSwp2,1:6); fit21(1:nP,1:6)= finTable.partialFit(1:nP,jImm2,jSwp1,1:6); fit22(1:nP,1:6)= finTable.partialFit(1:nP,jImm2,jSwp2,1:6); %elseif (atk < finTable.attackBreak2) % nP= 4; % fit11(1:nP,1:6)= finTable.transitFit(1:nP,jImm1,jSwp1,1:6); % fit12(1:nP,1:6)= finTable.transitFit(1:nP,jImm1,jSwp2,1:6); 135 % fit21(1:nP,1:6)= finTable.transitFit(1:nP,jImm2,jSwp1,1:6); % fit22(1:nP,1:6)= finTable.transitFit(1:nP,jImm2,jSwp2,1:6); else nP= 5; fit11(1:nP,1:6)= finTable.supercvFit(1:nP,jImm1,jSwp1,1:6); fit12(1:nP,1:6)= finTable.supercvFit(1:nP,jImm1,jSwp2,1:6); fit21(1:nP,1:6)= finTable.supercvFit(1:nP,jImm2,jSwp1,1:6); fit22(1:nP,1:6)= finTable.supercvFit(1:nP,jImm2,jSwp2,1:6); end % evaluate fit and interpolate if (sSwp == 0 & sImm == 0) for kFrc= 1:6 finCoef(kFrc)= frcsymm(kFrc)*polyval(fit11(1:nP,kFrc),atk); end elseif (sSwp == 0) for kFrc= 1:6 f11= polyval(fit11(1:nP,kFrc),atk); f21= polyval(fit21(1:nP,kFrc),atk); finCoef(kFrc)= frcsymm(kFrc)*((f21-f11)*sImm + f11); end elseif (sImm == 0) for kFrc= 1:6 f11= polyval(fit11(1:nP,kFrc),atk); f12= polyval(fit12(1:nP,kFrc),atk); finCoef(kFrc)= frcsymm(kFrc)*((f12-f11)*sSwp + f11); end else for kFrc= 1:6 f11= polyval(fit11(1:nP,kFrc),atk); f12= polyval(fit12(1:nP,kFrc),atk); f21= polyval(fit21(1:nP,kFrc),atk); f22= polyval(fit22(1:nP,kFrc),atk); f1= (f12-f11)*sSwp + f11; f2= (f22-f21)*sSwp + f21; finCoef(kFrc)= frcsymm(kFrc)*((f2-f1)*sImm + f1); end end return function x= bind(x,bound1,bound2) % place x within bounds so that bound1<=x<=bound2 if (x<bound1) x= bound1; elseif (x>bound2) x= bound2; end function [j1,j2,slope]= interp_nodes(x,v) % assume x bound within the possible values v, and v is monotonically increasing tol= 1.e-9; for j= 1:length(v) if (abs(x-v(j)) < tol) j1= j; j2= j; slope= 0; return 136 end if (x < v(j)) j1= j-1; j2= j; delv= v(j2)-v(j1); if (abs(delv) < tol) slope= 0; return else slope= (x-v(j1))/delv; return end end end return 137 immersion_depth.m function immDepth = immersion_depth(x,states,states_dot,pSec,body) % function used in fzero to calculate the point of body immersion [immDepth,immAngle] = body_immersion(states,states_dot,x,pSec,body); return 138 local_cav_dimensions.m function [yc,zc,rc] = local_cav_dimensions(x,x_dot,xc) global mass cav % compute the local cavity centerline and radius dimensions % define the states and state derivatives eul = x(1:3); %[phi,theta,psi] vel = x(4:6); %[u,v,w] omg = x(7:9); %[p,q,r] eul_dot = x_dot(1:3); %[phi_dot,theta_dot,psi_dot] vel_dot = x_dot(4:6); %[u_dot,v_dot,w_dot] omg_dot = x_dot(7:9); %[p_dot,q_dot,w_dot] % compute the maximum cavity dimensions [Rc,Lc] = max_cavity_dimensions(cav); % Compute the cavity centerline coordinates at a given x-location % Fr = norm(vel)/sqrt(mass.g*cav.D); bouyancy = 8.29; %Bouyancy (m/s^2) a_pitch = bouyancy + norm(vel)*eul_dot(2); a_yaw = norm(vel)*eul_dot(3); % compute centerline displacements due to turning and pitch accelerations % as well as bouyancy in the z-direction %yc = (1/Fr^2)*(a_turn/mass.g)*(xc/cav.D)^2; %zc = -(1/Fr^2)*(a_g/mass.g)*(xc/cav.D)^2 - 0.5*a_pitch*(xc/V)^2; yc = 0.5*a_yaw*(xc/norm(vel))^2; zc = -0.5*a_pitch*(xc/norm(vel))^2; X = norm([xc,yc,zc]); %X = xc; if X < Lc rc = Rc*(1-((2*X)/Lc-1)^2)^(1/2.4); %local cavity radius else rc = 0; end % return the local cavity coordinates return 139 make_comp_graphs.m % This function is designed to make state plots for two sets of data function [] = make_comp_graphs(t,x1,x2) % check for engineering zeros [row,col] = size(x1); tol = 1e-9; for i = 1:col if max(x1(:,i)) < tol x1(:,i) = zeros(row,1); end end [row,col] = size(x2); tol = 1e-9; for i = 1:col if max(x2(:,i)) < tol x2(:,i) = zeros(row,1); end end figure % phi subplot(3,3,1) plot(t,x1(:,1),'b-',t,x2(:,1),'r--') grid on ylabel('\phi (rad)') legend('Nonlinear','Linear') % theta subplot(3,3,4) plot(t,x1(:,2),'b-',t,x2(:,2),'r--') grid on ylabel('\theta (rad)') legend('Nonlinear','Linear') % psi subplot(3,3,7) plot(t,x1(:,3),'b-',t,x2(:,3),'r--') grid on ylabel('\psi (rad)') xlabel('Time (sec)') legend('Nonlinear','Linear') %u subplot(3,3,2) plot(t,x1(:,4),'b-',t,x2(:,4),'r--') grid on ylabel('u (m/s)') legend('Nonlinear','Linear') %v subplot(3,3,5) plot(t,x1(:,5),'b-',t,x2(:,5),'r--') 140 grid on ylabel('v (m/s)') legend('Nonlinear','Linear') %z subplot(3,3,8) plot(t,x1(:,6),'b-',t,x2(:,6),'r--') grid on ylabel('z (m/s)') xlabel('Time (sec)') legend('Nonlinear','Linear') %p subplot(3,3,3) plot(t,x1(:,7),'b-',t,x2(:,7),'r--') grid on ylabel('p (rad/sec)') legend('Nonlinear','Linear') %q subplot(3,3,6) plot(t,x1(:,8),'b-',t,x2(:,8),'r--') grid on ylabel('q (rad/sec)') legend('Nonlinear','Linear') %r subplot(3,3,9) plot(t,x1(:,9),'b-',t,x2(:,9),'r--') grid on ylabel('r (rad/sec)') xlabel('Time (sec)') legend('Nonlinear','Linear') 141 make_graphs.m % This function is designed to make state plots function [] = make_graphs(t,x) % check for engineering zeros [row,col] = size(x); tol = 1e-9; for i = 1:col if max(x(:,i)) < tol x(:,i) = zeros(row,1); end end figure % phi subplot(3,3,1) plot(t,x(:,1)) grid on ylabel('\phi (rad)') % theta subplot(3,3,4) plot(t,x(:,2)) grid on ylabel('\theta (rad)') % psi subplot(3,3,7) plot(t,x(:,3)) grid on ylabel('\psi (rad)') xlabel('Time (sec)') %u subplot(3,3,2) plot(t,x(:,4)) grid on ylabel('u (m/s)') %v subplot(3,3,5) plot(t,x(:,5)) grid on ylabel('v (m/s)') %z subplot(3,3,8) plot(t,x(:,6)) grid on ylabel('z (m/s)') xlabel('Time (sec)') %p subplot(3,3,3) 142 plot(t,x(:,7)) grid on ylabel('p (rad/sec)') %q subplot(3,3,6) plot(t,x(:,8)) grid on ylabel('q (rad/sec)') %r subplot(3,3,9) plot(t,x(:,9)) grid on ylabel('r (rad/sec)') xlabel('Time (sec)') 143 max_cavity_dimensions.m function [Rc,Lc] = max_cavity_dimensions(cav) global DELTA % This function computes the maximum cavity dimensions % % Since there is no model for the cavitation number and assuming that the % drag coefficient remains constant, the maximum cavity dimensions are not % only not a function of the states, but remain constant % add the DELTA values Cd0 = cav.Cd0 + cav.Cd0*DELTA.Cd0_range(DELTA.Cd0_rval); sigma = cav.sigma + cav.sigma*DELTA.sigma_range(DELTA.sigma_rval); % Compute the maximum cavity dimensions Cd = Cd0*(1+sigma+0.028*sigma^2); %Drag Coefficient Lc = cav.D*sqrt(Cd)*(1.24*sigma^(-1.123)-0.6); %Maximum cavity length Rc = cav.R*sqrt(1.35*Cd*sigma^(-0.93)); %Maximum cavity radius return 144 scav_least_squares3.m % Determine the coefficients a, b, and c ( z(i,j) = a*x(i)+b*y(j)+c ) function [coef,normed_error] = scav_least_squares3(x,y,z) N = length(x); M = length(y); % Fill the A and B matrics A = zeros(N*M,3); B = zeros(N*M,1); for i = 1:N for j = 1:M A(M*(i-1)+j,:) = [x(i),y(j),1]; B(M*(i-1)+j) = z(i,j); end end coef = inv([A'*A])*A'*B; normed_error = norm(A*coef-B)/norm(B); return scav_least_squares6.m % Determine the coefficients [p1,p2,p3,p4,5p,p6] % z(i,j) = p1*x^2 + p2*x*y + p3*y^2 + p4*x + p5*y + p6 function [coef,normed_error] = scav_least_squares6(x,y,z) N = length(x); M = length(y); % Fill the A and B matrics A = zeros(N*M,6); B = zeros(N*M,1); for i = 1:N for j = 1:M A(M*(i-1)+j,:) = [x(i)^2, x(i)*y(j), y(j)^2, x(i), y(j), 1]; B(M*(i-1)+j) = z(i,j); end end coef = inv([A'*A])*A'*B; normed_error = norm(A*coef-B)/norm(B); return scav_least_squares8.m % Determine the coefficients [p1,p2,p3,p4,p5,p6,97,p8] % z(i,j) = p1*x^3 + p2*y^3 + p3*x^2*y + p4*x*y^2 + p5*x*y + p6*x + p7*y + % p8 function [coef,normed_error] = scav_least_squares8(x,y,z) N = length(x); M = length(y); % Fill the A and B matrics 145 A = zeros(N*M,8); B = zeros(N*M,1); for i = 1:N for j = 1:M A(M*(i-1)+j,:) = [x(i)^3, y(j)^3, x(i)^2*y(j), x(i)*y(j)^2,... x(i)*y(j), x(i), y(j), 1]; B(M*(i-1)+j) = z(i,j); end end coef = inv([A'*A])*A'*B; normed_error = norm(A*coef-B)/norm(B); return 146 test_ol_sensitivity.m % This function is designed to test the open sensitivity to variations in % system parameters as is defined in setup_sim_data. It does this by % comparing the A and B matrices as well as comparing stability % set the global variables global planeModel mass inertia body cav cavity DELTA global sim hwait % set constants and model data [mass, inertia, body, cav, cavity, rho] = setup_sim_data; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Setup simulation parameters %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% sim.dt = 0.001; %sec sim.t_stop = 2; %sec sim.simulating = false; % set the nominal speed V = 82.25; % set the turning acceleration turnG = 0; % set the flight condition: % 'straight-and-level' % 'turn' flight_con = 'straight-and-level'; %flight_con = 'turn'; % set the initial heading initial_heading = 0; % set the output reference frame and appropriate transformation matrix mass.origin_method = 'U of MN'; %('U of MN','Anteon') switch mass.origin_method case 'U of MN' dist = [0;0;0]; case 'Anteon' dist = [mass.x_cg;0;0]'; otherwise error('Incorrect origin setting') end r_tilde = [0,-dist(3),dist(2); dist(3),0,-dist(1); -dist(2),dist(1),0]; R = [eye(3),r_tilde; zeros(3),eye(3)]; % define value for uncertainty ranges minVal = 1; nomVal = 2; maxVal = 3; 147 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Define Initial/Trim Conditions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % set the planing model (no planing is desired) planeModel = 'Hassan'; % set the appropraite trim conditions switch flight_con case 'straight-and-level' x0 = [0,0,initial_heading,V,0,0,0,0,0]'; thrust = -1*compute_drag(x0,zeros(6,1),rho); u0 = [0,0,0,0,0,0,thrust,0,0]'; [x0,u0,y0,dx,options] = trim('trim_6DOF_model',x0,u0,[],... [1,2,3,4,5,6,7,8,9],[2,4,6,8,9]); case 'turn' x0 = [0,0,initial_heading,V,0,0,0,0,(turnG*9.81)/V]'; x_dot = zeros(9,1); s1= sin(x0(1)); c1= cos(x0(1)); s2= sin(x0(2)); c2= cos(x0(2)); tan2= tan(x0(2)); sec2= sec(x0(2)); Tb2i_ang= [1, s1*tan2, c1*tan2 ; ... 0, c1, -s1 ; ... 0, s1*sec2, c1*sec2 ]; x_dot(1:3) = Tb2i_ang*x0(7:9); x_dot(1) = 0; thrust = -1*compute_drag(x0,zeros(6,1),rho); u0 = [0,0,0,0,0,0,thrust,0,0]'; [x0,u0,y0,dx,options] = trim('trim_6DOF_model',x0,u0,[],... [9],[8,9],[],x_dot,[1,2,3,4,5,6,7,8,9]); otherwise disp('Incorrect flight condition setting') return end % check for engineering zeros in x0 and u0 tol = 1e-9; for i = 1:length(x0) if abs(x0(i)) < tol x0(i) = 0; end end for i = 1:length(u0) if abs(u0(i)) < tol u0(i) = 0; end end % display the trim conditions disp(' ') disp('The trim conditions are as follows:') disp(' x0 u0 y0 dx0') disp([x0,u0,y0,dx]) % set the initial conditions thrust = u0(7:9); u0 = u0(1:6); 148 x0 = x0; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Compute the Nominal Linearized Model %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% input_step_matrix = zeros(6,6); state_step_matrix = zeros(9,9); planeModel = 'Hassan'; [A_nom,B_nom,C_nom,D_nom] = linmod('ol_model'); nom_sys = ss(A_nom,B_nom,C_nom,D_nom); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Check the sensitivity to the fin force and moment coefficients %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for coef = 1:6 DELTA.Cfin_coef = coef; % compute the linear system with the min parameter DELTA.Cfin_rval = minVal; [A_min,B_min,C_min,D_min] = linmod('ol_model'); min_sys = ss(A_min,B_min,C_min,D_min); % compute the linear system with the max parameter DELTA.Cfin_rval = maxVal; [A_max,B_max,C_max,D_max] = linmod('ol_model'); max_sys = ss(A_max,B_max,C_max,D_max); % reset to the nominal value DELTA.Cfin_rval = nomVal; % make the varying system pole-zero map figure pzmap(nom_sys,'k',min_sys,'r',max_sys,'b') grid on legend('Nominal','Minimum','Maximum') title(['Open-Loop Pole-Zero Map for Fin Coefficient Index ',num2str(coef)]) end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Check the sensitivity to the cavitator Cd0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % compute the linear system with the min parameter DELTA.Cd0_rval = minVal; [A_min,B_min,C_min,D_min] = linmod('ol_model'); min_sys = ss(A_min,B_min,C_min,D_min); % compute the linear system with the max parameter DELTA.Cd0_rval = maxVal; [A_max,B_max,C_max,D_max] = linmod('ol_model'); 149 max_sys = ss(A_max,B_max,C_max,D_max); % reset to the nominal value DELTA.Cd0_rval = nomVal; % make the varying system pole-zero map figure pzmap(nom_sys,'k',min_sys,'r',max_sys,'b') grid on legend('Nominal','Minimum','Maximum') title('Open-Loop Pole-Zero Map for Cd_0') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Check the sensitivity to the cavitator number %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % compute the linear system with the min parameter DELTA.sigma_rval = minVal; [A_min,B_min,C_min,D_min] = linmod('ol_model'); min_sys = ss(A_min,B_min,C_min,D_min); % compute the linear system with the max parameter DELTA.sigma_rval = maxVal; [A_max,B_max,C_max,D_max] = linmod('ol_model'); max_sys = ss(A_max,B_max,C_max,D_max); % reset to the nominal value DELTA.sigma_rval = nomVal; % make the varying system pole-zero map figure pzmap(nom_sys,'k',min_sys,'r',max_sys,'b') grid on legend('Nominal','Minimum','Maximum') title('Open-Loop Pole-Zero Map for \sigma parameter') 150 test_turnG.m function [maxG] = test_turnG(Vrange) % The purpose of this function is to test the min and max allowable turnG % before planing forces occur. Keep in mind that planing forces are not % desirable and that the limit of the trajectory profile is based on the % occurance of these planing forces % set constants and model data [mass, inertia, body, cav, cavity, rho] = setup_sim_data; sim.dt = 0.001; %sec sim.t_stop = 0.5; %sec sim.simulating = false; initial_heading = 0; delG = 0.1; pSec = 3; % check max turnG for range of velocities maxG = zeros(1,length(Vrange)); for vel_index = 1:length(Vrange) % stop when planing occurs hTransom = -100; count = 0; turnG = 0; while (hTransom < 0) & (count < 100) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Setup simulation parameters %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % set the nominal speed V = Vrange(vel_index); % set the flight condition: % 'straight-and-level' % 'turn' %flight_con = 'straight-and-level'; flight_con = 'turn'; % set the output reference frame and appropriate transformation matrix mass.origin_method = 'U of MN'; %('U of MN','Anteon') switch mass.origin_method case 'U of MN' dist = [0;0;0]; case 'Anteon' dist = [mass.x_cg;0;0]'; otherwise error('Incorrect origin setting') end r_tilde = [0,-dist(3),dist(2); dist(3),0,-dist(1); -dist(2),dist(1),0]; R = [eye(3),r_tilde; zeros(3),eye(3)]; 151 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Define Initial/Trim Conditions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % set the planing model (no planing is desired) planeModel = 'Hassan'; % set the appropraite trim conditions x_dot = zeros(9,1); switch flight_con case 'straight-and-level' x0 = [0,0,initial_heading,V,0,0,0,0,0]'; thrust = -1*compute_drag(x0,zeros(6,1),rho); u0 = [0,0,0,0,0,0,thrust,0,0]'; [x0,u0,y0,dx,options] = trim('trim_6DOF_model',x0,u0,[],... [1,2,3,4,5,6,7,8,9],[2,4,6,8,9]); case 'turn' x0 = [0,0,initial_heading,V,0,0,0,0,(turnG*9.81)/V]'; x_dot = zeros(9,1); s1= sin(x0(1)); c1= cos(x0(1)); s2= sin(x0(2)); c2= cos(x0(2)); tan2= tan(x0(2)); sec2= sec(x0(2)); Tb2i_ang= [1, s1*tan2, c1*tan2 ; ... 0, c1, -s1 ; ... 0, s1*sec2, c1*sec2 ]; x_dot(1:3) = Tb2i_ang*x0(7:9); x_dot(1) = 0; thrust = -1*compute_drag(x0,zeros(6,1),rho); u0 = [0,0,0,0,0,0,thrust,0,0]'; [x0,u0,y0,dx,options] = trim('trim_6DOF_model',x0,u0,[],... [9],[8,9],[],x_dot,[1,2,3,4,5,6,7,8,9]); otherwise disp('Incorrect flight condition setting') return end % check for engineering zeros in x0 and u0 tol = 1e-9; for i = 1:length(x0) if abs(x0(i)) < tol x0(i) = 0; end end for i = 1:length(u0) if abs(u0(i)) < tol u0(i) = 0; end end % set the initial conditions thrust = u0(7:9); u = u0(1:6); x = x0; % define transom position and determine immersion there xTransom = body.x2(pSec); planeLength = 0; 152 [hTransom,aTransom] = body_immersion(x,x_dot,xTransom,pSec,body); % store max turnG value if hTransom > 0 maxG(vel_index) = turnG else turnG = turnG + delG; end count = count + 1 end %while end %for 153 Appendix C This appendix shows how the system dynamics vary with velocity. 154 155 Imaginary Axis -25 -15 -20 -15 -10 -5 0 5 10 15 20 25 0.5 0.64 0.8 0.94 0.94 0.8 0.64 0.5 -10 0.38 0.38 0.28 0.28 -5 0.17 0.17 Real A xis 0.08 0.08 Pole-Zero Map 0 20 15 10 5 5 10 15 20 V V V V V V 5 = 74 m/s, turn rate = 90 m/s, turn rate = 74 m/s, turn rate = 74 m/s, turn rate = 90 m/s, turn rate = 90 m/s, turn rate = 0 g's = 0 g's = 2.4 g's = -2.4 g's = 3.7 g's = -3.7 g's 10 11 Appendix D This appendix displays pole-zero maps of the open-loop system for varying parameters. Given the range of the varying parameters, how the system dynamics change can be read from the graphs. The parameters shown here are the cavitation number, the cavitator drag coefficient and zero a.o.a., and the six fin force and moment coefficients. 156 Open-Loop Pole-Zero Map f or σ parameter 25 0.36 20 0.26 0.18 0.06 0.11 0.48 20 15 15 0.66 10 10 Imaginary Axis 0.86 Nominal Minimum Maximum 5 5 0 -5 5 0.86 -10 10 0.66 -15 -20 15 20 0.48 0.36 -25 -12 -10 0.26 -8 -6 0.18 0.11 -4 0.06 -2 0 2 4 Real A xis Figure 42:System Poles for Range of Cavitation Numbers Open-Loop Pole-Zero Map for Cd 0 25 0.36 20 0.26 0.18 0.06 0.11 0.48 20 15 15 0.66 10 10 Imaginary Axis 0.86 Nominal Minimum Maximum 5 5 0 -5 5 0.86 -10 10 0.66 -15 -20 15 20 0.48 0.36 -25 -12 -10 0.26 -8 -6 0.18 -4 0.11 0.06 -2 0 Real A xis Figure 43: System Poles for Range of Cavitator Cd0 157 2 4 Open-Loop Pole-Zero Map f or Fin Coef f icient Index 1 25 0.32 0.23 0.16 0.1 0.05 20 20 0.44 15 15 0.6 10 10 Imaginary Axis Nominal Minimum Maximum 5 0.84 5 0.84 5 0 -5 -10 10 0.6 -15 15 -20 0.44 20 0.32 -25 -10 -8 0.23 -6 0.16 0.1 -4 0.05 -2 0 2 4 Real A xis Figure 44: System Poles for Range of Fin Force Coefficient (x-component) Open-Loop Pole-Zero Map f or Fin Coef f icient Index 2 25 0.32 0.23 0.16 0.1 0.05 20 20 0.44 15 15 0.6 10 Imaginary Axis 10 5 0.84 5 0.84 5 Nominal Minimum Maximum 0 -5 -10 10 0.6 -15 15 -20 0.44 20 0.32 -25 -10 -8 0.23 -6 0.16 0.1 -4 -2 0.05 0 2 4 Real A xis Figure 45: System Poles for Range of Fin Force Coefficient (y-component) 158 Open-Loop Pole-Zero Map f or Fin Coef f icient Index 3 25 0.32 0.23 0.16 0.05 0.1 20 20 0.44 Nominal Minimum Maximum 15 15 0.6 10 Imaginary Axis 10 5 0.84 5 0.84 5 0 -5 -10 10 0.6 -15 15 -20 0.44 20 0.32 -25 -10 0.23 -8 0.16 -6 0.1 -4 0.05 -2 0 2 4 Real A xis Figure 46: System Poles for Range of Fin Force Coefficient (z-component) Open-Loop Pole-Zero Map for Fin Coeff icient Index 4 25 0.36 20 0.26 0.18 0.11 0.06 0.48 20 15 15 0.66 10 10 0.86 Imaginary Axis Nominal Minimum Maximum 5 5 0 -5 5 0.86 -10 10 0.66 -15 -20 15 20 0.48 0.36 -25 -12 -10 0.26 -8 -6 0.18 -4 0.11 0.06 -2 0 2 4 Real A xis Figure 47: System Poles for Range of Fin Moment Coefficient (x-component) 159 Open-Loop Pole-Zero Map f or Fin Coef f icient Index 5 25 0.32 0.23 0.16 0.1 0.05 20 20 0.44 15 15 0.6 10 Imaginary Axis 10 5 Nominal Minimum Maximum 0.84 5 0.84 5 0 -5 -10 10 0.6 -15 15 -20 0.44 20 0.32 -25 -10 -8 0.23 -6 0.16 0.1 -4 0.05 -2 0 2 4 Real A xis Figure 48: System Poles for Range of Fin Moment Coefficient (y-component) Open-Loop Pole-Zero Map f or Fin Coef f icient Index 6 25 0.32 0.23 0.16 0.1 0.05 20 20 0.44 15 15 0.6 10 Imaginary Axis 10 5 0.84 5 0.84 5 Nominal Minimum Maximum 0 -5 -10 10 0.6 -15 15 -20 0.44 20 0.32 -25 -10 -8 0.23 -6 0.16 0.1 -4 -2 0.05 0 2 4 Real A xis Figure 49: System Poles for Range of Fin Moment Coefficient (z-component) 160