MegAWES

Contents:

  • Readme
  • MegAWES (3DoF & 6DoF kite dynamics)
  • Functions and Simulink models
    • Functions
      • Pre-simulation
      • Post-simulation & Extra’s
    • Main simulink model
    • Simulink parts
      • Environment
      • Flight controller
        • Flightpaths
      • Ground station
      • Tether dynamics
      • Offline visualisation
MegAWES
  • »
  • Functions and Simulink models
  • View page source

Functions and Simulink models¶

Functions¶

Pre-simulation¶

Get_simulation_params(windspeed, Kite_DOF)¶

Initialise simulation parameters for the complete system and set optimised parameters

Parameters
  • windspeed – Wind speed at which the parameters should be read

  • Kite_DOF – Degrees of freedom of the kite (3 or 6)

Returns

  • act - Actuator, aileron elevator and rudder data

  • base_windspeed - Wind speed at max altitude where speed stays constant

  • constr - Aircraft manoeuvre and winch constraints

  • ENVMT - Environmental parameters

  • Lbooth - Flight path parameters

  • loiterStates - Initial loiter parameters (power cycle initialisation)

  • DE2019 - Aircraft parameters

  • simInit - Simulation initialisation parameters

  • T - Tether dimensions and material properties

  • winchParameter - Winch dynamic parameters

  • params - Flight/Winch controller parameters

Example:
[act, base_windspeed, constr, DE2019, ENVMT, Lbooth, …
loiterStates, params, simInit, T, winchParameter] = …
get_simulation_params(22, 6)
Other m-files required: initAllSimParams_DE2019.m
Subfunctions: None
MAT-files required: None
Revision

17-March-2021

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

PreSim_startup()¶

Set search path, simulink cache folder and clear variables

Returns

None

Example:

PreSim_startup();

Other m-files required: None
Subfunctions: None
MAT-files required: None
Revision

17-September-2020

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

initAllSimParams_DE2019(Kite_DOF)¶

Initialise simulation parameters for the complete system

Parameters

Kite_DOF – Degrees of freedom of the kite (3 or 6)

Returns

  • act - Actuator, aileron elevator and rudder data

  • base_windspeed - Wind speed at max altitude where speed stays constant

  • constr - Aircraft manoeuvre and winch constraints

  • ENVMT - Environmental parameters

  • Lbooth - Flight path parameters

  • loiterStates - Initial loiter parameters (power cycle initialisation)

  • DE2019 - Aircraft parameters

  • simInit - Simulation initialisation parameters

  • T - Tether dimensions and material properties

  • winchParameter - Winch dynamic parameters

  • params - Flight/Winch controller parameters

Example:
[act, base_windspeed, constr, ENVMT, Lbooth, …
loiterStates, DE2019, simInit, T, winchParameter,params] = initAllSimParams_DE2019()
Other m-files required: transformFromWtoO.m, transformFromOtoW.m, getPointOnBooth.m
Subfunctions: None
MAT-files required: Lib/Common/DE2019_params.mat, Lib/6DoF/Control_allocation_V60.mat, Lib/Common/winddata_Lidar_Avg.mat
Revision

22-June-2021

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

initAllStructs(model, base_windspeed, constr, ENVMT, Lbooth, loiterStates, DE2019, simInit, T, winchParameter, params, act)¶

Initialise simulation input variable.

Parameters
  • model – simulink model name (without .slx extension).

  • base_windspeed – Wind speed at max altitude where speed stays constant.

  • constr – Aircraft manoeuvre and winch constraints.

  • ENVMT – Environmental parameters.

  • Lbooth – Flight path parameters.

  • loiterStates – Initial loiter parameters (power cycle initialisation).

  • DE2019 – Aircraft parameters.

  • simInit – Simulation initialisation parameters.

  • T – Tether dimensions and material properties.

  • winchParameter – Winch dynamic parameters.

  • params – Flight/Winch controller parameters.

  • act – Actuator, aileron elevator and rudder data.

Returns

  • simIn - Simulation input variable containing all parameters needed by simulink.

