The discrete event systems library libFAUDES implements data structures and algorithms for finite automata and regular languages. The library takes a control theoretic perspective as originally introduced by P.J. Ramadge and W.M. Wonham in the 1980's. Since then, many researchers have contributed to supervisory control theory, including extensions for hierarchical, modular and decentralized controller synthesis; see [references]. With libFAUDES, we aim for (a) reduced coding effort in the implementation of methods for the control of discrete event systems, and (b) effective advertisement of such methods by making them available to the public.
G E T T I N G S T A R T E D
Utilize libFAUDES from the GUI DESTool,
libFAUDES is written in C++ with use of the Standard Template Library (STL). The libFAUDES generator classes are set-based models, that resemble the definition of the quintuple automaton G = (Q, Sigma, delta, Qo, Qm). Using libFAUDES to implement algorithms originally stated in terms of automata is straight forward and benefits from general infrastructure, like file I/O and visualisation via Graphviz/dot.
The libFAUDES build system can organize an optional user reference, to complement the doxygen-generated C++ API documentation. Thus, developers who wish to illustrate, motivate or explain their algorithms by examples, informative text or formal definitions, can directly address the end-user of libFAUDES based applications, e.g. luafaudes or DESTool.
Lua Scripting Support
The interpreter luafaudes makes libFAUDES data types and functions available within the scripting language Lua. The wrapper code that integrates libFAUDES with Lua is automatically generated by the build-system using the tool SWIG. The additional coding effort, required to provide access to libFAUDES extensions from within Lua, is minimal; see plug-in example. This makes libFAUDES an ideal platform to advertise newly developed approaches for the control of discrete event systems.
Non-restrictive Open-Source License
libFAUDES sources are distributed for free under conditions of the GNU Lesser General Public License (LGPL). There are no prohibitive restrictions to use the library in non-open source and/or commercial projects. libFAUDES comes with a (compile-time-) plug-in mechanism to extend the library in an organised manner. In particular, plug-in developers are invited but not forced to contribute their code to libFAUDES. Finally, due to the LGPL licensing, plug-in developers will never depend on future design decisions made by libFAUDES copyright holders.
Building on research results as referenced, the core library is continuously developed at the Lehrstuhl für Regelungstechnik (LRT) of the University Erlangen-Nürnberg. The first functional version was designed and coded by Bernd Opitz as a masters project [thesis], and since then was extended by numerous plug-ins, including external contributions.
As of Januar 2023, the following people have contributed to the development of the core library and its plug-ins:
We are committed to extend and improve libFAUDES. External contributions are highly welcome, for contact write to Thomas Moor.
Copyright (C) 2006 Bernd Opitz
Copyright (C) 2008 - 2010 Thomas Moor, Klaus Schmidt, Sebastian Perk
Copyright (C) 2011 - 2023 Thomas Moor, Klaus Schmidt
|01.02.2023||libFAUDES 2.31c||Python bindings|
|18.05.2021||libFAUDES 2.30a||improvements in compositional verification|
|15.12.2017||libFAUDES 2.29a||incl. hybrid automata plug-in (optional, requires PPL)|
|01.03.2016||libFAUDES 2.27a||incl. compositional verification/synthesis|
|15.05.2015||libFAUDES 2.26a||updated Coordination Control plug-in|
|19.09.2014||libFAUDES 2.25a||online luafaudes console|
|03.04.2014||libFAUDES 2.24a||optimisation/validation for 64-bit environments|
|23.12.2013||libFAUDES 2.23c||Fault-Tolerant Control lua-extension|
|17.12.2013||libFAUDES 2.23a||Pushdown plug-in for context free specification languages|
|06.02.2012||libFAUDES 2.21e||updated Coordination Control plug-in and D3RIP interface|
|01.12.2011||libFAUDES 2.21a||Modbus/TCP IoDevice|
|15.12.2010||libFAUDES 2.18a||IoSystem plug-in|
|15.08.2010||libFAUDES 2.16a||application "Flexible Manufacturing System" presented at WODES 2010|
|15.02.2010||libFAUDES 2.14m||2nd DESTool preview|
|15.11.2009||libFAUDES 2.14e||IoDevice and Diagnosis plug-ins|
|01.06.2009||libFAUDES 2.13a||luabindings, HioSys and Multitasking plug-ins|
|10.11.2008||libFAUDES 2.11v||Timed and Simulator plug-ins|
|15.05.2008||libFAUDES 2.09b||Observer plug-in|
|01.05.2008||libFAUDES 2.09a||used for WODES 2008 benchmark|
|01.05.2006||libFAUDES 1.00||first public release with Bernd Opitz' Thesis|