Neural Networks, Robotics, Evolutionary Algorithms, Neural Science

Personal Website of Christian Rempis

NERD Toolkit
The Neurodynamics and Evolutionary Robotics Development Toolkit

News: NERD Toolkit Version 4.3 Released Under GPL!

2008 - now. The NERD Toolkit is a high-quality, rapid prototyping software framework in C++ for research in the field of evolutionary robotics, neurorobotics, (learning) recurrent neural networks, and neurocybernetics. All applications based on the NERD Toolkit are Open Source and can be used under an extension of the GNU General Public Licence (GPL).

The NERD Toolkit can be downloaded through the official NERD Homepage: nerd.x-bot.org.

The NERD Toolkit currently provides the following features:

  • Powerful Animat Simulation
    • Scriptable Animats
    • Scriptable Experiment Scenarios
    • Many Chooseable Physical Building Blocks
      (Motors, Sensors, Physical Objects, Full Aniamts)
    • Physics Abstraction Layer
    • Full Visual Access to all Internal Variables
      (Logging, Plotting, Analysis, Modification)
    • Multiple Camera (also Sensor) Support
    • Interactive Animat Control and Manipulation
    • Deterministic Randomization


  • Flexible Neural Network Layer
    • Object Oriented Neuron Model
    • Choice of Transfer, Activation and Synapse Functions
    • Heterogenous Networks
    • Native Support for Neuro-Modules
    • Network Annotations (Network Tags)
    • Constraint Functions to Define Constraint Masks
    • Support for Plasticity and Learning Rules
    • Supports Extensions for Most Neuro Models

  • Interactive, Graphical Neural Network Editor
    • Layout, Connectivity, Management Tools
    • Interactive Modification and Observation
    • Many Analysis and Pruning Features
    • Exports to Robot Hardware
    • Undo Mechanism


  • Extendable Evolution Layer
    • Choice of Evolution Algorithm
    • Interactive Evolution
    • Logging and Analysis of Evolution Runs
    • Computer Cluster and Multi-Core Support
    • Supports Constrained Neuro-Evolution (ICONE Method)

Experiments with the NERD Toolkit can be realized fast and with little learning effort. Most experiments can be realized directly with the available software applications via scripting interfaces. So, no programming in C++ is required. However, for more advanced experiments, e.g. the realistic simulation of specific sensors or the use of custom neural network models, all NERD applications support plug-ins through which the required components can be added flexibly.

Licenses: GNU General Public Licence (GPL)
Q Public License (QPL)

Try the NERD Toolkit for your own experiments!

Octavio Spinal-Cord-Manager

2006 - 2007. The Octavio robot is an autonomous walking machine with 6 to 8 legs. It was developed at the Osnabrück University between 2006 and 2010 in the Neurocybernetics groups of the Institute of Cognitive Science. Details on the machine and its contributons can be found at the Octavio homepage:

Octavio Homepage

To program, control, calibrate and maintain the robot with a PC, a software was needed that allows a real-time interaction with the firmware of the Octavio robot. For this, the SpinalCordManager and a corresponding Linux kernel driver have been implemented.

The Linux kernel driver (written in C) defines three new Linux devices through which messages can be send via USB protocol between the robot and the control application. The SpinalCordManager, on the other hand, is a Java application that provides a graphical user interface on top of these new devices. It allows to interact, observe and analyze the internal states of the robot without the need to work directly with the low-level data. The functions reach from recording of the communication of the processor boards in real-time, the later analysis of such recorded data streams, the control of the motors, the upload of neuro-controllers to the processor boards, debugging of the communication, calibration of the sensors, and much more.

License: GNU General Public Licence (GPL)

Download the SpinalCordManager:

SIMBA 2D Neuro-Workbench

Spring 2007. The SIMBA project is a little Java appliation to simulate simple 2D animats in a physics-less environment. The simulator moves 2D objects around according to their local speed and direction. This simple simulator allows very fast simulations and is suitable for neuro-evolution experiments where a physical accuracy can be neglected in favor of simulation performance.

The SIMBA workbench also comes with a simple neural network layer (Time-Discrete Additive Neuron Model) and an evolution algorithm similar to the ENS3 evolution algorithm (EA). This EA is capable of finding (low-dimensional) neuro-controllers, searching for both, the network structure and the synaptic weights.

License: GNU General Public Licence (GPL)

Download the SIMBA Java Package:

Visualized Fuzzy Logic Control

Fall 2003. The FuzzyLib is a Java library to describe, apply and visualize fuzzy rules in a graphical way. The FuzzyLib library can be integrated into own Java projects to realize the fuzzy control part and the visualization of the controller. To demonstrate the library, an additional Java project is available for download, in which a simple simulated 2D robot is controlled through a labyrinth via fuzzy control. The purpose of this library is primarily an educational one: it helps you to understand how fuzzy control works and how an actual behavior is generated.

