jbramburger / data-clf

Synthesize control laws from data using SOS optimization

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Synthesizing Control Laws from Data using Sum-of-Squares Optimization

This repository contains MATLAB and Python scripts to reproduce the data and figures from Synthesizing Control Laws from Data using Sum-of-Squares Optimization by Jason J. Bramburger, Steven Dahdah, and James R. Forbes (2023).

Paper Abstract

The control Lyapunov function (CLF) approach to nonlinear control design is well established. Moreover, when the plant is control affine and polynomial, sum-of-squares (SOS) optimization can be used to find a polynomial controller as a solution to a semidefinite program. This letter considers the use of data-driven methods to design a polynomial controller by leveraging Koopman operator theory, CLFs, and SOS optimization. First, Extended Dynamic Mode Decomposition (EDMD) is used to approximate the Lie derivative of a given CLF candidate with polynomial lifting functions. Then, the polynomial Koopman model of the Lie derivative is used to synthesize a polynomial controller via SOS optimization. The result is a flexible data-driven method that skips the intermediary process of system identification and can be applied widely to control problems. The proposed approach is used to successfully synthesize a controller to stabilize an inverted pendulum on a cart.

Setup

MATLAB

pend_control.m requires YALMIP and MOSEK to run. Both packages can be download for free at:

Python

To use pend_control.py, install the requirements in a virtual environment using:

(venv) $ pip install -r ./python/requirements.txt

MOSEK

The MOSEK solver is required for both the MATLAB and Python scripts. Personal academic licenses are available here. The license file must be placed in ~/mosek/mosek.lic on Linux/Mac or C:\Users\<USER>\mosek\mosek.lic on Windows.

About

Synthesize control laws from data using SOS optimization


Languages

Language:Python 53.5%Language:MATLAB 46.5%