uavWindTurbulence
Generate wind turbulence for UAV platform with discretized Von Kármán velocity spectra
Since R2024a
Description
The uavWindTurbulence
value object uses the discretized Von
Kármán spectral representation to generate turbulence for a UAV platform by passing
band-limited white noise through appropriate forming filters. You can choose the mathematical
representation of the Von Kármán turbulence from US Military Specification MIL-F-8785C,
MIL-HDBK-1797, and MIL-HDBK-1797B. For more information, see Algorithms.
The object discretizes the Von Kármán spectral representation with a rate similar to the
UAV scenario UpdateRate
property.
To simulate wind turbulence in a UAV scenario:
Create the
uavWindTurbulence
object and set its properties.Attach the wind model to a UAV platform by using the
addWind
function.Obtain the wind velocity from the UAV scenario by using the
windVelocity
function, and the wind angular rate using thewindAngularRate
while the UAV scenario is running.
Note
Simulating a UAV scenario that contains a uavWindTurbulence
object requires
Aerospace Toolbox.
Creation
Description
creates a
wind turbulence object with default property values.turbulenceWind
= uavWindTurbulence
specifies properties using one or more name-value arguments. For example,
turbulenceWind
= uavWindTurbulence(Name
=Value
)uavWindTurbulence(StartTime=10)
sets the wind start time to 10
seconds.
Properties
You can modify these value object properties before you add the
uavWindTurbulence
value object to the UAV platform using addWind
function.
StartTime
— Wind start time
0
(default) | nonnegative scalar
Wind start time, specified as a nonnegative scalar. This value is relative to the simulation start time of the UAV scenario. Units are in seconds
Example: 2
Data Types: double
StopTime
— Wind stop time
Inf
(default) | nonnegative scalar
Wind stop time, specified as a nonnegative scalar. This value is relative to the simulation start time of the UAV scenario. If specified as inf, the wind gust continues until the UAV scenario simulation ends. Units are in seconds
Example: 5
Data Types: double
Specification
— Military reference
"MIL-F-8785C"
(default) | "MIL-HDBK-1797"
| "MIL-HDBK-1797B"
Military reference, specified as"MIL-F-8785C"
,
"MIL-HDBK-1797"
, or "MIL-HDBK-1797B"
. The
military reference affects the application of turbulence scale lengths in the lateral
and vertical directions.
ModelType
— Angular rate signs
"Von Karman (+q +r)" (default) | "Von Karman (+q -r)" | "Von Karman (-q +r)"
Angular rate signs, specified as one of these options:
"Von Karman (+q +r)" — Positive vertical and lateral angular rate spectra.
"Von Karman (+q -r)" — Positive vertical and negative lateral angular rate spectra.
"Von Karman (-q +r)" — Negative vertical and positive lateral angular rate spectra.
Data Types: string
WindSpeedAt6m
— Wind speed at 6 meters above ground
15
(default) | nonnegative scalar
Wind speed at a height of 6 meters above ground, specified as a nonnegative scalar in m/s.
Data Types: double
WindDirectionAt6m
— Wind direction at 6 meters above ground
0
(default) | nonnegative scalar
Wind direction at a height of 6 meters above ground, specified as a nonnegative in degrees clockwise from north.
Data Types: double
ProbExceedanceHighAltitudeIntensity
— Probability of exceeding turbulence intensity
"10^-2 - Light"
(default) | "2x10^-1"
| "10^-1"
|
"10^-3 - Moderate"
| "10^-4"
| "10^-5 - Severe"
| "10^-6"
Probability of the turbulence intensity being exceeded, specified as
"2x10^-1"
, "10^-1"
, "10^-2 -
Light"
, "10^-3 - Moderate"
, "10^-4"
,
"10^-5 - Severe"
, or "10^-6"
Data Types: string
ScaleLengthAtMediumHighAltitude
— Turbulence scale length
762 (default) | positive scalar
Turbulence scale length above 2000 feet, specified as a real scalar. This length is assumed constant.
Data Types: double
WingSpan
— Wingspan
10 (default) | positive scalar
Wingspan, specified in meters.
Data Types: double
BandLimitedNoiseSampleTime
— Noise sample time
0.1 (default) | positive scalar
Noise sample time at which the unit variance white noise signal is generated, specified in seconds.
Noise sample time must be an integer multiple of the scene sample time.
In MATLAB®, the scene sample time is determined by
UpdateRate
property ofuavScenario
.In Simulink®, the scene sample time is determined by the Sample time property of UAV Scenario Configuration block
Data Types: double
RandomNoiseSeeds
— Noise seeds
[23341 23342 23343 23344] (default) | vector of the form [ug vg
wg pg]
Random noise seeds, specified as a vector of the form [ug vg wg pg] which generates the turbulence for each of the three velocity components and the roll rate.
Data Types: double
Examples
Generate Turbulence Wind in UAV Scenario
Create a UAV scenario with default parameters.
scene = uavScenario;
Create a UAV platform. Specify the trajectory to 80 meters north of scenario origin for 80 seconds.
distance = 80;
duration = 80;
platform = uavPlatform("UAV",scene,Trajectory=waypointTrajectory([0 0 -50;distance 0 -50],[0 duration]));
Create a turbulence wind object which starts at 20 seconds. Add the wind object to the UAV platform.
turbulenceWind = uavWindTurbulence(StartTime=20, BandLimitedNoiseSampleTime=1/scene.UpdateRate); addWind(platform,turbulenceWind);
Set up the scenario.
setup(scene); % Create arrays of zeros to store longitudinal, horizontal, and vertical wind velocity uw = zeros(scene.UpdateRate*duration, 1); vw = zeros(scene.UpdateRate*duration, 1); ww = zeros(scene.UpdateRate*duration, 1); % Create arrays of zeros to store x position of the UAV xpos = zeros(scene.UpdateRate*duration, 1); % Start a counter index idx = 1;
Run the scenario. Obtain the vertical wind velocity at each time step.
while scene.CurrentTime <= duration % Obtain resultant wind velocity vel = windVelocity(platform); % Obtain UAV position [motion,lla]=read(platform); % Obtain UAV X position xpos(idx) = motion(1); % Obtain wind velocities uw(idx) = vel(1); vw(idx) = vel(2); ww(idx) = vel(3); % Increment counter index idx = idx + 1; % Advance the scenario time step advance(scene); end
Plot the wind velocities against distance.
tiledlayout(3,1) nexttile plot(xpos,uw) title("Longitudinal Wind Velocity") xlabel("Distance (m)") ylabel("Wind Velocity (m/s)") nexttile plot(xpos,vw) title("Lateral Wind Velocity") xlabel("Distance (m)") ylabel("Wind Velocity (m/s)") nexttile plot(xpos,ww) title("Vertical Wind Velocity") xlabel("Distance (m)") ylabel("Wind Velocity (m/s)")
More About
Algorithms
According to the military references, turbulence is a stochastic process defined by velocity spectra. For an aircraft flying at a speed V through a frozen turbulence field with a spatial frequency of Ω radians per meter, the circular frequency ω is calculated by multiplying V by Ω. The following table displays the component spectra functions:
MIL-F-8785C | MIL-HDBK-1797 and MIL-HDBK-1797B | |
---|---|---|
Longitudinal | ||
|
|
|
|
|
|
Lateral | ||
|
|
|
|
|
|
Vertical | ||
|
|
|
|
|
|
The variable b represents the aircraft wingspan. The variables Lu, Lv, Lw represent the turbulence scale lengths. The variables σu, σv, σw represent the turbulence intensities. For more information, see Turbulence Scale Length and Intensities
Keep in mind that the longitudinal turbulence angular rate spectrum, Фp(ω), is a rational function. The rational function is derived from curve-fitting a complex algebraic function, not the vertical turbulence velocity spectrum, Фw(ω), multiplied by a scale factor.
The spectral density definitions of turbulence angular rates are defined in the references as three variations, which are displayed in the following table:
|
|
|
|
|
|
|
|
|
The variations affect only the vertical (qg) and lateral (rg) turbulence angular rates.
The turbulence angular rate spectra has varying definitions because it contribute less to the aircraft gust response than the turbulence velocity spectra. The following table summarizes the combinations of vertical and lateral turbulence angular rate spectra.
Vertical | Lateral |
---|---|
Фq(ω) Фq(ω) −Фq(ω) | −Фr(ω) Фr(ω) Фr(ω) |
To generate a signal with the correct characteristics, a unit variance, band-limited white noise signal is passed through forming filters. The forming filters are approximations of the Von Kármán velocity. The following tables displays the filters.
MIL-F-8785C | MIL-HDBK-1797 and MIL-HDBK-1797B | |
---|---|---|
Longitudinal | ||
|
|
|
|
|
|
Lateral | ||
|
|
|
|
|
|
Vertical | ||
|
|
|
|
|
|
In UAV scenario, these filters are discretized with the sampling rate similar to the UAV scenario update rate. To minimize the discretization error, you must choose a scenario update rate in accordance with the UAV velocity and altitude.
Turbulence Scale Length and Intensities
According to the military references, the turbulence scale lengths at low altitudes, where h is the altitude in feet, are represented in the following table:
MIL-F-8785C | MIL-HDBK-1797 and MIL-HDBK-1797B |
---|---|
|
|
The turbulence intensities are given below, where W20 is the wind speed at 20 feet (6 m). Typically for light turbulence, the wind speed at 20 feet is 15 knots; for moderate turbulence, the wind speed is 30 knots; and for severe turbulence, the wind speed is 45 knots.
The turbulence axes orientation in this region is defined as follows:
Longitudinal turbulence velocity, ug, aligned along the horizontal relative mean wind vector.
Vertical turbulence velocity, wg, aligned with vertical relative mean wind vector.
For medium to high altitudes the turbulence scale lengths and intensities are based on the assumption that the turbulence is isotropic. In the military references, the scale lengths are represented by the following equations:
MIL-F-8785C | MIL-HDBK-1797 and MIL-HDBK-1797B |
---|---|
L u = L v = L w = 2500 ft | L u = 2 L v = 2 L w = 2500 ft |
The turbulence intensities are determined from a lookup table that provides the turbulence intensity as a function of altitude and the probability of the turbulence intensity being exceeded. The relationship of the turbulence intensities is represented in the following equation: σu=σv=σw.
At altitudes between 1000 feet and 2000 feet, the turbulence velocities and turbulence angular rates are determined by linearly interpolating between the value from the low altitude model at 1000 feet transformed from mean horizontal wind coordinates to body coordinates and the value from the high altitude model at 2000 feet in body coordinates.
Version History
Introduced in R2024a
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)