wind-turbine-rpm-estimation-software
https://github.com/sverdfisk/wind-turbine-rpm-estimation-software
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 (17.2%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: Sverdfisk
- License: gpl-2.0
- Language: Python
- Default Branch: main
- Size: 215 MB
Statistics
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 4
Metadata Files
README.md
Visual Monitoring System for Wind Turbine RPM Estimation
Thesis:
"Operators monitoring noise from wind turbines often lack direct access to the turbines’ rotational speed (RPM) data. This master’s thesis aims to address that issue using Sony's IMX385LQR image sensor. The research will involve examining possible hardware configurations and exploring software techniques such as image processing. The project will culminate in a proof-of-concept with the goal of developing a prototype capable of monitoring the rotation of wind turbines and reporting their RPM over a given time interval."
Usage
The code requires a camera or an input video. The feed path is specified in a config file as "target" and the RPM is then calculated. In the project you will find hardware, driver and software folders. The hardware folder has files related to the PCB designs. The driver folder contains a modified driver that needs to be installed on a Raspberry Pi 5 for the camera module to work. The software folder contains the software needed for detection.
Read "Initial setup" first. If you are deploying the system, read "Real setup". If you are testing, modifying or configuring project parameters, read "Test setup".
Initial setup
- Clone the project
- Enter the software folder In this folder, you will see everything that is needed if you are simulating a video feed or if you are configurating the project. The config_generator.py file is an application with a GUI that allows you to generate video feed configs. main.py is the main program runner, used to start monitoring RPM. environment.txt is a conda environment file.
If you are using your own custom environment: Look for environment.yml or requirements.txt. Download the required modules using the module manager of your choice (such as pip).
If you are using Conda: Conda can read the environment.yml file. Run the following command: conda env create -f environment.yml
To start, the program needs some parameters to start detection such as where to look for a video stream. This can all be done through configgenerator.py, through manual tinkering, or both. It's recommended to first generate a template through configgenerator.py even if you want to tinker manually. This way, you ensure that all necessary parameters are set. Local videos as well as video inputs are supported. For testing, you can use a pre-saved video on your computer during the config generation. (Note: the video will be processed frame by frame by the program at the max speed your computer can handle, meaning the video might appear to be playing back rapidly or slowly. This is not an issue for the detection mechanism and is by design. If you want to alter this behavior, see the extra notes section.)
After generating your config, it should now be saved to the config/ folder with the name you set. If you want to edit or tinker with the config, you can simply edit it here. This is often much faster than re-generating the entire config through the program if you need a small edit.
The last thing you need to do is to run the program.
Testing mode:
Default testing mode - printing the output and useful detection statistics straight into the command line for you to view: python main.py config/yourconfig.json
If you want to exit the program early, press the ESC key or CTRL+C while it's running.
You will now have your output, either in the command line or in a newly generated file in out/.
Deployment mode:
Deployment mode is the exact same as testing mode with an added flag. python main.py config/yourconfig.json -d
Deployment mode will run continuously until killed or the saved video ends. The output will be stored in runs/out.csv. RPM estimates will only be saved when a new one is calculated.
Extra notes:
if you want to alter the playback speed, open the main.py file in any editor. Find this line: k = cv.waitKey(1) & 0xFF
You can change the value in the parenthesis to your liking. Below are some examples: Very fast (1000fps, but most likely capped by your system): k = cv.waitKey(1) & 0xFF
Normal (approx. 60fps): k = cv.waitKey(17) & 0xFF
Slow (20fps): k = cv.waitKey(50) & 0xFF
Owner
- Name: Ken
- Login: Sverdfisk
- Kind: user
- Repositories: 1
- Profile: https://github.com/Sverdfisk
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: Wind turbine RPM estimation software
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Ken Robin Dugan
email: kenrdugan@gmail.com
- given-names: Mohammad DK Albab
email: m7maddka@gmail.com
repository-code: 'https://github.com/Sverdfisk/masteroppgave'
abstract: >-
This thesis presents the design and implementation of a
prototype system for remote visual monitoring of wind
turbines and estimation of their rotational speed. The
system is designed to support research on the correlation
between wind turbine rotation speed and associated
mechanical and aerodynamic noise emissions, with the aim
of improving understanding of their impact on
environmental sound levels.
The system is intended for long-term deployment while
accounting for varying weather and lighting conditions. It
includes a custom-made camera module based on Sony's
IMX385 image sensor, capable of outputting 10-bit $RAW$
data at 1920 $\times$ 1080 resolution and 120 frames per
second. The module was designed for compatibility with the
Raspberry Pi 5, which serves as the processing platform.
The Pi 5 features a media pipeline with an integrated
image signal processor capable of converting the $RAW$
data into a video stream, offering the potential of
real-time rotation speed estimation during deployment.
To ensure broad applicability, the rotation speed
estimation software operates independently of the video
source and supports both pre-recorded and live-streamed
footage. Rotation speed is estimated by computing
frame-to-frame color differences within a small region of
each frame. Prior to deployment, an operator must generate
a configuration file to tune the software to the specific
deployment scenario; this is achieved either manually or
via the provided user interface. The resulting estimation
data are stored locally on the Raspberry Pi 5 for
post-deployment analysis. The software has been tested in
both real and simulated scenarios, achieving up to 99.86\%
estimation accuracy with an average of 97.48\% depending
on operation conditions. It can process 139 frames per
second, enabling real-time estimations with zero data
acquisition downtime during deployment.
commit: 6b8cd6a
date-released: '2025-06-23'
GitHub Events
Total
- Push event: 1
- Public event: 1
- Create event: 1
Last Year
- Push event: 1
- Public event: 1
- Create event: 1
Dependencies
- pyqt6 ==6.9.1
- pyqt6-qt6 ==6.9.1