- fixed bug in spring_forces(), it used 4000N hardcoded max force
- bump KiteUtils to 0.9.0
- the fields AoA, CL2, CD2 and the vectors v_wind_gnd, v_wind_200m and v_wind_kite are now updated when converting KPS3 or KPS4 to SysState
- add example test_steady_state.jl
- fixed the installation of the examples
- updated the documentation
- the package Rotations is now re-exported by KiteModels
- reduce number of dependencies of the examples
- added tests for calc_azimuth(s::AKM), the azimuth in wind reference frame
- re-enable logging of the angles of attack of the three plates
steering_test_4p.jl
now calculates bothc1
andc2
of the turn-rate law- the environment variable
NO_MTK
disables the pre-compilation of theKPS4_3L
model to save time during development - the script
menu2.jl
for model verification was added
- the sign of the steering signal was changed. Now, a positive steering signal causes a positive turn rate. The turn rate is the derivative of the heading angle.
- all orientation tests pass now (calculation of roll, pitch, yaw, azimuth_north, elevation, heading)
- add example
steering_test_1p.jl
- improve
steering_test_4p.jl
, use fully powered kite now - the logged steering signal is now divided by
set.cs_4p
, because the new version of KitePodModels.jl multiplies the steering value with this constant - update documentation regarding
steering
andheading
- renamed test_init.jl to test_init_4p.jl
- by default,
azimuth
in wind reference frame is now used - the orientation is now represented in NED reference frame
- the method
calc_heading
has two new, optional parameters: neg_azimuth=false, one_point=false - the definition of heading and azimuth has changed, which will require adaptions in the controller
- example
plot_side_cl.jl
- example
plot_cl_cd_plate.jl
- example
steering_test.jl
- example
test_init_1p.jl
- the test script
test_orientation.jl
was contributed by Daan van Wolffelaar; currently, some of these tests are still broken (error of about 2%)
- many of the examples; all examples of
menu.jl
now work
- the method
next_step!
uses nowupwind_dir
as parameter and not longerwind_dir
- install
matplotlib
if it is not already installed after user confirmation in a Julia specific environment - replaced OrdinaryDiffEq with the three packages OrdinaryDiffEqCore, OrdinaryDiffEqBDF and OrdinaryDiffEqSDIRK. This should help to reduce the pre-compilation time.
- set the parameter delta in the examples
- always specify the
system.yaml
file to use in the examples, always useload_settings
instead ofse
. This ensures that the settings are always freshly loaded from the file when the script is launched, so any changes to the settings become immediately effective. - the KPS4_3L model was replaced by the pure ModelingToolkit (MTK) based version. This allows not only a much faster simulation, but the results are also much more accurate.
- bump KiteUtils to 0.7.7
- add new examples to menu
- major change to the function that finds the initial equilibrium; the function
init_sim!
has the new parameterdelta
which should be in the range of 0.01 to 0.03. - better error message if
init_sim!
, but no exception any more. I just returnsnothing
. - remove dependency StatProfilerHTML
- add KCU drag, based on kcu_diameter and cd_kcu
- add function bridle_length (not exported)
- unit tests for the KPS3_3L model, based on ModelingToolkit
- script
examples/plot_cl_cd.jl
- script
examples/plot_cl_cd_plate.jl
- script
torque_controlled_mtk.jl
- correct tether drag based on l_bridle; if the kite has more than 7 bridle lines l_bridle must be larger than bridle_length(se)
- a new kite model, KPS3_3L was contributed by Bart van de Lint. It uses three lines to the ground and three winches for steering a ram-air foil kite.
- caching for the initial equilibrium
- function
KiteModels.install_examples()
that copies the examples, the data folder and installs the required extra packages - log alpha2, alpha3, alpha4; they must never become negative
- the calculation of the call-backs per time step was fixed in all examples and the tests
- the function
copy_examples()
copies now all examples - updated the documentation
- improved the scripts in the bin folder, not relevant for most users
- renamed the example
simulate.jl
tosimulate_simple.jl
- renamed the example
simulate_ii.jl
tosimulate_steering.jl
- add the script
menu.jl
that provides a menu with all the examples - bump ControlPlots to 0.1.4
- bump KiteUtils to 0.7.4
- bump WinchModels to 0.3.2
- bump KitePodModels to 0.3.3
- fix example
reel_out_4p_torque_control.jl
- use a new version of
WinchModels.jl
which provides an additional, torque-controlled winch - add many new winch parameters to
settings.jl
- BREAKING change: rename
v_ro
toset_speed
in function step()
- bump KiteUtils to version 0.6.16
- bump ControlPlots to version 0.0.12
- bump KiteUtils to version 0.6.12
- drop support for Julia 1.9
- replace Plots with ControlPlots in the examples
- use
rel_compr_stiffness
andrel_damping
from settings.yaml
- update KiteUtils to v0.6.7
- update Documenter to v1.0
- add type
KPS4_3L
, which is now only a copy ofKPS4
, but shall implement a kite with the steering lines going to the ground
- document the support for the
DImplicitEuler
solver, which is not very accurate, but because it is well known it can serve as a reference - support changing
max_order
for theDFBDF
- further reduced the memory usage
- it is now possible (and suggested) to use the DAE solver DFBDF.
This requires adding the following line to the settings.yaml file:
solver: "DFBDF"
The new solver is much faster (4x average, 1.8x worst case), has a lot less memory allocations (~ 50%) and is also much more stable in highly dynamic situations.
- new, non-allocating function
update_sys_state!(ss::SysState, s::AKM, zoom=1.0)
- improved performance by 10% by implementing custom
norm()
function for 3D vectors
- fix the method
clear!(s::KPS4)
which failed for models with less than 6 tether segments
Simulations should work fine now for one to about 28 tether segments (no hard upper limit, but things become slow and the visualization ugly if you have too many segments).