Sensor files
Three files tell the Safety Core which sensors exist and under which identity their events arrive.
deploymentMode in nvpss.conf selects 2D or 3D. See
SEI Configuration.
How identity flows
- The perception producer names a sensor in each Kafka message:
sensorIdinmdx-framesmessages,sensor.idinmdx-eventsmessages. - The MDX client looks the name up, as an exact and case-sensitive match. In 2D it uses
sensor_config.conf; in 3D it usessensor_pipelines_config.conf. The event is sent with thepipelineIdit finds and the name assensorIdentifier. A name it cannot find is dropped, never sent withpipelineId0. - The SEI daemon accepts the event only if its
pipelineIdis at mostmaxPipelinesand thepipelineIdand name match a row ofsensor_config.confor, in 3D, the group. - SAIM reports
SENSOR_INVALIDandSENSOR_VALIDfor each camera ofsensor_config.conf. In 3D the SEI daemon derives the group’s verdict from its members. - Each CCPLEX SDM raises its all-safety-relevant-sensors-failed latch when every
pipelineIdinsensor_pipelines_config.confhas failed.
pipelineId 0 is reserved for events that name no sensor: AI_PIPELINE_INVALID,
AI_PIPELINE_VALID, SW_FAIL and the status no-op. A per-sensor event with pipelineId 0 is
refused.
Rules shared by all three files
- One row per line. Leading and trailing whitespace is trimmed, including a trailing carriage return.
- A line whose first non-blank character is
#is a comment. Blank lines are ignored. - There are no inline comments: a
#after a value becomes part of the last field. - A
pipelineIdis a decimal number from 1 to 8. - A name may contain spaces but not commas. Names longer than 63 characters are cut to 63 without an error.
- Parsing stops at the first error. The messages do not include a line number.
sensor_config.conf
The cameras: the RTSP streams that SAIM opens and watches, and, in 2D, the identities that events arrive under.
The file holds at most 8 rows.
Where it is and who reads it
The package installs only a template, /opt/nvidia/psf/bin/sensor_config.conf.sample. Create the
live file yourself, normally at /opt/nvidia/psf/bin/sensor_config.conf.
launch_hoisa.sh --sensor-config gives the file to SAIM and the MDX client. The SEI daemon reads
the path in nvpss.conf. With --runtime docker the launcher mounts the file at
/opt/nvidia/psf/bin/sensor_config.conf in the container, which is the shipped sensorConfig
value, so the two agree. With --runtime host, nothing checks that sensorConfig names the same
file as --sensor-config: keep them the same.
Errors
How each reader reports the problem:
sensor_pipelines_config.conf
The reviewed sensor set: the identities that decision-driving events arrive under. The CCPLEX SDMs use it as the condition of the all-safety-relevant-sensors-failed latch.
The file holds 1 to 8 rows. A row with three fields is refused, so a copy of sensor_config.conf
cannot be used by mistake.
What to list
- 2D: the cameras whose combined failure must latch the SDMs, normally every camera in
sensor_config.conf.- A row that no camera ever reports can never fail, so the condition can never be met and the latch is silently disabled.
- Listing fewer cameras than are deployed makes the latch fire while a working camera is still delivering frames.
- 3D: the BEV group only, with the group’s
pipelineIdand name. Do not list the cameras.
Where it is and who reads it
The package installs the file live at /opt/nvidia/psf/bin/sensor_pipelines_config.conf, with the
three cameras of the reference scene:
The SEI daemon, SAIM and PCM do not read this file.
launch_hoisa.sh --sensor-pipelines-config <file> passes the file to every CCPLEX SDM and, with
--runtime host in 3D, to the MDX client. The container entrypoint has no option for it: the MDX
client in the container always reads /opt/nvidia/psf/bin/sensor_pipelines_config.conf, so mount
your file over that path. launch_hoisa.sh --runtime docker does not do this for you; see
Known Limitations.
Errors
At run time an SDM logs once for each pipelineId it sees outside the set:
ATL: pipelineID <n> is outside the reviewed sensor set count=<n> {...}; its health does not affect the all-safety-relevant-sensors-failed latch.
This is not a fault. In 3D every camera’s own verdict produces this line once, because only the
group is in the set.
The sensor group file
3D only. It names the one BEV group and the cameras it is built from. The SEI daemon reads it from
the path in sensorGroupConfig. No file is shipped; the commented example in nvpss.conf names
/opt/nvidia/psf/bin/sensor_group_config.conf.
The file holds exactly one non-comment row. Because group and camera pipelineId values cannot
overlap, a 3D deployment has at most 7 cameras.
Errors
The SEI daemon logs Failed to load sensor group config; refusing to start with the file and the
parser message, prints error: <path>: <parser message>., and exits. It then checks the group
against the other files:
On success it logs deploymentMode=3D: BEV sensor group loaded with
group=<name>, pipelineId=<n>, members=<a>|<b>|<c>.
How the group’s verdict is derived
SAIM keeps reporting each camera. The SEI daemon derives the group’s state from its members every time a member’s verdict changes:
Each change is logged as BEV group trust transition -> SENSOR_INVALID or
BEV group trust transition -> SENSOR_VALID. A client that reports a verdict for the group’s
pipelineId directly is refused with
Trust report rejected: pipelineID names a sensor group, whose health is derived from its members and cannot be reported directly.
How the files must agree
Examples
2D (the reference scene)
sensor_config.conf:
sensor_pipelines_config.conf, as shipped:
nvpss.conf, relevant lines:
3D (one BEV group of three cameras)
sensor_config.conf stays as in 2D: SAIM still watches every camera, and the group members must
be listed here.
The sensor group file, /opt/nvidia/psf/bin/sensor_group_config.conf:
sensor_pipelines_config.conf, the group only:
nvpss.conf, relevant lines:
The perception producer must report BEV events under bev-sensor-1. After startup, confirm:
- the SEI log shows
deploymentMode=3D: BEV sensor group loadedwithgroup=bev-sensor-1, pipelineId=4, members=1|2|3; - each SDM log shows
reviewed sensor set from /opt/nvidia/psf/bin/sensor_pipelines_config.conf: count=1 {4:bev-sensor-1}; - the MDX client log shows
Sensor identity map loaded from sensor_pipelines_configwithbev-sensor-1.
If any of the three lists the cameras where you expected the group, that component is running a 2D configuration.
The SDMs on the FSI carry a compiled camera list and are verified for 2D only. See SDM on FSI.