Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.1%) to scientific vocabulary
Repository
Explicit Kalman Filter of a flying tethered kite
Basic Info
- Host: GitHub
- Owner: ocayon
- License: mit
- Language: Python
- Default Branch: main
- Size: 145 MB
Statistics
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 12
- Releases: 2
Metadata Files
README.md
Extended (Iterated) Kalman Filter for Airborne Wind Energy Systems (AWES)
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.
Key Features
- 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.
Minimum Required Inputs
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)
Outputs
The EKF processing produces the following outputs:
- Kite Position and Velocity Estimations
- Aerodynamic Coefficients
- Tether Shape and Force
- Wind Velocity
- Additional Derived Metrics
Installation Instructions
Clone the repository:
bash git clone https://github.com/ocayon/EKF-AWENavigate to the repository folder:
bash cd EKF-AWECreate a virtual environment:
- Linux or Mac:
bash python3 -m venv venv - Windows:
bash python -m venv venv
- Activate the virtual environment:
- Linux or Mac:
bash source venv/bin/activate - Windows:
bash .\venv\Scripts\activate
- Install the required dependencies:
- For users:
bash pip install . - For developers:
bash pip install -e .[dev]
- To deactivate the virtual environment:
bash deactivate
Dependencies
numpymatplotlibcasadi>=3.6.0pandaspytestpyyamlcontrolscipyseaborndataclassesh5py
Example Usage
An example dataset is provided for the LEI V3 kite from Kitepower, flown on 2019-10-08.
- Flight Data: 2019-10-08_11.csv in data\flight_logs\v3
- Configuration File: v3_config.yaml in data\config
- Processing Script: process_v3_data.py in data\data_postprocessors
To analyze this dataset:
- Run run_analysis.py and select the file 2019-10-08_11.csv, v3_config.yaml and process_v3_data.py.
bash
python examples\run_analysis.py
- Run plot_analysis.py to visualize the results.
bash
python examples\plot_analysis.py
New Dataset Analysis
To analyze an AWES dataset, follow these steps:
1. Add Necessary Files
- 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).
2. Run Analysis
- Run
run_analysis.pyfrom theexamplesfolder. - When prompted, select the configuration file, processing script, and flight data file.
3. Plot Data
- Run
plot_analysis.pyand select the processed flight data file for visualization.
Contributing Guide
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:
bash git checkout -b issue_number-new-feature - Implement your feature or fix.
- Verify functionality using pytest:
bash pytest - Commit your changes with a descriptive message:
bash git commit -m "#<issue_number> <message>" - Push your changes to GitHub:
bash 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.
Citation
If you use this project in your research, please consider citing it. Citation details can be found in the CITATION.cff file.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Copyright
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
Owner
- Name: Oriol Cayon
- Login: ocayon
- Kind: user
- Company: TU Delft
- Repositories: 1
- Profile: https://github.com/ocayon
PhD candidate
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this work, please cite it as below."
title: "Kite as a Sensor: Wind and State Estimation in Tethered Flying Systems"
authors:
- family-names: Cayon
given-names: Oriol
- family-names: Watson
given-names: Simon
- family-names: Schmehl
given-names: Roland
date-released: 2025-01-01
doi: 10.5194/wes-2024-182
url: https://doi.org/10.5194/wes-2024-182
version: "preprint"
type: article
repository-code: https://github.com/ocayon/EKF-AWE
preferred-citation:
type: article
authors:
- family-names: Cayon
given-names: Oriol
- family-names: Watson
given-names: Simon
- family-names: Schmehl
given-names: Roland
title: "Kite as a Sensor: Wind and State Estimation in Tethered Flying Systems"
journal: "Wind Energy Science Discussions"
year: 2025
doi: 10.5194/wes-2024-182
url: https://doi.org/10.5194/wes-2024-182
note: "in review"
GitHub Events
Total
- Create event: 7
- Issues event: 5
- Release event: 3
- Delete event: 6
- Issue comment event: 1
- Member event: 1
- Push event: 10
- Public event: 1
- Pull request review event: 1
- Pull request event: 2
Last Year
- Create event: 7
- Issues event: 5
- Release event: 3
- Delete event: 6
- Issue comment event: 1
- Member event: 1
- Push event: 10
- Public event: 1
- Pull request review event: 1
- Pull request event: 2
Dependencies
- casadi >3.6.0
- control *
- dataclasses *
- h5py *
- matplotlib *
- numpy *
- pandas *
- pytest *
- pyyaml *
- scipy *
- seaborn *
- casadi >=3.6.0
- control *
- dataclasses *
- h5py *
- matplotlib *
- numpy *
- pandas *
- pytest *
- pyyaml *
- scipy *
- seaborn *