Skip to content

Commit dab207c

Browse files
authored
Add azimuth_rate (#120)
- [x] Add field azimuth_rate to SysState struct - [x] Add test - [x] Update documentation
1 parent 0f90096 commit dab207c

15 files changed

Lines changed: 142 additions & 53 deletions

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## KiteUtils v0.11.8 05-05-2026
4+
### Added
5+
- add `azimuth_rate` to `SysState`, including logging, display, and Arrow load/save support
6+
37
## KiteUtils v0.11.7 20-04-2026
48
### Added
59
- add version 4 of RecursiveArrayTools in compat

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "KiteUtils"
22
uuid = "90980105-b163-44e5-ba9f-8b1c83bb0533"
33
authors = ["Uwe Fechner <uwe.fechner.msc@gmail.com> and contributors"]
4-
version = "0.11.7"
4+
version = "0.11.8"
55

66
[workspace]
77
projects = ["examples", "test", "docs"]

docs/src/examples.md

Lines changed: 65 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -127,22 +127,71 @@ julia> syslog=log.syslog
127127
You can acces this array by index:
128128
```julia
129129
syslog[end]
130-
time [s]: 10.0
131-
orient [w,x,y,z]: Float32[0.5, 0.5, -0.5, -0.5]
132-
elevation [rad]: 0.64350116
133-
azimuth [rad]: 0.0
134-
l_tether [m]: 0.0
135-
v_reelout [m/s]: 0.0
136-
force [N]: 0.0
137-
depower [-]: 0.0
138-
steering [-]: 0.0
139-
heading [rad]: 0.0
140-
course [rad]: 0.0
141-
v_app [m/s]: 0.0
142-
vel_kite [m/s]: Float32[0.0, 0.0, 0.0]
143-
X [m]: Float32[0.0, 1.6666666, 3.3333333, 5.0, 6.6666665, 8.333333, 10.0]
144-
Y [m]: Float32[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
145-
Z [m]: Float32[0.0, 0.15380114, 0.6194867, 1.4100224, 2.5474184, 4.063342, 6.0000005]
130+
time [s]: 10.0
131+
t_sim [s]: 0.012
132+
sys_state [-]: 0
133+
cycle [-]: 0
134+
fig_8 [-]: 0
135+
e_mech [Wh]: 0.0
136+
orient [-]: Float32[0.5, 0.5, -0.5, -0.5]
137+
turn_rates [rad/s]:Float32[0.0, 0.0, 0.0]
138+
elevation [rad]: 0.5404195
139+
azimuth [rad]: 0.0
140+
azimuth_rate [rad/s]:0.0
141+
l_tether [m]: Float32[0.0, 0.0, 0.0, 0.0]
142+
v_reelout [m/s]: Float32[0.0, 0.0, 0.0, 0.0]
143+
winch_force [N]: Float32[0.0, 0.0, 0.0, 0.0]
144+
depower [0..1]: 0.0
145+
steering [-1..1]: 0.0
146+
kcu_steering [-1..1]:0.0
147+
set_steering [-1..1]:0.0
148+
heading [rad]: 0.0
149+
heading_rate [rad/s]:0.0
150+
course [rad]: 0.0
151+
bearing [rad]: 0.0
152+
attractor [rad]: Float32[0.0, 0.0]
153+
v_app [m/s]: 0.0
154+
v_wind_gnd [m/s]: Float32[10.4855, 0.0, -3.08324]
155+
v_wind_200m [m/s]: Float32[10.4855, 0.0, -3.08324]
156+
v_wind_kite [m/s]: Float32[10.4855, 0.0, -3.08324]
157+
AoA [rad]: 0.0
158+
side_slip [rad]: 0.0
159+
alpha3 [rad]: 0.0
160+
alpha4 [rad]: 0.0
161+
CL2 [-]: 0.0
162+
CD2 [-]: 0.0
163+
aero_force_b [N]: Float32[0.0, 0.0, 0.0]
164+
aero_moment_b [Nm]:Float32[0.0, 0.0, 0.0]
165+
tether_induced_force [N]:Float32[0.0, 0.0, 0.0]
166+
tether_induced_moment [Nm]:Float32[0.0, 0.0, 0.0]
167+
twist_angles [rad]:Float32[0.0, 0.0, 0.0, 0.0]
168+
vel_kite [m/s]: Float32[0.0, 0.0, 0.0]
169+
acc [m/s²]: 0.0
170+
X [m]: Float32[0.0, 1.6666666, 3.3333333, 5.0, 6.6666665, 8.333333, 10.0]
171+
Y [m]: Float32[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
172+
Z [m]: Float32[0.0, 0.15380114, 0.6194867, 1.4100224, 2.5474184, 4.063342, 6.0000005]
173+
set_torque [Nm]: Float32[0.0, 0.0, 0.0, 0.0]
174+
set_speed [m/s]: Float32[0.0, 0.0, 0.0, 0.0]
175+
set_force [N]: Float32[0.0, 0.0, 0.0, 0.0]
176+
roll [rad]: 0.0
177+
pitch [rad]: 0.0
178+
yaw [rad]: 0.0
179+
var_01 [-]: 0.0
180+
var_02 [-]: 0.0
181+
var_03 [-]: 0.0
182+
var_04 [-]: 0.0
183+
var_05 [-]: 0.0
184+
var_06 [-]: 0.0
185+
var_07 [-]: 0.0
186+
var_08 [-]: 0.0
187+
var_09 [-]: 0.0
188+
var_10 [-]: 0.0
189+
var_11 [-]: 0.0
190+
var_12 [-]: 0.0
191+
var_13 [-]: 0.0
192+
var_14 [-]: 0.0
193+
var_15 [-]: 0.0
194+
var_16 [-]: 0.0
146195

147196
```
148197
But you can also access the syslog component wise:

src/_demo_syslog.jl

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ function demo_syslog(P; duration=10)
2424
turn_rates_vec = Vector{MVector{3, MyFloat}}(undef, steps)
2525
elevation_vec = Vector{MyFloat}(undef, steps)
2626
azimuth_vec = Vector{MyFloat}(undef, steps)
27+
azimuth_rate_vec = Vector{MyFloat}(undef, steps)
2728
l_tether_vec = Vector{MVector{4, MyFloat}}(undef, steps)
2829
v_reelout_vec = Vector{MVector{4, MyFloat}}(undef, steps)
2930
winch_force_vec = Vector{MVector{4, MyFloat}}(undef, steps)
@@ -91,6 +92,7 @@ function demo_syslog(P; duration=10)
9192
turn_rates_vec[i+1] = state.turn_rates
9293
elevation_vec[i+1] = state.elevation
9394
azimuth_vec[i+1] = state.azimuth
95+
azimuth_rate_vec[i+1] = state.azimuth_rate
9496
l_tether_vec[i+1] = state.l_tether
9597
v_reelout_vec[i+1] = state.v_reelout
9698
winch_force_vec[i+1] = state.winch_force
@@ -147,14 +149,14 @@ function demo_syslog(P; duration=10)
147149
var_16_vec[i+1] = state.var_16
148150
end
149151
StructArray{SysState{P}}((time_vec, t_sim_vec, sys_state_vec, cycle_vec, fig_8_vec, e_mech_vec,
150-
orient_vec, turn_rates_vec, elevation_vec, azimuth_vec, l_tether_vec, v_reelout_vec,
151-
winch_force_vec, depower_vec, steering_vec, kcu_steering_vec, set_steering_vec, heading_vec,
152-
heading_rate_vec, course_vec, bearing_vec, attractor_vec, v_app_vec, v_wind_gnd_vec,
153-
v_wind_200m_vec, v_wind_kite_vec, AoA_vec, side_slip_vec, alpha3_vec, alpha4_vec,
154-
CL2_vec, CD2_vec, aero_force_b_vec, aero_moment_b_vec, tether_induced_force_vec, tether_induced_moment_vec,
155-
twist_angles_vec, vel_kite_vec, acc_vec, X_vec, Y_vec, Z_vec,
156-
set_torque_vec, set_speed_vec, set_force_vec, roll_vec, pitch_vec, yaw_vec,
157-
var_01_vec, var_02_vec, var_03_vec, var_04_vec, var_05_vec, var_06_vec,
158-
var_07_vec, var_08_vec, var_09_vec, var_10_vec, var_11_vec, var_12_vec,
159-
var_13_vec, var_14_vec, var_15_vec, var_16_vec))
152+
orient_vec, turn_rates_vec, elevation_vec, azimuth_vec, azimuth_rate_vec, l_tether_vec,
153+
v_reelout_vec, winch_force_vec, depower_vec, steering_vec, kcu_steering_vec, set_steering_vec,
154+
heading_vec, heading_rate_vec, course_vec, bearing_vec, attractor_vec, v_app_vec,
155+
v_wind_gnd_vec, v_wind_200m_vec, v_wind_kite_vec, AoA_vec, side_slip_vec, alpha3_vec,
156+
alpha4_vec, CL2_vec, CD2_vec, aero_force_b_vec, aero_moment_b_vec, tether_induced_force_vec,
157+
tether_induced_moment_vec, twist_angles_vec, vel_kite_vec, acc_vec, X_vec, Y_vec,
158+
Z_vec, set_torque_vec, set_speed_vec, set_force_vec, roll_vec, pitch_vec,
159+
yaw_vec, var_01_vec, var_02_vec, var_03_vec, var_04_vec, var_05_vec,
160+
var_06_vec, var_07_vec, var_08_vec, var_09_vec, var_10_vec, var_11_vec,
161+
var_12_vec, var_13_vec, var_14_vec, var_15_vec, var_16_vec))
160162
end

