Skip to content

Latest commit

 

History

History
353 lines (201 loc) · 12.7 KB

File metadata and controls

353 lines (201 loc) · 12.7 KB

Change Log

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

Note: This is the Changelog file of opengen - the Python interface of OpEn

0.11.0 - 31 March 2026

Added

  • ROS2 package generation support via BuildConfiguration.with_ros2(...), including auto-generated ROS2 templates, launcher, messages, and package wrapper code
  • Dedicated ROS2 tests covering package generation, build configuration behavior, rendered custom package settings, and end-to-end execution of a generated ROS2 node
  • More informative TCP solver error payloads, including clearer dimension/parameter validation failures and propagated solver-side failure messages
  • Additional unit tests for BuildConfiguration, OcpSolution, AffineSpace, RosConfiguration, and SetYCalculator, increasing Python coverage to 93%

Changed

  • Extended RosConfiguration so it can be used for both ROS and ROS2 package generation
  • Breaking change: the direct interface (Python bindings) now has an API which mirrors that of the TCP interface: the method solve returns either a solution or an error object. Website documentation is updated. New unit tests are implemented. Note that solver.run() does not return the solution object directly, but rather works in the same way as the TCP interface: it returns a response object (instance of SolverResponse), on which the method .get() returns either a SolverStatus or SolverError.
  • Added helpful __repr__ methods to generated Python binding response/status/error objects, TCP solver response/error objects, and GeneratedOptimizer for easier inspection and debugging
  • Updated generated TCP server and C interface templates to work with the richer Rust solver error model and expose better failure information to clients. Updated auto-generated CMakeLists.txt file. Tighter unit tests.
  • ROS2 generated packages now publish detailed error_code and error_message fields, plus STATUS_INVALID_REQUEST, so invalid requests and solver failures are reported explicitly instead of being silently ignored
  • Extended GitHub Actions CI to run Python, OCP, and generated-code tests on Windows, and fixed multiple Windows-specific code generation, path, encoding, TCP, and C/CMake compatibility issues.
  • ROS/ROS2 messages: using uint64 instead of uint8 to avoid overflow
  • Tighter checks of provided arguments in build configuration
  • Added pytest to the optional dev dependencies and documented local test, benchmark, and coverage workflows for Python and Rust contributors
  • Restructured folder structure of entire repo: opengen moved to folder python

Fixed

  • Generated ROS and ROS2 wrappers now accept any meaningful positive initial_penalty instead of requiring values greater than 1.0
  • Generated ROS and ROS2 result messages now use wide iteration counters so inner_iterations and outer_iterations cannot overflow
  • ROS2 generated packages now use uint16 for error_code, matching the current positive error-code range while keeping the wire format compact
  • MATLAB-related Python docs now reference the new python/ package layout instead of the removed open-codegen/ path
  • ROS2 integration tests now clean stale nested colcon build artifacts and preserve the active shell environment more reliably in micromamba/conda setups
  • Fixed issues in __init__.py: lazy imports and discoverability
  • Now checking whether the constraints have the correct dimension before attempting to build an optimizer

0.10.1 - 2026-03-25

Changed

  • Introduced pyproject.toml for packaging the Python library; constrained the versions of dependencies therein

0.10.0 - 2026-03-19

Added

  • New high-level opengen.ocp package for constructing optimal control problems from dynamics, stage/terminal costs, named parameters, and OCP-oriented constraints
  • Support for both single-shooting and multiple-shooting formulations, including penalty- and ALM-based constraint lowering
  • GeneratedOptimizer wrapper with solve(x0=..., xref=...) API and persistent optimizer metadata via optimizer_manifest.json plus rollout.casadi
  • Continuous-time dynamics discretization helpers in opengen.ocp.DynamicsDiscretizer, including Euler, midpoint, Heun, RK4, and multistep discretizations
  • Extended OcpSolution with solver diagnostics such as cost, penalty, iteration counts, infeasibility, fixed-point residual, and Lagrange multipliers
  • Detailed documentation available here, incl. Google Colab notebooks, and updated API docs

Changed

  • Changed the default penalty weight update factor to 1.75
  • Added and refined OCP documentation, docstrings, notebook examples, and automated tests
  • Improved readability of printed OCP solver results

Fixed

  • Avoid duplicate builder log messages by disabling propagation to the root logger
  • Use reliable package version lookup when recording the installed CasADi version in optimizer manifests
  • Check valid version in with_version

0.9.6 - 2026-03-14

Fixed

  • Clippy fixes (minor)

0.9.5 - 2026-03-10

Changed

  • Removed dependence on pkg_resources (issue #380)
  • Additional unit tests: increased coverage to 92%

0.9.4 - 2025-05-08

Fixed

  • Fixed issues with cross compilation (each sub-project has its own .cargo/config.toml) and updated documentation

Changed

  • Rename auto-generated bindings file from .cargo/config to .cargo/config.toml (backwards compatible change)
  • Updated min cmake version from 2.8 to 3.5
  • Updated auto-generated example C/C++ bindings

0.9.3 - 2024-12-06

Changed

  • Email alias in setup.py

0.9.2 - 2024-11-05

Fixed

  • In CasADi-generated C files some functions are made static to avoid clashes when creating multiple solvers

0.9.1 - 2024-10-14

Changed

  • Handling kill code in TCP server interface to get rid of warning

0.9.0 - 2024-08-15

Added

  • Support for affine spaces in code generation (see opengen.constraints.AffineSpace)
  • TCP solver status can be printed

0.8.1 - 2024-07-17

Added

  • Python direct interface support for ARM-based Macs
  • Updated GitHub Actions to use the macos-latest runner
  • Updated GitHub Actions to use Python3.12 (required for above)

0.8.0 - 2024-03-20

Added

  • Code generation support for Sphere2

0.7.1 - 2022-02-14

Added

  • Method .build returns a dictionary with information that can assist debugging

Changed

  • Default argument in .with_preconditioning
  • Updated all docstrings to be sphinx-compatible
  • New API docs

0.7.0 - 2022-10-11

Added

  • Code generation and support for preconditioning

0.6.13 - 2022-8-12

Changed

  • Removing timestamps from auto-generated files
  • Removing random strings from function names (no mangling)

0.6.12 - 2022-8-8

Fixed

  • Got rid of Rust warnings for generated code

0.6.11 - 2022-3-10

Fixed

  • Changed f-strings (f"{variable}") to .format for python3.5 compatibility
  • Fixed typo in tcp_server.rs

0.6.9 - 2022-1-24

Fixed

  • Forced use of clap v2 because migration required for v3

0.6.8 - 2021-12-3

Fixed

  • Fixed bug in python code file generation for Windows users

0.6.7 - 2021-11-1

Added

  • Support for simplices and ell1 balls via code generation

0.6.6 - 2021-10-27

Added

  • Support for rpmalloc and jemalloc using BuildConfiguration.with_allocator
  • Implementation/testing of projection on simplices (simplex.py) (addresses #234)
  • Implementation/testing of projection on Ball-1 (ball1.py) (addresses #238)
  • # Safety section in auto-generated unsafe auto-generated Rust code

Removed

  • Unnecessary #[no_mangle]s in auto-generated Rust code

Changed

  • Took care of most clippy warnings in Rust and auto-generated Rust code

0.6.5 - 2021-04-16

Changed

  • Include VERSION file in MANIFEST.in (included in Python package)
  • Bump versions: cbindgen: 0.8 --> 0.20.* and libc: 0.2.0 -> 0.2.*

0.6.4 - 2020-10-21

Added

  • Accessing Rust from Python directly using PyO3

Fixed

  • List of authors in Cargo.toml is generated properly
  • Fixed bug when curvature is zero

Changed

  • enable_tcp_interface previously gave a DeprecationWarning; now it raises it. In a future version, it will be removed.

0.6.3 - 2020-10-06

Fixed

  • Fixed bug #210: Cartesian products in code generation
  • Fixed bug #211: OptimizerTcpManager and remote connections

0.6.2 - 2020-09-27

Fixed

  • Fixed issue with TCP connections in Release mode (PR #206)

0.6.1 - 2020-09-10

Changed

  • OptimizerTcpManager: ip and port can be set dynamically

0.6.0 - 2020-09-03

Added

  • Support for half-spaces in problem constraints
  • Added checks for segments in CartesianProduct

Changed

  • Dropping first argument in Cartesian (dimension) as it is unnecessary
  • Documented class CartesianProduct
  • Dropped dimension from constructor of CartesianProduct (breaking change)

Fixed

  • Issue #185: ROS config parameters are ignored

0.5.0 - 2020-05-12

Fixed

  • Prevent multiple log messages from printing
  • Check if TCP port is available before starting server

Added

  • Auto-generation of ROS packages
  • Cost value at solution is returned

Changed

  • Reorganised template files into folders

Removed

0.4.1 - 2020-04-13

Fixed

  • Project-specific icasadi dependency
  • Project-specific tcp_iface TCP interface
  • Fixed lbfgs typo