UAV blocks
- class roboticstoolbox.blocks.uav.MultiRotor(*args: Any, **kwargs: Any)[source]
Bases:
ContinuousBlockMULTIROTOR
Dynamic model of a multi-rotor flying robot.
- Inputs:
1
- Outputs:
1
- States:
16
Port type
Port number
Types
Description
Input
0
ndarray(N)
\(\varpi\), rotor velocities in (radians/sec)
Output
0
dict
\(\mathit{x}\), vehicle state
Dynamic model of a multi-rotor flying robot that includes rotor flapping. The vehicle state is a dict containing the following items:
xpose in the world frame as \([x, y, z, \theta_Y, \theta_P, \theta_R]\)transposition and velocity in the world frame as \([x, y, z, \dot{x}, \dot{y}, \dot{z}]\)rotorientation and angular rate in the world frame as \([\theta_Y, \theta_P, \theta_R, \dot{\theta_Y}, \dot{\theta_P}, \dot{\theta_R}]\)vbtranslational velocity in the body frame as \([\dot{x}, \dot{y}, \dot{z}]\)wangular rates in the body frame as\([\dot{\theta_Y}, \dot{\theta_P}, \dot{\theta_R}]\)
a1slongitudinal flapping angles (radians)b1slateral flapping angles (radians)Xfull state vector as \([x, y, z, \theta_Y, \theta_P, \theta_R, \dot{x}, \dot{y}, \dot{z}, \dot{\theta_Y}, \dot{\theta_P}, \dot{\theta_R}]\)
The dynamic model is a dict with the following key/value pairs.
key
description
nrotorsNumber of rotors (even integer)
JFlyer rotational inertia matrix (3x3)
hHeight of rotors above CoG
dLength of flyer arms
nbNumber of blades per rotor
rRotor radius
cBlade chord
eFlapping hinge offset
MbRotor blade mass
McEstimated hub clamp mass
ecBlade root clamp displacement
IbRotor blade rotational inertia
IcEstimated root clamp inertia
mbStatic blade moment
IrTotal rotor inertia
CtNon-dim. thrust coefficient
CqNon-dim. torque coefficient
sigmaRotor solidity ratio
thetatBlade tip angle
theta0Blade root angle
theta1Blade twist angle
theta753/4 blade angle
thetaiBlade ideal root approximation
aLift slope gradient
ARotor disc area
gammaLock number
Note
Based on MATLAB code developed by Pauline Pounds 2004.
SI units are used.
Rotor velocity is defined looking down, clockwise from the front rotor which lies on the x-axis.
- References:
Design, Construction and Control of a Large Quadrotor micro air vehicle. P.Pounds, PhD thesis Australian National University, 2007.
Robotics, Vision & Control by Peter Corke, sec 4.2 in all editions
- Seealso:
- __init__(model, groundcheck=True, speedcheck=True, x0=None, **blockargs)[source]
Create a multi-rotor dynamic model block.
- Parameters:
model (dict) – A dictionary of vehicle geometric and inertial properties
groundcheck (bool) – Prevent vehicle moving below ground \(z>0\), defaults to True
speedcheck (bool) – Check for non-positive rotor speed, defaults to True
x0 (array_like(6) or array_like(12), optional) – Initial state, defaults to None
blockargs (dict) – common Block options
- class roboticstoolbox.blocks.uav.MultiRotorMixer(*args: Any, **kwargs: Any)[source]
Bases:
FunctionBlockMULTIROTORMIXER
Speed mixer for a multi-rotor flying vehicle.
- Inputs:
4
- Outputs:
1
- States:
0
Port type
Port number
Types
Description
Input
0
float
\(\tau_R\), roll torque
Input
1
float
\(\tau_P\), pitch torque
Input
2
float
\(\tau_Y\), yaw torque
Input
3
float
\(T\), total thrust
Output
0
ndarray(N)
\(\varpi\), rotor speeds
This block converts airframe moments and total thrust into a 1D array of rotor speeds which can be input to the
MULTIROTORblock.The model is a dict with the following key/value pairs.
key
description
nrotorsNumber of rotors (even integer)
hHeight of rotors above CoG
dLength of flyer arms
rRotor radius
Note
Based on MATLAB code developed by Pauline Pounds 2004.
- Seealso:
- __init__(model=None, wmax=1000, wmin=5, **blockargs)[source]
- Parameters:
model (dict) – A dictionary of vehicle geometric and inertial properties
maxw (float) – maximum rotor speed in rad/s, defaults to 1000
minw (float) – minimum rotor speed in rad/s, defaults to 5
blockargs (dict) – common Block options
- class roboticstoolbox.blocks.uav.MultiRotorPlot(*args: Any, **kwargs: Any)[source]
Bases:
GraphicsBlockMULTIROTORPLOT
Displays/animates a multi-rotor flying vehicle.
- Inputs:
1
- Outputs:
0
- States:
0
Port type
Port number
Types
Description
Input
0
dict
\(\mathit{x}\), vehicle state
Animate a multi-rotor flying vehicle using Matplotlib graphics. The rotors are shown as circles and their orientation includes rotor flapping which can be exagerated by
flapscale.
Example of quad-rotor display.
The input is a dictionary signal and the block requires the items:
xpose in the world frame as \([x, y, z, \theta_Y, \theta_P, \theta_R]\)a1srotor flap angleb1srotor flap angle
The model is a dict with the following key/value pairs.
key
description
nrotorsNumber of rotors (even integer)
hHeight of rotors above CoG
dLength of flyer arms
rRotor radius
Note
Based on MATLAB code developed by Pauline Pounds 2004.
- Seealso:
- PLOT3D = True
- TIMESTAMP = True
- __init__(model, scale=None, flapscale=1, projection='ortho', **blockargs)[source]
- Parameters:
model (dict) – A dictionary of vehicle geometric and inertial properties
scale (array_like, optional) – dimensions of workspace: xmin, xmax, ymin, ymax, zmin, zmax, defaults to [-2,2,-2,2,10]
flapscale (float) – exagerate flapping angle by this factor, defaults to 1
projection (str) – 3D projection, one of: ‘ortho’ [default], ‘perspective’
blockargs (dict) – common GraphicsBlock options