KiteControllers.jl
KiteControllers.jl provides discrete controllers for kite power systems. It is part of the Julia Kite Power Tools ecosystem.

Overview
The package implements the control hierarchy described in the PhD thesis of Uwe Fechner:
| Component | Description |
|---|---|
SystemStateControl | Top-level state machine coordinating all sub-controllers |
FlightPathPlanner | Plans the figure-of-eight flight path and manages phase transitions |
FlightPathCalculator | Calculates attractor points and angular speed of the kite |
FlightPathController | PID/NDI controller translating the planned path into a steering signal |
WinchController | Controls tether reel-in/-out speed (re-exported from WinchControllers.jl) |
The winch components (WinchController, Winch, SpeedController, LowerForceController, UpperForceController) are re-exported from WinchControllers.jl.
Installation
Installation of Julia
If you do not have Julia installed yet, please read Installation.
Installation as package
Installation of KiteControllers as package
It is suggested to use a local Julia environment. You can create it with:
mkdir myproject
cd myproject
julia --project=.(don't forget typing the dot at the end), and then, on the Julia prompt enter:
using Pkg
pkg"add KiteControllers#main"You can run the tests with:
using Pkg
pkg"test KiteControllers"To add the examples and install the packages needed by the examples, run:
using KiteControllers
KiteControllers.install_examples()
exit()Installation using git
Installation of KiteControllers using git
In most cases – if you want to modify, tune and understand kite controllers – it is better to check out this project from git. You can do this with:
git clone https://github.com/OpenSourceAWE/KiteControllers.jl.git
cd KiteControllers.jlThen, run the install script and optionally create a system image:
cd bin
./install
./create_sys_image
cd ..The startup time without system image is about 30s, with system image 5s, but creating a system image takes 15 minutes or more.
On Linux you can install the autopilot GUI app as normal application with the command bin/install_app.
Running the tests
You can now start Julia with ./bin/run_julia and run all tests with:
using Pkg
Pkg.test()or run only some of the tests with:
include("test/test_menu.jl")Running the first example
You can now start Julia with ./bin/run_julia and execute the autopilot or any other of the examples with:
include("examples/autopilot.jl")Clicking on the "RUN" button starts the simulation. When the simulation is finished, you can click on the "OK" button at the top left. After some time a plot of the flight should appear. You can use the drop-down menu on the left to select other plots or the statistics. You can also load or save log files or projects. A project consists of a kite/ physical system, controller settings and a wind condition.
You get a menu with all the examples by typing:
menu()See Examples, if installed using Git to learn more about the provided examples.
Package Structure
KiteControllers.jl
├── SystemStateControl – top-level state machine
├── FlightPathPlanner – path planning (chapter 5 of PhD thesis)
│ └── FlightPathCalculator – attractor & omega calculation
│ └── FlightPathController – PID/NDI steering (chapter 6)
└── WinchController – reel-in/-out speed control (re-exported)Contents
- Types
- Functions
- Examples, if installed as Package
- Examples, if installed using Git
- autopilot.jl — Full Autopilot Simulation
- parking_4p.jl — Parking Controller
- parking_wind_dir.jl — Parking with Changing Wind Direction
- minipilot.jl — Minimal Autopilot
- batch_pilot.jl — Batch Simulation
- batch_plot — Post-processing Viewer
- tune_4p.jl — Controller Tuning
- joystick.jl — Manual Joystick Control
- Learning Resources
- Configuration Files