Control Systems Analysis Framework
Project description
Control Systems Analysis Framework (CSAF)
CSAF is a framework to minimize the effort required to evaluate, implement, and verify controller design (classical and learning enabled) with respect to the system dynamics. Its key features are:
- Component based controller design
- Native support for python and C language executables
- Compatibility with external hardware and software processes
- Ease of deployment
Controllers, subsystems and plants are implemented as a collection of components. Below is an example of a topology graph of F16 system with GCAS autopilot.
Quick Start
Installation
Native
Clone the repo, and install via pip
,
pip install csaf
To install additional dependencies needed for the examples, go to the repo root and run
pip install -r requirements.txt
Docker
CSAF runs inside a Docker container, and in order to use CSAF, you first need to install docker. CSAF has been tested on Linux (Ubuntu 18.04 and 20.04) and OS X, but should run on any nix-like system that runs docker.
At the repo root, build the docker image
docker build -t csaf .
Now you can run an example
docker run -v $PWD:/out csaf python -m csaf_f16 --output-dir /out
Alternatively, a jupyter instance can be launched
docker run -p 8888:8888 csaf jupyter notebook --allow-root
Examples
CSAF currently contains a number of examples, including the F-16 shown below. These examples are packaged into component libraries. These libraries have application entry-points for demonstration. Note that CSAF has utilities to generate these entrypoints for user created component libraries.
F-16 Control System
To run a F16 system simulation, run
$ python -m csaf_f16 --time-max 30.0 --system F16Simple
The library CLI options are
$ python -m csaf_f16 --help
F16 Components (CSAF Library)
usage: __main__.py [-h] [-s SYSTEM] [-o OUTPUT_DIR] [-t TIME_MAX] [-d DO_OPEN]
F16 Components (CSAF Library) CSAF F16 Systems Viewer
optional arguments:
-h, --help show this help message and exit
-s SYSTEM, --system SYSTEM
CSAF System to Simulate (examples are ['F16Simple', 'F16AirspeedSimple', 'F16Shield', 'F16MultiAgentCentral', 'F16AcasShield',
'F16AcasIntruderBalloon', 'F16AcasShieldIntruderBalloon', 'F16AcasShieldAcasIntruderBalloon'])
-o OUTPUT_DIR, --output-dir OUTPUT_DIR
Directory to Store Artifacts
-t TIME_MAX, --time-max TIME_MAX
Timespan to Simulate
-d DO_OPEN, --do-open DO_OPEN
Open Simulation Result
Jupyter notebooks
CSAF can be used from within a jupyter notebook.
To start CSAF in the notebook mode, go to the notebooks
folder and run
jupyter notebook
Tests
CSAF unit and integration tests use the pytest framework. After installing the mypy plugin, static tests can be added by adding the switch
pytest --mypy -s tests
Development
CONTRIBUTING.md
contains CSAF development guidelines, please familiarize yourself with the guidelines before opening a
pull request. The best way to contact the dev team is via GitHub issues.
Licensing
The code in this repository is licensed under two different licenses. The core of CSAF (csaf
directory) and the majority of
examples is licensed under BSD license. The f16 examples in the csaf_f16
module is licensed under GPL license.
Acknowledgment
This material is based upon work supported by the DARPA Assured Autonomy program under the United States Air Force under Contract No. FA8750-19-C-0092. Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of DARPA or the United States Air Force.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file csaf-controls-0.2.tar.gz
.
File metadata
- Download URL: csaf-controls-0.2.tar.gz
- Upload date:
- Size: 2.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.6.4 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17c365831ed39676fa6febddfdd335ebe3ab673baec2239a3d53d1e5466e398c |
|
MD5 | 8be65844912bd525d57ee1a4300050f2 |
|
BLAKE2b-256 | 24fa438b235d77bab3719b9224dbd527cdd9ea0fb5e58da7038dbc634067c16b |
File details
Details for the file csaf_controls-0.2-py3-none-any.whl
.
File metadata
- Download URL: csaf_controls-0.2-py3-none-any.whl
- Upload date:
- Size: 439.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.6.4 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f69c2fc028ff3b08683fcabd6c6e317e82bdf4817bf1eec3e0179f327f80ea39 |
|
MD5 | fba95c85dc821663dbc92df374aec8e8 |
|
BLAKE2b-256 | fde504294eea5305d45615cae6fb4837cb69e40e04c9b3ec29c6efff5f69a4f1 |