Skip to content

Commit 453be55

Browse files
committed
keep tests and datafile in blocks folder
1 parent 55a7a61 commit 453be55

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
#MDL_QUADCOPTER Dynamic parameters for a quadrotor.
2+
#
3+
# MDL_QUADCOPTER is a script creates the workspace variable quad which
4+
# describes the dynamic characterstics of a quadrotor flying robot.
5+
#
6+
# Properties::
7+
#
8+
# This is a structure with the following elements:
9+
#
10+
# nrotors Number of rotors (1x1)
11+
# J Flyer rotational inertia matrix (3x3)
12+
# h Height of rotors above CoG (1x1)
13+
# d Length of flyer arms (1x1)
14+
# nb Number of blades per rotor (1x1)
15+
# r Rotor radius (1x1)
16+
# c Blade chord (1x1)
17+
# e Flapping hinge offset (1x1)
18+
# Mb Rotor blade mass (1x1)
19+
# Mc Estimated hub clamp mass (1x1)
20+
# ec Blade root clamp displacement (1x1)
21+
# Ib Rotor blade rotational inertia (1x1)
22+
# Ic Estimated root clamp inertia (1x1)
23+
# mb Static blade moment (1x1)
24+
# Ir Total rotor inertia (1x1)
25+
# Ct Non-dim. thrust coefficient (1x1)
26+
# Cq Non-dim. torque coefficient (1x1)
27+
# sigma Rotor solidity ratio (1x1)
28+
# thetat Blade tip angle (1x1)
29+
# theta0 Blade root angle (1x1)
30+
# theta1 Blade twist angle (1x1)
31+
# theta75 3/4 blade angle (1x1)
32+
# thetai Blade ideal root approximation (1x1)
33+
# a Lift slope gradient (1x1)
34+
# A Rotor disc area (1x1)
35+
# gamma Lock number (1x1)
36+
#
37+
#
38+
# Notes::
39+
# - SI units are used.
40+
#
41+
# References::
42+
# - Design, Construction and Control of a Large Quadrotor micro air vehicle.
43+
# P.Pounds, PhD thesis,
44+
# Australian National University, 2007.
45+
# http://www.eng.yale.edu/pep5/P_Pounds_Thesis_2008.pdf
46+
# - This is a heavy lift quadrotor
47+
#
48+
49+
import numpy as np
50+
from math import pi, sqrt, inf
51+
52+
quadrotor = {}
53+
quadrotor['nrotors'] = 4 # 4 rotors
54+
quadrotor['g'] = 9.81 # g Gravity
55+
quadrotor['rho'] = 1.184 # rho Density of air
56+
quadrotor['muv'] = 1.5e-5 # muv Viscosity of air
57+
58+
# Airframe
59+
quadrotor['M'] = 4 # M Mass
60+
Ixx = 0.082
61+
Iyy = 0.082
62+
Izz = 0.149 #0.160
63+
quadrotor['J'] = np.diag([Ixx, Iyy, Izz]) # I Flyer rotational inertia matrix 3x3
64+
65+
quadrotor['h'] = -0.007 # h Height of rotors above CoG
66+
quadrotor['d'] = 0.315 # d Length of flyer arms
67+
68+
#Rotor
69+
quadrotor['nb'] = 2 # b Number of blades per rotor
70+
quadrotor['r'] = 0.165 # r Rotor radius
71+
72+
quadrotor['c'] = 0.018 # c Blade chord
73+
74+
quadrotor['e'] = 0.0 # e Flapping hinge offset
75+
quadrotor['Mb'] = 0.005 # Mb Rotor blade mass
76+
quadrotor['Mc'] = 0.010 # Mc Estimated hub clamp mass
77+
quadrotor['ec'] = 0.004 # ec Blade root clamp displacement
78+
quadrotor['Ib'] = quadrotor['Mb'] * (quadrotor['r'] - quadrotor['ec'])**2 / 4 # Ib Rotor blade rotational inertia
79+
quadrotor['Ic'] = quadrotor['Mc'] * (quadrotor['ec'])**2 / 4 # Ic Estimated root clamp inertia
80+
quadrotor['mb'] = quadrotor['g'] * (quadrotor['Mc'] * quadrotor['ec'] / 2 + quadrotor['Mb'] * quadrotor['r'] /2) # mb Static blade moment
81+
quadrotor['Ir'] = quadrotor['nb'] * (quadrotor['Ib'] + quadrotor['Ic']) # Ir Total rotor inertia
82+
83+
quadrotor['Ct'] = 0.0048 # Ct Non-dim. thrust coefficient
84+
quadrotor['Cq'] = quadrotor['Ct'] * sqrt(quadrotor['Ct']/2) # Cq Non-dim. torque coefficient
85+
86+
quadrotor['sigma'] = quadrotor['c'] * quadrotor['nb'] / (pi * quadrotor['r']) # sigma Rotor solidity ratio
87+
quadrotor['thetat'] = 6.8 * (pi / 180) # thetat Blade tip angle
88+
quadrotor['theta0'] = 14.6 * (pi / 180) # theta0 Blade root angle
89+
quadrotor['theta1'] = quadrotor['thetat'] - quadrotor['theta0'] # theta1 Blade twist angle
90+
quadrotor['theta75'] = quadrotor['theta0'] + 0.75 * quadrotor['theta1'] # theta76 3/4 blade angle
91+
try:
92+
quadrotor['thetai'] = quadrotor['thetat'] * (quadrotor['r'] / quadrotor['e']) # thetai Blade ideal root approximation
93+
except ZeroDivisionError:
94+
quadrotor['thetai'] = inf
95+
quadrotor['a'] = 5.5 # a Lift slope gradient
96+
97+
# derived constants
98+
quadrotor['A'] = pi*quadrotor['r']**2 # A Rotor disc area
99+
quadrotor['gamma'] = quadrotor['rho'] * quadrotor['a'] * quadrotor['c'] * quadrotor['r']**4 / (quadrotor['Ib'] + quadrotor['Ic']) # gamma Lock number
100+
101+
quadrotor['b'] = quadrotor['Ct'] * quadrotor['rho']*quadrotor['A']*quadrotor['r']**2 # T = b w^2
102+
quadrotor['k'] = quadrotor['Cq'] * quadrotor['rho']*quadrotor['A']*quadrotor['r']**3 # Q = k w^2
103+
104+
quadrotor['verbose'] = False
File renamed without changes.

0 commit comments

Comments
 (0)