Example:
simIn = initAllStructs(‘Dyn_6DoF_v2_0_r2019b’, base_windspeed, constr, …
ENVMT, Lbooth, loiterStates, DE2019, simInit, T, winchParameter,params,act)
Other m-files required: transformFromWtoO.m, transformFromOtoW.m, getPointOnBooth.m
Subfunctions: None
MAT-files required: Lib/Common/DE2019_params.mat, Lib/6DoF/Control_allocation_V60.mat, Lib/Common/winddata_Lidar_Avg.mat
Revision

22-June-2021

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

Post-simulation & Extra’s¶

Video_from_simOut(filename, simOut, simInit, ENVMT, DE2019)¶

Create an animation object or video from sim output

Parameters
  • filename – Name of the video file, including extension If [] is provided, no video file is created

  • simOut – Simulink simulation output

  • simInit – Simulation initialisation parameters

  • ENVMT – Environmental parameters

  • DE2019 – Aircraft parameters

Returns

  • noVar - Video file

Example:
Video_from_simOut(‘test.mp4’, simOut,simInit,ENVMT,DE2019)

Video_from_simOut([], simOut,simInit,ENVMT,DE2019)
Other m-files required: animate_flightpath.m, extractSignalOfLastCycle2.m, extractSignalOfLastCycle3D.m, extractSignalOfLastCycle_nD.m
Subfunctions: None
MAT-files required: None
Revision

16-March-2021

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

animate_flightpath(FileName, P_mech_last_cycle, Path_last_cycle, EulAng_last_cycle, Tether_last_cycle_x, Tether_last_cycle_y, Tether_last_cycle_z, ENVMT, Wingspan, Tend, fps)¶

Create flight path animation

Parameters
  • FileName – Name of the video file, including extension, If [] is provided, no video file is created.

  • P_mech_last_cycle – Instantaneous power.

  • Path_last_cycle – Aircraft position.

  • EulAng_last_cycle – Aircraft orientation angles.

  • Tether_last_cycle_x – Tether particle x positions.

  • Tether_last_cycle_y – Tether particle y positions.

  • Tether_last_cycle_z – Tether particle z positions.

  • ENVMT – Environment data for wind direction.

  • Wingspan – Kite wing span.

  • Tend – Video length.

  • fps – Video frames per second.

Returns

  • noVar - Video file

  • FileName - The video file name (if created) else empty array

Example:
animate_flightpath_torque(‘test.mp4’,P_mech_last_cycle,…
Path_last_cycle,EulAng_last_cycle,Tether_last_cycle_x,…
Tether_last_cycle_y,Tether_last_cycle_z,ENVMT,45,30);

animate_flightpath_torque([],P_mech_last_cycle,…
Path_last_cycle,EulAng_last_cycle,Tether_last_cycle_x,…
Tether_last_cycle_y,Tether_last_cycle_z,ENVMT,45,30);
Other m-files required: animation_aircraft.m, animation_tether.m, animation_simtime.m, animation_colorbar.m
Subfunctions: None
MAT-files required: None
Revision

28-September-2020

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

animation_aircraft(Path_last_cycle, EulAng_last_cycle, windDir, index_set, scale, Tend, fps, t)¶

Animate aircraft position

Parameters
  • Path_last_cycle – Aircraft position

  • EulAng_last_cycle – Aircraft orientation angles

  • windDir – Wind direction

  • index_set – Array containing the indices of the dataset that should be used

  • scale – Aircraft illustration scale (actual scale/1.2886)

  • Tend – Video length

  • fps – Frames per second

  • t – animation time at particular step, provided by fanimator()

Returns

  • p - Aircraft plot handle

Example:
fanimator(axes1,@animation_aircraft,Path_last_cycle,EulAng_last_cycle,…
ENVMT.windDirection_rad,Tend,fps,t,’AnimationRange’,[0 Tend],’FrameRate’,fps)
Other m-files required: None
Subfunctions (bottom): drawVehicleBody2, rotate_PhiThetaPsi, translate_3D
MAT-files required: plane_image.mat
Revision

