This repository provides tools to process flight data and apply an Extended Kalman Filter (EKF) to estimate the dynamic state of a kite system in Airborne Wind Energy Systems (AWES). The EKF processes essential flight data inputs and generates accurate estimates of the kite's state, helping researchers and engineers model and analyze kite-based wind energy systems effectively.
- State Estimation: Uses flight data to calculate the position, velocity, and other key states of the kite system.
- Aerodynamic and Tether Modeling: Models aerodynamic coefficients, tether shape, and forces to provide a complete system view.
- Wind Estimation: Outputs wind velocity as part of the EKF-based estimation process.
To effectively estimate the kite’s state, the following inputs are required:
- Kite Position
- Kite Velocity
- Tether Force
- Tether Reel-Out Speed
- Kite Acceleration (optional, if a Kite Control Unit (KCU) is present and modeled)
The EKF processing produces the following outputs:
- Kite Position and Velocity Estimations
- Aerodynamic Coefficients
- Tether Shape and Force
- Wind Velocity
- Additional Derived Metrics
-
Clone the repository:
git clone https://github.com/ocayon/EKF-AWE
-
Navigate to the repository folder:
cd EKF-AWE -
Create a virtual environment:
- Linux or Mac:
python3 -m venv venv
- Windows:
python -m venv venv
- Linux or Mac:
-
Activate the virtual environment:
- Linux or Mac:
source venv/bin/activate - Windows:
.\venv\Scripts\activate
- Linux or Mac:
-
Install the required dependencies:
- For users:
pip install . - For developers:
pip install -e .[dev]
- For users:
-
To deactivate the virtual environment:
deactivate
numpymatplotlibcasadi>=3.6.0pandaspytestpyyamlcontrolscipyseaborndataclassesh5py
An example dataset is provided for the LEI V3 kite from Kitepower, flown on 2019-10-08.
- Flight Data:
2019-10-08_11.csvindata\flight_logs\v3 - Configuration File:
v3_config.yamlindata\config - Processing Script:
process_v3_data.pyindata\data_postprocessors
To analyze this dataset:
- Run
run_analysis.pyand select the file2019-10-08_11.csv,v3_config.yamlandprocess_v3_data.py.
python examples\run_analysis.py- Run
plot_analysis.pyto visualize the results.
python examples\plot_analysis.pyTo analyze an AWES dataset, follow these steps:
- Configuration File: Add a
.yamlconfiguration file for the kite you want to analyze indata/config. - Processing Script: Add a data processing script to
data/data_postprocessorsthat processes raw flight data and saves it topostprocess_data, following the naming conventions indocs/CSV_Input_File_Specifications.md. - Flight Data: Create a folder in
dataand add the raw flight data. File names should start with the formatYYYY-MM-DD_HH(e.g.,2019-10-08_11.csv).
- Run
run_analysis.pyfrom theexamplesfolder. - When prompted, select the configuration file, processing script, and flight data file.
- Run
plot_analysis.pyand select the processed flight data file for visualization.
Contributions are welcome! Here’s how you can contribute:
- Create an issue on GitHub for any bugs or feature requests.
- Create a branch from this issue:
git checkout -b issue_number-new-feature
- Implement your feature or fix.
- Verify functionality using pytest:
pytest
- Commit your changes with a descriptive message:
git commit -m "#<issue_number> <message>" - Push your changes to GitHub:
git push origin branch-name
- Create a pull request with
base:developto merge your feature branch. - Once the pull request is accepted, close the issue.
If you use this project in your research, please consider citing it. Citation details can be found in the CITATION.cff file.
This project is licensed under the MIT License. See the LICENSE file for details.
Technische Universiteit Delft hereby disclaims all copyright interest in the code "EKF-AWE" written by the Author(s).
Prof. Dr. H.G.C. (Henri) Werij, Dean of Faculty of Aerospace Engineering
Copyright © 2024 Oriol Cayon