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.
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:
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.
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.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| jax_control_algorithms-0.6.3.tar.gz | 22.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|