Bagel
Biologically inspired Graph-Based Language
Contact person:
Bagel is a graph-based programming language where nodes define algorithms that transfer input values to output ports and edges define the data flow within the nodes. Additionally, a Bagel graph defines global inputs and outputs that allow to use the whole graph on a higher level as a single Bagel node. Thus, the interface of core algorithms is the same as the interface of a composition of core algorithms and the same graphs are used to define new algorithms and component networks. This and with the possibility to merge multiple edges on one input via several merge functions allow an efficient modeling of hierarchical behavior-based architectures.
Keywords: | Control, Behavior, Robot programming |
Status: | active |
Operating system: | macOS, Windows, Linux |
Programming languages: | C, C++ |
Ownership: | This software was developed by the DFKI as well as by the Robotics Research Group and the University of Bremen and is being further developed under this responsibility. For questions and suggestions, please refer to the contact persons. |
Software description
Bagel is designed with the main focus to provide an interface for machine-learning and genetic algorithms to generate robotic behaviors. For example, a first learning iteration could generate core algorithms that are used in a second iteration to learn more complex behaviors. Furthermore, a co-evolution could learn both iterations simultaneously. Another advantage of Bagel is the reduced functionality compared to high-level programming languages, which allows an easier verification of the programs and reduces the probability to generate errors like typical segfaults known from the C language.
To generate Bagel modules, a graphical user interface is provided which allows to design even complex Bagel graphs in a concise representation. In addition, the possibility to include external C/C++ code allows an easy integration of and transfer from existing libraries.
To generate Bagel modules, a graphical user interface is provided which allows to design even complex Bagel graphs in a concise representation. In addition, the possibility to include external C/C++ code allows an easy integration of and transfer from existing libraries.