Skip to main content

Neural ODE model for aircraft flight dynamics

Project description

Neural Ordinary Differential Equation Flight Dynamics Model

Neural Ordinary Differential Equation (Neural ODE) model for aircraft flight dynamics


✈️ Overview

node-fdm implements a physics-guided Neural ODE framework for learning and simulating aircraft flight dynamics.
It combines data-driven learning with physical consistency, enabling the reproduction of vertical motion and energy exchanges during flight.


⚖️ Important Legal & Usage Notes

  • Distributed under the EUPL-1.2 licence, with exceptions detailed in AMENDMENT_TO_EUPL_license.md, reflecting EUROCONTROL’s status as an international organisation.
  • This repository is provided for research purposes only and does not constitute a regulatory framework.
    EUROCONTROL disclaims any responsibility for misuse or operational application of these models.

📁 Repository Structure

├── src/node_fdm/             # Core Neural ODE library (installed as a package)
│   ├── architectures/        # Architecture specific definitions (opensky_2025, qar)
│   ├── data/                 # Datasets, loaders, and flight processing
│   ├── models/               # Neural ODE modules, pretrained checkpoints, wrappers
│   └── utils/                # Data helpers, learning blocks, and physics utilities
├── scripts/                  # End-to-end pipelines and runnable scripts
│   ├── opensky/              # OpenSky 2025 download/preprocess/train/infer steps
│   └── qar/                  # QAR training and inference scripts + config.yaml
├── docs/                     # MkDocs documentation (guide, how-to, reference, logo)
├── tests/                    # Unit/integration tests for shared utilities
├── mkdocs.yml                # Documentation site configuration (mkdocs-dev.yml for local)
├── pyproject.toml            # Packaging configuration and dependencies
├── LICENCE.md                # EUPL-1.2 licence (see AMENDMENT_TO_EUPL_license.md)
└── AMENDMENT_TO_EUPL_license.md

Configuration

  • Each pipeline ships its own config.yaml under scripts/opensky/ and scripts/qar/
  • Edit dataset paths, model names, and training hyperparameters directly in the relevant subproject config before running scripts.

🎨 Use Case:

  • OpenSky Symposium 2025 — ADS-B Models

Jarry, G. & Olive, X. (2025). "Generation of Vertical Profiles with Neural Ordinary Differential Equations Trained on Open Trajectory Data," Journal of Open Aviation Science, Proceedings of the 13th OpenSky Symposium.

This repository enables full reproducibility of the study. All code used to download and preprocess the data, train the models, perform trajectory inference, and generate the figures presented in the paper is provided here.

  • SESAR Innovation Days 2025 — QAR Model

Jarry, G., Dalmau, R., Olive, X., & Very, P. (2025). "A Neural ODE Approach to Aircraft Flight Dynamics Modelling,"
Proceedings of the SESAR Innovation Days 2025, arXiv:2509.23307.

For the QAR-based model, the repository provides the full training pipeline, the complete model implementation, the inference scripts, and the final trained model weights.

⚠️ Due to proprietary restrictions, the QAR datasets themselves cannot be released; only the model, code, and weights are included.


🚧 Work in Progress

This repository is under active development. Future updates will include:

  • Improve Mode S feature reconstruction to reduce errors in training and evaluation
  • Extend to lateral dynamics for full trajectory generation and enhanced speed modelling
  • Incorporate stronger physical constraints through physics-based loss regularization
  • Train models to complete ADS-B data or generate trajectories directly from flight plans

🤝 Community — Adding a New Architecture

Community feedback and contributions are welcome to help advance the model’s robustness and applicability.

Want to extend the library with another dataset or modelling choice? Use the existing opensky_2025 and qar packages as templates:

  1. Copy a package skeleton: duplicate node_fdm/architectures/opensky_2025 (minimal) or node_fdm/architectures/qar (multi-layer example) into a new folder node_fdm/architectures/<your_arch>, keep the same file names (columns.py, flight_process.py, model.py, extra layers as needed).
  2. Declare columns: in columns.py, define your state (X_COLS), control (U_COLS), exogenous (E0_COLS), and extra outputs, following the existing column objects. Keep derivative columns for ODE targets.
  3. Build layers: in model.py, wire your layers (e.g., TrajectoryLayer, EngineLayer, StructuredLayer) and expose ARCHITECTURE and MODEL_COLS. The OpenSky model shows a two-layer baseline; QAR illustrates stacking several derived layers.
  4. Preprocess & filter: implement flight_processing and segment_filtering in flight_process.py to clean/augment your raw data (see altitude diffs in OpenSky vs. smoothing and engine reduction in QAR).
  5. Register the name: add your architecture key to valid_names in node_fdm/architectures/mapping.py so loaders and training scripts can find it.
  6. Test a small run: train or run inference on a tiny slice to validate column ordering and tensor shapes before opening a pull request; sample pipelines live in scripts/ (e.g., OpenSky scripts).

If you contribute back, include a short note on your data assumptions, any proprietary constraints, and a minimal script/notebook that exercises the new architecture.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

node_fdm-0.1.0.tar.gz (4.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

node_fdm-0.1.0-py3-none-any.whl (4.1 MB view details)

Uploaded Python 3

File details

Details for the file node_fdm-0.1.0.tar.gz.

File metadata

  • Download URL: node_fdm-0.1.0.tar.gz
  • Upload date:
  • Size: 4.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for node_fdm-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a83893d6bc2467bc21cca2131f308aa6f3a0e9e2fdc569e2d85e1b573f104b93
MD5 cb0d122bd5c1b86be31123de3958b58e
BLAKE2b-256 c66dc68392884d4620cb6ae46deb8b0ade606a1e3cfa77c23e7050bfaa23044f

See more details on using hashes here.

Provenance

The following attestation bundles were made for node_fdm-0.1.0.tar.gz:

Publisher: publish.yml on eurocontrol-asu/node-fdm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file node_fdm-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: node_fdm-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 4.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for node_fdm-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1eb648e98bbc5935e04c971adeb9c25c813e4fb7e8b6ea8c6ec3fb401c329b17
MD5 b7c8f1ccaa83c1d8ba9bd10cca669b8a
BLAKE2b-256 dc67566338b389e6c5c2fa9cccbb1c49944cc6c26612cb486339f34b42b3716f

See more details on using hashes here.

Provenance

The following attestation bundles were made for node_fdm-0.1.0-py3-none-any.whl:

Publisher: publish.yml on eurocontrol-asu/node-fdm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page