Learning stochastic dynamical systems from noisy and indirect obseravtions.
This repo contains the source code for the IROS 2022 paper STEADY: Simultaneous State Estimation and Dynamics Learning from Indirect Observations.
This project is written in Julia and is tested on both MacOS and Ubuntu. We provide the script install_linux.py to automatically install the binary dependencies on Linux.
When running the project for the first time, open the Julia REPL using the command julia --project
.
Then, inside the REPL, type >
followed by instantiate
to let julia download all dependended packages and perform a precompilation.
Finally, create a file at <proejct root>/configs/datadir.txt
and use its content to specify the location at which the trained models should be saved. e.g.,
mkdir configs; echo "data" > configs/datadir.txt
To start training, inside the Julia REPL, first config the experiment
setting by defining a global variable named script_args
:
script_args = (
scenario=SEDL.RealCarScenario("alpha_truck"),
train_method=:EM,
gpu_id=0,
)
This specifies that we want to train on the "alpha_truck" dataset using expectation-maximization (i.e., the STEADY algorithm). gpu_id=0
means that we want to use the first available GPU (set this to nothing
if trained on CPU). You can find the full list of configurable parameters along with their acceptable values here.
We can then start the training with:
include("scripts/turn_off_displays.jl"); # this is only needed when a plot pane is not available. e.g., when running inside an ssh shell.
include("scripts/train_models.jl") # this starts the training
We also provide the following scripts to reproduce our paper results:
- baseline_experiments.jl: Corresponding to the "Main results" Section of the paper.
- obs_noise_variation.jl: The "Impact of Observation Noise" Section.
- particle_variation.jl: The "Impact of Particle Quantity" Section.