readme.md 3.11 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
32
33
34
35
36
37
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:
    `$ make`
    `$ 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
38

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

Mahmoud Khaled's avatar
Mahmoud Khaled committed
41
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
42

Mahmoud Khaled's avatar
Mahmoud Khaled committed
43
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
44

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

- ./bdd/
Mahmoud Khaled's avatar
Mahmoud Khaled committed
48
    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
49
50

- ./doc/
Mahmoud Khaled's avatar
Mahmoud Khaled committed
51
    C++ Class documentation directory.
Matthias Rungger's avatar
Matthias Rungger committed
52
53
  
- ./examples/
Mahmoud Khaled's avatar
Mahmoud Khaled committed
54
    Some C++/Maltab programs demonstrating the usage of SCOTS.
Matthias Rungger's avatar
Matthias Rungger committed
55
56
  
- ./manual
Mahmoud Khaled's avatar
Mahmoud Khaled committed
57
    Contains a the manuel with its tex source.
Matthias Rungger's avatar
Matthias Rungger committed
58
59
  
- ./mfiles
Mahmoud Khaled's avatar
Mahmoud Khaled committed
60
    Contains an mfile as a wrapper to the mex-file functions.
Matthias Rungger's avatar
Matthias Rungger committed
61
62
  
- ./mfiles/mexfiles/
Mahmoud Khaled's avatar
Mahmoud Khaled committed
63
    mex-file to read the C++ output from file.
Mahmoud Mahmoud's avatar
Mahmoud Mahmoud committed
64

Mahmoud Khaled's avatar
Mahmoud Khaled committed
65
## Support
Mahmoud Mahmoud's avatar
Mahmoud Mahmoud committed
66

Mahmoud Khaled's avatar
Mahmoud Khaled committed
67
Please report any problems/bugs you face while installing and running SCOTS to [Mahmoud Khaled](https://www.hcs.ei.tum.de/en/members/mahmoud/).