Main Content

VTOL UAV Battery Sizing for Mission Over an Urban Environment

This example shows you how to select a battery size that will give the electric vertical take-off and landing UAV (eVTOL UAV) the best range for mission in urban environment.

Model Overview

Open the example live script and the directory that contains the VTOLRefApp.prj project file project by running openExample('uav/VTOLUAVBatterySizingForMissionOverAnUrbanEnvironmentExample') in the Command Window.

After opening the example live script and the directory, you must open the VTOLRefApp.prj project file to access the Simulink model, supporting files, and project shorcuts that this example uses.

% Open the Simulink project
prj = openProject("VTOLApp");

Open the EVTOLTiltrotor.slx Simulink® model.

open_system("EVTOLTiltrotor")

eVTOLTiltrotor Simulink model

The eVTOL UAV model contains the Electric Propulsion variant subsystem, which models the battery and motor-rotor assembly of an eVTOL UAV. The Electric Propulsion variant subsystem is enabled by default when you open the EVTOLTiltrotor.slx Simulink model. You can choose to enable or disable the electric propulsion subsystem by setting the value of ElectricPropulsion in the Command Window:

  • ElectricPropulsion=1 — Enables the electric propulsion subsytstem

  • ElectricPropulsion=0 — Disables the electric propulsion subsytstem

Electric Propulsion variant subsystem enabled.

Motor Rotor Assembly Subsystem

Open the Motor Rotor Asesembly subsystem.

open_system("MotorPropellerSystem")

Motor Rotor Asesembly subsystem.

The Electric Propulsion Model area of the Motor Rotor Assembly subsystem contains these main blocks and subsystems:

  1. Motor & Drive block — Models an electric motor with a closed-loop torque control.

  2. Speed Controller subsystem — Calculates the torque demand for the motor based on the input reference angular velocity.

  3. Inertia block — Models the rotational inertia of the motor-rotor pair.

  4. Ideal Rotational Motion Sensor block — Measures the motor angular velocity to be used as input to the Speed Controller and Rotor Assembly subsystems.

  5. Current Sensor and Voltage Sensor subsystems — Measure the current and voltage drawn by the motor.

  6. Ideal Torque Source block — Models the torque load of the motor as an ideal torque source.

Battery Plant Subsystem

Open the Battery Plant subsystem.

open_system("BatteryPlantModel_Simple")

Battery Plant subsystem.

This subsystem uses these blocks:

  1. Battery — Simplified battery model with constant voltage. In this example, the battery is configured to output a voltage of 22.5 Volt with internal resistance of 0.002 Ohm.

  2. Current Sensor — Ideal current sensor that measures current drawn from the battery.

Battery Sizing Overview

The battery size affects the range of an eVTOL UAV. Larger batteries contain more energy, which extends the range of the eVTOL UAV. However, larger batteries are also heavier, which increases energy consumption during flight. The goal of the battery sizing process is to determine the optimal battery size that offers sufficient energy without being too heavy to carry efficiently.

This example shows the impact of varying battery size on the range of an eVTOL UAV during these flight modes:

  • Hover mode

  • Fixed-wing mode

  • Urban mission

For the simulation of each flight mode, the battery capacity is adjusted in 200 Wh increments, ranging from 300 Wh to 3000 Wh. The battery has an energy density of 180 Wh/kg. The mass of the eVTOL UAV, excluding the battery, is 6023 kg.

battery.GravDensity = 180;     % Energy density of battery (Wh/kg)
baseMass = uavParam.geom.mass; % Aircraft base mass (kg) , 6.023 Kg
capacityRange = 300:200:3000;  % Battery capacity range (Wh)
percWeightGain = 1;            % scaling for weight change

After simulating the UAV in different modes and battery sizes, this example shows you how to choose a battery size that maximizes the range of the UAV in an urban mission, which consists of take-off, hover, forward transition, fixed-wing, backward transition, and land modes.

Hover Mode

This section shows how to calculate the energy consumption and the range of the UAV during a waypoint guidance mission in hover mode using different battery sizes.

During hover mode, the propulsion system draws more energy compared to fixed-wing mode because the propulsion system needs to support the entire weight of the UAV and battery. A larger battery contains more energy that the propulsion system can use. However, increasing the battery size also makes the eVTOL UAV heavier, requiring the motor to operate at a higher RPM, which increases energy consumption.

Set up the eVTOL UAV plant and enable the hover configuration.

setupEVTOLPlant
Initialized EVTOL model.
Enabled hover configuration.

