Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ neural_models/
examples/c_generated_code/
examples/*_acados_ocp.json

# Generated demo output (gifs, json dumps)
examples/out_ipddp_mpcc_rc/

# PDF images
pdf_images/

Expand Down
4 changes: 3 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ set(CMAKE_POLICY_VERSION_MINIMUM "3.15" CACHE STRING "Minimum CMake version for

project(
cddp
VERSION 0.5.1
VERSION 0.5.2
DESCRIPTION "CDDP: A C++ library for Trajectory Optimization and MPC"
HOMEPAGE_URL "https://github.com/astomodynamics/cddp-cpp"
)
Expand Down Expand Up @@ -147,7 +147,9 @@ set(cddp_core_srcs
src/cddp_core/dynamical_system.cpp
src/cddp_core/objective.cpp
src/cddp_core/constraint.cpp
src/cddp_core/cddp_context_utils.cpp
src/cddp_core/helper.cpp
src/cddp_core/interior_point_utils.cpp
src/cddp_core/boxqp.cpp
src/cddp_core/qp_solver.cpp
src/cddp_core/cddp_core.cpp
Expand Down
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ $$
\quad \mathbf{g}(\mathbf{x}_k,\mathbf{u})_k\leq 0
$$

$$
\quad \mathbf{h}(\mathbf{x}_N)=0,\;\mathbf{g}_N(\mathbf{x}_N)\leq 0
$$

$$
\quad {\mathbf{x}}_{0} = \mathbf{x}{(t_0)}
$$
Expand All @@ -28,6 +32,13 @@ $$
\quad k = 0,1,\cdots N-1
$$

For interior-point solves, `IPDDP` supports path inequalities, terminal
equalities, terminal inequalities, and mixed path/terminal constrained
problems with warm-started multiplier and slack state. In the C++ API,
terminal constraints are attached with `CDDP::addTerminalConstraint(...)`
and should use the built-in `TerminalEqualityConstraint` or
`TerminalInequalityConstraint` classes.

## Examples
The maintained example surface is now split:

Expand Down Expand Up @@ -81,6 +92,10 @@ The MPCC portfolio example is a lightweight kinematic contouring-control demo.
Its vendored track data in `examples/data/` is derived from the
[`alexliniger/MPCC`](https://github.com/alexliniger/MPCC) project.

The portfolio currently emphasizes animated path-constrained examples. The
terminal-constraint cases added to IPDDP are covered by the regression suite
rather than by a dedicated gallery animation.

## Installation
### Dependencies
* [CMake](https://cmake.org/) (Build System)
Expand Down
Binary file modified docs/assets/python_portfolio/mpcc_racing_line.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions docs/cpp.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,17 @@ That lets the repository serve both as:

- a source build for C++ consumers
- the native backend for the `pycddp` wheel

## Constraint coverage

`IPDDP` is the interior-point single-shooting solver in the C++ API. The
current implementation supports:

- path inequality constraints
- terminal equality constraints via `TerminalEqualityConstraint`
- terminal inequality constraints via `TerminalInequalityConstraint`
- mixed path and terminal constrained problems

Attach terminal constraints on `CDDP` with `addTerminalConstraint(...)`. IPDDP
rejects unsupported terminal-constraint subclasses instead of silently ignoring
them.
1 change: 1 addition & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
- a C++17 core library for trajectory optimization and MPC
- `pycddp` Python bindings built with `pybind11`
- a small animation-oriented Python portfolio for demos and regression checks
- IPDDP support for path constraints plus terminal equality and terminal inequality constraints

Use the navigation to get started with installation, local development, and
the release workflow for PyPI and GitHub Pages.
Expand Down
16 changes: 16 additions & 0 deletions docs/python.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,22 @@ The Python package is published as `pycddp`.
- the native extension module `_pycddp_core`
- the public package namespace `pycddp`
- version metadata from `pycddp._version`
- `CDDP` problem bindings with `add_constraint(...)` and `add_terminal_constraint(...)`

## Solver coverage

The Python package follows the same solver capability as the C++ core. For
`IPDDP`, the regression suite now covers:

- path-only constrained problems
- terminal-inequality-only problems
- terminal-equality-only problems
- mixed path + terminal-equality problems
- warm-start reuse of path, terminal-inequality, and terminal-equality state

The current Python portfolio focuses on animated demos rather than terminal
constraint examples, so terminal-constrained IPDDP coverage is documented here
and exercised in tests.

## Local validation

Expand Down
5 changes: 5 additions & 0 deletions docs/python_portfolio.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ Matplotlib.
actually produce: constrained solves, animated trajectories, and compact
reproducible workflows.
</p>
<p>
The gallery is intentionally path-focused. Terminal-equality and
terminal-inequality support in <code>IPDDP</code> is covered in the solver
regression suite rather than in a separate animation card.
</p>
<p>
<a class="md-button md-button--primary" href="../python/">Python package guide</a>
<a class="md-button" href="https://github.com/astomodynamics/cddp-cpp/tree/master/examples">Browse examples</a>
Expand Down
Loading
Loading