FASTUAV 0.2.0b0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- fastuav-0.2.0b0/PKG-INFO +174 -0
- fastuav-0.2.0b0/README.md +134 -0
- fastuav-0.2.0b0/pyproject.toml +141 -0
- fastuav-0.2.0b0/src/fastuav/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/configurations/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/configurations/doe_optimization_problem.yaml +189 -0
- fastuav-0.2.0b0/src/fastuav/configurations/doe_simple_model.yaml +17 -0
- fastuav-0.2.0b0/src/fastuav/configurations/doe_sobol_analysis.yaml +61 -0
- fastuav-0.2.0b0/src/fastuav/configurations/fixedwing_mdo.yaml +224 -0
- fastuav-0.2.0b0/src/fastuav/configurations/fixedwing_model.yaml +39 -0
- fastuav-0.2.0b0/src/fastuav/configurations/hybrid_mdo.yaml +321 -0
- fastuav-0.2.0b0/src/fastuav/configurations/hybrid_model.yaml +38 -0
- fastuav-0.2.0b0/src/fastuav/configurations/multirotor_mda.yaml +48 -0
- fastuav-0.2.0b0/src/fastuav/configurations/multirotor_mda_cots.yaml +61 -0
- fastuav-0.2.0b0/src/fastuav/configurations/multirotor_mdo.yaml +193 -0
- fastuav-0.2.0b0/src/fastuav/configurations/multirotor_mdo_cots.yaml +208 -0
- fastuav-0.2.0b0/src/fastuav/configurations/multirotor_model.yaml +33 -0
- fastuav-0.2.0b0/src/fastuav/configurations/multirotor_model_cots.yaml +36 -0
- fastuav-0.2.0b0/src/fastuav/configurations/multirotor_performance.yaml +11 -0
- fastuav-0.2.0b0/src/fastuav/constants.py +33 -0
- fastuav-0.2.0b0/src/fastuav/data/__init__.py +12 -0
- fastuav-0.2.0b0/src/fastuav/data/catalogues/Batteries/Non-Dominated-Augmented-Batteries.csv +498 -0
- fastuav-0.2.0b0/src/fastuav/data/catalogues/ESC/ESC_data.csv +75 -0
- fastuav-0.2.0b0/src/fastuav/data/catalogues/ESC/Non-Dominated-ESC.csv +27 -0
- fastuav-0.2.0b0/src/fastuav/data/catalogues/Motors/Motors_Data.csv +205 -0
- fastuav-0.2.0b0/src/fastuav/data/catalogues/Motors/Non-Dominated-Motors.csv +48 -0
- fastuav-0.2.0b0/src/fastuav/data/catalogues/Propeller/APC_propellers.csv +2039 -0
- fastuav-0.2.0b0/src/fastuav/data/catalogues/Propeller/APC_propellers_MR.csv +53 -0
- fastuav-0.2.0b0/src/fastuav/data/catalogues/Propeller/performances/Non-Dominated-Propeller.csv +406 -0
- fastuav-0.2.0b0/src/fastuav/data/catalogues/Propeller/performances/Propeller_Data.csv +2821 -0
- fastuav-0.2.0b0/src/fastuav/missions/missions_fixedwing.yaml +22 -0
- fastuav-0.2.0b0/src/fastuav/missions/missions_hybrid.yaml +24 -0
- fastuav-0.2.0b0/src/fastuav/missions/missions_multirotor.yaml +28 -0
- fastuav-0.2.0b0/src/fastuav/models/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/add_ons/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/add_ons/sample_discipline.py +35 -0
- fastuav-0.2.0b0/src/fastuav/models/aerodynamics/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/aerodynamics/aerodynamics_fixedwing.py +387 -0
- fastuav-0.2.0b0/src/fastuav/models/aerodynamics/aerodynamics_hybrid.py +144 -0
- fastuav-0.2.0b0/src/fastuav/models/aerodynamics/aerodynamics_multirotor.py +6 -0
- fastuav-0.2.0b0/src/fastuav/models/geometry/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/geometry/geometry_fixedwing.py +534 -0
- fastuav-0.2.0b0/src/fastuav/models/geometry/geometry_hybrid.py +207 -0
- fastuav-0.2.0b0/src/fastuav/models/geometry/geometry_multirotor.py +139 -0
- fastuav-0.2.0b0/src/fastuav/models/mtow/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/mtow/mtow.py +266 -0
- fastuav-0.2.0b0/src/fastuav/models/mtow/mtow_fixedwing.py +19 -0
- fastuav-0.2.0b0/src/fastuav/models/mtow/mtow_hybrid.py +19 -0
- fastuav-0.2.0b0/src/fastuav/models/mtow/mtow_multirotor.py +19 -0
- fastuav-0.2.0b0/src/fastuav/models/performance/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/performance/mission/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/performance/mission/flight_performance.py +358 -0
- fastuav-0.2.0b0/src/fastuav/models/performance/mission/mission_builder.py +247 -0
- fastuav-0.2.0b0/src/fastuav/models/performance/mission/mission_definition/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/performance/mission/mission_definition/resources/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/performance/mission/mission_definition/resources/mission_schema.json +267 -0
- fastuav-0.2.0b0/src/fastuav/models/performance/mission/mission_definition/schema.py +104 -0
- fastuav-0.2.0b0/src/fastuav/models/performance/mission/phase_builder.py +413 -0
- fastuav-0.2.0b0/src/fastuav/models/performance/mission/route_builder.py +234 -0
- fastuav-0.2.0b0/src/fastuav/models/performance/range_and_endurance.py +163 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/battery.py +39 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/catalogue.py +275 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/constraints.py +219 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/definition_parameters.py +267 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/estimation_models.py +355 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/energy/battery/performance_analysis.py +75 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/catalogue.py +138 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/constraints.py +157 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/definition_parameters.py +161 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/esc.py +33 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/estimation_models.py +48 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/esc/performance_analysis.py +61 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/gearbox/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/gearbox/gearbox.py +60 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/catalogue.py +176 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/constraints.py +158 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/definition_parameters.py +132 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/estimation_models.py +304 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/motor.py +35 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/motor/performance_analysis.py +379 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/aerodynamics/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/aerodynamics/surrogate_models.py +264 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/catalogue.py +239 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/constraints.py +127 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/definition_parameters.py +213 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/estimation_models.py +157 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/performance_analysis.py +215 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/propeller/propeller.py +37 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/propulsion.py +92 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/propulsion_fixedwing.py +19 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/propulsion_hybrid.py +19 -0
- fastuav-0.2.0b0/src/fastuav/models/propulsion/propulsion_multirotor.py +19 -0
- fastuav-0.2.0b0/src/fastuav/models/scenarios/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/scenarios/scenarios_fixedwing.py +47 -0
- fastuav-0.2.0b0/src/fastuav/models/scenarios/scenarios_hybrid.py +62 -0
- fastuav-0.2.0b0/src/fastuav/models/scenarios/scenarios_multirotor.py +33 -0
- fastuav-0.2.0b0/src/fastuav/models/scenarios/thrust/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/scenarios/thrust/climb.py +164 -0
- fastuav-0.2.0b0/src/fastuav/models/scenarios/thrust/cruise.py +163 -0
- fastuav-0.2.0b0/src/fastuav/models/scenarios/thrust/flight_models.py +107 -0
- fastuav-0.2.0b0/src/fastuav/models/scenarios/thrust/hover.py +58 -0
- fastuav-0.2.0b0/src/fastuav/models/scenarios/thrust/takeoff.py +109 -0
- fastuav-0.2.0b0/src/fastuav/models/scenarios/wing_loading/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/scenarios/wing_loading/wing_loading.py +208 -0
- fastuav-0.2.0b0/src/fastuav/models/stability/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/stability/stability_fixedwing.py +33 -0
- fastuav-0.2.0b0/src/fastuav/models/stability/stability_hybrid.py +33 -0
- fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/center_of_gravity/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/center_of_gravity/cog.py +132 -0
- fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/center_of_gravity/components/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/center_of_gravity/components/cog_airframe.py +232 -0
- fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/center_of_gravity/components/cog_load.py +134 -0
- fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/center_of_gravity/components/cog_propulsion.py +155 -0
- fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/neutral_point.py +45 -0
- fastuav-0.2.0b0/src/fastuav/models/stability/static_longitudinal/static_margin.py +95 -0
- fastuav-0.2.0b0/src/fastuav/models/structures/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/structures/fuselage.py +44 -0
- fastuav-0.2.0b0/src/fastuav/models/structures/structures_fixedwing.py +33 -0
- fastuav-0.2.0b0/src/fastuav/models/structures/structures_hybrid.py +35 -0
- fastuav-0.2.0b0/src/fastuav/models/structures/structures_multirotor.py +102 -0
- fastuav-0.2.0b0/src/fastuav/models/structures/tails.py +58 -0
- fastuav-0.2.0b0/src/fastuav/models/structures/wing/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/structures/wing/constraints.py +100 -0
- fastuav-0.2.0b0/src/fastuav/models/structures/wing/estimation_models.py +310 -0
- fastuav-0.2.0b0/src/fastuav/models/structures/wing/structural_analysis.py +115 -0
- fastuav-0.2.0b0/src/fastuav/models/structures/wing/wing.py +70 -0
- fastuav-0.2.0b0/src/fastuav/models/variable_descriptions.txt +816 -0
- fastuav-0.2.0b0/src/fastuav/models/wires/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/models/wires/wires.py +202 -0
- fastuav-0.2.0b0/src/fastuav/models/wires/wires_fixedwing.py +19 -0
- fastuav-0.2.0b0/src/fastuav/models/wires/wires_hybrid.py +19 -0
- fastuav-0.2.0b0/src/fastuav/models/wires/wires_multirotor.py +19 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/0_Tutorial.ipynb +2601 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/1_Multirotor_Design.ipynb +2557 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/1b_Mission_performance.ipynb +2271 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/1c_Multirotor_Design_Catalogues.ipynb +3853 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/2_FixedWing_Design.ipynb +2345 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/3_HybridVTOL_Design.ipynb +2337 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/4_Uncertainty_analysis.ipynb +822 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/5_Design_of_experiments_Tutorial.ipynb +400 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/README.md +14 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/__init__.py +12 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/__init__.py +12 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/doe_optimization_problem.yaml +189 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/doe_simple_model.yaml +17 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/doe_sobol_analysis.yaml +61 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/fixedwing_mdo.yaml +224 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/fixedwing_model.yaml +39 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/hybrid_mdo.yaml +321 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/hybrid_model.yaml +38 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_mda.yaml +48 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_mda_cots.yaml +61 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_mdo.yaml +190 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_mdo_cots.yaml +208 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_model.yaml +33 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_model_cots.yaml +36 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/configurations/multirotor_performance.yaml +11 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/missions/__init__.py +12 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/missions/missions_fixedwing.yaml +22 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/missions/missions_hybrid.yaml +24 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/missions/missions_multirotor.yaml +28 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/missions/missions_multirotor_doe.yaml +27 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/missions/missions_multirotor_off_design.yaml +41 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/__init__.py +12 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_inputs_DJI_M600.xml +442 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_inputs_FW.xml +501 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_inputs_doe.xml +126 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_inputs_doe_optim.xml +442 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_inputs_hybrid.xml +857 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_outputs_DJI_M600_mdo.xml +715 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/data/source_files/problem_outputs_discrete_DJI_M600_mdo.xml +716 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/img/uncertainty.gif +0 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/doe_Morris.csv +25 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/doe_Sobol.csv +769 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/doe_Sobol_2.csv +769 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/doe_fullfactorial.csv +101 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/problem_morris.txt +1 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/problem_sobol.txt +1 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/x_morris.txt +1 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/y_morris.txt +1 -0
- fastuav-0.2.0b0/src/fastuav/notebooks/workdir/sensitivity_analysis/y_sobol.txt +1 -0
- fastuav-0.2.0b0/src/fastuav/utils/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/utils/catalogues/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/utils/catalogues/estimators.py +353 -0
- fastuav-0.2.0b0/src/fastuav/utils/configurations_versatility.py +89 -0
- fastuav-0.2.0b0/src/fastuav/utils/drivers/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/utils/drivers/cmaes_driver.py +792 -0
- fastuav-0.2.0b0/src/fastuav/utils/drivers/cmaes_driver_legacy.py +490 -0
- fastuav-0.2.0b0/src/fastuav/utils/drivers/salib_doe_driver.py +213 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/analysis_and_plots.py +1035 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/old/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/old/monte_carlo.py +530 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/old/morris_0.py +297 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/old/morris_1.py +468 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/old/sobol_0.py +423 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/old/sobol_1.py +735 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/sensitivity_analysis/__init__.py +0 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/sensitivity_analysis/distribution_plot.py +113 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/sensitivity_analysis/doe_convergence_plot.py +301 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/sensitivity_analysis/morris_plot.py +133 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/sensitivity_analysis/sensitivity_analysis.py +1323 -0
- fastuav-0.2.0b0/src/fastuav/utils/postprocessing/sensitivity_analysis/sobol_plot.py +38 -0
- fastuav-0.2.0b0/src/fastuav/utils/uncertainty.py +240 -0
fastuav-0.2.0b0/PKG-INFO
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: FASTUAV
|
|
3
|
+
Version: 0.2.0b0
|
|
4
|
+
Summary: FAST-UAV is a framework for performing rapid Overall Aircraft Design for Unmanned Aerial Vehicles
|
|
5
|
+
License-Expression: GPL-3.0-only
|
|
6
|
+
Keywords: uav,design,multi-disciplinary
|
|
7
|
+
Author: Félix POLLET
|
|
8
|
+
Author-email: felix.pollet@isae-supaero.fr
|
|
9
|
+
Requires-Python: >=3.10,<3.15
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Intended Audience :: Education
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
15
|
+
Classifier: Natural Language :: English
|
|
16
|
+
Classifier: Operating System :: MacOS
|
|
17
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
18
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
25
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
26
|
+
Provides-Extra: jupyterlab
|
|
27
|
+
Requires-Dist: SALib (>=1.5.0,<2.0.0)
|
|
28
|
+
Requires-Dist: cma (>=4.0.0,<5.0.0)
|
|
29
|
+
Requires-Dist: fast-oad-core (>=1.10.0) ; python_version < "3.15"
|
|
30
|
+
Requires-Dist: ipywidgets (>=8.1.8,<9.0.0)
|
|
31
|
+
Requires-Dist: jupyterlab ; extra == "jupyterlab"
|
|
32
|
+
Requires-Dist: kaleido (==0.2.1)
|
|
33
|
+
Requires-Dist: plotly (>=6.0.0,<7.0.0)
|
|
34
|
+
Requires-Dist: psutil
|
|
35
|
+
Requires-Dist: pyzmq (>=26)
|
|
36
|
+
Requires-Dist: scikit-learn (>=1.0.2,<2.0.0)
|
|
37
|
+
Requires-Dist: seaborn (>=0.13.0,<0.14.0)
|
|
38
|
+
Project-URL: Homepage, https://github.com/SizingLab/FAST-UAV
|
|
39
|
+
Description-Content-Type: text/markdown
|
|
40
|
+
|
|
41
|
+
<p align="center">
|
|
42
|
+
<img src="docs/assets/banner.png" width="75%" alt="FASTUAV" align="center" />
|
|
43
|
+
</p>
|
|
44
|
+
|
|
45
|
+
Future Aircraft Sizing Tool - Unmanned Aerial Vehicles
|
|
46
|
+
===============================================================
|
|
47
|
+
|
|
48
|
+
<div align="center">
|
|
49
|
+
<a href="#">
|
|
50
|
+
<img src="https://img.shields.io/badge/Python-3.9, 3.10, 3.11, 3.12-efefef">
|
|
51
|
+
</a>
|
|
52
|
+
<a href="#">
|
|
53
|
+
<img src="https://img.shields.io/badge/License-GPLv3-blue.svg">
|
|
54
|
+
</a>
|
|
55
|
+
</div>
|
|
56
|
+
<br>
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
<b>FAST-UAV</b> is a Python tool dedicated to optimal drone design with a multi-disciplinary approach.
|
|
61
|
+
|
|
62
|
+
Based on the [FAST-OAD](https://github.com/fast-aircraft-design/FAST-OAD) and [OpenMDAO](https://openmdao.org/) frameworks, it allows to easily switch between models to address different types of configurations.
|
|
63
|
+
|
|
64
|
+
Currently, FAST-UAV is bundled with analytical models for multi-rotor, fixed-wing and quad-plane (hybrid VTOL) UAVs.
|
|
65
|
+
|
|
66
|
+
🚀 Quick start
|
|
67
|
+
-------
|
|
68
|
+
|
|
69
|
+
FAST-UAV requires Python 3.9 or greater. It is recommended to install FAST-UAV in a virtual environment ([conda](https://docs.conda.io/en/latest/), [venv](https://docs.python.org/3/library/venv.html)...):
|
|
70
|
+
|
|
71
|
+
```{.bash}
|
|
72
|
+
conda create --name <env_name> python=3.9
|
|
73
|
+
conda activate <env_name>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
To install FAST-UAV, run the following commands in a terminal:
|
|
77
|
+
```{.bash}
|
|
78
|
+
pip install fastuav
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Now that FAST-UAV is installed, you can start using it through [Jupyter notebooks](https://jupyter.org/).
|
|
82
|
+
To do so, create a new folder for FAST-UAV, `cd` into this folder, and type this command in your terminal:
|
|
83
|
+
```{.bash}
|
|
84
|
+
fastoad notebooks -p fastuav
|
|
85
|
+
```
|
|
86
|
+
Then run the Jupyter server as indicated in the obtained message.
|
|
87
|
+
|
|
88
|
+
📚 Citation
|
|
89
|
+
------------
|
|
90
|
+
This project is part of Félix Pollet's PhD thesis, which is available [here](http://www.theses.fr/2024ESAE0013/document).
|
|
91
|
+
If you use FAST-UAV as part of your work in a scientific publication, please consider citing the following papers:
|
|
92
|
+
```
|
|
93
|
+
@phdthesis{pollet_design_2024,
|
|
94
|
+
type = {{PhD} {Thesis}},
|
|
95
|
+
title = {Design optimization of unmanned aerial vehicles : a multidisciplinary approach with uncertainty, fault-tolerance, and environmental impact assessments},
|
|
96
|
+
url = {http://www.theses.fr/2024ESAE0013/document},
|
|
97
|
+
school = {Institut Supérieur de l'Aéronautique et de l'Espace},
|
|
98
|
+
author = {Pollet, F{\'e}lix},
|
|
99
|
+
collaborator = {Moschetta, Jean-Marc and Budinger, Marc and Delbecq, Scott},
|
|
100
|
+
month = mar,
|
|
101
|
+
year = {2024},
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
@inproceedings{pollet2022common,
|
|
105
|
+
title = {A common framework for the design optimization of fixed-wing, multicopter and {VTOL} {UAV} configurations},
|
|
106
|
+
author = {Pollet, F{\'e}lix and Delbecq, Scott and Budinger, Marc and Moschetta, Jean-Marc and Liscou{\"e}t, Jonathan},
|
|
107
|
+
booktitle = {33rd {Congress} of the {International} {Council} of the {Aeronautical} {Sciences}},
|
|
108
|
+
address = {Stockholm, Sweden},
|
|
109
|
+
month = sep,
|
|
110
|
+
year = {2022},
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
@inproceedings{pollet2021design,
|
|
114
|
+
title = {Design optimization of multirotor drones in forward flight},
|
|
115
|
+
author = {Pollet, F{\'e}lix and Delbecq, Scott and Budinger, Marc and Moschetta, Jean-Marc},
|
|
116
|
+
booktitle = {32nd {Congress} of the {International} {Council} of the {Aeronautical} {Sciences}},
|
|
117
|
+
address = {Shanghai, China},
|
|
118
|
+
month = sep,
|
|
119
|
+
year = {2021},
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
@article{delbecq2020efficient,
|
|
123
|
+
title = {Efficient sizing and optimization of multirotor drones based on scaling laws and similarity models},
|
|
124
|
+
author = {Delbecq, Scott and Budinger, Marc and Ochotorena, Aithor and Reysset, Aur{\'e}lien and Defay, Francois},
|
|
125
|
+
journal = {Aerospace Science and Technology},
|
|
126
|
+
volume = {102},
|
|
127
|
+
doi = {10.1016/j.ast.2020.105873},
|
|
128
|
+
month = jul,
|
|
129
|
+
year = {2020},
|
|
130
|
+
pages = {105873},
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
🔥 Related publications
|
|
136
|
+
------------
|
|
137
|
+
> M. Budinger, A. Reysset, A. Ochotorena, and S. Delbecq. Scaling laws and similarity models for the preliminary design of multirotor drones. Aerospace Science and Technology, 2020, 98, pp.1-15. https://doi.org/10.1016/j.ast.2019.105658. https://hal.science/hal-02997598.
|
|
138
|
+
|
|
139
|
+
> S. Delbecq, M. Budinger, A. Ochotorena, A. Reysset, and F. Defay. Efficient sizing and optimization of multirotor drones based on scaling laws and similarity models. Aerospace Science
|
|
140
|
+
and Technology, 2020, 102, pp.1-23. https://doi.org/10.1016/j.ast.2020.105873. https://hal.science/hal-02997596.
|
|
141
|
+
|
|
142
|
+
> F. Pollet, S. Delbecq, M. Budinger, and J.-M. Moschetta. Design optimization of multirotor drones in cruise. 32nd Congress of the International Council of the Aeronautical Sciences, Sep 2021, Shanghai, China. https://hal.science/hal-03832135/.
|
|
143
|
+
|
|
144
|
+
> S. Delbecq, M. Budinger, C. Coic, and N. Bartoli. Trajectory and design optimization of multirotor drones with system simulation. AIAA Scitech 2021 Forum, Jan. 2021, VIRTUAL EVENT, United States. https://doi.org/10.2514/6.2021-0211. https://hal.science/hal-03121520.
|
|
145
|
+
|
|
146
|
+
> J. Liscouet, F. Pollet, J. Jézégou, M. Budinger, S. Delbecq, and J.-M. Moschetta. A Methodology to Integrate Reliability into the Conceptual Design of Safety-Critical Multirotor Unmanned Aerial Vehicles. Aerospace Science and Technology, 2022, 127, pp.107681. https://doi.org/10.1016/j.ast.2022.107681. https://hal.science/hal-03956142.
|
|
147
|
+
|
|
148
|
+
> F. Pollet, S. Delbecq, M. Budinger, J.-M. Moschetta, and J. Liscouët. A Common Framework for the Design Optimization of Fixed-Wing, Multicopter and VTOL UAV Configurations. 33rd Congress of the International Council of the Aeronautical Sciences, Sep. 2022, Stockholm, Sweden. https://hal.science/hal-03832115/
|
|
149
|
+
|
|
150
|
+
> F. Pollet, M. Budinger, S. Delbecq, J. -M. Moschetta, and J. Liscouët. Quantifying and Mitigating Uncertainties in Design Optimization Including Off-the-Shelf Components: Application to an Electric Multirotor UAV. Aerospace Science and Technology, 2023, pp.108179. https://doi.org/10.1016/j.ast.2023.108179.
|
|
151
|
+
|
|
152
|
+
> F. Pollet, M. Budinger, S. Delbecq, J. -M. Moschetta, and T. Planès. Environmental Life Cycle Assessments for the Design Exploration of Electric UAVs. Aerospace Europe Conference 2023 – 10th EUCASS – 9th CEAS, Jul. 2023, Lausanne, Switzerland. https://doi.org/10.13009/EUCASS2023-548. https://hal.science/hal-04229799.
|
|
153
|
+
|
|
154
|
+
> [DroneApp](https://github.com/SizingLab/droneapp-legacy) sizing tool
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
📝 License
|
|
158
|
+
------------
|
|
159
|
+
The software is released under <a href="https://www.gnu.org/licenses/gpl-3.0.en.html"> The GNU General Public License v3.0</a>.
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
🤝 Questions and contributions
|
|
163
|
+
------------
|
|
164
|
+
Feel free to contact us if you have any question or suggestion, or if you wish to contribute with us on FAST-UAV!
|
|
165
|
+
* Scott DELBECQ [scott.delbecq@isae-supaero.fr](scott.delbecq@isae-supaero.fr)
|
|
166
|
+
* Félix POLLET [felix.pollet@isae-supaero.fr](felix.pollet@isae-supaero.fr)
|
|
167
|
+
* Marc BUDINGER [mbudinge@insa-toulouse.fr](mbudinge@insa-toulouse.fr)
|
|
168
|
+
|
|
169
|
+
For developers, please follow the following procedure:
|
|
170
|
+
1. [Fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) the GitHub repository of FAST-UAV
|
|
171
|
+
2. Clone your forked repository onto your local machine with `git clone`
|
|
172
|
+
3. `cd` into your FAST-UAV project and install the required dependencies with [Poetry](https://python-poetry.org/docs/) using the `poetry install` command.
|
|
173
|
+
4. Start making changes to the forked repository
|
|
174
|
+
5. Open a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) to merge those changes back into the original repository of FAST-UAV.
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="docs/assets/banner.png" width="75%" alt="FASTUAV" align="center" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
Future Aircraft Sizing Tool - Unmanned Aerial Vehicles
|
|
6
|
+
===============================================================
|
|
7
|
+
|
|
8
|
+
<div align="center">
|
|
9
|
+
<a href="#">
|
|
10
|
+
<img src="https://img.shields.io/badge/Python-3.9, 3.10, 3.11, 3.12-efefef">
|
|
11
|
+
</a>
|
|
12
|
+
<a href="#">
|
|
13
|
+
<img src="https://img.shields.io/badge/License-GPLv3-blue.svg">
|
|
14
|
+
</a>
|
|
15
|
+
</div>
|
|
16
|
+
<br>
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
<b>FAST-UAV</b> is a Python tool dedicated to optimal drone design with a multi-disciplinary approach.
|
|
21
|
+
|
|
22
|
+
Based on the [FAST-OAD](https://github.com/fast-aircraft-design/FAST-OAD) and [OpenMDAO](https://openmdao.org/) frameworks, it allows to easily switch between models to address different types of configurations.
|
|
23
|
+
|
|
24
|
+
Currently, FAST-UAV is bundled with analytical models for multi-rotor, fixed-wing and quad-plane (hybrid VTOL) UAVs.
|
|
25
|
+
|
|
26
|
+
🚀 Quick start
|
|
27
|
+
-------
|
|
28
|
+
|
|
29
|
+
FAST-UAV requires Python 3.9 or greater. It is recommended to install FAST-UAV in a virtual environment ([conda](https://docs.conda.io/en/latest/), [venv](https://docs.python.org/3/library/venv.html)...):
|
|
30
|
+
|
|
31
|
+
```{.bash}
|
|
32
|
+
conda create --name <env_name> python=3.9
|
|
33
|
+
conda activate <env_name>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
To install FAST-UAV, run the following commands in a terminal:
|
|
37
|
+
```{.bash}
|
|
38
|
+
pip install fastuav
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Now that FAST-UAV is installed, you can start using it through [Jupyter notebooks](https://jupyter.org/).
|
|
42
|
+
To do so, create a new folder for FAST-UAV, `cd` into this folder, and type this command in your terminal:
|
|
43
|
+
```{.bash}
|
|
44
|
+
fastoad notebooks -p fastuav
|
|
45
|
+
```
|
|
46
|
+
Then run the Jupyter server as indicated in the obtained message.
|
|
47
|
+
|
|
48
|
+
📚 Citation
|
|
49
|
+
------------
|
|
50
|
+
This project is part of Félix Pollet's PhD thesis, which is available [here](http://www.theses.fr/2024ESAE0013/document).
|
|
51
|
+
If you use FAST-UAV as part of your work in a scientific publication, please consider citing the following papers:
|
|
52
|
+
```
|
|
53
|
+
@phdthesis{pollet_design_2024,
|
|
54
|
+
type = {{PhD} {Thesis}},
|
|
55
|
+
title = {Design optimization of unmanned aerial vehicles : a multidisciplinary approach with uncertainty, fault-tolerance, and environmental impact assessments},
|
|
56
|
+
url = {http://www.theses.fr/2024ESAE0013/document},
|
|
57
|
+
school = {Institut Supérieur de l'Aéronautique et de l'Espace},
|
|
58
|
+
author = {Pollet, F{\'e}lix},
|
|
59
|
+
collaborator = {Moschetta, Jean-Marc and Budinger, Marc and Delbecq, Scott},
|
|
60
|
+
month = mar,
|
|
61
|
+
year = {2024},
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
@inproceedings{pollet2022common,
|
|
65
|
+
title = {A common framework for the design optimization of fixed-wing, multicopter and {VTOL} {UAV} configurations},
|
|
66
|
+
author = {Pollet, F{\'e}lix and Delbecq, Scott and Budinger, Marc and Moschetta, Jean-Marc and Liscou{\"e}t, Jonathan},
|
|
67
|
+
booktitle = {33rd {Congress} of the {International} {Council} of the {Aeronautical} {Sciences}},
|
|
68
|
+
address = {Stockholm, Sweden},
|
|
69
|
+
month = sep,
|
|
70
|
+
year = {2022},
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@inproceedings{pollet2021design,
|
|
74
|
+
title = {Design optimization of multirotor drones in forward flight},
|
|
75
|
+
author = {Pollet, F{\'e}lix and Delbecq, Scott and Budinger, Marc and Moschetta, Jean-Marc},
|
|
76
|
+
booktitle = {32nd {Congress} of the {International} {Council} of the {Aeronautical} {Sciences}},
|
|
77
|
+
address = {Shanghai, China},
|
|
78
|
+
month = sep,
|
|
79
|
+
year = {2021},
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@article{delbecq2020efficient,
|
|
83
|
+
title = {Efficient sizing and optimization of multirotor drones based on scaling laws and similarity models},
|
|
84
|
+
author = {Delbecq, Scott and Budinger, Marc and Ochotorena, Aithor and Reysset, Aur{\'e}lien and Defay, Francois},
|
|
85
|
+
journal = {Aerospace Science and Technology},
|
|
86
|
+
volume = {102},
|
|
87
|
+
doi = {10.1016/j.ast.2020.105873},
|
|
88
|
+
month = jul,
|
|
89
|
+
year = {2020},
|
|
90
|
+
pages = {105873},
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
🔥 Related publications
|
|
96
|
+
------------
|
|
97
|
+
> M. Budinger, A. Reysset, A. Ochotorena, and S. Delbecq. Scaling laws and similarity models for the preliminary design of multirotor drones. Aerospace Science and Technology, 2020, 98, pp.1-15. https://doi.org/10.1016/j.ast.2019.105658. https://hal.science/hal-02997598.
|
|
98
|
+
|
|
99
|
+
> S. Delbecq, M. Budinger, A. Ochotorena, A. Reysset, and F. Defay. Efficient sizing and optimization of multirotor drones based on scaling laws and similarity models. Aerospace Science
|
|
100
|
+
and Technology, 2020, 102, pp.1-23. https://doi.org/10.1016/j.ast.2020.105873. https://hal.science/hal-02997596.
|
|
101
|
+
|
|
102
|
+
> F. Pollet, S. Delbecq, M. Budinger, and J.-M. Moschetta. Design optimization of multirotor drones in cruise. 32nd Congress of the International Council of the Aeronautical Sciences, Sep 2021, Shanghai, China. https://hal.science/hal-03832135/.
|
|
103
|
+
|
|
104
|
+
> S. Delbecq, M. Budinger, C. Coic, and N. Bartoli. Trajectory and design optimization of multirotor drones with system simulation. AIAA Scitech 2021 Forum, Jan. 2021, VIRTUAL EVENT, United States. https://doi.org/10.2514/6.2021-0211. https://hal.science/hal-03121520.
|
|
105
|
+
|
|
106
|
+
> J. Liscouet, F. Pollet, J. Jézégou, M. Budinger, S. Delbecq, and J.-M. Moschetta. A Methodology to Integrate Reliability into the Conceptual Design of Safety-Critical Multirotor Unmanned Aerial Vehicles. Aerospace Science and Technology, 2022, 127, pp.107681. https://doi.org/10.1016/j.ast.2022.107681. https://hal.science/hal-03956142.
|
|
107
|
+
|
|
108
|
+
> F. Pollet, S. Delbecq, M. Budinger, J.-M. Moschetta, and J. Liscouët. A Common Framework for the Design Optimization of Fixed-Wing, Multicopter and VTOL UAV Configurations. 33rd Congress of the International Council of the Aeronautical Sciences, Sep. 2022, Stockholm, Sweden. https://hal.science/hal-03832115/
|
|
109
|
+
|
|
110
|
+
> F. Pollet, M. Budinger, S. Delbecq, J. -M. Moschetta, and J. Liscouët. Quantifying and Mitigating Uncertainties in Design Optimization Including Off-the-Shelf Components: Application to an Electric Multirotor UAV. Aerospace Science and Technology, 2023, pp.108179. https://doi.org/10.1016/j.ast.2023.108179.
|
|
111
|
+
|
|
112
|
+
> F. Pollet, M. Budinger, S. Delbecq, J. -M. Moschetta, and T. Planès. Environmental Life Cycle Assessments for the Design Exploration of Electric UAVs. Aerospace Europe Conference 2023 – 10th EUCASS – 9th CEAS, Jul. 2023, Lausanne, Switzerland. https://doi.org/10.13009/EUCASS2023-548. https://hal.science/hal-04229799.
|
|
113
|
+
|
|
114
|
+
> [DroneApp](https://github.com/SizingLab/droneapp-legacy) sizing tool
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
📝 License
|
|
118
|
+
------------
|
|
119
|
+
The software is released under <a href="https://www.gnu.org/licenses/gpl-3.0.en.html"> The GNU General Public License v3.0</a>.
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
🤝 Questions and contributions
|
|
123
|
+
------------
|
|
124
|
+
Feel free to contact us if you have any question or suggestion, or if you wish to contribute with us on FAST-UAV!
|
|
125
|
+
* Scott DELBECQ [scott.delbecq@isae-supaero.fr](scott.delbecq@isae-supaero.fr)
|
|
126
|
+
* Félix POLLET [felix.pollet@isae-supaero.fr](felix.pollet@isae-supaero.fr)
|
|
127
|
+
* Marc BUDINGER [mbudinge@insa-toulouse.fr](mbudinge@insa-toulouse.fr)
|
|
128
|
+
|
|
129
|
+
For developers, please follow the following procedure:
|
|
130
|
+
1. [Fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) the GitHub repository of FAST-UAV
|
|
131
|
+
2. Clone your forked repository onto your local machine with `git clone`
|
|
132
|
+
3. `cd` into your FAST-UAV project and install the required dependencies with [Poetry](https://python-poetry.org/docs/) using the `poetry install` command.
|
|
133
|
+
4. Start making changes to the forked repository
|
|
134
|
+
5. Open a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) to merge those changes back into the original repository of FAST-UAV.
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Project metadata (PEP 621) ===================================================
|
|
2
|
+
[project]
|
|
3
|
+
name = "FASTUAV"
|
|
4
|
+
description = "FAST-UAV is a framework for performing rapid Overall Aircraft Design for Unmanned Aerial Vehicles"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
license = "GPL-3.0-only"
|
|
7
|
+
keywords = ["uav", "design", "multi-disciplinary"]
|
|
8
|
+
authors = [
|
|
9
|
+
{name = "Félix POLLET", email = "felix.pollet@isae-supaero.fr"},
|
|
10
|
+
{name = "Scott DELBECQ", email = "scott.delbecq@isae-supaero.fr"},
|
|
11
|
+
{name = "Marc BUDINGER", email = "marc.budinger@insa-toulouse.fr"},
|
|
12
|
+
]
|
|
13
|
+
requires-python = ">=3.10,<3.15"
|
|
14
|
+
dynamic = ["classifiers"] # Needed to use poetry-dynamic-versioning
|
|
15
|
+
|
|
16
|
+
# User dependencies ------------------------------------------------------------
|
|
17
|
+
dependencies = [
|
|
18
|
+
# IMPORTANT: when modifying this list, docs/requirements.txt must be updated for
|
|
19
|
+
# ReadTheDocs to be able to compile the documentation.
|
|
20
|
+
# A pre-commit hook has been added to do this task. As a result, any modification
|
|
21
|
+
# of poetry.lock file will modify docs/requirements.txt and make
|
|
22
|
+
# the commit fail because "files were modified by this hook". In that case,
|
|
23
|
+
# doing again the commit including changes in docs/requirements.txt will succeed.
|
|
24
|
+
"fast-oad-core>=1.10.0; python_version<'3.15'",
|
|
25
|
+
"cma>=4.0.0,<5.0.0",
|
|
26
|
+
"scikit-learn>=1.0.2,<2.0.0",
|
|
27
|
+
"psutil",
|
|
28
|
+
"kaleido==0.2.1",
|
|
29
|
+
"SALib>=1.5.0,<2.0.0",
|
|
30
|
+
"seaborn>=0.13.0,<0.14.0",
|
|
31
|
+
"pyzmq>=26", # Lower bound for Ubuntu 24.04 / Python 3.12 issue; 27+ needed for Python 3.14 wheels (esp. Windows)
|
|
32
|
+
"plotly>=6.0.0,<7.0.0",
|
|
33
|
+
"ipywidgets>=8.1.8,<9.0.0",
|
|
34
|
+
]
|
|
35
|
+
version = "0.2.0-beta"
|
|
36
|
+
|
|
37
|
+
[project.optional-dependencies]
|
|
38
|
+
jupyterlab = ["jupyterlab"]
|
|
39
|
+
|
|
40
|
+
[project.urls]
|
|
41
|
+
homepage = "https://github.com/SizingLab/FAST-UAV"
|
|
42
|
+
|
|
43
|
+
# Entry points -----------------------------------------------------------------
|
|
44
|
+
[project.entry-points."fastoad.plugins"]
|
|
45
|
+
uav = "fastuav"
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
# Poetry settings ==============================================================
|
|
49
|
+
[tool.poetry]
|
|
50
|
+
requires-poetry = ">=2.0"
|
|
51
|
+
packages = [{include = "fastuav", from = "src"}]
|
|
52
|
+
exclude = ["**/tests/**"]
|
|
53
|
+
|
|
54
|
+
# Suitable classifiers based on python requirement and license are not automatically added if classifiers are statically defined in the project section
|
|
55
|
+
classifiers = [
|
|
56
|
+
"Development Status :: 4 - Beta",
|
|
57
|
+
"Environment :: Console",
|
|
58
|
+
"Intended Audience :: Education",
|
|
59
|
+
"Intended Audience :: Science/Research",
|
|
60
|
+
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
|
61
|
+
"Natural Language :: English",
|
|
62
|
+
"Operating System :: MacOS",
|
|
63
|
+
"Operating System :: Microsoft :: Windows",
|
|
64
|
+
"Operating System :: POSIX :: Linux",
|
|
65
|
+
"Programming Language :: Python :: 3",
|
|
66
|
+
"Programming Language :: Python :: 3.10",
|
|
67
|
+
"Programming Language :: Python :: 3.11",
|
|
68
|
+
"Programming Language :: Python :: 3.12",
|
|
69
|
+
"Programming Language :: Python :: 3.13",
|
|
70
|
+
"Programming Language :: Python :: 3.14",
|
|
71
|
+
"Topic :: Scientific/Engineering :: Physics",
|
|
72
|
+
]
|
|
73
|
+
|
|
74
|
+
# Development dependencies -----------------------------------------------------
|
|
75
|
+
[tool.poetry.group.test.dependencies]
|
|
76
|
+
pytest = "^8.0"
|
|
77
|
+
pytest-cov = "^6.0"
|
|
78
|
+
coverage = {version = "^7.0", extras = ["toml"]}
|
|
79
|
+
nbval = "^0.9.6"
|
|
80
|
+
|
|
81
|
+
[tool.poetry.group.doc.dependencies]
|
|
82
|
+
sphinx = "^4.1.2"
|
|
83
|
+
sphinx-rtd-theme = "^1.0"
|
|
84
|
+
sphinxcontrib-bibtex = "^2.3.0"
|
|
85
|
+
|
|
86
|
+
[tool.poetry.group.lint.dependencies]
|
|
87
|
+
pre-commit = "^2.14.1"
|
|
88
|
+
nbstripout = "^0.5.0"
|
|
89
|
+
ruff = "0.15.0"
|
|
90
|
+
|
|
91
|
+
# Poetry plugins ===============================================================
|
|
92
|
+
[tool.poetry.requires-plugins]
|
|
93
|
+
poetry-plugin-export = ">=1.9" # Used for the poetry export hook in pre-commit
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
# Dynamic versioning settings ==================================================
|
|
97
|
+
[tool.poetry-dynamic-versioning]
|
|
98
|
+
enable = false
|
|
99
|
+
vcs = "git"
|
|
100
|
+
style = "semver"
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
# Packaging system =============================================================
|
|
104
|
+
[build-system]
|
|
105
|
+
requires = ["poetry-core>=2.0.0,<3.0.0", "poetry-dynamic-versioning>=1.0.0,<2.0.0"]
|
|
106
|
+
build-backend = "poetry_dynamic_versioning.backend"
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
# Pytest settings ==============================================================
|
|
110
|
+
[tool.pytest.ini_options]
|
|
111
|
+
minversion = "8.0"
|
|
112
|
+
addopts = "--cov-report term-missing --cov-report html --verbose"
|
|
113
|
+
testpaths = ["src"]
|
|
114
|
+
norecursedirs = ["dist", "build", ".tox", ".ipynb_checkpoints"]
|
|
115
|
+
filterwarnings = ["default"]
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
# Coverage settings ============================================================
|
|
119
|
+
[tool.coverage.run]
|
|
120
|
+
branch = true
|
|
121
|
+
source = ["fastuav"]
|
|
122
|
+
omit = ["*/test/*", "*/tests/*"]
|
|
123
|
+
|
|
124
|
+
[tool.coverage.paths]
|
|
125
|
+
source = ["src/"]
|
|
126
|
+
|
|
127
|
+
[tool.coverage.report]
|
|
128
|
+
# Regexes for lines to exclude from consideration
|
|
129
|
+
exclude_lines = [
|
|
130
|
+
# Have to re-enable the standard pragma
|
|
131
|
+
"pragma: no cover",
|
|
132
|
+
# Don't complain about missing debug-only code:
|
|
133
|
+
"def __repr__",
|
|
134
|
+
"if self.debug",
|
|
135
|
+
# Don't complain if tests don't hit defensive assertion code:
|
|
136
|
+
"raise AssertionError",
|
|
137
|
+
"raise NotImplementedError",
|
|
138
|
+
# Don't complain if non-runnable code isn't run:
|
|
139
|
+
"if 0:",
|
|
140
|
+
"if __name__ == .__main__.:",
|
|
141
|
+
]
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
title: Multirotor Drone MDO
|
|
2
|
+
|
|
3
|
+
# List of folder paths where user added custom registered OpenMDAO components
|
|
4
|
+
module_folders:
|
|
5
|
+
|
|
6
|
+
# Input and output files
|
|
7
|
+
input_file: ../../workdir/problem_inputs.xml
|
|
8
|
+
output_file: ../../workdir/problem_outputs.xml
|
|
9
|
+
|
|
10
|
+
# Definition of problem driver assuming the OpenMDAO convention import openmdao.api as om
|
|
11
|
+
driver: om.ScipyOptimizeDriver(tol=1e-6, optimizer='SLSQP', maxiter=30)
|
|
12
|
+
|
|
13
|
+
# Definition of OpenMDAO model
|
|
14
|
+
model:
|
|
15
|
+
scenarios:
|
|
16
|
+
id: fastuav.scenarios.multirotor
|
|
17
|
+
propulsion:
|
|
18
|
+
id: fastuav.propulsion.multirotor
|
|
19
|
+
gearbox: False
|
|
20
|
+
geometry:
|
|
21
|
+
id: fastuav.geometry.multirotor
|
|
22
|
+
structures:
|
|
23
|
+
id: fastuav.structures.multirotor
|
|
24
|
+
wires:
|
|
25
|
+
id: fastuav.propulsion.wires.multirotor
|
|
26
|
+
mtow:
|
|
27
|
+
id: fastuav.mtow.multirotor
|
|
28
|
+
performance:
|
|
29
|
+
endurance:
|
|
30
|
+
id: fastuav.performance.endurance.multirotor
|
|
31
|
+
missions:
|
|
32
|
+
id: fastuav.performance.mission
|
|
33
|
+
file_path: ../missions/missions_multirotor.yaml
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# This section is needed only if optimization process is run
|
|
37
|
+
optimization:
|
|
38
|
+
|
|
39
|
+
design_variables:
|
|
40
|
+
|
|
41
|
+
## GLOBAL ##
|
|
42
|
+
- name: optimization:variables:weight:mtow:k # over estimation coefficient on the load mass
|
|
43
|
+
upper: 40.0
|
|
44
|
+
lower: 1.0
|
|
45
|
+
|
|
46
|
+
## PROPULSION ##
|
|
47
|
+
- name: optimization:variables:propulsion:multirotor:propeller:ND:k # slow down propeller coef : k_ND: ND / NDmax
|
|
48
|
+
lower: 0.01
|
|
49
|
+
upper: 1.0
|
|
50
|
+
|
|
51
|
+
- name: optimization:variables:propulsion:multirotor:propeller:beta # pitch/diameter ratio of the propeller
|
|
52
|
+
lower: 0.3
|
|
53
|
+
upper: 0.6
|
|
54
|
+
|
|
55
|
+
- name: optimization:variables:propulsion:multirotor:propeller:advance_ratio:climb # climbing advance ratio
|
|
56
|
+
lower: 0.01
|
|
57
|
+
upper: 0.5
|
|
58
|
+
|
|
59
|
+
- name: optimization:variables:propulsion:multirotor:propeller:advance_ratio:cruise # cruise advance ratio
|
|
60
|
+
lower: 0.01
|
|
61
|
+
upper: 2.0
|
|
62
|
+
|
|
63
|
+
- name: optimization:variables:propulsion:multirotor:motor:torque:k # over estimation coefficient on the motor torque
|
|
64
|
+
lower: 1.0
|
|
65
|
+
upper: 20.0
|
|
66
|
+
|
|
67
|
+
- name: optimization:variables:propulsion:multirotor:motor:speed:k # over estimation coefficient on the motor speed
|
|
68
|
+
lower: 0.1
|
|
69
|
+
upper: 10.0
|
|
70
|
+
|
|
71
|
+
- name: optimization:variables:propulsion:multirotor:battery:energy:k # over estimation coefficient on the battery energy
|
|
72
|
+
lower: 0.1
|
|
73
|
+
upper: 20.0
|
|
74
|
+
|
|
75
|
+
- name: optimization:variables:propulsion:multirotor:battery:voltage:k # over estimation coefficient on the battery voltage
|
|
76
|
+
lower: 1.0
|
|
77
|
+
upper: 10.0
|
|
78
|
+
|
|
79
|
+
- name: optimization:variables:propulsion:multirotor:esc:power:k # over estimation coefficient on the ESC power
|
|
80
|
+
lower: 1.0
|
|
81
|
+
upper: 15.0
|
|
82
|
+
|
|
83
|
+
- name: optimization:variables:propulsion:multirotor:esc:voltage:k # over estimation coefficient on the ESC voltage
|
|
84
|
+
lower: 1.0
|
|
85
|
+
upper: 15.0
|
|
86
|
+
|
|
87
|
+
# - name: data:propulsion:multirotor:gearbox:N_red # gearbox reduction ratio (if 'gearbox' option is true)
|
|
88
|
+
# lower: 1.0
|
|
89
|
+
# upper: 20.0
|
|
90
|
+
|
|
91
|
+
## STRUCTURE ##
|
|
92
|
+
- name: optimization:variables:structures:arms:diameter:k # aspect ratio D_out/D_in for the arms
|
|
93
|
+
lower: 0.05
|
|
94
|
+
upper: 0.99
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
constraints:
|
|
98
|
+
|
|
99
|
+
## GLOBAL ##
|
|
100
|
+
- name: optimization:constraints:weight:mtow:consistency # Mass consistency
|
|
101
|
+
lower: 0.0
|
|
102
|
+
|
|
103
|
+
#- name: optimization:constraints:weight:mtow:requirement # MTOW requirement
|
|
104
|
+
# lower: 0.0
|
|
105
|
+
|
|
106
|
+
## PROPULSION ##
|
|
107
|
+
- name: optimization:constraints:propulsion:multirotor:propeller:airspeed:climb # climb speed requirement
|
|
108
|
+
lower: 0.0
|
|
109
|
+
upper: 0.01
|
|
110
|
+
|
|
111
|
+
- name: optimization:constraints:propulsion:multirotor:propeller:airspeed:cruise # cruise speed requirement
|
|
112
|
+
lower: 0.0
|
|
113
|
+
upper: 0.01
|
|
114
|
+
|
|
115
|
+
- name: optimization:constraints:propulsion:multirotor:propeller:rpm:climb # propeller rpm in climb
|
|
116
|
+
lower: 0.0
|
|
117
|
+
|
|
118
|
+
- name: optimization:constraints:propulsion:multirotor:propeller:rpm:cruise # propeller rpm in cruise
|
|
119
|
+
lower: 0.0
|
|
120
|
+
|
|
121
|
+
- name: optimization:constraints:propulsion:multirotor:motor:torque:climb # motor torque in climb
|
|
122
|
+
lower: 0.0
|
|
123
|
+
|
|
124
|
+
- name: optimization:constraints:propulsion:multirotor:motor:torque:hover # motor torque in hover
|
|
125
|
+
lower: 0.0
|
|
126
|
+
|
|
127
|
+
- name: optimization:constraints:propulsion:multirotor:motor:torque:cruise # motor torque in cruise
|
|
128
|
+
lower: 0.0
|
|
129
|
+
|
|
130
|
+
#- name: optimization:constraints:propulsion:multirotor:motor:speed:constant:min # min bound for Kv w.r.t. Tmax (to match commercially available components)
|
|
131
|
+
# lower: 0.0
|
|
132
|
+
|
|
133
|
+
#- name: optimization:constraints:propulsion:multirotor:motor:speed:constant:max # max bound for Kv w.r.t. Tmax (to match commercially available components)
|
|
134
|
+
# lower: 0.0
|
|
135
|
+
|
|
136
|
+
- name: optimization:constraints:propulsion:multirotor:battery:power:takeoff # battery power at takeoff
|
|
137
|
+
lower: 0.0
|
|
138
|
+
|
|
139
|
+
- name: optimization:constraints:propulsion:multirotor:battery:power:climb # battery power in climb
|
|
140
|
+
lower: 0.0
|
|
141
|
+
|
|
142
|
+
- name: optimization:constraints:propulsion:multirotor:battery:power:cruise # battery power in cruise
|
|
143
|
+
lower: 0.0
|
|
144
|
+
|
|
145
|
+
- name: optimization:constraints:propulsion:multirotor:battery:voltage:climb # battery voltage in climb
|
|
146
|
+
lower: 0.0
|
|
147
|
+
|
|
148
|
+
- name: optimization:constraints:propulsion:multirotor:battery:voltage:cruise # battery voltage in cruise
|
|
149
|
+
lower: 0.0
|
|
150
|
+
|
|
151
|
+
#- name: optimization:constraints:propulsion:multirotor:battery:voltage:min # min bound for voltage w.r.t. power (to match commercially available components)
|
|
152
|
+
# lower: 0.0
|
|
153
|
+
|
|
154
|
+
#- name: optimization:constraints:propulsion:multirotor:battery:voltage:max # max bound for voltage w.r.t. power (to match commercially available components)
|
|
155
|
+
# lower: 0.0
|
|
156
|
+
|
|
157
|
+
- name: optimization:constraints:propulsion:multirotor:esc:power:climb # ESC power in climb
|
|
158
|
+
lower: 0.0
|
|
159
|
+
|
|
160
|
+
- name: optimization:constraints:propulsion:multirotor:esc:power:cruise # ESC power in cruise
|
|
161
|
+
lower: 0.0
|
|
162
|
+
|
|
163
|
+
- name: optimization:constraints:propulsion:multirotor:esc:voltage:min # min bound for voltage w.r.t. power (to match commercially available components)
|
|
164
|
+
lower: 0.0
|
|
165
|
+
|
|
166
|
+
- name: optimization:constraints:propulsion:multirotor:esc:voltage:max # max bound for voltage w.r.t. power (to match commercially available components)
|
|
167
|
+
lower: 0.0
|
|
168
|
+
|
|
169
|
+
## MISSION ##
|
|
170
|
+
- name: optimization:constraints:mission:sizing:energy:multirotor # energy requirement to fulfill mission (e.g. for mass minimization objective)
|
|
171
|
+
lower: 0.0
|
|
172
|
+
|
|
173
|
+
objective:
|
|
174
|
+
# MASS MINIMIZATION
|
|
175
|
+
- name: data:weight:mtow
|
|
176
|
+
scaler: 1e-1
|
|
177
|
+
|
|
178
|
+
# ENERGY MINIMIZATION
|
|
179
|
+
#- name: mission:sizing:energy
|
|
180
|
+
# scaler: 1e-3
|
|
181
|
+
|
|
182
|
+
# MAX. RANGE MAXIMIZATION
|
|
183
|
+
#- name: data:performance:endurance:cruise
|
|
184
|
+
# scaler: -1e-3
|
|
185
|
+
|
|
186
|
+
# HOVER AUTONOMY MAXIMIZATION
|
|
187
|
+
#- name: data:performance:endurance:hover:max
|
|
188
|
+
# scaler: -1e-1
|
|
189
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
title: Multirotor Drone MDO with LCA
|
|
2
|
+
|
|
3
|
+
# List of folder paths where user added custom registered OpenMDAO components
|
|
4
|
+
module_folders:
|
|
5
|
+
|
|
6
|
+
# Input and output files
|
|
7
|
+
input_file: ../../workdir/problem_inputs.xml
|
|
8
|
+
output_file: ../../workdir/problem_outputs.xml
|
|
9
|
+
|
|
10
|
+
# Definition of OpenMDAO model
|
|
11
|
+
model:
|
|
12
|
+
missions:
|
|
13
|
+
id: fastuav.performance.mission
|
|
14
|
+
file_path: ../missions/missions_multirotor_doe.yaml # path to the mission definition file
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|