Skip to main content

controlAlgorithms

Algorithms at the boundary of control and machine learning in JAX.

This package contains routines for (feedback) control of dynamic systems and considers

  • the identification of dynamic systems from input/output data (learning parameters of ordinary differential equations),
  • state estimation from input/output data with optional parameter learning, and
  • model-based trajectory optimization and planning of nonlinear systems under inequality constraints.

The advantage of using JAX as an underlying basis is the automatic differentiation feature. Thus, gradients no not need to be (but can) provided by the code the implements the system models. Further, the optimization library jaxopt is used for solving non-linear optimization problems. The routines can be jit-compiled for improved runtime performance.

image

A typical control system that involves state estimation (optionally sensor fusion) and feedback control.

Installation

pip install jax-control-algorithms

Local development install - clone repository and run

pip install -e .

Contents

System identification

A (basic) least squares-based implementation for the identification of non-linear systems implemented is provided. Herein, an ODE solver and the system model are embedded in a non-linear optimization process.

An example notebook describing the identification for a pendulum is provided https://nbviewer.org/github/christianausb/controlAlgorithms/blob/main/examples/sysident.ipynb

State trajectory estimation and system identification

A routine for estimating the state trajectory and system parameters from input/output data and a prototype model is provided.

The following example demonstrates the estimation of a pendulum system using video-only data:

https://nbviewer.org/github/christianausb/controlAlgorithms/blob/main/examples/state_est_pendulum.ipynb

Pendulum motion estimation from video recordings

This experiment demonstrates how to combine state and parameter estimation with a deep neural autoencoder to estimate motion trajectories from video-recordings.

https://github.com/christianausb/controlAlgorithms/tree/main/examples/pendulum_finder

https://user-images.githubusercontent.com/4620523/223825323-2aa7c9f7-8d85-4b3c-aae0-8115737d95b7.mp4

Trajectory optimization

A routine that implements a variant of the collocation method is provided. To ensure inequality constraints, the penality method is implemented.

https://github.com/christianausb/controlAlgorithms/tree/main/examples/trajectory_optim_cart_pendulum.ipynb

A solution for the pendulum-cart benchmark is shown below. Herein, the control task is to swing-up the pendulum by controlling the cart motion.

https://github.com/christianausb/controlAlgorithms/assets/4620523/27e42c6d-ac39-4cbe-b7f3-5f5f7bb1b127

Release files for jax-control-algorithms 0.6.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jax-control-algorithms 0.6.3
File Size Uploaded
jax_control_algorithms-0.6.3.tar.gz 22.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jax-control-algorithms 0.6.3
File Interpreter ABI Platform
jax_control_algorithms-0.6.3-py3-none-any.whl Python 3 none any Details

Total release size: 48.6 kB

Release files / jax_control_algorithms-0.6.3.tar.gz

Download URL jax_control_algorithms-0.6.3.tar.gz
Size 22.4 kB
Tags Source
SHA-256 checksum
How to use checksums
ba583ddd80cb9ae155fd140811f552196585b61fddb83f557054755866369370
BLAKE2b-256 checksum
How to use checksums
d40229651b2e767d33813f34a396fd9989b3c98e63f8621579d91479453c53d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / jax_control_algorithms-0.6.3-py3-none-any.whl

Download URL jax_control_algorithms-0.6.3-py3-none-any.whl
Size 26.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7266499eca41477318a4fed0966360aba2de4f56301f90f274dc8f4e52c7cdf7
BLAKE2b-256 checksum
How to use checksums
78656ac573121f5fe6b0620d287c874c57d708f24ab28eea7ef36265251d20ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release history Release notifications | RSS feed

This release

0.6.3 This release

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page