Repository navigation
Analysis B1 from the AIRBRAKE exit: stated wing limits, energy-against-distance front, gap to C - #8
Merged
Merged
Conversation
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018QKS75nmeebgQ4roJCLSfM
…y-against-distance front, gap to C (B1 spec 3-10) collocation.py: make_problem_exit (AIRBRAKE-exit entry state), CollocationOptions.alpha_max, with_options keeps the entry state (it rebuilt a cruise problem), schedule_summary, bound_check_c and compare through restricted.evaluate_c. bound_check stays as legacy. task_b1 rewritten: per variant (attached, c_envelope) the front over eps_x_m at the 1 m band, the band sweep, the gap to C and the sensitivities; B1_front, B1_gap, B1_sens, B1_schedule. B2 keeps its level-cruise start through _b1_problem_cruise (its start solve is bit-identical). B1Cfg is a list-based block and an old scalar eps_x_m is rejected with a message; the frozen placeholder study.yaml follows. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018QKS75nmeebgQ4roJCLSfM
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements
docs/B1_fix_spec.md: B1 now starts at the AIRBRAKE exit like D and C, and answers one question: the least bus energy as a function of distance, under a stated wing limit.Stacked PR: the base is
feat/c-ardupilot-z-loop(PR #7), so the diff shows only this change. Stack: #2 A, #3 D, #4 Q2, #5 E, #6 D addenda, #7 C, this. Retarget tomasteronce the stack merges. No other branch or PR was touched.Commits
B1_fix_spec.md.collocation.py:make_problem_exit,CollocationOptions.alpha_max,with_optionskeeps the entry state (it used to rebuild a cruise problem),schedule_summary,bound_check_c,comparethroughrestricted.evaluate_c;bound_checkstays as legacy.task_b1rewritten (per variant: the front overeps_x_mat the 1 m band, the band sweep, the gap to C, the sensitivities). TablesB1_front,B1_gap,B1_sens,B1_schedule.B1Cfgis list-based; an old scalareps_x_mis rejected with a message. B2 keeps its level-cruise start through_b1_problem_cruise. Configs and READMEs.Checked against the spec (S-01, real configs)
eps_x300: 8.922 kJ / 72.7 m / 6.69 s (end band 0.5, carry); 8.918 / 72.8 / 6.69 (1.76, carry); 8.921 / 72.6 / 6.68 (0.5, idle).eps_x40 and 57: not converged from three starts; rows kept with energy blank.eps_x40: 8.226 kJ, 38.7 m, 3.84 s (end band 0.5: 8.220); with the 34.4 deg pitch limit 7.748 kJ / 39.6 m / 3.74 s ateps_x40 and 7.605 / 49.5 / 4.51 ateps_x300.below_vstrue;bound_checkandcomparestill run; the old scalareps_x_mis rejected.run.py --only B1(S-01 and S-02,eps_x40 and 300) writes the four tables and the report section.Not run
The full 6-scenario, about 100-solve block (2 to 3 hours on one core) was not run; only the reduced study above. No new tests (the spec leaves them to the owner).
Notes for review
B1.gap_cis an addition. The B1 tasks are independent processes and cannot read C's optimum, so the gap evaluates C atB1.gap_c(paste the four values fromC_params), or at the register values withq= 2 if it is null. The table says which.attachedgap rows do not converge at C's 40 m (attached cannot go much below 73 m at a 1 m band). That is a solver result, not proven infeasibility.schedule_summarytakes(prob, check, gate), not just the replay, because it needs the dead zone and the stall speed.t_rotor_onis the first time after the throttle has rested at its minimum that it exceeds idle + 0.05 (the spec does not define idle for a carry start). An extra columnalpha_w_peak_above_vs_degcarries check 7's gate.attached); the 34.4 deg pitch limit on the first absolute-angle variant (c_envelope).std::bad_alloc) on a 24-core workstation; limitparallel.max_workersif memory is short.B1_scheduleholds the replay series for a plot.rotor_lag_s); the end band bounds climb as well as sink (C bounds sink only). VRS is only reported (B-3). B2 is not on this entry yet, so B-9 stays open.tests/data/placeholder_configs/study.yamlB1 block follows the new format.🤖 Generated with Claude Code