17-September-2020

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

animation_colorbar(Power, index_set, Tend, fps, t)¶

Animate instantaneous power on colorbar

Parameters
  • Path_last_cycle – Aircraft position

  • index_set – Array containing the indices of the dataset that should be used

  • Tend – Video length

  • fps – Frames per second

  • t – animation time at particular step, provided by fanimator()

Returns

  • handleLine - Line moving over colorbar plot handle

Example:
h_axes = axes(‘Parent’,fig_pow,’position’, cb.Position, ‘ylim’, …
cb.Limits, ‘color’, ‘none’, ‘visible’,’off’);
fanimator(h_axes,@animation_colorbar,Power,Tend,…
fps,t,’AnimationRange’,[0 Tend],’FrameRate’,fps)
Other m-files required: None
Subfunctions: None
MAT-files required: None
Revision

17-September-2020

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

animation_simtime(Path_last_cycle, pos, index_set, Tend, fps, t)¶

Animate timer according to datapoint time

Parameters
  • Path_last_cycle – Aircraft position

  • Pos – timer position on figure

  • index_set – Array containing the indices of the dataset that should be used

  • Tend – Video length

  • fps – Frames per second

  • t – animation time at particular step, provided by fanimator()

Returns

  • handleTime - Textbox with simulation time plot handle

Example:
TimePos = [0.6*limitx(2), limity(2), limitz(2)];
fanimator(axes1,@animation_simtime,Path_last_cycle,TimePos,index_set,Tend,…
fps,t,’AnimationRange’,[0 Tend],’FrameRate’,fps)
Other m-files required: None
Subfunctions: None
MAT-files required: None
Revision

17-September-2020

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

animation_tether(Path_last_cycle, tether_last_cycle, index_set, Tend, fps, t)¶

Animate tether shape

Parameters
  • Path_last_cycle – Aircraft position

  • tether_last_cycle – Tether particle xyz positions

  • index_set – Array containing the indices of the dataset that should be used

  • Tend – Video length

  • fps – Frames per second

  • t – animation time at particular step, provided by fanimator()

Returns

  • handleParticles - Tether plot handle

Example:
fanimator(axes1,@animation_tether,Path_last_cycle,Tether_last_cycle,Tend,…
fps,t,’AnimationRange’,[0 Tend],’FrameRate’,fps)
Other m-files required: None
Subfunctions (bottom): drawParticleTether
MAT-files required: None
Revision

17-September-2020

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

exportToPreviousVersion(ModelName, Version)¶

Given simulink model is exported to a previous version.

If the model contains referenced models (separate .slx files)

these files are also tracked and exported to older versions. The Main simulink model is then adapted to refer to the files compatible in the same version.

Parameters
  • ModelName – Original model name

  • Version – Matlab version to export to

Returns

Simulink model exported to given version

Example:

exportToPreviousVersion(‘Dyn_PointMass_r2019b’,’R2015B’)

Other m-files required: None
Subfunctions: None
MAT-files required: None
Revision

28-September-2020

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

Main simulink model¶

The following image shows the root level of the simulink model. This shows how the different modules work together. This level is similar for both 3DoF and 6DoF simulations.

_images/simulink-diagram-984d4148277a1623c210155453486090189b4ded.png

Simulink parts¶

Environment¶

The following image shows the environment subsystem of the simulink model. This subsystem is similar for both 3DoF and 6DoF simulations. It is used to determine the wind speed at each tether particle and at the kite.

_images/simulink-diagram-9a5ab7a0f28303d99eaa823d293e428f8f5a893e.png

Flight controller¶

The following image shows the root level of the flight controller in the case of a 3DoF simulation.

_images/simulink-diagram-b6b311a45663d0eff0e2987e60c03ea3f35be575.png

The following image shows the root level of the flight controller in the case of a 6DoF simulation.

_images/simulink-diagram-596c9c4fa356fae5ebd83a3786be0f213e383144.png

Flightpaths¶

These functions are called by the PathFollowingController. Not all required functions are shown here. Some functions are only documented inside simulink.

calcCourse2ClosestPoint(p_VT_W, p_kite_W)¶

This function returns the desired course in the tangential plane.

Parameters
  • p_VT_W – An instance of this class.

  • p_kite_W – position of the kite in wind reference frame.

Returns

  • chi_K_des - the desired course

  • bearing_vec_W - vector pointing to the desired point

  • bearing_sign - vector sign

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Revision

28.08.2017

Author

Sebastian Rapp

calculateCommandedCourse2(t, delta_vec, delta, delta0, chi_parallel, L_sol, pos_W, v_w_vec, chi_tau_is)¶

This function returns the desired course

check sign with curve frame - y component is negative in this frame - delta Chi is positive and vice versa. add a predictive part to smooth highly curved paths.

Other m-files required: wrapCourseError.m
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

doRodriguesRotation(pos_W, p_target_W, v)¶

This function performs the Rodrigues Rotation on a vector

Parameters
  • pos_W – Kite position, used to define plane of rotation

  • p_target_W – Target position, used to define plane of rotation

  • v – Vector to rotate

Returns

  • vrot - Rotated vector

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

getChiDotGammaDotOK(windDirection_rad, lat, long, v_k_W, chi_tau_dot, r, chi_k, gamma_k, v_ideal, pos_W, gamma_tau, gamma_tau_dot)¶

This function returns the time derivative of the course and path angles

Parameters
  • windDirection_rad – Angle between the wind reference frame and the inertial reference frame around the z-axis.

  • lat – Latitude position of the kite.

  • long – Longtitude position of the kite.

  • v_k_W – Kite velocity in wind reference frame.

  • chi_tau_dot – Time derivative of the course angle in the tangential plane.

  • r – Distance between kite and ground station.

  • chi_k – Course angle in kinetic reference frame.

  • gamma_k – Path angle in kinetic reference frame.

  • v_ideal – Total kinetic velocity in wind reference frame.

  • pos_W – Position of the kite in wind reference frame.

  • gamma_tau – Path angle in the tangential plane.

  • gamma_tau_dot – Time derivative of the path angle in the tangential plane.

Returns

  • chi_dot - Course rate

  • gamma_dot - Path rate

Other m-files required: transformFromWtoO.m, transformFromWtoTau.m
Subfunctions: none
MAT-files required: none
Version

1.0

Revision

28.08.2017

Author

Sebastian Rapp

predictChiDotRequ(long, lat, v_w_vec, pos_W, p_C_W, t, DtDs, chi_parallel)¶

This function calculates the course rate in the tangential plane based on the path curvature

Parameters
  • long – Longtitude position of the kite.

  • lat – Latitude position of the kite.

  • v_w_vec – Kite velocity in wind reference frame.

  • pos_W – Position of the kite in wind reference frame.

  • p_C_W – Closest position on Lissajous figure.

  • t – Tangent at p_C_W.

  • DtDs – Derivative of the tangent with respect to the position on the Lissajous figure.

  • chi_parallel – Required course angle to reach p_C_W.

Returns

  • chi_tau_dot - Required course rate in the tangential plane

Other m-files required: transformFromWtoTau.m, doRodriguesRotation.m
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

transformFromAbar2B(mu_a, alpha, beta, vec_Abar)¶

This function transforms a vector between rotated aerodynamic reference frame and body reference frame.

Parameters
  • mu_a – Roll angle.

  • alpha – Pitch angle (Angle of Attack).

  • beta – Yaw angle.

  • vec_Abar – Vector in rotated aerodynamic reference frame.

Returns

  • vec_B - Vector in body reference frame.

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

transformFromAbartoO(chi_a, gamma_a, vec_Abar)¶

This function transforms a vector between rotated aerodynamic reference frame and inertial reference frame.

Parameters
  • chi_a – Course angle.

  • gamma_a – Path angle.

  • vec_Abar – Vector in rotated aerodynamic reference frame.

Returns

  • vec_O - Vector in inertial reference frame.

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

transformFromAtoB(alpha, beta, vec_A)¶

This function transforms a vector between aerodynamic reference frame and body reference frame.

Parameters
  • alpha – Pitch angle.

  • beta – Yaw angle.

  • vec_A – Vector in aerodynamic reference frame.

Returns

  • vec_B - Vector in body reference frame.

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

transformFromBtoA(alpha, beta, vec_B)¶

This function transforms a vector between body reference frame and aerodynamic reference frame.

Parameters
  • alpha – Pitch angle.

  • beta – Yaw angle.

  • vec_B – Vector in body reference frame.

Returns

  • vec_A - Vector in aerodynamic reference frame.

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

transformFromBtoAbar(mu_a, alpha, beta, vec_B)¶

This function transforms a vector between body reference frame and aerodynamic reference frame.

Parameters
  • mu_a – Roll angle.

  • alpha – Pitch angle.

  • beta – Yaw angle.

  • vec_B – Vector in body reference frame.

Returns

  • vec_Abar - Vector in rotated aerodynamic reference frame.

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

transformFromOtoAbar(chi_a, gamma_a, vec_O)¶

This function transforms a vector between inertial reference frame and rotated aerodynamic reference frame.

Parameters
  • chi_a – Course angle.

  • gamma_a – Path angle.

  • vec_O – Vector in inertial reference frame.

Returns

  • vec_Abar - Vector in rotated aerodynamic reference frame.

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

transformFromOtoW(windDirection_rad, vec_O)¶

This function transforms a vector between inertial reference frame and wind reference frame.

Parameters
  • windDirection_rad – Angle between the wind reference frame and the inertial reference frame around the z-axis.

  • vec_O – Vector in inertial reference frame.

Returns

  • vec_W - Vector in wind reference frame.

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

Note

Axis system is not only rotated around the z-axis but also also flipped upside down. \(Z_W = -Z_O\).

transformFromTautoW(long, lat, vec_tau)¶

This function transforms a vector in the tangential plane to the wind reference frame.

Parameters
  • long – Longtitude position of the kite.

  • lat – Latitude position of the kite.

  • vec_tau – Vector in the tangential plane.

Returns

  • vec_W - Vector in wind reference frame.

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

transformFromWtoO(windDirection_rad, vec_W)¶

This function transforms a vector between wind reference frame and inertial reference frame.

Parameters
  • windDirection_rad – Angle between the wind reference frame and the inertial reference frame around the z-axis.

  • vec_W – Vector in wind reference frame.

Returns

  • vec_O - Vector in inertial reference frame.

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

Note

Axis system is not only rotated around the z-axis but also also flipped upside down. \(Z_O = -Z_W\).

transformFromWtoTau(long, lat, vec_W)¶

This function transforms a vector in the wind reference frame to the tangential plane.

Parameters
  • long – Longtitude position of the kite.

  • lat – Latitude position of the kite.

  • vec_W – Vector in wind reference frame.

Returns

  • vec_tau - Vector in the tangential plane.

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

wrapCourseError(chi_ref, chi)¶

Wrapping of course angle error

The vectors are laying in the tangential plane attached to the current position on the small earth.

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

doNewtonIterationBooth2(s_old, Lem, pos_W, direction)¶

This function performs a newton iteration to find the closest point on the Lissajous figure from the kite position.

Parameters
  • s_old – Old Lissajous path parameter s (0≤s≤2π)

  • Lem – Lissajous figure dimension parameter structure.

  • pos_W – Position of the kite in wind reference frame.

  • direction – Flight direction on Lissajous.

Returns

  • s_new - New Lissajous path parameter s (0≤s≤2π).

  • exceedMaxIter - Returns 1 when maximum number of iterations (10) is exceeded.

Other m-files required: getBoothInfos2.m
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

getBoothInfos2(s_old, Lbooth, direction)¶

Calculate the tangent at path position s_old and its derivative.

Parameters
  • s_old – Old Lissajous path parameter s (0≤s≤2π)

  • Lbooth – Lissajous figure dimension parameter structure.

  • direction – Flight direction on Lissajous.

