NRP Core  1.4.1
Simulation Configuration Schema

The simulation schema contains all the necessary information to initialize and run an experiment, including details such as the engines involved in the experiment, active TransceiverFunctions, and engine timesteps. It defines the structure and parameters of the simulation configuration file to be created by the users for each of their experiments.

Parameters

NameDescriptionTypeDefaultRequiredArrayValues
SimulationLoopType of simulation loop used in the experimentenum"FTILoop""FTILoop", "EventLoop"
SimulationTimeoutExperiment Timeout (in seconds). It refers to simulation timeinteger0
ProcessLauncherTypeProcessLauncher type to be used for launching engine processesstringBasic
EngineConfigsEngines that will be started in the experiment#EngineBaseX
DataPackProcessorFramework used to process and rely datapack data between engines. Available options are the TF framework (tf) and Computation Graph (cg). Only used if "SimulationLoop" parameter is set to "FTILoop" (default)enum"tf""tf", "cg"
DataPackProcessingFunctionsTransceiver and Preprocessing functions that will be used in the experiment#TransceiverFunctionX
DataPackPassingPolicyPolicy of passing DataPacks into Transceiver, Preprocessing, and Status Functions. When set to "value", all input DataPacks are passed by value (copied). When set to "reference", the DataPacks are passed by reference. The latter should be faster, but extra care has to be taken to not overwrite DataPacks used by other Functions or Engines.string"value""value", "reference"
StatusFunctionStatus Function that can be used to exchange data between NRP Python Client and Engines#TransceiverFunction
ComputationalGraphList of filenames defining the ComputationalGraph that will be used in the experimentstringX
EventLoopEvent Loop configuration parameters. Only used if "SimulationLoop" parameter is set to "EventLoop"#EventLoop
ExternalProcessesAdditional processes that will be started in the experiment#ProcessLauncherX
ROSNodeIf this parameter is present a ROS node is started by NRPCoreSim#ROSNode
MQTTNodeIf this parameter is present an MQTT client is instantiated and connected#MQTTClient

Example

{
"SimulationName": "tf_exchange",
"SimulationDescription": "Launch two python engines. Engine1 will offer the current time as a datapack. tf_1 will request said datapack and send it to Engine2. Engine2 will receive the time and display it",
"SimulationTimeout": 1,
"EngineConfigs":
[
{
"EngineType": "python_json",
"EngineName": "python_1",
"PythonFileName": "engine_1.py"
},
{
"EngineType": "python_json",
"EngineName": "python_2",
"PythonFileName": "engine_2.py"
}
],
"DataPackProcessingFunctions":
[
{
"Name": "tf_1",
"FileName": "tf_1.py"
}
]
}

Schema

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Simulation",
"description": "Simulation configuration schema. Specify an experiment using multiple engines and transceiver functions.",
"$id": "#Simulation",
"type": "object",
"properties" : {
"SimulationLoop" : {
"enum" : ["FTILoop", "EventLoop"],
"default": "FTILoop",
"description": "Type of simulation loop used in the experiment"
},
"SimulationTimeout" : {
"type" : "number",
"default": 0,
"description": "Experiment Timeout (in seconds). It refers to simulation time."
},
"DataPackProcessor" : {
"type" : "string",
"enum" : ["tf", "cg"],
"default": "tf",
"description": "Framework used to process and rely datapack data between engines. Available options are the TF framework (tf) and Computational Graph (cg). Only used if \"SimulationLoop\" parameter is set to \"FTILoop\" (default)"
},
"ProcessLauncherType" : {
"type" : "string",
"default": "Basic",
"description": "ProcessLauncher type to be used for launching engine processes"
},
"EngineConfigs" : {
"type" : "array",
"items": {"$ref": "json://nrp-core/engines/engine_base.json#EngineBase"},
"description": "Engines that will be started in the experiment"
},
"ExternalProcesses" : {
"type" : "array",
"items": {"$ref": "json://nrp-core/process_launcher.json#ProcessLauncher"},
"description": "Additional processes that will be started in the experiment"
},
"DataPackProcessingFunctions" : {
"type" : "array",
"items": {"$ref": "json://nrp-core/transceiver_function.json#TransceiverFunction"},
"description": "Transceiver and Preprocessing functions that will be used in the experiment"
},
"StatusFunction" : {
"type" : "object",
"items": {"$ref": "json://nrp-core/transceiver_function.json#TransceiverFunction"},
"description": "Status Function that will be used in the experiment"
},
"ComputationalGraph" : {
"type": "array",
"items": "string",
"description": "List of filenames defining the CG nodes and connections"
},
"EventLoop" : {
"$ref": "json://nrp-core/event_loop.json#/event_loop",
"description": "Event Loop configuration parameters. Only used if \"SimulationLoop\" parameter is set to \"EventLoop\""
},
"ROSNode" : {
"$ref": "json://nrp-core/nrp_connectors.json#/ROSNode",
"description": "If this parameter is present a ROS node is started by NRPCoreSim"
},
"MQTTNode" : {
"$ref": "json://nrp-core/nrp_connectors.json#/MQTTClient",
"description": "If this parameter is present an MQTT client is instantiated and connected"
},
"FunctionArgumentsPassingMethod" : {
"type" : "string",
"enum" : ["value", "reference"],
"default": "value",
"description": "Method used for passing DataPacks into Preprocessing, Transceiver, and Status Functions. Passing by reference should be more performant, but extra care must be taken to not alter data used by other Functions and Engines."
}
},
"required": []
}