License: GNU General Public Licence (GPL)

Download FuzzyLib:

AIS KLib / AIS KControl
C++ Abstraction Layer for the Khepera-2 Robot

Spring 2006. The AIS KLib is a C++ wrapper library around the byte communication protocol of the Khepera-2 robot that is built by the K-Team company. KLib uses the Nokia QT libraries for the communication with the robot and the (optional) graphical user interface. The library provides access to all functions of the robot and allows to control all parts of the robot (including extensions, like the gripper and camera). The library also contains a test application (AIS KControl) that provides a graphical access to all sensors, internal variables and to control the robot remotely.

Licenses: GNU General Public Licence (GPL)
Q Public License (QPL)

Download the KLib at Sourceforge:

Easy Charts
Synchroneous Programming for Pupils

2003 - 2004. EasyCharts is a graphical programming environment for pupils of about 10 years of age, similar to Lego Mindstorems. The environment allows the definition of programs to control robots with the synchroneous programming language Synerji, a language developed at the Fraunhofer IAIS. EasyCharts allows both, the graphical programming and the view of the corresponding program code. This intends to introduce pupils to the quite complex language with a simplified interface and a very fast successful robot programming. This should motivate pupils to start programming more sophisticated programs in a combination of EasyCharts and raw Synerji. The programming environment, in the state shown at the figure, only provided simple place-holder graphics. These graphics images, however, could be exchanged by specifically designed graphics, e.g. branded to a company style or designed for a good usability. EasyCharts also generates Synerjy code from the graphical programs, performs a cross-compilation to a binary format of the desired robot, and uploads the binaries to the embedded controller. This was exemplarily done for the Lego Mindstorms RCX controller.

Copyright: Fraunhofer IAIS, Sankt Augustin

X-Ray Robot Middleware

Fall 2006. The X-Ray Robot Middleware was implemented in the context of Robocup (Midsize Leaque) to provide an extensible, reusable framework to define behaviors and coordination strategies for situated robots. The X-Ray middleware uses facades, proxies and transition values to encapsulate internal, inter-process and network communication between components. This allows, for instance, to monitor all important internal variables at real-time, configure systems (remotely), send messages to other robots without direct addressing, allow a shared memory between the robots, and incorporate internal and external sensor processing software in a fully transparent way.

X-Ray suggests the use of a specific task manager format, hereby supporting different behavior coordination mechanisms, such as simple macros to define finite state automata. The middleware can be used to create stand-alone applications, but it also allows an integration to existing frameworks, such as IConnect.

Licenses: GNU General Public Licence (GPL)

Excalibur Robot Control Framework

Description will be added soon.

Scripts and Tools

NERD Java Tool:
Generate Summary File for Cluster Evolution

Crawls through all evolution directories created by a single multi-evolution run and collects the information about the evolution performance in a single, clearly structured file. The results of the individual evolution runs can be sorted by any logged parameter, usually by the maximally reached fitness.

Download this tool (Java) here:
NERD Java Tool:
Generate Normalized Data

Often, the performance of the best individuals of many evolution runs have to be compared to each other. This is only possible, when the best individuals have all been evaluated with the same evaluation conditions, i.e. number of tries per evaluation, number of steps per try, same fitness function (parameters), and the like. Especially in interactive evolution, this comparable settings are seldom given, because the settings vary over the long run. To still allow such a comparison, this Java tool re-runs the best individual of each selected evolution run with similar conditions. The so collected data (especially the fitness) is then listed in a single document, that can then be processed further (e.g. in Matlab).

Download this tool (Java) here:
NERD Java Tool:
Clean Evolution Workspace

Evolution runs on a computer cluster produce hundreds of thousands of small files that soon sum up to many hundred gigabytes. This application cleans up the workspace of evolution runs and frees more than 90 percent of the occupied disk space. This is achieved by removing files and directories of superfluous intermediate generations and by compressing the remaining directories. In that way, not only the size, but also the number of files is drastically reduced. The most recent generation remains uncompressed to allow a fast re-evaluation and examination of the results. Note, that during this process, some (rarely required) information for the analysis of evolution runs is destroyed!

Download this tool (Java) here:
Watermark Video

This script automatically re-encodes any video recorded with the NERD Simulator and overlays a freely chooseable logo to the video.

Download this tool (Bash) here:
Video-to-Animated-Gif Converter

This script generates an animated gif from a video recorded with the NERD Simulator. Such gifs give a fast and high-performance impression of a longer, large video and thus are much more expressive than a static image. This script automatically creates such a gif from any .avi file that is found in the directory.

Download this tool (Bash) here:
Video-to-MP4 Converter

This script converts an .avi file (e.g. recoreded with the NERD Simulator) to an HTML5 compatible .mp4 file.

Download this tool (Bash) here: