This page lists Engine implementations currently available with NRP-core. These implementations provide out-of-the-box functionality for use with NRP-core, and also represent good examples to study for users interested in implementing their own engines. For each engine implementation, a general description of the provided functionality is offered first, followed by the engine configuration parameters, and finally a list of datapack types supported by the engine.
Additionally, in order to make it easier to implement new engines, we propose a way to leverage code reusability: for new engine implementations, interested users can therefore refer to one of the available Engine Communication Protocols. These are Engine templates implementing all aspects of engine client / server communication for a given protocol.
List of available engines:
- Gazebo: engine implementation for the Gazebo physics simulator
- NEST: two different implementations that integrate the NEST Simulator into NRP-core
- Python JSON Engine: generic Python-based mechanism that imports and executes a simulator inside a user-defined python script. Ideal for simulators with a Python API.
- Python GRPC Engine: This engine is similar to the Python JSON Engine but uses GRPC as the communication mechanism. Compared to Python JSON Engine, this kind of engine has a faster data transfer rate.
- PySim: engine implementation based on the Python JSON Engine wrapping different simulators (Mujoco, Opensim and OpenAI) with a python API. Based on the integrated OpenAI, NRP supports Parallel Learning using different computation nodes or threads. The detailed processes can be seen on the page of Parallel Learning.
- The Virtual Brain: engine implementation based on the Python JSON Engine and TVB Python API
- Data Transfer Engine: engine implementation designed to transfer data from NRP-core experiments to file or the network.
- Edlut Engine: engine implementation designed to integrate the EDLUT simulator in NRP-core.