Skip to content

Commit 645250a

Browse files
authored
Remove the winch controller and use WinchControllers instead (#45)
* Cleanup * Tests pass * Add NLSolversBase * Fix examples * Cleanup * Cleanup * Cleanup * Bump version * Update default manifest * Add file to .gitignore * Use aarch64 for macOS * Disable testing on macOS --------- Co-authored-by: Uwe Fechner <u.fechner-1@tudelft.nl>
1 parent c177d42 commit 645250a

33 files changed

+18
-2130
lines changed

.github/workflows/CI.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ jobs:
2323
os:
2424
- ubuntu-latest
2525
- windows-latest
26-
- macos-latest
2726
arch:
2827
- x64
2928

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,4 @@ Manifest-v1.11.toml.bak
2626
bin/kps-image-1.11-main.so.bak
2727
bin/kps-image-1.10-main.so.bak
2828
Manifest-v1.10.toml.bak
29+
bin/kps-image-1.11-new_wc.so

Manifest-v1.11.toml.default

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
julia_version = "1.11.5"
44
manifest_format = "2.0"
5-
project_hash = "521c3e5849054b5e68ac58611e1884983b9e3ea1"
5+
project_hash = "f1351aea766f52cecef33cd876917d5066f27a0b"
66

77
[[deps.Accessors]]
88
deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "MacroTools"]
@@ -919,6 +919,12 @@ git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23"
919919
uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5"
920920
version = "1.4.2"
921921

922+
[[deps.WinchControllers]]
923+
deps = ["DocStringExtensions", "KiteUtils", "LinearAlgebra", "NLsolve", "Parameters", "Pkg", "StaticArrays", "Statistics", "StructTypes", "Timers", "WinchModels", "YAML"]
924+
git-tree-sha1 = "383098982c16281992e97adf0054b61068096de9"
925+
uuid = "9e74470a-8ab1-4f32-b878-f32ebd236ea2"
926+
version = "0.5.2"
927+
922928
[[deps.WinchModels]]
923929
deps = ["DiscretePIDs", "KiteUtils", "Parameters"]
924930
git-tree-sha1 = "75223b290e828f815b9d247dec304154aa4efbaa"

Project.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ version = "0.2.16"
77
DiscretePIDs = "c1363496-6848-4723-8758-079b737f6baf"
88
JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819"
99
KiteUtils = "90980105-b163-44e5-ba9f-8b1c83bb0533"
10+
NLSolversBase = "d41bc354-129a-5804-8e4c-c37616107c6c"
1011
NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56"
1112
Observables = "510215fc-4207-5dde-b226-833fc4488ee2"
1213
Parameters = "d96e819e-fc66-5662-9728-84c9c7592b0a"
@@ -18,6 +19,7 @@ StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
1819
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
1920
StructTypes = "856f2bd8-1eba-4b0a-8007-ebc267875bd4"
2021
Timers = "21f18d07-b854-4dab-86f0-c15a3821819a"
22+
WinchControllers = "9e74470a-8ab1-4f32-b878-f32ebd236ea2"
2123
WinchModels = "7dcfa46b-7979-4771-bbf4-0aee0da42e1f"
2224
YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6"
2325

@@ -33,6 +35,7 @@ KitePodModels = "0.3.8"
3335
KiteUtils = "0.10.7"
3436
KiteViewers = "0.4.23"
3537
LaTeXStrings = "1.4"
38+
NLSolversBase = "~7.8.3"
3639
NLsolve = "4.5"
3740
NativeFileDialog = "0.2.1"
3841
NonlinearSolve = "4.5.0"
@@ -48,6 +51,7 @@ StatsBase = "0.34"
4851
StructTypes = "1.10"
4952
Test = "1.10, 1.11"
5053
Timers = "0.1"
54+
WinchControllers = "0.5.2"
5155
WinchModels = "0.3"
5256
YAML = "0.4.9"
5357
julia = "1.10, 1.11"

README.md

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -86,29 +86,9 @@ menu()
8686
```
8787

8888
## This package provides
89-
### Utility functions
90-
```
91-
saturate(value, min_, max_)
92-
```
93-
Calculate a saturated value, that stays within the given limits.
94-
```
95-
wrap2pi(angle)
96-
```
97-
Convert an angle, given in radians in an infinite range to the range from -pi to pi
98-
99-
### Generic control components
100-
This package contains some generic control components that are documented [here](./docs/components.md).
10189

10290
### Types that are not generic
10391
```julia
104-
CalcVSetIn # component that calculates the set speed using soft switching
105-
SpeedController # controller for normal operation
106-
LowerForceController # controller when force near lower limit
107-
UpperForceController # controller when force near upper limit
108-
WinchController # winch controller, combining the three controllers above
109-
WCSettings # settings of the winch controller
110-
WinchModel # simplified model for unit testing
111-
11292
FlightPathController # represents the flight path controller
11393
FPCSettings # settings of the flight path controller
11494
FlightPathCalculator # calculate the planned flight path
@@ -137,32 +117,6 @@ The control commands are usually received from the FlightPathPlanner, the output
137117
## Scientific background
138118
[Flight path control of kite power systems in a turbulent wind environment](https://ieeexplore.ieee.org/document/7525563)
139119

140-
## Winch controller
141-
For a kite power system, the reel-out speed of the winch must be controlled such that the
142-
maximal tether force is never exceeded, while the reel-out speed should be optimized for
143-
maximal power over the full cycle at wind speeds below rated wind speed. To keep the
144-
kite controllable, also a minimal tether force limit has to be kept. Depending on the mode of operation, one of the following three controllers is used:
145-
### Speed Controller
146-
<p align="center"><img src="./docs/speed_controller.png" width="500" /></p>
147-
148-
### Lower Force Controller
149-
<p align="center"><img src="./docs/lower_force_controller.png" width="500" /></p>
150-
151-
### Upper Force Controller
152-
<p align="center"><img src="./docs/upper_force_controller.png" width="500" /></p>
153-
154-
### WinchController - Usage -
155-
The WinchController combines the three controllers, mentioned above.
156-
It can be operated in two modes of operation:
157-
- position control
158-
- power production
159-
160-
In position control mode it requires a set speed as input. Upper and lower force limits
161-
are respected.
162-
In power production mode it does not require any input but the measured tether force.
163-
Output is the set speed of the asynchronous motor.
164-
165-
For a usage example look at the script [test_winchcontroller.jl](./test/test_winchcontroller.jl) .
166120

167121
### Flight Path Calculator (FPCA)
168122
The FPCA is a stateless component that calculates the coordinates of the attractor points and turn points that

docs/components.md

Lines changed: 0 additions & 92 deletions
This file was deleted.
-79.3 KB
Binary file not shown.
-92.7 KB
Binary file not shown.

docs/lower_force_controller.png

-70.4 KB
Binary file not shown.

docs/mixer3.png

-42.7 KB
Binary file not shown.

0 commit comments

Comments
 (0)