Skip to content

Repository files navigation

LADAC

Library for Aircraft Dynamics And Control

LADAC is an open-source MATLAB/Simulink framework for aircraft modeling, flight dynamics, simulation, and flight-control development.

It provides modular models and development tools for applications ranging from small unmanned aircraft and multicopters to transport aircraft and flexible aeroelastic configurations. LADAC supports workflows from component-level modeling and controller development to complete nonlinear simulation, software-in-the-loop testing, code generation, and flight testing with ArduPilot.

LADAC has been developed and used in research projects involving fixed-wing UAVs, multicopters, eVTOL aircraft, transport aircraft, aeroelastic flight-dynamics models, active gust-load alleviation, and advanced flight-control methods.

Status: LADAC is research software under active development. The maturity, validation status, software requirements, and supported configurations differ between individual components. Consult the corresponding module documentation before relying on a model or controller for a particular application.

Key features

Modular aircraft and subsystem modeling

  • Complete and subsystem-level models for fixed-wing aircraft, multicopters, and eVTOL configurations
  • Rigid-body and flexible-body equations of motion
  • Modular aerodynamic, propulsion, actuator, sensor, atmosphere, turbulence, gust, and ground-contact models
  • Parameter-based aircraft definitions for reusable and configurable simulation models
  • Support for suspended payloads and multi-body configurations

Aerodynamic modeling

  • Nonlinear finite-wing model intended for large angles of attack and sideslip
  • Vortex-lattice-based wing model with viscous airfoil coupling
  • Aerodynamic derivative, downwash, distributed-load, and bending-moment calculations
  • Steady and unsteady airfoil aerodynamics, dynamic stall, and flap-effect models
  • Rigid and aeroelastic wing configurations
  • Fuselage, propeller, rotorcraft, and induced-velocity models

Flight dynamics and aeroelasticity

  • Quaternion-based rigid-body equations of motion
  • Flexible-body models based on structural modes
  • Structural model creation, reduction, load transfer, and visualization utilities
  • Coupling of aerodynamic and structural models
  • Atmospheric turbulence and discrete-gust models

Guidance, control, and autopilots

  • Nonlinear dynamic inversion (NDI) and incremental nonlinear dynamic inversion (INDI)
  • Control-effectiveness modeling and constrained control allocation
  • Reusable attitude, acceleration, altitude, position, and trajectory-control modules
  • Flight modes for attitude control, altitude hold, loiter, and trajectory following
  • Trajectory generation and waypoint navigation
  • Linear-systems, filtering, and controller-development utilities

LADAC includes two configurable INDI-based autopilots:

  • LindiCopter — a modular multicopter autopilot with attitude, altitude, position, and flight-mode logic
  • LindiPlane — a modular fixed-wing autopilot currently focused on conventional aircraft configurations

Both autopilots provide functions that derive controller parameter structures from the corresponding aircraft-model parameters.

Simulation, visualization, and external interfaces

Getting started

For a first installation and simulation:

  1. Read the installation guide.
  2. Follow the getting-started guide.

Typical workflows

LADAC supports several complementary workflows:

  • Aircraft simulation: assemble nonlinear aircraft models from reusable subsystem blocks.
  • Flight-control development: design and assess controllers using the same aircraft parameterization as the simulation.
  • Aeroelastic research: couple unsteady aerodynamic and structural models for flexible-aircraft studies.
  • ArduPilot SITL: run ArduPilot against a LADAC aircraft-dynamics model.
  • Controller deployment: generate C++ code from a Simulink controller and run it in a custom ArduPilot flight mode.

See Architecture and workflows for an overview.

Documentation

Topic Documentation
First steps Getting started
Software requirements and setup Installation
Framework structure and workflows Architecture
Building aircraft simulations Aircraft modeling
Control modules and autopilots Flight control
ArduPilot code-generation workflow ArduPilot integration
Tests and troubleshooting Testing
Contributing code Development guide
Commit conventions Rules for commits

Detailed documentation for individual components is located in the corresponding source directories.

Repository structure

Directory Contents
aircraft Complete aircraft models and aircraft subsystem assemblies
actuators Actuator dynamics and command conversions
aerodynamics Airfoil, wing, fuselage, rotorcraft, and downwash models
control Control methods, reusable controller modules, guidance, flight modes, and autopilots
environment Atmosphere, turbulence, gust, and ground-contact models
equations_of_motion Rigid-body, flexible-body, and structural dynamics
flight_parameters Derived flight-state and flight-path quantities
interfaces Interfaces to ArduPilot, FlightGear, FlexiFlightVis, TiGL, Tornado, and other tools
propulsion Propeller, motor, and battery models
sensors Sensor models
utilities Mathematical, coordinate-transformation, quaternion, and general helper functions
modules Separately maintained dependencies included as Git submodules
external Third-party code distributed with LADAC
docs User and developer documentation

Examples

Complete executable examples are maintained in the separate LADAC-Examples repository. It currently contains UAV examples for multicopters, fixed-wing aircraft, and eVTOL configurations using rigid-body flight-dynamics models and the LindiCopter or LindiPlane autopilots.

Research-specific models and code associated with publications are generally maintained in separate repositories that include LADAC as a Git submodule.

Contributing

Bug reports, documentation improvements, new models, and code contributions are welcome.

Before contributing:

  1. Read the development guide.
  2. Follow the commit-message rules.
  3. Search the existing issues.
  4. Run the relevant tests and check_ladac.

License

LADAC is licensed under the GNU General Public License v3.0.

Individual components in modules and external may use different licenses. Consult the license files and documentation shipped with each dependency.