Set up a hover guidance mission that consists of takeoff, waypoint navigation, and landing.

setupEVTOLHoverGuidanceMission
Enabled EVTOL hover guidance mission.

Create structure arrays to store the energy consumption and the range of the eVTOL UAV.

hover.mileage = [];
hover.range = [];

To run the simulation in hover mode with the specified battery capacity range, run the utilities/Mission/exampleHelperHoverModeRangeComputation.m script.The simulation can take some time. To load a pre-generated simulation result, load the hoverModeRangeResults MAT file.

load hoverModeRangeResults.mat;

Plot the energy consumption per meter of flight distance against the battery capacity. The plot shows that increasing battery sizes raises the energy consumption of the eVTOL UAV.

plot(capacityRange,hover.mileage)
title("Energy Consumption vs Battery Capacity in Hover Mode")
xlabel("Battery Capacity (Whr)")
ylabel("Energy Consumption/Meter (Whr/m)")
grid on

Figure contains an axes object. The axes object with title Energy Consumption vs Battery Capacity in Hover Mode, xlabel Battery Capacity (Whr), ylabel Energy Consumption/Meter (Whr/m) contains an object of type line.

Plot the range of the eVTOL UAV against the battery capacity. The plot shows that increasing battery size initially increases the range of the UAV until it reaches a critical point, at which point the range starts to decrease due to excessive battery weight. This decrease occurs at a battery capacity of around 2000 Whr.

plot(capacityRange,hover.range)
xlabel("Battery (Whr)")
ylabel("Range (m)")
title("Range vs Battery Capacity in Hover Mode")
grid on

Figure contains an axes object. The axes object with title Range vs Battery Capacity in Hover Mode, xlabel Battery (Whr), ylabel Range (m) contains an object of type line.

Fixed-Wing Mode

This section shows how to calculate the energy consumption, range, and angle of attack of the eVTOL UAV during a waypoint guidance mission in fixed-wing mode using different battery sizes.

During fixed-wing mode, the propulsion system operates more efficiently compared to hover mode because the wings counteract the weight of the eVTOL UAV, and the propulsion system only needs to provide thrust to counteract drag. A larger battery contains more energy that the propulsion system can use. However, increasing the battery size also makes the eVTOL UAV heavier, requiring it to cruise with a higher angle of attack to maintain lift. This higher angle of attack causes an increase in drag, which in turn requires the motor to operate at a higher RPM, subsequently increasing energy consumption.

Set up the eVTOL UAV in fixed-wing configuration.

setupFixedWingConfiguration
Enabled fixed-wing configuration.

Set up a fixed-wing guidance mission that consists of a straight-line path at an altitude of 20 meters and an orbit.

setupFixedWingGuidanceMission
Enabled fixed-wing guidance mission.

Create structure arrays to store the angle of attack, energy consumption, and the range of the eVTOL UAV.

angleOfAttack = [];
fixedwing.mileage = [];
fixedwing.range = [];

To run the simulation in hover mode with the specified battery capacity range, run the utilities/Mission/exampleHelperFixedWingRangeComputation.m script. The simulation can take some time. To load a pre-generated simulation result, load the fixedWingRangeResults file.

load fixedwingRangeResults.mat;

Use the simAttackAnglePlotter helper function to plot the angle of attack of the eVTOL UAV during the fixed-wing guidance mission for various battery sizes. The plot shows that increasing battery sizes raises the angle of attack of the eVTOL UAV.

simAttackAnglePlotter(angleOfAttack,capacityRange);
title("Angle of Attack in Fixed-Wing Mode")
xlabel("Time (s)")
ylabel("Angle of Attack (deg)")
legend
grid on

Figure contains an axes object. The axes object with title Angle of Attack in Fixed-Wing Mode, xlabel Time (s), ylabel Angle of Attack (deg) contains 14 objects of type line. These objects represent 300Wh, 500Wh, 700Wh, 900Wh, 1100Wh, 1300Wh, 1500Wh, 1700Wh, 1900Wh, 2100Wh, 2300Wh, 2500Wh, 2700Wh, 2900Wh.

Plot the energy consumption per meter of flight distance against the battery capacity. The plot shows that increasing battery sizes raises the energy consumption of the eVTOL UAV.

plot(capacityRange,fixedwing.mileage)
title("Energy Consumption vs Battery Capacity in Fixed-Wing Mode")
xlabel("Battery Capacity (Whr)")
ylabel("Energy Consumption/Meter (Whr/m)")
grid on

Figure contains an axes object. The axes object with title Energy Consumption vs Battery Capacity in Fixed-Wing Mode, xlabel Battery Capacity (Whr), ylabel Energy Consumption/Meter (Whr/m) contains an object of type line.

Plot the range of the eVTOL UAV against the battery capacity. The plot shows that increasing battery size initially increases the range of the UAV until the range reaches a critical point, at which the range starts to decrease due to excessive battery weight. This decrease occurs at a battery capacity of around 2200 Whr.

plot(capacityRange,fixedwing.range)
xlabel("Battery (Whr)")
ylabel("Range (m)")
title("Range vs Battery Capacity in Fixed-Wing Mode")
grid on

Figure contains an axes object. The axes object with title Range vs Battery Capacity in Fixed-Wing Mode, xlabel Battery (Whr), ylabel Range (m) contains an object of type line.

Urban Mission

This section shows how to calculate the energy consumption and range of the eVTOL UAV during an urban mission using different battery sizes.

Narrow down the battery size range based on the results of the hover and fixed-wing simulations, which show that the critical point at which the range starts to decrease due to excessive battery weight occurs around a battery capacity of 1500 Whr to 2700 Whr.

capacityRange = 1500:100:2700;

Set up the urban mission. The mission includes take-off, hover, forward transition, fixed-wing, backward transition and land modes.

setupEVTOLUrbanMission
Initialized EVTOL model.
Enabled hover configuration.
Enabled urban mission.

Create structure arrays to store the energy consumption and the range of the eVTOL UAV.

mission.mileage = [];
mission.range = [];

To run the urban mission simulation with the specified battery capacity range, run the utilities/Mission/exampleHelperUrbanMissionRangeComputation.m script. The simulation can take some time. To load a pre-generated simulation result, load the urbanMissionRangeResults MAT file.

load urbanMissionRangeResults.mat;

Plot the energy consumption per meter of flight distance against the battery capacity. The plot shows that increasing battery sizes raises the energy consumption of the eVTOL UAV.

plot(capacityRange,mission.mileage);
title("Energy Consumption vs Battery Capacity in Urban MIssion")
xlabel("Battery Capacity (Whr)")
ylabel("Energy Consumption/Meter (Whr/m)")
grid on

Figure contains an axes object. The axes object with title Energy Consumption vs Battery Capacity in Urban MIssion, xlabel Battery Capacity (Whr), ylabel Energy Consumption/Meter (Whr/m) contains an object of type line.

Plot the range of the eVTOL UAV against battery capacity. The plot indicates that increasing battery sizes initially extends the range of the eVTOL UAV until a critical point is reached, where the range begins to decrease due to excessive battery weight. This critical point represents the battery capacity that maximizes the range of the eVTOL UAV during an urban mission.

plot(capacityRange, mission.range)
xlabel("Battery (Whr)")
ylabel("Range (m)")
title("Range vs Battery Capacity in Urban Mission")
grid on

Figure contains an axes object. The axes object with title Range vs Battery Capacity in Urban Mission, xlabel Battery (Whr), ylabel Range (m) contains an object of type line.

Determine the maximum range of the eVTOL UAV and identify the optimal battery capacity that provides this maximum range.

% Maximum range
[maxRange,index]= max(mission.range);

% Battery capacity that provides maximum range
optimalBattery = capacityRange(index);

Plot the maximum range and the optimal battery capacity on the graph of range against battery capacity. As indicated on the plot, a battery size of 2600 Whr provides the eVTOL UAV with a maximum range of 28853 meters.

plot(capacityRange,mission.range)

% Add vertical and horizontal lines at the optimal battery size and maximum range.
line([optimalBattery optimalBattery], ylim);
line(xlim, [maxRange maxRange]);

% Add a text bubble near the maximum point
text(optimalBattery-200, maxRange-300, sprintf("%.f Whr, %.f m",optimalBattery,maxRange), ...
    BackgroundColor="w",EdgeColor="k");

% Add grid, label, and title.
grid on
xlabel("Battery (Whr)")
ylabel("Range (m)")
title("Range vs Battery Capacity in Urban Mission")

Figure contains an axes object. The axes object with title Range vs Battery Capacity in Urban Mission, xlabel Battery (Whr), ylabel Range (m) contains 4 objects of type line, text.

Before resuming to other examples in this example series, you must close the VTOLRefApp.prj Simulink project by running this command in the Command Window:

close(prj)

See Also

Topics