Safety Event Integrator - Configuration#
1. Overview#
The SEI (Safety Event Integrator Daemon) reads nvpss.conf at startup
to control safety event fusion, bypass routing, inter-process transport,
and heartbeat fail-safe behavior. This section documents all available
parameters, their defaults, valid ranges, and the validation/fallback
rules the daemon applies.
Configuration File Location:
The daemon unconditionally reads from a fixed host path:
/opt/nvidia/psf/bin/nvpss.conf
If the file is missing or unreadable, the daemon logs an error and
continues with the compiled-in defaults (see table below). In Docker
deployments, launch_hoisa.sh bind-mounts the host file read-only over
this path inside the container, so an operator edit to
/opt/nvidia/psf/bin/nvpss.conf on the host is authoritative without
rebuilding the image. Use --nvpss-conf <file> on the launcher to
retarget the bind-mount source to a per-site variant.
Ensure the file is readable by the SEI daemon process; a permission error is reported as “Failed to load config file”.
2. Configuration File Format#
The configuration file uses key = value format. Whitespace around
= is optional. Lines starting with # are comments. Inline #
comments after a value are also stripped.
3. Configurable Parameters#
The following table describes all SEI configuration parameters. The
Default column reflects the value used when the key is missing from
nvpss.conf or when the parsed value fails validation (see Section
4.4).
Parameter |
Type |
Default |
Valid Range |
Description |
|---|---|---|---|---|
timeWindowSize |
Integer (ms) |
200 |
> 0, ≤ ~1.8×10¹³ |
Duration of the sliding correlation window. Events whose timestamp
is older than |
fusionThreshold |
Float |
0.5 |
0.0 – 1.0 |
Minimum overall similarity for two events to fuse. Higher values require more similarity before fusion is applied. |
alpha |
Float |
0.35 |
0.0 – 1.0 |
Weight for temporal similarity. |
beta |
Float |
0.45 |
0.0 – 1.0 |
Weight for spatial similarity. |
gamma |
Float |
0.20 |
0.0 – 1.0 |
Weight for attribute similarity. |
temporalTolerance |
Integer (ms) |
5 |
0 – 60000 |
Sigma for the Gaussian temporal-similarity kernel. Larger values relax time matching. |
trajectoryCount |
Integer |
4 |
0 – 10 (preferably even) |
Number of trajectory points used for spatial correlation between events. |
maxPipelines |
Integer |
2 |
1 – 8 |
Maximum number of sensor pipelines the daemon manages simultaneously. Must match (or exceed) the count of pipelines produced by the event-ingestion sources. |
bypassFusionEvents |
Comma-separated list |
(empty) |
|
Event types that skip the fusion path and are routed directly as
|
PSSDToPSDComBackend |
Enum |
|
|
Transport between SEI daemon and the PSD gateway. POSIX message queue is the default; POSIX socket is available for debugging and interop with external gateways. |
sensorConfig |
Path |
(required) |
Absolute path |
Unified sensor configuration file (CSV:
|
max_hb_failures |
Integer |
10 |
1 – 255 |
Consecutive heartbeat misses before the daemon declares a client
dead, emits a |
Note
trajectoryCount and bypassFusionEvents are the only optional
keys. All other keys listed in the table are expected in
nvpss.conf; missing entries log a warning and the compiled-in
default is used.
4. Parameter Details#
4.1 Fusion Weights (alpha, beta, gamma)#
These three parameters control similarity-metric importance in fusion:
alpha: Temporal proximity. Higher alpha prioritizes events that occur close in time.
beta: Spatial correlation. Higher beta prioritizes events from similar spatial locations.
gamma: Attribute similarity. Higher gamma prioritizes events with similar object types, speeds, and other attributes.
Important
alpha + beta + gamma must equal approximately 1.0 (±0.01
tolerance). The daemon validates this on startup and, if the
constraint is violated, falls back to the compiled-in defaults
(0.35 / 0.45 / 0.20).
4.3 Spatial Configuration#
trajectoryCount: Number of coordinate points (up to 10) used for spatial trajectory comparison between pipeline events. Preferably even values (e.g. 4, 6, 8) for symmetric alignment.
4.4 Bypass Fusion Events#
bypassFusionEvents is a comma-separated list of EventType
names that should skip multi-pipeline fusion entirely and be routed
directly to the decision layer as PASSTHROUGH events. The daemon:
Parses each token, matching against the known
EventTypeenumeration. Unknown names are logged asUnknown event type '<name>', using EVENT_0and fall back toEVENT_0— double-check spelling.Always implicitly adds the trust-report set:
SENSOR_INVALID,SENSOR_VALID,AI_PIPELINE_INVALID,AI_PIPELINE_VALID. You do not need to list these, and listing them is harmless.Preserves the event’s reported severity when routing bypass events.
Example:
# Bypass fusion for SW_FAIL and ROI events only; trust reports are
# added implicitly.
bypassFusionEvents = SW_FAIL, ROI_ENTRY, ROI_EXIT
4.5 Inter-Process Transport (PSSDToPSDComBackend)#
POSIX_MSG_QUE (default): POSIX message queue transport between the SEI daemon and the PSD gateway.
POSIX_SOCKET: AF_UNIX stream socket transport. Available as an alternative when the message-queue transport is not suitable for the deployment.
When the SEI daemon runs inside the Safety Core container,
launch_hoisa.sh applies the Docker runtime options required by the
selected transport automatically.
4.6 Heartbeat Fail-Safe (max_hb_failures)#
The SEI daemon expects each registered client to send a heartbeat
periodically. After max_hb_failures consecutive misses it:
Emits a
SW_FAILevent for the missing client.Tears down the client’s registration, releasing its pipeline slot.
Tune based on the typical heartbeat period and the desired time-to-detect. With the default 1 s period:
max_hb_failures = 10⇒ ~10 s to declare a client dead.Lower values (e.g. 3–5) reduce latency but are more sensitive to transient host load / network jitter.
Higher values (up to 255) tolerate brief stalls, at the cost of slower fault detection.
A value outside [1, 255] is clamped to the nearest bound and a
warning is logged.
4.7 Validation Rules#
The system validates parameters on startup:
Range validation: Float parameters (
fusionThreshold,alpha,beta,gamma) must be in[0.0, 1.0].Weight-sum validation:
alpha + beta + gammamust sum to ~1.0 (±0.01).Count validation:
trajectoryCount≤ 10;maxPipelineswithin[1, 8].Positive-value validation:
timeWindowSize> 0;temporalTolerance≥ 0 and ≤ 60 000.Heartbeat validation:
max_hb_failuresmust parse as an integer in[1, 255]. Out-of-range values are clamped; malformed values fall back to the default (10).Enum validation:
PSSDToPSDComBackendmust bePOSIX_MSG_QUEorPOSIX_SOCKET.Path validation:
sensorConfigmust resolve to a readable file. Failure here is fatal; the daemon exits.
4.8 Error Handling#
If non-fatal validation fails:
The daemon logs an error.
The affected parameter is reset to its default.
Initialization continues with the defaulted value.
A warning message records which parameter was overridden.
If multiple critical parameters fail validation (e.g. invalid
weights and an unparsable config file), or if sensorConfig cannot be
resolved, the daemon aborts startup. Consult /var/log/psf/psf.log
for the specific failure.
4.9 Configuration Loading#
Configuration loads during daemon initialization in the following sequence:
The system attempts to load parameters from
/opt/nvidia/psf/bin/nvpss.conf.Missing parameters use their compiled-in defaults.
All parameters undergo validation (Section 4.7).
Invalid parameters are reset to defaults with error logging.
Trust-report event types are implicitly added to
bypassFusionEvents.The SafetyEventFusion module is constructed with the final (validated) parameters.
Daemon begins listening for client registrations and heartbeats.
4.10 Configuration Examples#
Practical configuration examples for common scenarios.
Example 1: High-precision configuration (strict fusion, low false-positive)
# nvpss.conf - High precision mode
timeWindowSize = 200
fusionThreshold = 0.75
alpha = 0.35
beta = 0.45
gamma = 0.20
temporalTolerance = 10
trajectoryCount = 4
maxPipelines = 3
bypassFusionEvents = SW_FAIL
PSSDToPSDComBackend = POSIX_MSG_QUE
sensorConfig = /opt/nvidia/psf/bin/sensor_config.conf
max_hb_failures = 5
Example 2: Balanced configuration
# nvpss.conf - Balanced mode
timeWindowSize = 300
fusionThreshold = 0.5
alpha = 0.40
beta = 0.40
gamma = 0.20
temporalTolerance = 20
trajectoryCount = 4
maxPipelines = 4
bypassFusionEvents = SW_FAIL
PSSDToPSDComBackend = POSIX_MSG_QUE
sensorConfig = /opt/nvidia/psf/bin/sensor_config.conf
max_hb_failures = 10
Example 3: Permissive configuration (favor detection over precision)
# nvpss.conf - Permissive mode
timeWindowSize = 1000
fusionThreshold = 0.35
alpha = 0.45
beta = 0.35
gamma = 0.20
temporalTolerance = 25
trajectoryCount = 6
maxPipelines = 4
# Route ROI events around fusion so they are forwarded directly to
# the decision layer even under high event-ingestion latency.
bypassFusionEvents = SW_FAIL, ROI_ENTRY, ROI_EXIT
PSSDToPSDComBackend = POSIX_MSG_QUE
sensorConfig = /opt/nvidia/psf/bin/sensor_config.conf
max_hb_failures = 50
4.11 Tuning Guidelines#
Guidelines for parameter tuning based on deployment scenarios:
Reduce
timeWindowSize(200–250 ms) to minimize end-to-end latency.Increase
timeWindowSize(1000–5000 ms) when events originate from an external ingestion source that introduces variable delays.Increase
temporalTolerance(10–25 ms) to account for faster object movement or slightly unsynchronized cameras.Increase
trajectoryCount(6–8) for better spatial tracking when objects follow long, curved paths.Increase
fusionThreshold(0.70–0.80) to reduce false positives in well-calibrated multi-camera setups.Decrease
fusionThreshold(0.35–0.45) to maintain sensitivity at the cost of more fused events.Increase
beta(0.50–0.55) to prioritize spatial correlation.Increase
gamma(0.25–0.30) to leverage object-type information.For high-rate / low-jitter systems:
max_hb_failures = 3–5gives fast fault detection.For noisy networks or high-load hosts:
max_hb_failures = 30–100tolerates transient stalls.