Returns

  • t - Tangent.

  • DtDs - Derivative of the tangent with respect to the position on the Lissajous figure.

  • L - Lemniscate of Booth

  • dLds - Derivative of the Lemniscate with respect to the position on the Lissajous figure.

  • q - Path in cartesian coordinates in the wind reference frame.

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

getPointOnBooth(a, b, phi, l_tether, s)¶

Calculate the tangent at path position s_old and its derivative.

Parameters
  • s_old – Old Lissajous path parameter s (0≤s≤2π)

  • Lbooth – Lissajous figure dimension parameter structure.

  • direction – Flight direction on Lissajous.

Returns

  • t - Tangent.

  • DtDs - Derivative of the tangent with respect to the position on the Lissajous figure.

  • L - Lemniscate of Booth

  • dLds - Derivative of the Lemniscate with respect to the position on the Lissajous figure.

  • q - Path in cartesian coordinates in the wind reference frame.

Other m-files required: updateBoothLemniscate.m
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

getTargetOnBoothNewton2(Lem, p_kite_W, c0, l_tether, direction)¶

This function calculates the closest point on the Lissajous figure from the kite position by means of newton iterations.

Parameters
  • Lem – Lissajous figure dimension parameter structure.

  • p_kite_W – Kite position in wind reference frame.

  • c0 – Old Lissajous path parameter s (0≤s≤2π).

  • l_tether – Current tether length.

  • direction – Flight direction on Lissajous.

Returns

  • sol - New Lissajous path parameter s (0≤s≤2π).

  • p_C_W - Closest position on Lissajous figure in wind reference frame.

Other m-files required: doNewtonIterationBooth2.m
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

updateBoothLemniscate(l_tether, Lbooth)¶

This function scales the Lissajous figure by tether length

Parameters
  • l_tether – Current tether length.

  • Lbooth – Lissajous figure dimension parameter structure.

Returns

  • Lem - Scaled Lissajous figure dimension parameter structure.

Other m-files required: none
Subfunctions: none
MAT-files required: none
Version

1.0

Author

Sebastian Rapp

Ground station¶

The following image shows the ground station subsystem of the simulink model. This subsystem is similar for both 3DoF and 6DoF simulations. Unfortunately, no image can be included of the state machine, however this can be viewed inside simulink. Basically the state machine determines in what flight mode the kite needs to be and what the tether force set point is corresponding to that mode.

_images/simulink-diagram-ad6ca5834357ed4e703a18da6fa44b52809c8028.png

Tether dynamics¶

The functions are described inside simulink. The following image shows the what the inputs and outputs are of the tether module. This subsystem is similar for both 3DoF and 6DoF simulations.

_images/simulink-diagram-91c89f8b3d3ada69afe2f9ac3185366f96e15a32.png

Offline visualisation¶

These functions are used to visualise the simulation output. They can be called by the user for each parameter being logged by simulink. These is done outside of the simulation itself, hence the word offline.

Offline_visualisation_power(P_mech_last_cycle, Path_last_cycle)¶

Plot power curve and flight path

Parameters
  • P_mech_last_cycle – Converged cycle timeseries of power

  • Path_last_cycle – Converged cycle timeseries of kite position

Returns

None

Example:

Offline_visualisation(P_mech_last_cycle,Path_last_cycle);

Other m-files required: enhance_plot.m
Subfunctions: none
MAT-files required: none
Revision

01-September-2020

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

Theoretical_Pcheck(simOut, constr, ENVMT, DE2019, simInit, T, params, fig_PO)¶

Theoretical check, add values to instantaneous power plot.

Parameters
  • simOut – Simulation output

  • constr – Aircraft manoeuvre and winch constraints

  • ENVMT – Environmental parameters

  • DE2019 – Aircraft parameters

  • simInit – Simulation initialisation parameters

  • T – Tether dimensions and material properties

  • params – Flight/Winch controller parameters

  • fig_PO – Instantaneous power figure (Offline_visualisation_power.m)

Returns

  • fig_PO - Instantaneous power plot of converged power cycle with theoretical power.

