readme.md 3.14 KB
Newer Older
Mahmoud Khaled's avatar
Mahmoud Khaled committed
1
# SCOTS: Automated Synthesis of Symbolic Controllers for General Non-lineal Systems
Matthias Rungger's avatar
Matthias Rungger committed
2

Matthias Rungger's avatar
Matthias Rungger committed
3
> SCOTSv0.2 is in the making. If you are feeling adventurous have
Matthias Rungger's avatar
Matthias Rungger committed
4 5 6
> look at [SCOTSv0.2](https://gitlab.lrz.de/matthias/SCOTSv0.2)

**SCOTS** is a C++ tool (with a small Matlab interface) to synthesize controller for
Mahmoud Khaled's avatar
Mahmoud Khaled committed
7
possibly perturbed nonlinear control systems with respect to safety and reachability specifications.
Matthias Rungger's avatar
Matthias Rungger committed
8 9 10

Please read the manual in the manual directory ./manual/manual.pdf

Mahmoud Khaled's avatar
Mahmoud Khaled committed
11
## Requirements
Matthias Rungger's avatar
Matthias Rungger committed
12

Mahmoud Khaled's avatar
Mahmoud Khaled committed
13 14
SCOTS requires only a modern C++ development environment where you can compile C++ (v11) source codes.
All other requirements are included with SCOTS.
Matthias Rungger's avatar
Matthias Rungger committed
15

Mahmoud Khaled's avatar
Mahmoud Khaled committed
16
To make full use of SCOTS, you may need to have MATLAB installed to be able to simulate the synthesized controllers using the provided MATLAB interface in [/mfiles](/mfiles).
Matthias Rungger's avatar
Matthias Rungger committed
17

Mahmoud Khaled's avatar
Mahmoud Khaled committed
18 19 20 21 22 23 24 25 26 27 28 29 30 31
SCOTS was originally developed to work in Linux and MacOS. However, we managed to make it work in Windows and included a small help to guide you [here](/installation_notes_windows.txt). SCOTS is known to work much slower in Windows.

## Installation

SCOTS itself is a header only library. You only need to add SCOTS source directory to the include directory in the compiler command when you work with SCOTS. However, SCOTS depends on the CUDD library to represent the data structures used in SCOTS.
CUDD library is inlcuded in the directory [/cudd-3.0.0](/cudd-3.0.0).

The CUDD library by is developed Fabio Somenzi and we include it in this repo since it is no longer publicly available. SCOTS uses also the dddmp and C++ wraper of the CUDD library (also included). Follow the follwoing steps to compile and install the CUDD library.

- Navigate to the directory and configured the library:  

    `$ ./configure --enable-shared --enable-obj --enable-dddmp --prefix=/opt/local/`

- Now, make the libtrary and install it:
Mahmoud Khaled's avatar
Mahmoud Khaled committed
32

Mahmoud Khaled's avatar
Mahmoud Khaled committed
33
    `$ make`
Mahmoud Khaled's avatar
Mahmoud Khaled committed
34

Mahmoud Khaled's avatar
Mahmoud Khaled committed
35 36 37 38 39
    `$ sudo make install`

- We noticed that, on some linux systems, the files **config.h** and **util/util.h** do not get copied after  the installation. You have to copy them manually to **/opt/local/include/** if they are not copied.

- Finally, add the path to the installed library to your Linux's library search path by the running command for each terminal session:
Matthias Rungger's avatar
Matthias Rungger committed
40

Mahmoud Mahmoud's avatar
Mahmoud Mahmoud committed
41
    `$export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/local/lib`
Matthias Rungger's avatar
Matthias Rungger committed
42

Mahmoud Khaled's avatar
Mahmoud Khaled committed
43
Further details are found in the readme files in example directories and in the [manual](/manual/manual.pdf).
Matthias Rungger's avatar
Matthias Rungger committed
44

Mahmoud Khaled's avatar
Mahmoud Khaled committed
45
For installing and running SCOTS on Windows, please refer to the [Windows installation help file](/installation_notes_windows.txt).
Matthias Rungger's avatar
Matthias Rungger committed
46

Mahmoud Khaled's avatar
Mahmoud Khaled committed
47
## Directory structure
Matthias Rungger's avatar
Matthias Rungger committed
48

Mahmoud Khaled's avatar
Mahmoud Khaled committed
49 50
- **./bdd/**:

Mahmoud Khaled's avatar
Mahmoud Khaled committed
51
    Contains the source C++ source code for the SCOTS classes which use Binary Decision Diagrams as underlying data structure.
Matthias Rungger's avatar
Matthias Rungger committed
52

Mahmoud Khaled's avatar
Mahmoud Khaled committed
53 54
- **./doc/**:

Mahmoud Khaled's avatar
Mahmoud Khaled committed
55
    C++ Class documentation directory.
Matthias Rungger's avatar
Matthias Rungger committed
56
  
Mahmoud Khaled's avatar
Mahmoud Khaled committed
57 58
- **./examples/**:

Mahmoud Khaled's avatar
Mahmoud Khaled committed
59
    Some C++/Maltab programs demonstrating the usage of SCOTS.
Matthias Rungger's avatar
Matthias Rungger committed
60
  
Mahmoud Khaled's avatar
Mahmoud Khaled committed
61 62
- **./manual/**:

Mahmoud Khaled's avatar
Mahmoud Khaled committed
63
    Contains a the manuel with its tex source.
Matthias Rungger's avatar
Matthias Rungger committed
64
  
Mahmoud Khaled's avatar
Mahmoud Khaled committed
65 66
- **./mfiles/**:

Mahmoud Khaled's avatar
Mahmoud Khaled committed
67
    Contains an mfile as a wrapper to the mex-file functions.
Matthias Rungger's avatar
Matthias Rungger committed
68
  
Mahmoud Khaled's avatar
Mahmoud Khaled committed
69 70
- **./mfiles/mexfiles/**:

Mahmoud Khaled's avatar
Mahmoud Khaled committed
71
    mex-file to read the C++ output from file.
Mahmoud Mahmoud's avatar
Mahmoud Mahmoud committed
72

Mahmoud Khaled's avatar
Mahmoud Khaled committed
73
## Support
Mahmoud Mahmoud's avatar
Mahmoud Mahmoud committed
74

Mahmoud Khaled's avatar
Mahmoud Khaled committed
75
Please report any problems/bugs you face while installing and running SCOTS to [Mahmoud Khaled](http://hyconsys.com/members/mkhaled/).