Documente Academic
Documente Profesional
Documente Cultură
Eric A. Euteneuer
University of Minnesota Department of Aerospace Engineering and Mechanics 107 Akerman Hall 110 Union ST SE Minneapolis, MN 55455
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.
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 Anteons 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
List of Symbols
psv p pc V i Fr CQ Q g Dcav Rcav CDo x Rc Lc rc saturated vapor pressure free-stream pressure cavity pressure water density free-stream velocity cavitation number cavitation boundary Froude Number ventilation coefficient volumetric ventilation flow rate gravitational acceleration cavitator diameter cavitator radius cavitator drag coefficient at zero angle of attack state vector control vector angle of attack side-slip angle maximum cavity radius maximum cavity length local cavity radius cavity centerline displacements apparent turn acceleration apparent tail-up acceleration perpendicular force acting on the cavitator moment arm, distance from the cavitator to the origin of the system cavitator apparent angle of attack cavitator apparent side-slip angle
c, hc
aturn ag Fp lcav
cav cav
vi
xcg
Fcav , M cav
position of the center of gravity, distance behind the cavitator cavitator forces and moments, respectively fin immersion ratio fixed fin sweep apparent fin sweep fin force and moment coefficients vector of coefficients used to calculate the fin force and moment coefficients %-error of the least-squares approximation used for fin coefficient computations vector of angles representing the radial locations of the fins location of the fin pivot points on the torpedo fin forces and moments, respectively length of the torpedo hull that is planing maximum planing depth planing immersion angle angle measurement of the lateral displacement of the torpedo compared to the cavity centerline radius difference of the cavity and the torpedo at the transom of the planing section
E xpiv, rpiv
F fin , M fin
Lplane hplane
plane plane
p
K r e n
control law reference signal error signal 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.
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 1990s, 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
with a necessity of ensuring the objects 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 ONRs efforts are aimed at developing two classes of supercavitating technologies: projectiles and torpedoes. The focus of this thesis is on supercavitating torpedoes.
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 dont 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 designers 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
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.
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 = V gDcav
Q 2 VDcav
Equation 3 Equation 2
CQ =
Here g is the gravitational acceleration, the cavitator diameter is Dcav, V is the magnitude of the vehicles 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.
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.
Roll Rate Pitch Rate Yaw Rate Longitudinal Velocity Lateral Velocity Normal Velocity Euler Roll Angle Euler Pitch Angle Euler Yaw Angle North Position East Position Depth
p q r u v w
Roll Rate Pitch Rate Yaw Rate Velocity Magnitude Sideslip Angle Angle of Attack Bank Angle (about velocity vector) Flight Path Angle Heading Angle North Position East Position Depth
p q r V
rad
rad
rad rad ft ft 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
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
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 = [ h p q r]
u v w
= f1
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 = [ p q r]
u v
= tan 1
w u
Equation 4
= sin 1
v u 2 + v 2 + w2
Equation 5
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.
) )
Equation 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.
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 Mnzer 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 Lc / 2 Dcav
1 a x c ( x) = 2 turn Fr g Dcav
2
2.4
Equation 9
Equation 10
1 ag x hc ( x) = 2 Fr g Dcav
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.
c (x ) = 1 aturn 2
x hc ( x ) = a g V
1 2
x V
Equation 12
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 (Eqs 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 0.45 0.4 0.35 Displacement (m) 0.3 0.25 0.2 0.15 0.1 0.05 0 Classic: (1/2)*a*t 2 Analytical
0.5
4.5
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
1 s 2 + (s ) 12
2
Equation 14
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 40 0.92 0.72 0.58 0.44 0.3 0.14 Delayed States Method Poles Delayed States Method Zeros "Classic" Method Poles
80
60
40
20
-20 0.98
-40 0.92 0.84 -60 -100 -90 -80 -70 0.72 -60 -50 0.58 -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 torpedos 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.
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
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
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
Cavity Shape
1
yc
0.5
1.5
2.5
3.5
4.5
0.5
1.5
2.5
3.5
4.5
0.1
rc
0.5
1.5
2 x
2.5
3.5
4.5
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.
xcav
Fp
ybody
cav
ycav
cav xbody
zcav
zbody
where
2 F p = 1 V 2 Rcav C D 2
Equation 16
cav = cav =
ql cav u 2 + v 2 + w2 rl cav u 2 + v 2 + w2
Equation 17
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:
Fcavx F p cos cav cos cav = Fcav y = F p sin cav Fcav F p sin cav cos cav z
Fcav
Equation 19
The moments acting about the cavitators 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. produced by the cavitator forces are: M cav = x cg Therefore, the moments
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
19
Fx Fy Fz
F cav
-15
-10
-5
10
15
20
-15
-10
-5
10
15
20
(deg)
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
Fx Fy Fz
F cav
-15
-10
-5
10
15
20
(deg)
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.
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
Wedge Half-Angle
y x
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 x
0.050 0.045 0.040 0.035
Supercavity
Fz
0.030 0.025 0.020 0.015 0.010 0.005 0.000 0.0 5.0 10.0 15.0
Partial Cavity
Base Cavity
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 fins 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
x 10 2 0 -2 -4 Fy -6 -8 -10 -12 -2
0.5 -1 0.6
0 1 2 0.9 0.8
0.7 Imm
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 3 + p3 i2 imm j + p 4 i imm 2 + j j
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 2 i imm j A= imm j i i imm j 1
p1 p P = 8 p8
B = Ci , j
[A A]P = A B P = [A A]
T T T
A P = B
Equation 22
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 B
Equation 23
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 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 p5 0.0000E+00 0.0000E+00 -1.3193E-03 2.1428E-03 -1.8498E-03 0.0000E+00
p2 5.0856E-03 -4.8993E-03 0.0000E+00 0.0000E+00 0.0000E+00 -1.1683E-03 p6 0.0000E+00 0.0000E+00 2.6340E-04 -2.8316E-04 2.7272E-04 0.0000E+00
p3 4.6230E-05 -4.4502E-05 0.0000E+00 0.0000E+00 0.0000E+00 -4.0303E-05 p7 5.6605E-04 1.0178E-03 0.0000E+00 0.0000E+00 0.0000E+00 -1.4744E-03
p4 0.0000E+00 0.0000E+00 1.0074E-02 1.3920E-03 -1.6503E-03 0.0000E+00 p8 -4.7508E-04 1.7334E-04 0.0000E+00 0.0000E+00 0.0000E+00 5.8590E-04
Coefficient Fx Fy Fz Mx My Mz
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
x 10 5
Fy
-5
-10
0.5
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.
27
For simplicity, this interaction is ignored. explore this interaction and its effects.
cavitation number and thus the dynamics of the model itself. Further studies will need to
90 o 180 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.
zcen (i ) = y finc sin ( (i )) + z finc cos( (i )) ycen (i ) = y finc cos((i )) + z fin c sin ( (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 ) = rfinc zcen (i )
29
imm(i ) = 0.7 *
(r
tip
ycen (i ) + yR (i )) b fin
+ 0.3
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.
x f (i ) = x piv + b fin
body (i ) = +
y
(qx (i ) + py (i ))
fin f
body (i ) = +
y
u + v + w2 ( rx fin (i ) + pz f (i ))
2 2
u 2 + v 2 + w2
7. Transform the apparent flow angles to the appropriate fin reference frame (designated as the LSCAV frame in the Anteon code)
8. Add fin actuator angle to compute final angle of attack of each fin
30
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 =
F = q F C Fx
(u 2 + v 2 + w 2 )b 2 fin
M = q F b fin C M x
C Fy
C Fz CM y
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
F fin (1) = Fi (1)
i =1 N fin
N fin
Equation 27
N fin
N fin
N fin
Equation 28
N fin
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
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 0.5 F f in 0 -0.5
x 10
-15
-10
-5
10
15
20
-15
-10
-5
10
15
20
(deg)
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 This type of effect was representing the dominant fin forces and moments and is the result of different amounts of cavitation that can occur for various angles of attack. illustrated in Figures 13-15. Similar comparisons can be made of the test shown in Figure 19.
32
1 0.5 F f in 0 -0.5
x 10
-15
-10
-5
10
15
20
Mx My Mz -15 -10 -5 0 5 10 15 20
(deg)
33
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.
The planing hull skims along the surface of the water whereas the displacement hull always forces water around it. This skimming along the waters 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
In the two possible motion schemes the objects 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 models 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)
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 Masters 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
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.
37
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 2
rh + h plane
2 h plane
rh + 2h plane h plane + p
Equation 30
uc = us = Cd = 2 rh
S w = 4rh
p
tan plane
[(1 + u )arctan u
2 c
uc +
[(
]
Equation 31
F f = 1 u 2 cos 2 plane S w C d 2
39
where u is the forward velocity state and the moments are assumed to be negligible.
Equation 32 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.
40
F plane
Equation 34
M plane
Equation 35
41
x 10 3
2.5
|F|
1.5
0.5
0 0 10 20 30 40 50 Frequency (Hz) 60 70 80
42
distribution of the mass about a certain axis represents the bodys resistance to rotational motion about that axis.
m=
body
dm
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 1 r dm m body
rG =
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
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 =
Equation 36
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
body
2 x
dm =
body
+ z 2 dm
Equation 37
In a similar fashion, the mass moments of inertia about the y and z axes are defined as
J yy = J zz =
body
2 y
dm = dm =
body
+ z 2 dm + y 2 dm
Equation 38
body
2 z
body
Equation 39
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 = J yz = J xz =
body
xy dm yz dm
Equation 40
Equation 41
body
body
xz dm
Equation 42
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 sections center of gravity to the origin and then performing the following calculation (parallel axis theorem).
2 d y + d z2 + mi d x d y dxdz
J Bi = J Gi
dxd y d x2 + d z2 d ydz
dxdz d ydz 2 d x2 + d y
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.
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 33 0
~ 0 & 0 mI 33 = ~ 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:
0 c b ~= c 0 a b a 0
= [a b c ]
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 33 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
ry
rz
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 33 = 0 cg ~ r = R I 33
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
Equation 48
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 users 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 todays 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.
(rad)
0 -0.01 -0.02
t = t = t = t =
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6
82.28 82.26 u (m/s) 82.24 82.22 82.2 82.18 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
0.2
0.4
0.6
0.8
1.4
1.6
1.8
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 torpedos 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
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
Equation 51
y n + y = g (x n + x, U n + U ) 52
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 Taylors 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 =0
Equation 53
x xn t 0
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 = which is equal to
Equation 54
& x = Ax + B y = Cx + D
Equation 55
when (xn, n) is equal to (0,0) and the matrices A, B, C, and D are the respective Jacobians.
& 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
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 2 Turning Rate (G's) 1 1 0 -1 -2 -3 -4 -5 60 5 6 nom 2 3
65
70
75
80 85 Velocity (m/s)
90
95
100
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 gs) as well as six other trim conditions indicated in Figure 29. Whats 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.
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 Taylors 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.
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.
15
57
Some useful tools to analyze BIBO stability and full nonlinear stability include phase-plane analysis and simulation.
58
Real 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
Imaginary 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
Frequency 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
Damping 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
The highlighted values in Table 4 and the xs in the right half plane (RHP) of Figure 30 correspond to the unstable poles.
59
Open-Loop Pole-Zero Map 25 0.32 20 0.44 15 0.6 10 Imaginary Axis 5 0 -5 -10 0.6 -15 -20 0.44 0.32 -25 -10 -8 0.23 -6 0.16 -4 Real A xis 0.1 -2 0.05 0 2 4 15 20 0.84 10 5 0.23 0.16 0.1 0.05 20 15
0.84
5 10
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
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 (since it already has real components) shown in Figure 30.
(rad)
82.25
2 0 -2
(rad)
-4 -6 -8 -10 -12 0 1 2 3
-0.2
0.1 0.08
0.04
0.15
0.02 r (rad/sec) 0 1 Time (sec) 2 3 0.06 0.04 0.02 -0.02 0 -0.02 -0.04 z (m/s)
0.1
(rad)
0.05
1 Time (sec)
-0.05
1 Time (sec)
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 doesnt 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.
82.28 82.26 82.24 82.22 82.2 82.18 Nonlinear Linear 0 0.5 1 1.5 2 p (rad/sec)
(rad)
-0.5
-0.5
-1
0.5
1.5
-1
0.5
1.5
(rad)
-0.5
-1
0.5
1.5
-0.2
0.5
1.5
(rad)
-0.5
-0.5
-0.5
-1
0.5
1 Time (sec)
1.5
-1
0.5
1 Time (sec)
1.5
-1
0.5
1 Time (sec)
1.5
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.
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
for all perturbed plants about the nominal model up to the worst-case model uncertainty.
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. response. Reconsider the linear, time invariant system from Equation 55 whose input-output On the other hand, a small change in a parameters in a state-space description can result in an entirely different system
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.
1 1
S = (I + L ) and T = L(I + L ) , where L is the transfer function around the loop as seen
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 Typical representations of closed-loop systems in block diagram form are shown
input of the plant are LI=KG or (LI=KGmG), SI=(I+LI)-1 and TI=LI(I+LI)-1. in Figure 33; case (a) is a one degree-of-freedom (1DOF) feedback loop and (b) is the general structure.
65
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.
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 = yr
where r denotes the reference point of the output.
Equation 63
and for a 1DOF controller and substitution of Equation 62 into Equation 64 yields
(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 T
y = GK (r y n ) + G d d
Equation 65
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
Equation 68
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
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 MATLABs 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.
69
Closed-Loop Pole-Zero Map 30 0.64 0.8 20 0.5 0.38 0.28 0.17 0.08 25 20 15 10 0.94 Imaginary Axis 10 5 0 5 -10 0.94 10 15 -20 0.8 0.64 -30 -30 -25 -20 0.5 -15 Real A xis 0.38 -10 0.28 0.17 -5 0.08 20 25 0
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
x 10
-3
15
x 10
-3
Nonlinear Linear 10
(rad)
82.249
0 82.248 0
-3
0.5
1.5
0.5
1.5
-5
0
-5
0.5
1.5
x 10
0.2 Nonlinear Linear 0.1 0 q (rad/sec) v (m/s) -0.1 -0.2 -0.3 -0.4 Nonlinear Linear
x 10
Nonlinear Linear
(rad)
0 x 10
-3
0.5
1.5
-0.5
0 x 10
-3
0.5
1.5
0 x 10
-3
0.5
1.5
8 6 4 2 0 -2
Nonlinear Linear
z (m/s)
(rad)
0.5
1 Time (sec)
1.5
0.5
1 Time (sec)
1.5
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 doesnt 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.
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 )
B
Equation 69
which is the pseudo inverse of the product of CT and Bol where Aol and Bol are the
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 y = CT x
Equation 70
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 20 0.44 15 0.6 10 Imaginary Axis 5 0 -5 -10 0.6 -15 -20 0.44 0.32 -25 -10 -8 0.23 -6 0.16 -4 Real A xis 0.1 -2 0.05 0 2 4 15 20 0.84 10 5 0.23 0.16 0.1 0.05 20 15
0.84
5 10
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 designers 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. 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. In other cases limited valve resolution may cause input
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
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.
76
Open-Loop Pole-Zero Map f or parameter 25 0.36 20 15 0.66 10 0.86 Imaginary Axis 5 0 -5 0.86 -10 0.66 -15 -20 -25 -12 15 0.48 0.36 -10 -8 0.26 -6 0.18 -4 Real A xis 0.11 -2 0.06 0 2 4 20 10 5 0.48 0.26 0.18 0.11 0.06 20 15 Nominal Minimum Maximum
5 10
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.
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,
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. Helmerssons 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 (Kanes 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 Anteons 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
x 10 2.5
-3
Fx
1.5
0.8 0.75
0.01 0.005 Mx 0 -0.005 -0.01 2 1 0 0.7 -1 0.65 -2 0.6 0.55 Imm 0.75 0.8
Figure 39: Map of the x-Component of the Fin Force and Moment Coefficients
84
-3
0.01
0.005
My
-0.005
-2
Figure 40: Map of the y-Component of the Fin Force and Moment Coefficients
85
0.02 0.01 Fz 0 -0.01 2 -0.02 0.55 0.6 0.65 0.7 0.75 0.8 Imm -2 -1 0 1
x 10 -2 -4 -6 Mz -8 -10
-4
Figure 41: Map of the z-Component of the Fin Force and Moment Coefficients
86
x 10
-3
0.6 -2
-1.5
-1
-0.5
0.5
1.5
8 6 4 2 Mx 0 -2 -4 -6
x 10
-3
-8 -2
-1.5
-1
-0.5
0.5
1.5
87
x 10
-3
-0.2
-0.4
Fy
-0.6
-0.8
-1
-1.2 -2
-1.5
-1
-0.5
0.5
1.5
8 6 4 2 My 0 -2 -4 -6
x 10
-3
-8 -2
-1.5
-1
-0.5
0.5
1.5
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.5
1.5
-2 -3 -4 -5 -6 Mz -7 -8 -9 -10
x 10
-4
-11 -2
-1.5
-1
-0.5
0.5
1.5
89
x 10
-3
0.6 0.55
0.6
0.65 Imm
0.7
0.75
0.8
8 6 4 2 Mx 0 -2 -4 -6
x 10
-3
-8 0.55
0.6
0.65 Imm
0.7
0.75
0.8
90
x 10
-3
-0.2
-0.4
Fy
-0.6
-0.8
-1
-1.2 0.55
0.6
0.65 Imm
0.7
0.75
0.8
8 6 4 2 My 0 -2 -4 -6
x 10
-3
-8 0.55
0.6
0.65 Imm
0.7
0.75
0.8
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 Imm
0.7
0.75
0.8
-2 -3 -4 -5 -6 Mz -7 -8 -9 -10
x 10
-4
-11 0.55
0.6
0.65 Imm
0.7
0.75
0.8
92
2.5
x 10
-3
Fx 1.5 1 -2
-1.5
-1
-0.5
0.5
1.5
8 6 4 2 Mx 0 -2 -4 -6
x 10
-3
-8 -2
-1.5
-1
-0.5
0.5
1.5
93
-2
x 10
-4
-4
-6 Fy -8 -10 -12 -2
-1.5
-1
-0.5
0.5
1.5
8 6 4 2 My 0 -2 -4 -6
x 10
-3
-8 -2
-1.5
-1
-0.5
0.5
1.5
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.5
1.5
-3 -4 -5 -6 Mz -7 -8 -9 -10
x 10
-4
-11 -2
-1.5
-1
-0.5
0.5
1.5
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.5
1.5
-3 -4 -5 -6 Mz -7 -8 -9 -10
x 10
-4
-11 -2
-1.5
-1
-0.5
0.5
1.5
96
2.5
x 10
-3
Fx 1.5 1 0.55
0.6
0.65 Imm
0.7
0.75
0.8
8 6 4 2 Mx 0 -2 -4 -6
x 10
-3
-8 0.55
0.6
0.65 Imm
0.7
0.75
0.8
97
-2
x 10
-4
-4
0.6
0.65 Imm
0.7
0.75
0.8
8 6 4 2 My 0 -2 -4 -6
x 10
-3
-8 0.55
0.6
0.65 Imm
0.7
0.75
0.8
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 Imm
0.7
0.75
0.8
-3 -4 -5 -6 Mz -7 -8 -9 -10
x 10
-4
-11 0.55
0.6
0.65 Imm
0.7
0.75
0.8
99
Appendix B
This appendix contains the Simulink and MATLAB code used to simulate the model and compute all appropriate forces.
100
Phi Theta 0 0 0 0 0 0 0 -9.8100E+00 9.8100E+00 0 0 0 0 0 0 0 0 0 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
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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 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
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
25
20
15
10
0.8 10
V V V V V V
= 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
0.94
Imaginary Axis
155
0.94 5 0.8 10 15 0.64 20 0.5 -10 0.38 0.28 -5 Real A xis 0.17 0.08 0
-5
-10
-15
-20
-25 -15
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 15 0.66 10 0.86 Imaginary Axis 5 0 -5 0.86 -10 0.66 -15 -20 -25 -12 15 0.48 0.36 -10 -8 0.26 -6 0.18 -4 Real A xis 0.11 -2 0.06 0 2 4 20 10 5 0.48 0.26 0.18 0.11 0.06 20 15 Nominal Minimum Maximum
5 10
Open-Loop Pole-Zero Map for Cd 0 25 0.36 20 15 0.66 10 0.86 Imaginary Axis 5 0 -5 0.86 -10 0.66 -15 -20 -25 -12 15 0.48 0.36 -10 -8 0.26 -6 0.18 -4 Real A xis 0.11 -2 0.06 0 2 4 20 10 5 0.48 0.26 0.18 0.11 0.06 20 15 Nominal Minimum Maximum
5 10
157
Open-Loop Pole-Zero Map f or Fin Coef f icient Index 1 25 0.32 20 0.44 15 0.6 10 5 0 -5 -10 0.6 -15 -20 0.44 0.32 -25 -10 -8 0.23 -6 0.16 -4 Real A xis 0.1 -2 0.05 0 2 4 15 20 0.84 10 5 0.23 0.16 0.1 0.05 20 15 Nominal Minimum Maximum
Imaginary Axis
0.84
5 10
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 20 0.44 15 0.6 10 5 0 -5 -10 0.6 -15 -20 0.44 0.32 -25 -10 -8 0.23 -6 0.16 -4 Real A xis 0.1 -2 0.05 0 2 4 15 20 0.84 10 5 0.23 0.16 0.1 0.05 20 15
Imaginary Axis
0.84
5 10
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 20 0.44 15 0.6 10 5 0 -5 -10 0.6 -15 -20 0.44 0.32 -25 -10 -8 0.23 -6 0.16 -4 Real A xis 0.1 -2 0.05 0 2 4 15 20 0.84 10 5 0.23 0.16 0.1 0.05 20 15 Nominal Minimum Maximum
Imaginary Axis
0.84
5 10
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 15 0.66 10 0.86 Imaginary Axis 5 0 -5 0.86 -10 0.66 -15 -20 -25 -12 15 0.48 0.36 -10 -8 0.26 -6 0.18 -4 Real A xis 0.11 -2 0.06 0 2 4 20 10 5 0.48 0.26 0.18 0.11 0.06 20 15 Nominal Minimum Maximum
5 10
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 20 0.44 15 0.6 10 5 0 -5 -10 0.6 -15 -20 0.44 0.32 -25 -10 -8 0.23 -6 0.16 -4 Real A xis 0.1 -2 0.05 0 2 4 15 20 0.84 10 5 0.23 0.16 0.1 0.05 20 15 Nominal Minimum Maximum
Imaginary Axis
0.84
5 10
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 20 0.44 15 0.6 10 5 0 -5 -10 0.6 -15 -20 0.44 0.32 -25 -10 -8 0.23 -6 0.16 -4 Real A xis 0.1 -2 0.05 0 2 4 15 20 0.84 10 5 0.23 0.16 0.1 0.05 20 15 Nominal Minimum Maximum
Imaginary Axis
0.84
5 10
Figure 49: System Poles for Range of Fin Moment Coefficient (z-component)
160