Other m-files required: Offline_visualisation_power.m(if fig_PO not given), extractSignalOfLastCycle_nD.m
Subfunctions: none
MAT-files required: none
Revision

14-April-2021

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

Note

  • Loyd peak power with cosine losses from cycle CL and CD,

  • Costello et al. average power from cycle CL and CD

enhance_plot(fontname, fontsize, linewid, markersiz, lgd)¶
Function to enhance MATLAB’s lousy text choices on plots. Sets the

current figure’s Xlabel, Ylabel, Title, and all Text on plots, plus the axes-labels to the “fontname” and “fontsize” input here where the defaults have been set to ‘times’ and 16. Also sets all plotted lines to “linewid” and all markers to size “markersiz”. The defaults are 2 and 8.

Parameters
  • fontname – (Optional,DEF=’TIMES’) FontName string to use MATLAB’s ugly default is ‘Helvetica’

  • fontsize – (Optional,DEF=16) FontSize integer to use MATLAB’s tiny default is 10

  • linewid – (Optional,DEF=2) LineWidth integer to use MATLAB’s skinny default is 0.5

  • markersiz – (Optional,DEF=8) MarkerSize integer to use MATLAB’s squinty default is 6

  • lgd –

    • (Optional, DEF=0)

    • if is 0, doesn’t change the legend

    • if is 1, changes only the lines on the legend

    • if is 2, changes both the lines and the text

    • if is 3, changes only the text for all inputs,

    • if pass 0, use default

    • if pass -1, use MATLAB’s default

Returns

  • vec_Abar - Vector in rotated aerodynamic reference frame.

Modifications
19-Feb-2002 J. Nelson - added linewid and markersiz to help squinting readers
20-Feb-2002 J. Nelson - added check for legend. If legend exists, increase the line and marker size, also increase the font to fontsize-2 (2 points smaller than title and labels)
25-Feb-2002 J. Nelson - added lgd (legend) input check to fix legend problems.
extractSignalOfLastCycle2(signal, sample_count_last_cycle, simInit)¶

Extract 1D data from last converged power cycle.

Parameters
  • signal – Full 1D timeseries simulation output.

  • sample_count_last_cycle – Simulation timeseries ‘sample_count_last_cycle’.

  • simInit – Simulation input structure ‘simInit’.

Returns

  • y - Extracted power cycle 1D timeseries.

Example:

P_mech_last_cycle = extractSignalOfLastCycle2(P_mech, cycle_signal_counter, simInit);

Other m-files required: none
Subfunctions: none
MAT-files required: none
Revision

December-2019

Authors

Sebastian Rapp, Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

extractSignalOfLastCycle3D(signal, sample_count_last_cycle, simInit)¶

Extract 3D data from last converged power cycle.

Parameters
  • signal – Full 3D timeseries simulation output.

  • sample_count_last_cycle – Simulation timeseries ‘sample_count_last_cycle’.

  • simInit – Simulation input structure ‘simInit’.

Returns

  • y - Extracted power cycle 3D timeseries.

Example:

Path_last_cycle = extractSignalOfLastCycle3D(pos_O, cycle_signal_counter, simInit );

Other m-files required: none
Subfunctions: none
MAT-files required: none
Revision

May-2020

Authors

Sebastian Rapp, Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

extractSignalOfLastCycle_nD(signal, sample_count_last_cycle, simInit)¶

Extract n-D data from last converged power cycle.

Parameters
  • signal – Full n-D timeseries simulation output,size= nx1xtimeseries

  • sample_count_last_cycle – Simulation timeseries ‘sample_count_last_cycle’

  • simInit – Simulation input structure ‘simInit’

Returns

  • y - Extracted power cycle n-D timeseries.

Example:

TetherX_last_cycle = extractSignalOfLastCycle_nD(Tether_x, cycle_signal_counter, simInit );

Other m-files required: none
Subfunctions: none
MAT-files required: none
Revision

January-2021

Author

Dylan Eijkelhof (d.eijkelhof@tudelft.nl)

Previous

© Copyright 2021, Delft University of Technology.

Built with Sphinx using a theme provided by Read the Docs.