Enh: support actuator dynamics from ActiveRocketPy - #39
Conversation
7cd8d95 to
9bb0ee9
Compare
|
Retrospective, since this is merged and v0.1.0 is going out on top of it. Two things I checked in the code rather than inferred, both of which belong in the release notes rather than in a change to this PR. The gimbal parameter rename is a breaking change for competitors. The actuator dynamics path was not exercised when this landed. Both scenarios set all three time constants to Separately, while following the TVC integration I found that the flight equations reduce axial thrust for a gimbal deflection and apply the resulting moments, but never add the lateral components of that same thrust vector to the translational equations. At the shipped 15 degree limit on both axes that omits I would not hold v0.1.0 for it. It is upstream, it predates this release, every entrant runs the same model so nothing is unfair, and changing the force model five days out would invalidate both golden masters and any submission already made. What it does mean is that the release should not describe the thrust vector model as validated, which the draft notes say plainly. One more contract question worth its own issue rather than a fix here: the launch branch creates the |
Cutting the 0.1.0 header here left the file arguing with itself: a 2026-07-DD placeholder date, no Unreleased section, an Unreleased comparison link with nothing above it, no 0.1.0 link, and CONTRIBUTING telling contributors to add entries to a section that no longer existed. The release scope is also still open, so the section would have to be edited again anyway. Unreleased needs no date, and the release PR is what renames it and adds the link. Record the migration #39 requires. It is described as additive, and it is not: rocket.control.gimbal_range became max_gimbal_angle and the three time-constant keys became required, so a scenario file written for v0.0.2 raises KeyError: 'max_gimbal_angle' on the first launch action. Measured against the shipped scenario 0 with the old key names. Add the coordinate-frame correction from #68. Z is altitude above sea level rather than height above the pad, in balloon_states, the GNSS sensors and the rocket state, which is the kind of thing an agent aims with. It was the largest omission in the file. Drop #46 from the ActiveRocketPy relock. It landed on 2026-06-27, a month before #60 bumped the submodule to 1.13, so it cannot have relocked against it; #62 did. Say "users and contributors" in both files, since the entries already include tests, CI and tooling. Point the vpython instructions at one command with both extras. uv sync is exact, so running --extra vpython after --extra dev uninstalls the dev extra. Measured: ruff was present, then gone, then present again with both extras named together. Give the Makefile a .PHONY, so a file named format does not shadow the target. Signed-off-by: thc1006 <84045975+thc1006@users.noreply.github.com>
Following the ActiveRocketPy updates on actuator dynamics, implement them in BalloonPoppingChallenge
This PR will be completed after these two: