The Configuration File
FusionHub runs the pipeline described in a single JSON configuration file,
loaded with -c path/to/config.json. The node editor and this file are two
views of the same thing: what you wire in the editor is what is written to the
file, and a hand-edited file appears in the editor the same way. The usual
workflow is to build the graph in the editor and hand-edit only when scripting
or deploying headless.
File layout
{
"settings": { "explicitConnections": true },
"sources": { },
"sinks": { }
}
- settings - global settings for the whole pipeline.
- sources - all source nodes.
- sinks - all filter and sink nodes. Both live in this section; the node’s registered role decides how it is wired.
Node entries
Each entry in sources / sinks is keyed by an instance name of your choice.
- If the key is a known node type ID (for example
gnssImuFusion), it selects the node type directly. Any name works too; then set the type with"nodeTypeId": "gnssImuFusion". The config aliases listed on each node’s documentation page are accepted as well. "type"selects a subtype for nodes that have them (see the Subtypes section on the node’s page)."enabled": falsedisables a node without removing it from the file."settings"holds only the values you want to change. Every setting is optional: anything omitted uses the default listed in the Properties table on the node’s documentation page. The keys are exactly the code keys shown there.
Wiring
Data flows over named endpoints:
- A producing node binds one endpoint:
"outEndpoint"on sources,"dataEndpoint"on filters. Omit it and the runtime generates one. - A consuming node lists the endpoints it reads from in
"inputEndpoints". "inputDataFilter"optionally restricts which data types the node accepts from those endpoints; anything not in the list is dropped.- With
"explicitConnections": truein the global settings (the editor always writes this), only the listed connections exist. When it is absent or false, a node without"inputEndpoints"subscribes to every source - a legacy convenience for tiny hand-written configs.
The editor may additionally write "inputConnectionTypes",
"inputSlotAssignment" and "inputRoutes" to pin per-connection data types
and input slots, plus a "_layout" block for node positions. Treat these as
editor-managed and leave them alone when hand-editing.
Example
A small pipeline: GNSS receiver and IMU fused by GNSS-IMU Fusion, with the result written to a log file.
{
"settings": { "explicitConnections": true },
"sources": {
"gnss": {
"outEndpoint": "inproc://gnss_data",
"settings": { "port": "COM5" }
},
"lpms": {
"outEndpoint": "inproc://imu_data",
"settings": { "name": "ig1232800650" }
}
},
"sinks": {
"gnssImuFusion": {
"dataEndpoint": "inproc://fused_data",
"inputEndpoints": ["inproc://gnss_data", "inproc://imu_data"],
"settings": { }
},
"logger": {
"inputEndpoints": ["inproc://fused_data"],
"settings": { "filePath": "drive.json" }
}
}
}