Releases: harmoniqs/DirectTrajOpt.jl
Releases · harmoniqs/DirectTrajOpt.jl
v0.6.0
DirectTrajOpt v0.6.0
This release introduces a massive refactor of the internal API, standardizing how constraints, integrators, and objectives interact via a new Common Interface. It also brings compatibility with NamedTrajectories v0.7, shifting from index-based logic to symbolic component-based logic.
Breaking Changes
- Common Interface Adoption: All
Constraints,Integrators, andObjectivesnow implement theCommonInterface. Direct calls to internal evaluation functions must be updated to use the unifiedevaluate!,jacobian!, andhessian_of_lagrangianAPI. - Variable-Based Constraints: Constraints now use variable names (symbols) instead of raw integer indices for improved readability and robustness.
- Problem Structure:
DirectTrajOptProblemnow stores integrators directly; the standalonedynamics.jland its associated structures have been removed. - Trajectory Handling: Updated to
NamedTrajectories v0.7. Functions that previously took raw vectors/indices now expectNamedTrajectoryobjects or symbolic references.
Added
- CommonInterface Module: A unified dispatch system for
evaluate!,jacobian_structure,jacobian!,hessian_structure, andhessian_of_lagrangian. - New Constraint Types:
- Linear/Equality:
AllEqualConstraint,TimeStepsAllEqualConstraint,EqualityConstraint,GlobalEqualityConstraint. - Boundary/Symmetry:
BoundsConstraint,GlobalBoundsConstraint,SymmetricConstraint,SymmetricControlConstraint. - Aggregates:
TotalConstraint,DurationConstraint(helper for time-summation). - Nonlinear Constraints: Added
NonlinearKnotPointConstraintandNonlinearGlobalKnotPointConstraintfor complex, non-linear trajectory requirements on knot-points. - Testing Utilities: Added
test_constraintfor validating nonlinear constraints against finite-difference approximations with detailed diff reporting.
Changes
- Performance Optimization: Constraint and objective functions now compute component indices once at construction rather than at evaluation time.
- Integrator Refactor:
BilinearIntegrator,DerivativeIntegrator, and others now utilizeNamedTrajectoryfor state dimension retrieval and symbolic component mapping. - Refined
QuadraticRegularizerandMinimumTimeObjectivefor more efficient gradient and Hessian computations. DirectTrajOptProblemnow utilizesAbstractObjectivefor better extensibility.IpoptEvaluatorwas updated to align with new dynamics creation and objective evaluation at runtime making it a bit more modular
Removed
src/dynamics.jl: Obsolete following the integration of dynamics directly into the problem and integrator structures.- Deprecated index-based constructors for constraints and objectives.
- Certain objectives pre-allocated hessian matrices in various objective types that are being tested for internal use
Merged pull requests:
- Bump codecov/codecov-action from 4 to 5 (#1) (@dependabot[bot])
- tagbot + manual tag multidocs rebuild trigger (#36) (@jack-champagne)
- Bump actions/upload-artifact from 4 to 5 (#37) (@dependabot[bot])
- Bump actions/checkout from 4 to 5 (#38) (@dependabot[bot])
- Bump peter-evans/repository-dispatch from 2 to 4 (#39) (@dependabot[bot])
- refactor interface, new constraints, latest named trajectories (#41) (@jack-champagne)
v0.5.0
DirectTrajOpt v0.5.0
DirectTrajOpt.jl v0.5.0
Major documentation improvements and variable naming refactor for consistency.
Breaking Changes:
- Trajectory time step variables renamed from
TtoNthroughout (now consistent with standard notation for number of knot points) - Updated
NamedTrajectories.jldependency to v0.6
New Features:
- Complete example added: time-optimal bilinear control with multiple inputs and free time steps
- Visualization support via
CairoMakie.jlintegration in documentation - Enhanced quickstart guide with plotting examples
Documentation:
- Comprehensive refactoring of all mathematical formulations to use
N(knot points) convention - New detailed tutorials: linear system control, bilinear control, minimum time optimization
- Enhanced concept guides for trajectories, integrators, objectives, and constraints
Improvements:
- Julia 1.12 support
- Refactored
TimeDependentBilinearIntegratorto useOrdinaryDiffEqTsit5 - Better alignment with mathematical optimization conventions
v0.4.4
DirectTrajOpt v0.4.4
Added
- support and CI for Julia 1.12
- support for running nightly 'pre' for early testing
Merged pull requests:
- support julia 1.12 (#33) (@jack-champagne)
- add multidoc workflow trigger #98 (#34) (@jack-champagne)
v0.4.3
DirectTrajOpt v0.4.3
Changes
- New feature:
DirectTrajOpt.Callbacks(reexported fromDirectTrajOpt.IpoptSolverExt) implements i) an interface for generating and forwarding optimizer state to a callback, once per iteration of an Ipopt NLP, and ii) a handful of useful default factory routines for generating callbacks compatible with the foregoing interface.- Note: Previous
IpoptSolverExtimplementations decoupled optimizer variables andNamedTrajectorystate, with the consequence that early termination of solves resulted in loss of solver progress. Among the default factory routines implemented inCallbacksis a routine enforcing updates ofNamedTrajectorystate once per iteration, ameliorating this issue.
- Note: Previous
Merged pull requests:
- Adding Ipopt callbacks to DTO (previously implemented in QC) (#30) (@gennadiryan)
v0.4.2
DirectTrajOpt v0.4.2
Merged pull requests:
- linear splines in td integrator (#31) (@aarontrowbridge)
- bump minor version to 0.4.2 (#32) (@aarontrowbridge)
v0.4.1
DirectTrajOpt v0.4.1
Merged pull requests:
- Documentation Template Refactor (#27) (@jack-champagne)
- patch ordinary diff eq alg type (#28) (@jack-champagne)
v0.4.0
DirectTrajOpt v0.4.0
- "refine" updates to ipopt options
- objectives print generic struct string
Breaking changes:
- integrators receive the knot point index as an arg
- NT update to 0.5
Merged pull requests:
- Patch updates to DTO with knot point index (#26) (@andgoldschmidt)
v0.3.0
DirectTrajOpt v0.3.0
Breaking changes
- updates to parametric NT
New features
- global nonlinear constraints
- global objectives
- adds global_data option to knot point nonlinear constraints and objectives
- adds duration and symmetry constraint
Merged pull requests:
- Feature/free phases (#13) (@andgoldschmidt)
- Feature/duration symmetry (#24) (@BBhattacharyya1729)