This repository contains the code for our paper Learning Over Contracting and Lipschitz Closed-Loops for Partially-Observed Nonlinear Systems accepted at CDC 2023. The code is built on the RobustNeuralNetworks.jl
package which implements the REN models.
This code has been tested with juilia v1.7.3
and RobustNeuralNetworks.jl
version v0.1.0
.
Clone this git repository and start the Julia REPL within the project root directory.
git clone https://github.com/nic-barbara/CDC2023-YoulaREN.git
cd CDC2023-YoulaREN
Start a Julia session, then activate the repository and install dependencies
using Pkg
Pkg.activate(".")
Pkg.instantiate()
This project depends on a number of larger packages (eg: Flux.jl
) and an older version of Julia (v1.7.3
) so installation may take a few minutes.
The main scripts used to log experimental data are:
src/MagLev/mag_experiment.jl
to train models on magnetic suspensionsrc/QubeServo/qube_experiment.jl
to train models on the rotary-arm pendulum- Within
src/Robustness/
, run bothmag_adversarial.jl
andmag_ecrit_save.jl
to generate robustness results on magnetic suspension - Within
src/Robustness/
, run bothqube_adversarial.jl
andqube_ecrit_save.jl
to generate robustness results on the rotary-arm pendulum
The main scripts used to visualise results are:
src/MagLev/mag_plot_results.jl
to reproduce Fig. 3a in the papersrc/QubeServo/qube_plot_results.jl
to reproduce Fig. 3b in the papersrc/Robustness/mag_plot_robustness.jl
to reproduce Fig. 4a in the papersrc/Robustness/mag_plot_robustness.jl
to reproduce Fig. 4b in the paper
For any questions, please contact Nicholas Barbara ([email protected])