src/_load_log.jl

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
1111
Read a log file that was saved as .arrow file.
1212
"""
13-
load_log(_, filename::String) = load_log(filename)
13+
load_log(P, filename::String) = load_log(filename)
1414
function load_log(filename::String; path="")
1515
if path == ""
1616
path = DATA_PATH[1]
@@ -45,16 +45,17 @@ function load_log(filename::String; path="")
4545
# example_metadata = KiteUtils.Arrow.getmetadata(table.var_01)
4646
syslog = StructArray{SysState{P}}((table.time, table.t_sim, table.sys_state, table.cycle, table.fig_8,
4747
table.e_mech, table.orient, table.turn_rates, table.elevation, table.azimuth,
48-
table.l_tether, table.v_reelout, table.winch_force, table.depower, table.steering,
49-
table.kcu_steering, table.set_steering, table.heading, table.heading_rate, table.course,
50-
table.bearing, table.attractor, table.v_app, table.v_wind_gnd, table.v_wind_200m,
51-
table.v_wind_kite, table.AoA, table.side_slip, table.alpha3, table.alpha4,
52-
table.CL2, table.CD2, table.aero_force_b, table.aero_moment_b, table.tether_induced_force,
53-
table.tether_induced_moment, table.twist_angles, table.vel_kite, table.acc, table.X,
54-
table.Y, table.Z, table.set_torque, table.set_speed, table.set_force,
55-
table.roll, table.pitch, table.yaw, table.var_01, table.var_02,
56-
table.var_03, table.var_04, table.var_05, table.var_06, table.var_07,
57-
table.var_08, table.var_09, table.var_10, table.var_11, table.var_12,
58-
table.var_13, table.var_14, table.var_15, table.var_16))
48+
table.azimuth_rate, table.l_tether, table.v_reelout, table.winch_force, table.depower,
49+
table.steering, table.kcu_steering, table.set_steering, table.heading, table.heading_rate,
50+
table.course, table.bearing, table.attractor, table.v_app, table.v_wind_gnd,
51+
table.v_wind_200m, table.v_wind_kite, table.AoA, table.side_slip, table.alpha3,
52+
table.alpha4, table.CL2, table.CD2, table.aero_force_b, table.aero_moment_b,
53+
table.tether_induced_force, table.tether_induced_moment, table.twist_angles, table.vel_kite, table.acc,
54+
table.X, table.Y, table.Z, table.set_torque, table.set_speed,
55+
table.set_force, table.roll, table.pitch, table.yaw, table.var_01,
56+
table.var_02, table.var_03, table.var_04, table.var_05, table.var_06,
57+
table.var_07, table.var_08, table.var_09, table.var_10, table.var_11,
58+
table.var_12, table.var_13, table.var_14, table.var_15, table.var_16
59+
))
5960
return SysLog{P}(basename(fullname[1:end-6]), colmeta, syslog)
6061
end

src/_log.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ function log!(logger::Logger, state::SysState)
2626
logger.turn_rates_vec[i] .= state.turn_rates
2727
logger.elevation_vec[i] = state.elevation
2828
logger.azimuth_vec[i] = state.azimuth
29+
logger.azimuth_rate_vec[i] = state.azimuth_rate
2930
logger.l_tether_vec[i] .= state.l_tether
3031
logger.v_reelout_vec[i] .= state.v_reelout
3132
logger.winch_force_vec[i] .= state.winch_force

src/_logger.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ $(TYPEDFIELDS)
3131
turn_rates_vec::Vector{MVector{3, MyFloat}} = [zero(MVector{3, MyFloat}) for _ in 1:Q]
3232
elevation_vec::Vector{MyFloat} = zeros(MyFloat, Q)
3333
azimuth_vec::Vector{MyFloat} = zeros(MyFloat, Q)
34+
azimuth_rate_vec::Vector{MyFloat} = zeros(MyFloat, Q)
3435
l_tether_vec::Vector{MVector{4, MyFloat}} = [zero(MVector{4, MyFloat}) for _ in 1:Q]
3536
v_reelout_vec::Vector{MVector{4, MyFloat}} = [zero(MVector{4, MyFloat}) for _ in 1:Q]
3637
winch_force_vec::Vector{MVector{4, MyFloat}} = [zero(MVector{4, MyFloat}) for _ in 1:Q]

src/_save_log.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ function save_log(logger::Logger, name="sim_log", compress=true;
5959
resize!(logger.turn_rates_vec, nl)
6060
resize!(logger.elevation_vec, nl)
6161
resize!(logger.azimuth_vec, nl)
62+
resize!(logger.azimuth_rate_vec, nl)
6263
resize!(logger.l_tether_vec, nl)
6364
resize!(logger.v_reelout_vec, nl)
6465
resize!(logger.winch_force_vec, nl)

src/_show.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ function Base.show(io::IO, st::SysState)
1616
println(io, "turn_rates [rad/s]:", st.turn_rates)
1717
println(io, "elevation [rad]: ", st.elevation)
1818
println(io, "azimuth [rad]: ", st.azimuth)
19+
println(io, "azimuth_rate [rad/s]:", st.azimuth_rate)
1920
println(io, "l_tether [m]: ", st.l_tether)
2021
println(io, "v_reelout [m/s]: ", st.v_reelout)
2122
println(io, "winch_force [N]: ", st.winch_force)

src/_syslog.jl

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,16 @@ function syslog(logger::Logger)
99
l = logger
1010
StructArray{SysState{l.points}}((l.time_vec, l.t_sim_vec, l.sys_state_vec, l.cycle_vec, l.fig_8_vec,
1111
l.e_mech_vec, l.orient_vec, l.turn_rates_vec, l.elevation_vec, l.azimuth_vec,
12-
l.l_tether_vec, l.v_reelout_vec, l.winch_force_vec, l.depower_vec, l.steering_vec,
13-
l.kcu_steering_vec, l.set_steering_vec, l.heading_vec, l.heading_rate_vec, l.course_vec,
14-
l.bearing_vec, l.attractor_vec, l.v_app_vec, l.v_wind_gnd_vec, l.v_wind_200m_vec,
15-
l.v_wind_kite_vec, l.AoA_vec, l.side_slip_vec, l.alpha3_vec, l.alpha4_vec,
16-
l.CL2_vec, l.CD2_vec, l.aero_force_b_vec, l.aero_moment_b_vec, l.tether_induced_force_vec,
17-
l.tether_induced_moment_vec, l.twist_angles_vec, l.vel_kite_vec, l.acc_vec, l.X_vec,
18-
l.Y_vec, l.Z_vec, l.set_torque_vec, l.set_speed_vec, l.set_force_vec,
19-
l.roll_vec, l.pitch_vec, l.yaw_vec, l.var_01_vec, l.var_02_vec,
20-
l.var_03_vec, l.var_04_vec, l.var_05_vec, l.var_06_vec, l.var_07_vec,
21-
l.var_08_vec, l.var_09_vec, l.var_10_vec, l.var_11_vec, l.var_12_vec,
22-
l.var_13_vec, l.var_14_vec, l.var_15_vec, l.var_16_vec))
12+
l.azimuth_rate_vec, l.l_tether_vec, l.v_reelout_vec, l.winch_force_vec, l.depower_vec,
13+
l.steering_vec, l.kcu_steering_vec, l.set_steering_vec, l.heading_vec, l.heading_rate_vec,
14+
l.course_vec, l.bearing_vec, l.attractor_vec, l.v_app_vec, l.v_wind_gnd_vec,
15+
l.v_wind_200m_vec, l.v_wind_kite_vec, l.AoA_vec, l.side_slip_vec, l.alpha3_vec,
16+
l.alpha4_vec, l.CL2_vec, l.CD2_vec, l.aero_force_b_vec, l.aero_moment_b_vec,
17+
l.tether_induced_force_vec, l.tether_induced_moment_vec, l.twist_angles_vec, l.vel_kite_vec, l.acc_vec,
18+
l.X_vec, l.Y_vec, l.Z_vec, l.set_torque_vec, l.set_speed_vec,
19+
l.set_force_vec, l.roll_vec, l.pitch_vec, l.yaw_vec, l.var_01_vec,
20+
l.var_02_vec, l.var_03_vec, l.var_04_vec, l.var_05_vec, l.var_06_vec,
21+
l.var_07_vec, l.var_08_vec, l.var_09_vec, l.var_10_vec, l.var_11_vec,
22+
l.var_12_vec, l.var_13_vec, l.var_14_vec, l.var_15_vec, l.var_16_vec
23+
))
2324
end

0 commit comments

Comments
 (0)