Conversation
KiteUtils 0.13 defines SysState quaternions as KA (aft-right-up against ENU). The model is unchanged: kite_ref_frame and calc_orient_quat stay KS, and update_sys_state! converts at the boundary. - roll, pitch and yaw are unchanged; they stay KS, against NED - turn_rates is KA, so its z component has the opposite sign to before - calc_heading(s) passes the quaternion instead of Euler angles, one round trip through quat2euler fewer, same angle Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
KiteUtils 0.13 dropped the fields: they were the same orientation the quaternion already holds, and keeping them kept a second convention in the state. euler_ks(ss.orient) reports them, still against NED. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… fields Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The WinchModels and AtmosphericModels releases that accept KiteUtils 0.13 (both 0.3.11) require Julia 1.12, so KiteModels on KiteUtils 0.13 cannot support 1.11. Removes its manifest, CI cell, install branch and docs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- fromKS2KA / fromKS2KA_body / fromENU2NED replace the names KiteUtils 0.13 did not ship; calc_heading(s) hands it a KA attitude. - examples_3d and test take KiteViewers from OpenSourceAWE/KiteViewers.jl#56's branch until a release accepts KiteUtils 0.13. - Minimal resolve on 1.12 and 1.13: KiteUtils 0.12.2 -> 0.13.1, WinchModels 0.3.10 -> 0.3.11, nothing else. - Tests assert the KA orientation, euler_KS round trip and KA turn rate; the parking examples stop overwriting sys_state.orient with KS and plot the KS body rate next to heading_rate. - test-kps3: heading at azimuth 0 is checked modulo 2π; ≈ 0 had no absolute tolerance and failed on 2.8e-17. - calc_orient_quat is on the functions page. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
And update the PR body |
LinearAlgebra and Pkg compat move to "1.12, 1.13" (1.13 ships 1.13.0 of both); minimal resolve moves only the project hash in each .default. Drop the inline comment that repeated the docstring, the docstring's mention of its callers, a dangling clause in docs/src/index.md and a trailing space in README.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review addressed in 6bf76f9, and the PR body rewritten to describe the branch as it stands: the The fixes: Not changed: the To review: Verification
Commits
Opened by |
|
Done in 6bf76f9; each finding answered where it was written. |
|
PR body rewritten to match the branch at 6bf76f9. |
|
Local full suite: FAIL (2 min, Julia 1.13.0, one cell of the matrix) |
|
Not a bug in this PR: the one error is #314, which fails the same way on |
TL;DR
SysStatenow carriesKAorientations (aft-right-up, against ENU), the convention KiteUtils 0.13 stores; the model keeps working inKSandupdate_sys_state!converts at the boundary. Building on KiteUtils 0.13 forces two more changes that ride here: the 0.12SysStatemigration (#321, merged in) and dropping Julia 1.11.What a downstream consumer will notice
roll,pitch,yaware no longer written toSysState— KiteUtils 0.13 removed those fields.orient_euler(s)still returns them against NED, andeuler_KS(ss.orient)recovers them from a state or a log.ss.orientisKA, notKS.calc_orient_quatandkite_ref_framestill returnKS.turn_ratesisKA, so its z component has the opposite sign to before (a rate about an axis that pointed down and now points up).winch_force,l_tether,v_reelout,set_force,set_torque,set_speedhold one value instead of four (from Build SysState with the KiteUtils 0.12 constructor and one-slot winch fields #321).calc_heading(s)passes the quaternion instead of Euler angles; same angle, onequat2eulerround trip fewer.Julia 1.11 dropped
Agreed on this thread (option A). WinchModels 0.3.11 and AtmosphericModels 0.3.11, the only releases accepting KiteUtils 0.13, require Julia 1.12. So
juliacompat is1.12, 1.13,Manifest-v1.11.toml.defaultis deleted, the CI cells move 1.11 → 1.12, andbin/install,bin/update_default_manifestand the install docs lose their 1.11 branch. CI's'1'cell runs 1.13.Temporary: KiteViewers from a branch
No released KiteViewers accepts KiteUtils 0.13.
examples_3d/Project.tomlandtest/Project.tomltake it via[sources]from OpenSourceAWE/KiteViewers.jl#56's branch (agent/54-update-kiteutils). Those two lines must come out, and the compat point at the released version, before this merges — hence the draft and theDepends-Onbelow.Also in the diff
test-kps3.jl:calc_heading(kps) ≈ 0had no absolute tolerance; the quaternion route gives 2.8e-17, the Euler route 2π − ε. It now compares modulo 2π.examples_3d/parking_*.jl: stop overwritingsys_state.orientwith aKSquaternion, and plot theKSbody rate next toheading_rateso the curves keep the same sign.calc_orient_quatgets a docstring and a place indocs/src/functions.md.Review order:
src/KiteModels.jl, thentest/test-update-sys-state.jl. Everything underCHANGELOG.mdand the one-slot winch fields is #321's and disappears from this diff when #321 merges.Verification
test/test-update-sys-state.jlfails without the KA conversion (orient,turn_rates), passes 58/58 with it — Julia 1.12.7 and 1.13.0.test-update-sys-state.jl58/58,test-kps3.jl77/77,test-aqua.jl9/9. Earlier on 1.12.7:test-kps4.jl(11@test_brokenfrommain),test-orientation.jl88/88,test-simulate_4p.jl2/2,test-interface.jl,test-helpers.jl19/19.main· GitHub CI green on eb9d276.agent ci-localon 1.13 stops attest_find_steady_state, which is find_steady_state! does not converge for KPS4 on Julia 1.13, and CI hides it #314 and fails the same way onmain.examples_3dparking examples not run (need a display).[sources]lines pin a branch that will be deleted after KiteViewers#56 merges.Scope
24 files;
Manifest-v1.11.toml.defaultis −3139 of the −3469. Source change issrc/KiteModels.jl(+19/−27, most of it #321's).Depends-On: #321
Depends-On: OpenSourceAWE/KiteViewers.jl release after v0.6.0
🤖 Generated with Claude Code