Contents
% Configures the settings for, runs, and saves an F-16 simulation. % Within this script, the user inputs all initial conditions and autopilot % instructions for a given simulation scenario. This is the only function % that must be to complete a simulation and save the results. The scripts % MakeAnimation and MakePicture can then be run and operate from the % results in the workspace. % % Note: This version of MAIN is a barebones sample of what is required to % run a single simulation. Results are printed to console, but not plotted. % % <a href="https://github.com/pheidlauf/AeroBenchVV">AeroBenchVV</a> % Copyright: GNU General Public License 2017 % % See also: RUNF16SIM, GETDEFAULTSETTINGS, MAKEANIMATION, MAKEPICTURE,
Set Initial Conditions
close all; clear; clc; powg = 9; % Power % Default alpha & beta alphag = deg2rad(2.1215); % Trim Angle of Attack (rad) betag = 0; % Side slip angle (rad) % Initial Attitude (for simpleGCAS) altg = 3500; Vtg = 540; % Airspeed (ft/s) phig = (pi/2)*0.5; % Roll angle from wings level (rad) thetag = (-pi/2)*0.8; % Pitch angle from nose level (rad) psig = -pi/4; % Yaw angle from North (rad) t_vec = 0:0.01:15; % Time vector for simulation output
Set Flight & Ctrl Limits (for pass-fail conditions)
[flightLimits,ctrlLimits,autopilot] = getDefaultSettings()
autopilot.simpleGCAS = true; % Run GCAS simulation
flightLimits =
altitudeMin: 0
altitudeMax: 10000
maneuverTime: 15
NzMax: 9
NzMin: -2
psMaxAccelDeg: 500
vMin: 300
vMax: 900
alphaMinDeg: -10
alphaMaxDeg: 45
betaMaxDeg: 30
ctrlLimits =
ThrottleMax: 1
ThrottleMin: 0
ElevatorMaxDeg: 25
ElevatorMinDeg: -25
AileronMaxDeg: 21.500000000000000
AileronMinDeg: -21.500000000000000
RudderMaxDeg: 30
RudderMinDeg: -30
MaxBankDeg: 60
NzMax: 6
NzMin: -1
autopilot =
title: 'Default Simulation'
basicSpeedControl: 1
steadyLevelFlightHold: 0
levelTurnControl: 0
simpleGCAS: 0
turnToHeading: 0
timeTriggeredControl: 0
Build Initial Condition Vectors
state = [VT, alpha, beta, phi, theta, psi, P, Q, R, pn, pe, h, pow]
initialState = [Vtg alphag betag phig thetag psig 0 0 0 0 0 altg powg];
orient = 4; % Orientation for trim
analysisOn = true;
printOn = true;
plotOn = true;
Select Desired F-16 Plant
Polynomial
[output, passFail] = RunF16Sim(initialState, t_vec, orient, 'morelli',... flightLimits, ctrlLimits, autopilot, analysisOn, printOn, plotOn);
------------------------------------------------------------
F-16 Decoupled LQR Controller for Nz, P_s, and Ny+r tracking
------------------------------------------------------------
Operator Inputs =
Vt h gamma psidot thetadot
540.00000 3500.00000 0 0 0
Trim Orientation Selected: Steady Pull Up
Inititial Conditions =
Vt alpha beta phi theta
540.00000 0.03703 0 0.78540 -1.25664
psi p q r pn
-0.78540 0 0 0 0
pe alt pow
0 3500.00000 9.00000
Control Guess =
throttle elevator aileron rudder
0.20000 0 0 0
------------------------------------------------------------
Equilibrium / Trim Conditions
State Equilibrium =
Vt alpha beta phi theta
540.00000 0.03441 0 0 0.03441
psi p q r pn
0 0 0 0 0
pe alt pow
0 3500.00000 10.35403
Control Equilibrium =
throttle elevator aileron rudder
0.15944 -0.77048 0 0
------------------------------------------------------------
Running jacobFun.m
Linearized F-16 SS Model
lin_f16 =
A =
Vt alpha beta phi theta
Vt -0.01658 10.6 -8.377e-06 -2.766e-06 -32.17
alpha -0.0002195 -0.9855 3.055e-06 -1.488e-06 -1.025e-05
beta 0 0 -0.3124 0.05954 0
phi 0 0 0 0 0
theta 0 0 0 0 0
psi 0 0 0 0 0
p 0 0 -31.6 0 0
q 6.662e-13 0.858 0 0 0
r 0 0 8.904 0 0
pn 1 -6.607e-06 0 -1.592e-06 -6.607e-06
pe 0 0 540 -18.58 0
alt -6.579e-16 -540 0 4.64e-06 540
pow 0 0 0 0 0
psi p q r pn
Vt 0 0 -0.4842 0 0
alpha 0 0 0.9146 0 0
beta 0 0.03387 0 -0.9925 0
phi 0 1 0 0.03443 0
theta 0 0 1 0 0
psi 0 0 0 1.001 0
p 0 -3.574 0.0002627 0.6331 0
q 0 -8.795e-06 -1.045 -0.002858 0
r 0 -0.02249 0.002539 -0.4621 0
pn 0 0 0 0 0
pe 540 0 0 0 0
alt 0 0 0 0 0
pow 0 0 0 0 0
pe alt pow
Vt 0 3.81e-05 0.3717
alpha 0 1.774e-06 -2.37e-05
beta 0 0 0
phi 0 0 0
theta 0 0 0
psi 0 0 0
p 0 0 0
q 0 -5.338e-15 0
r 0 0 0
pn 0 0 0
pe 0 0 0
alt 0 0 0
pow 0 0 -1
B =
Throttle Elevator Aileron Rudder
Vt 0 0.1848 0 0
alpha 0 -0.002085 0 0
beta 0 0 0.0002863 0.0007816
phi 0 0 0 0
theta 0 0 0 0
psi 0 0 0 0
p 0 0 -0.765 0.1376
q 0 -0.1833 0 0
r 0 0 -0.03332 -0.06472
pn 0 0 0 0
pe 0 0 0 0
alt 0 0 0 0
pow 64.94 0 0 0
C =
Vt alpha beta phi theta
Az 0.003698 16.9 -5.296e-08 0 0
q 0 0 0 0 0
alpha 0 1 0 0 0
theta 0 0 0 0 1
Vt 1 0 0 0 0
Ay 0 0 -5.24 0 0
p 0 0 0 0 0
r 0 0 0 0 0
beta 0 0 1 0 0
phi 0 0 0 1 0
psi p q r pn
Az 0 -4.1e-08 0.9454 -0.001336 0
q 0 0 1 0 0
alpha 0 0 0 0 0
theta 0 0 0 0 0
Vt 0 0 0 0 0
Ay 0 -0.008953 0 0.1154 0
p 0 1 0 0 0
r 0 0 0 1 0
beta 0 0 0 0 0
phi 0 0 0 0 0
pe alt pow
Az 0 -2.979e-05 0
q 0 0 0
alpha 0 0 0
theta 0 0 0
Vt 0 0 0
Ay 0 0 0
p 0 0 0
r 0 0 0
beta 0 0 0
phi 0 0 0
D =
Throttle Elevator Aileron Rudder
Az 0 -0.05062 0 0
q 0 0 0 0
alpha 0 0 0 0
theta 0 0 0 0
Vt 0 0 0 0
Ay 0 0 0.004801 0.01311
p 0 0 0 0
r 0 0 0 0
beta 0 0 0 0
phi 0 0 0 0
Name: Linearized F-16 SS Model
Continuous-time state-space model.
Decoupled LQR Controller Gains =
alpha q Nz_i beta p
elevator -156.88015 -31.03701 -38.72983 0 0
aileron 0 0 0 38.02751 -5.65497
rudder 0 0 0 17.56400 1.58391
r ps_i Ny_r_i
elevator 0 0 0
aileron -14.08804 -34.06416 -9.95406
rudder -41.43509 6.29550 -53.86016
------------------------------------------------------------
Running Nonlinear Simulation in ODE45
Simulation Complete
Time to simulate (MM:SS.ms):
00:01.820
Begin back-calculation of controls
Back-Calculation of Controls Complete
Time to calculate (MM:SS.ms):
00:10.504
Begin struct generation & pass/fail analysis
Pass/Fail Analysis Complete
Time to calculate (MM:SS.ms):
00:00.024
----------------------------------------------------------
RESULTS:
Min & Max Values:
Min Altitude: 96.178 ft
Altitude Lost: 3403.822 ft
Min Airspeed: 540.000 ft/sec
Max Airspeed: 639.104 ft/sec
Max Down Force: 5.222 g's
Min Down Force: -0.426 g's
Max Side Force: 0.061 g's
Max Roll Accel: 233.522 deg/sec^2
Maneuver Event Times:
Maneuver Start: 2.000 sec
Checkpoint 1: 3.395 sec
Maneuver Complete: 8.000 sec
Final Time: 15.000 sec
(if Checkpoint 2 < Checkpoint 1, it is due to ODE45
stepping backwards in time)
F-16 Attitude at Start:
Roll (phi): 45.000 deg
Pitch (theta): -72.000 deg
Yaw (psi): -45.000 deg
F-16 Attitude at End:
Roll (phi): -0.000 deg
Pitch (theta): 2.249 deg
Yaw (psi): -33.514 deg
Pass Fail Conditions:
stable: 1
airspeed: 1
alpha: 1
beta: 1
Nz: 1
psMaxAccelDeg: 1
altitude: 1
maneuverTime: 1
----------------------------------------------------------
Begin plotting
Plot Generation Complete
Time to calculate (MM:SS.ms):
00:03.280
Save results
Save output to workspace
save('SimResults.mat','output','passFail'); disp('Script Complete');
Script Complete