Fix LogDDP single-shooting regressions#166
Merged
Merged
Conversation
Align the Python bindings with the new LogBarrierOptions surface and re-roll nominal trajectories for both cold and warm starts. Add regression coverage for inconsistent cold-start guesses and reused warm-start trajectories.
There was a problem hiding this comment.
Pull request overview
Fixes regressions in the LogDDP single-shooting refactor by ensuring the solver’s nominal trajectory is always dynamically consistent with the current control sequence (both for cold starts and warm-start reuse), and by aligning the Python options binding with the updated C++ options surface.
Changes:
- Re-roll the nominal state trajectory from the current control sequence during
LogDDPSolver::initialize(cold start + warm start). - Remove remaining multi-shooting/defect-tracking plumbing from LogDDP and its options surface/bindings.
- Add C++ regression tests that fail when state guesses are reused without re-rolling from controls.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
src/cddp_core/logddp_solver.cpp |
Rolls out nominal trajectory from controls on init; removes defect/multi-shooting logic from LogDDP flow. |
include/cddp-cpp/cddp_core/logddp_solver.hpp |
Removes LogDDP internal storage tied to multi-shooting/defects. |
include/cddp-cpp/cddp_core/options.hpp |
Updates LogBarrierOptions to single-shooting surface (no longer inherits multi-shooting options). |
python/src/bind_options.cpp |
Aligns Python LogBarrierOptions binding with the updated C++ single-shooting options. |
tests/cddp_core/test_logddp_solver.cpp |
Adds regression tests for cold-start and warm-start trajectory consistency; updates existing tests to removed options. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Agent-Logs-Url: https://github.com/astomodynamics/cddp-cpp/sessions/a4f72287-d5cf-4268-86b0-42536d2b2d8d Co-authored-by: astomodynamics <49183997+astomodynamics@users.noreply.github.com>
Contributor
|
Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
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.
LogBarrierOptionsbinding with C++ options surfacerelaxed_log_barrier_parameters when reusing solver instance with new options on cold start