Skip to content

UAV Work from 2026 Summer Interns- #1267 - #1310

Draft
Kenneth-T-Moore wants to merge 307 commits into
OpenMDAO:mainfrom
Kenneth-T-Moore:UAVmain
Draft

Kenneth-T-Moore wants to merge 307 commits into
OpenMDAO:mainfrom
Kenneth-T-Moore:UAVmain

Conversation

@Kenneth-T-Moore

Copy link
Copy Markdown
Member

Summary

Incorporating a small UAV aircraft example into aviary.

This is a resubmission of #1267
Please reference the review comments there.

TODO:

  1. Change the overall architecture of the UAV model to be more Aviary esque including

  2. Breakup the propulsion system into Motor + ESC

  3. Break out the propellar to its own separate subsystem

  4. connect the two using the standard systems already existing in aviary

  5. rememove the balance comp from propulsion (it's probably redundant with whats already there in core avliary)

  6. add a separate subsystem for the battery or remove it all together

  7. break out the OAS model into it's own separate thing so it's not mixed in with low fidility CL/CD calcs from the UAV

  8. potentially ad reynolds number to atmospheric calculation and reorganize UAV atmosphere calcs because they are some what redundant with aviary core and potentiall output values that are unused elsewhere.

  9. remove unused average CL/CD calculations, they are not used in other locations

  10. have to change how the airfoil CSV is read in, this is probably for the propellar (not the wing). notes in test_cruse.py indicate: NOTE: no @use_tempdirs here. DBFMassBuilder reads its airfoil CSV via a repo-root- relative path (like the dbf_based_mass unit tests), so this must run from the repo root.

  11. need to have docs that describe mass builder, aero-builder (simple and medium)

  12. docs need to cover why ribs are specified as ribs = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2]) each array element represents one of 20 ribs along the aircraft, and the number determines which material/thickness that rib will have. So a '0' element will be 0.0016 Balsa; '1' will be 0.0016 Ply; '2' will be 0.0024 Ply.

  13. check partials for aero_model.py and aero_OAS_examples.py

  14. many overall tests i.e. test_cruse.py are missing asserts.

  15. some tests create new phase infos which is probably unneeded.

  16. Some variables are declared in UAV_variable_meta_data.py but unused in the codebase
    -- Aircraft.Fuselage.BULKHEAD_DENSITY
    -- Aircraft.Fuselage.NUM_BULKHEADS
    -- Aircraft.HorizontalTail.NUM_RIBS
    -- Aircraft.HorizontalTail.RIB_DENSITY
    -- Aircraft.VerticalTail.NUM_RIBS
    -- Aircraft.VerticalTail.RIB_DENSITY
    -- Aircraft.Wing.NUM_RIBS
    -- Aircraft.Wing.RIB_DENSITY
    -- Dynamic.Vehicle.Propulsion.CURRENT_MAX
    -- Dynamic.Vehicle.Propulsion.RPM_MAX
    -- Dynamic.Vehicle.Propulsion.PROP_POWER_MAX

  17. Do we need an RPM_MAX assessment to keep the prop map working well

Related Issues

  • Resolves #

Backwards incompatibilities

None

AI Usage

Disclose any AI usage in this PR, including models used and files affected.

tad2216 and others added 30 commits July 6, 2026 11:12
Changing mass builder so it is actually loaded into cruise attempt
Mass subsystem options update + renaming files
ehariton and others added 30 commits September 8, 2026 13:47
…44.77209792], time_duration (s) [1845.81876549], Mach 0.07, Aircraft.Battery.MASS (kg) [5.], Aircraft.Engine.Motor.IDLE_CURRENT (A) [3.6], Aircraft.Engine.Motor.MASS (kg) [0.47001241]

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants