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.
- 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
- 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
- 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
- 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.
- MATLAB/Simulink-based nonlinear simulation
- ArduPilot software-in-the-loop interface
- Deployment of generated MATLAB/Simulink controllers to ArduPilot
- Processing of generated controller parameters as ArduPilot parameters
- Logging of controller interface signals through ArduPilot
- FlightGear and FlexiFlightVis visualization interfaces
- CPACS/TiGL and Tornado interfaces
For a first installation and simulation:
- Read the installation guide.
- Follow the getting-started guide.
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.
| 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.
| 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 |
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.
Bug reports, documentation improvements, new models, and code contributions are welcome.
Before contributing:
- Read the development guide.
- Follow the commit-message rules.
- Search the existing issues.
- Run the relevant tests and
check_ladac.
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.