Multirotor
Libraries:
Aerospace Blockset /
Propulsion
Description
The Multirotor block computes the aerodynamic forces and moments generated by multiple rotating propellers or rotors, such as quadcopters, in all three dimensions. You can also include simplified flap, or steady state, aerodynamics.
Limitations
The block follows a simplified approach with the option to include steady state flap effects. It does not model dynamic flap, lag, or feathering motion of blade.
The block outputs have been verified against the algorithms used, for input and parameter values within reasonable limits (as observed from literature).
The block uses Twist distribution to model only linear or ideal twist distributions. The block assumes that the blade chord and lift curve slope are constant.
The block does not include interference effects (between rotors) in the model.
The effect of collective pitch input and drag coefficient is incorporated in the block through the thrust and torque coefficients alone. Hence, the collective input port and the drag coefficient is active only when CT and CQ Source dropdown is set to
Compute using BEMT
.
Ports
Input
Ω (rad/sec) — Rotor speed
N-element vector
Rotor speed, specified as an N-element vector in rad/sec in body frame. The ordering of the rotors for the two quadcopter configurations (N = 4) considered in the block are as shown in Arm Computations.
Data Types: double
ρ — Air density
positive scalar
Air density, specified as a positive scalar in specified units.
Data Types: double
Vb — Body velocity of rotor
3-by-1 vector | 1-by-3 vector
Velocity of rotor, specified as a 3-by-1 or 1-by-3 vector in body frame. To perform a multisystem analysis, consider connecting output from a State-Space or Integrator block to this port.
Dependencies
This enable this input, set Modeling
to With
flap effects
.
The unit of velocity depends on the value of the Units
parameter.
Data Types: double
ωb — Angular velocity
3-by-1 vector | 1-by-3 vector
Angular velocity of entire vehicle, specified as a 3-by-1 or 1-by-3 vector in rad/s in body frame.
Dependencies
This enable this input, set Modeling
to With
flap effects
.
Data Types: double
θ0 — Collective blade pitch angle
N-by-1 vector | 1-by-N vector
Collective blade pitch angle, specified as an N-element vector.
Dependencies
To enable this input port, select the Include pitch angle
inputs check box and set the CT and CQ Source
dropdown to Compute using BEMT
.
Data Types: double
θc — Lateral cyclic pitch angle
N-by-1 vector | 1-by-N vector
Lateral cyclic pitch angle, specified as an N-element vector.
Dependencies
To enable this input port,
Select the Include pitch angle inputs check box.
Set Modeling to
With flap effects
.
Data Types: double
θs — Longitudinal cyclic pitch angle
N-by-1 vector | 1-by-N vector
Longitudinal cyclic pitch angle, specified as an N-element vector.
Dependencies
To enable this input port,
Select the Include pitch angle inputs check box.
Set Modeling to
With flap effects
.
Data Types: double
Output
Fxyz(N) — Total force
three-element vector
Total force, returned as a three-element vector in body frame. Units depend on the Units parameter.
Data Types: double
Mxyz(Nm) — Net moment
three-element vector
Net moment in the x-y-z direction, returned as a three-element vector in body frame. Units depend on the Units parameter.
Data Types: double
CT — Computed thrust coefficient
positive vector
Computed thrust coefficient, returned as a positive vector of N elements.
Dependencies
To enable this output port, select the Output computed CT and
CQ check box and set the CT and CQ Source
dropdown to Compute using BEMT
.
CQ — Computed torque coefficient
positive vector
Computed torque coefficient, returned as a positive vector of N elements.
Dependencies
To enable this output port, select the Output computed CT and
CQ check box and set the CT and CQ Source
dropdown to Compute using BEMT
.
Parameters
Main
Units — Input and output units
Metric (MKS)
(default) | English (Velocity in ft/s)
| English (Velocity in kts)
Units | Density | Force | Moment | Velocity | Radius | Chord | Hinge offset |
---|---|---|---|---|---|---|---|
Metric (MKS) | kg/m3 | Newtons | Newton-meter | Meters per second | Meters | Meters | Meters |
English (Velocity in ft/s) | slug/ft3 | Pound force | Pound force-feet | Feet per second | Feet | Feet | Feet |
English (Velocity in kts) | slug/ft3 | Pound force | Pound force-feet | Knots | Feet | Feet | Feet |
Programmatic Use
Block Parameter: units |
Type: character vector |
Values: 'Metric (MKS)' | 'English (Velocity in ft/s)' | 'English (Velocity in kts)' |
Default: 'Metric (MKS)' |
Modeling — Rotor thrust calculation method
Without flap effects
(default) | With flap effects
Rotor thrust calculation method, specified as:
Without flap effects
— Model rotor thrust using force and moment calculations. For more information, see Force and Moment.With flap effects
— Effect of tilt in rotor disc due to flap motion, while in forward flight, is included. The steady state lateral and longitudinal flap angles are calculated using the equations from [1] and used in the computation of forces and moments [2]. For more information, see Force and Moment.
Programmatic Use
Block Parameter:
modelMode |
Type: character vector |
Values: 'Without flap
effects' | 'With flap effects' |
Default: 'Without flap
effects' |
Include pitch angle inputs — Enable pitch angle inputs
off
(default) | on
Select this check box to enable the pitch angle (swash plate) input ports.
Dependencies
To enable this checkbox
Set the CT and CQ Source dropdown to
Compute using BEMT
and/or
Set Modeling to
'With flap effects'
Programmatic Use
Block Parameter:
controlInput |
Type: character vector |
Values: 'on' |
'off' |
Default: 'off' |
Vehicle
Configuration — Vehicle configuration
Quadcopter X
(default) | Quadcopter +
Quadcopter configuration, specified as:
Quadcopter X
— Propellers configured as anX
shape, considered as more stable than theQuadcopter +
configuration.Quadcopter +
— Propellers configured as a+
shape.
For more information, see Arm Computations.
Programmatic Use
Block Parameter:
config |
Type: character vector |
Values: 'Quadcopter X' |
'Quadcopter +' |
Default: 'Quadcopter
X' |
Arm length (m) — Vehicle arm length
0.0624
(default) | nonzero positive scalar
Vehicle arm length, specified as a nonzero positive scalar. This length is the rotor displacement from the center of mass of the vehicle. For more information on arm lengths, see Algorithms.
Programmatic Use
Block Parameter:
armLength |
Type: character vector |
Values: '0.0624' |
nonzero positive scalar |
Default:
'0.0624' |
Height (m) — Vertical offset from vehicle center of gravity
-0.0159
(default) | nonzero scalar
Vertical offset from vehicle center of gravity, specified as a nonzero scalar.
Programmatic Use
Block Parameter:
rotorHeight |
Type: character vector |
Values: '-0.0159' |
nonzero positive scalar |
Default:
'-0.0159' |
Rotor
CT and CQ Source — Dropdown to select the source of thrust and torque coefficient values
'Dialog'
(default) | 'Compute using BEMT'
Select the source of the thrust coefficient and torque coefficient values, specified as a
character vector of value 'Dialog'
or 'Compute using
BEMT'
. The block assumes the aerodynamic and structural parameters to be
constant.
Select 'Dialog'
to manually enter the thrust and torque coefficient
values.
Select 'Compute using BEMT'
to compute the values using Blade Element
Momentum Theory (BEMT). For more information on BEMT, see Thrust and Torque coefficient.
Programmatic Use
Block Parameter:
CTCQMode |
Type: character vector |
Values: 'Dialog' |
'Compute using BEMT' |
Default: 'Dialog' |
Thrust coefficient (CT) — Thrust coefficient
0.0107
(default) | nonzero positive scalar | nonzero N-element vector
Thrust coefficient, specified as a nonzero positive scalar or N-element vector.
If you define Thrust coefficient (CT)
as a scalar, all the
rotors are assumed to have same values for CT. If vector, the
ordering of the rotors is as shown in Arm Computations.
Dependencies
To enable this parameter, set the CT and CQ Source dropdown
to 'Dialog'
.
Programmatic Use
Block Parameter:
CT |
Type: character vector |
Values: '0.0107' |
nonzero positive scalar |
Default:
'0.0107' |
Torque coefficient (CQ) — Torque coefficient
7.8263e-4
(default) | nonzero positive scalar | nonzero N-element vector
Torque coefficient, specified as a nonzero positive scalar or N-element vector.
If you define Torque coefficient (CQ)
as a scalar, all the
rotors are assumed to have same values for CQ. If vector, the
ordering of the rotors is as shown in Arm Computations.
Dependencies
To enable this parameter, set the CT and CQ Source dropdown
to 'Dialog'
.
Programmatic Use
Block Parameter:
CQ |
Type: character vector |
Values: '7.8263e-4' |
nonzero positive scalar |
Default:
'7.8263e-4' |
Number of blades — Number of blades per rotor
2
(default) | nonzero positive scalar
Number of blades per rotor, specified as a nonzero positive scalar.
Dependencies
To enable this checkbox,
Set the CT and CQ Source dropdown to
Compute using BEMT
and/or
Set Modeling to
'With flap effects'
Programmatic Use
Block Parameter:
Nb |
Type: character vector |
Values: '2' | nonzero
positive scalar |
Default: '2' |
Output computed CT and CQ — Output computed thrust coefficient and torque coefficient
off (default) | on
Select this check box to output the calculated thrust coefficient and torque coefficient to CT and CQ output ports. For more information on these calculations, see Thrust Coefficient and Torque Coefficient Calculations. The block assumes the aerodynamic and structural parameters to be constant.
Otherwise, clear this check box.
Dependencies
To enable this parameter, set the CT and CQ Source dropdown
to 'Compute using BEMT'
.
Programmatic Use
Block Parameter: CTout |
Type: character vector |
Values: 'on' | 'off' |
Default: 'off' |
Radius (m) — Rotor radius
0.0330
(default) | nonzero positive scalar
Rotor radius, specified as a nonzero positive scalar.
Programmatic Use
Block Parameter: radius |
Type: character vector |
Values: '0.0330' | nonzero positive
scalar |
Default: '0.0330' |
Chord (m) — Blade chord
0.0080
(default) | nonzero positive scalar
Blade chord, specified as a nonzero positive scalar.
Dependencies
To enable this checkbox,
Set the CT and CQ Source dropdown to
'Compute using BEMT'
.
and/or
Set Modeling to
'With flap effects'
Programmatic Use
Block Parameter: chord |
Type: character vector |
Values: '0.0080' | nonzero positive
scalar |
Default: '0.0080' |
Hinge offset (m) — Hinge offset
0
(default) | positive scalar
Hinge offset, specified as a positive scalar. This value is typically
0
for propellers.
Dependencies
To enable this checkbox,
Set the CT and CQ Source dropdown to
'Compute using BEMT'
.
and/or
Set Modeling to
'With flap effects'
Programmatic Use
Block Parameter:
hingeOffset |
Type: character vector |
Values: '0' | positive
scalar |
Default: '0' |
Lift curve slope (per rad) — Lift curve slope
5.5
(default) | nonzero positive scalar
Lift curve slope, specified as a nonzero positive scalar. The block assumes the aerodynamic and structural parameters to be constant. The block does not consider variation with respect to angle of attack.
Dependencies
To enable this checkbox,
Set the CT and CQ Source dropdown to
'Compute using BEMT'
.
and/or
Set Modeling to
'With flap effects'
Programmatic Use
Block Parameter: clalpha |
Type: character vector |
Values: '5.5' | nonzero positive
scalar |
Default: '5.5' |
Mean drag coefficient — Mean drag coefficient
0 (default) | positive scalar
Mean drag coefficient, specified as a positive scalar. The block does not consider variation with respect to angle of attack.
Dependencies
To enable this parameter, set the CT and CQ Source dropdown
to 'Compute using BEMT'
.
Programmatic Use
Block Parameter:
cd0 |
Type: character vector |
Values: '0' | positive
scalar |
Default: '0' |
Lock number — Lock number
0.6051
(default) | nonzero positive scalar
Lock number, which is the ratio of aerodynamics forces to inertial forces, specified as a nonzero positive scalar.
Dependencies
To enable this parameter, set Modeling to With flap effects
.
Programmatic Use
Block Parameter: gamma |
Type: character vector |
Values: '0.6051' | nonzero positive
scalar |
Default: '0.6051' |
Twist distribution — Rotor blade twist distribution
Linear
(default) | Ideal
Rotor blade twist distribution, specified as:
Linear
— Close approximation of blade twist distribution.Ideal
— Optimal approximation of blade twist distribution.
where r is the nondimensional radial location along the blade.
Dependencies
To enable this checkbox,
Set the CT and CQ Source dropdown to
'Compute using BEMT'
.
and/or
Set Modeling to
'With flap effects'
Programmatic Use
Block Parameter:
twistType |
Type: character vector |
Values: 'Linear' |
'Ideal' |
Default:
'Linear' |
Blade root angle (rad) — Blade root pitch angle
0.2548
(default) | real scalar
Blade root pitch angle θroot, specified as a real scalar.
Dependencies
To enable this parameter:
Set the CT and CQ Source dropdown to
'Compute using BEMT'
.
and/or
Set Modeling to
'With flap effects'
Set Twist distribution to
Linear
.
Programmatic Use
Block Parameter: thetaRoot |
Type: real scalar |
Values: '0.2548' | nonzero positive
scalar |
Default: '0.2548' |
Blade twist angle (rad) — Blade twist angle
-0.1361
(default) | real scalar
Blade twist angle θtwist, specified as a real scalar.
Dependencies
To enable this parameter:
Set the CT and CQ Source dropdown to
'Compute using BEMT'
.
and/or
Set Modeling to
'With flap effects'
Set Twist distribution to
Linear
.
Programmatic Use
Block Parameter: thetaTwist |
Type: real scalar |
Values: '0.1018' | positive
scalar |
Default: '0.1018' |
Blade tip angle (rad) — Blade tip pitch angle
0.1018
(default) | real scalar
Blade tip pitch angle θtip for ideal twist distribution, specified as a real scalar.
Dependencies
To enable this parameter:
Set the CT and CQ Source dropdown to
'Compute using BEMT'
.
and/or
Set Modeling to
'With flap effects'
Set Twist distribution to
Ideal
.
Programmatic Use
Block Parameter: thetaTip |
Type: real scalar |
Values: '0.06' | nonzero positive
scalar |
Default: '0.06' |
Algorithms
Arm Computations
p1 = (d,-d,h)
p2 = (d,d,h)
p3 = (-d,d,h)
p4 = (-d,-d,h)
where:
l is the arm length.
h is the offset from the vehicle center of gravity.
.
In this graphic:
The x-, y-, z-axes are perpendicular to each other.
The four arms of the vehicle are perpendicular and equal in length (l).
All propellers are at same height (h).
p1 = (l,0,h)
p2 = (0,l,h)
p3 = (-l,0,h)
p4 = (0,-l,h)
where:
l is the arm length.
h is the offset from the vehicle center of gravity.
In this graphic:
The x-, y-, z-axes are perpendicular to each other.
The four arms of the vehicle are perpendicular and equal in length (l).
All propellers are at same height (h).
Force and Moment
Without flap effects
With flap effects
where:
i is the rotor index and pi is the arm location corresponding to the ith rotor.
Ω is the rotor speed in rad/s.
βc and βs are the steady state flap angles computed using the equations in Chapter 7 of [1].
Thrust Coefficient and Torque Coefficient Calculations
When the Compute CT and CQ check box is selected, the Multirotor block calculates the thrust coefficient and torque coefficient using these equations.
With the inclusion of Prandtl’s tip loss function, the incremental thrust coefficient using blade element momentum theory is:
where F is the correction factor:
For the equations in this section:
r is the nondimensional radial location.
λ is the inflow through the rotor disc.
clα is the lift curve slope.
σ is the rotor solidity defined as , where c is the chord, R is the radius and Nb is the number of blades.
According to blade element theory, the incremental thrust coefficient is:
Here, θ(r) will depend on the blade twist distribution and the collective pitch input θ0. Equating the two expressions for dCT returns 4Fλ² = 0.5 σcıα (θ(r)r − λ), which can be iteratively solved for λ.
Sum dСT = 4Fλ²r dr across the blade span, to find the net thrust coefficient CT.
For the torque coefficient CQ, the profile drag component is approximately included as . The net torque coefficient can be calculated by summing dСQ = λdСT across the blade span and adding the profile drag component.
References
[1] Prouty, Raymond W. Helicopter Performance, Stability, and Control Krieger Publishing Company, 1995.
[2] Riether, F. (2016). Agile quadrotor maneuvering using tensor-decomposition-based globally optimal control and onboard visual-inertial estimation (Doctoral dissertation, Massachusetts Institute of Technology).
Version History
Introduced in R2023aR2024b: Multirotor block now includes swashplate as input
The Multirotor block has been updated to support swashplate inputs. This addition allows for the inclusion of collective and cyclic blade pitch angles in the calculation of Forces and Moments through new optional input ports.
Thrust coefficient (CT)
andTorque coefficient (CQ)
parameters now also accept N-element vectors as inputs.Starting R2024b, the Multirotor block has been updated to include the dropdown CT and CQ Source with two options:
'Dialog'
and'Compute using BEMT'
.Select
'Dialog'
to manually enter the thrust and torque coefficient values.Select
'Compute using BEMT'
to compute the values using Blade Element Momentum Theory (BEMT). For more information on BEMT, see Thrust and Torque coefficient. This option is equivalent to the Compute CT and CQ checkbox from previous releases.
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)