Data Source

The configuration storing the sources to retrieve the point cloud data for further processing.

Table 1. Available fields in blickfeld.percept_pipeline.config.DataSource
Field Type Default Unit

qb2_setup

Qb2Setup

-

-

Use Qb2 lidars to retrieve point clouds

geolocation_of_map

optional base.config.Geolocation

-

-

Geolocation of data source. This references the map coordinate system of this data source to the world. Individual lidars are referenced to the map coordinate system via their map_from_lidar transform.

[NOTE] If the map_from_lidar transform is not an identity transformation, this is not the geolocation of an individual sensor.

swarm

Swarm

-

-

Mode which enables configuration synchronization and distributed processing.

Processing and synchronization is managed by a dedicated leader sensor. All processing-related configuration, e.g. scan pattern and perception parameters are synchronized from the leader sensor onto every follower sensor in the sensor setup.

The object lists and foreground point clouds of all sensors are fused and processed on the leader sensor of the swarm. This will allow processing of object-based security zones and point-based security zones across the combined field of view.

allow_unavailable_lidars

bool

-

-

Allow that devices in the setup are temporarily not available or failed.

Re-connection attempts are performed continuously. A warning with the list of unavailable sensors is raised. If all sensors are unavailable, the pipeline will fail.

Qb2

Configuration for retrieving point clouds from a Qb2

Table 2. Available fields in blickfeld.percept_pipeline.config.DataSource.Qb2
Field Type Default Unit

fqdn

optional string

-

-

The fully qualified domain name of the Qb2 device. For on-device processing/configuration, 'fqdn' can be set to an empty string to request the data of the current device.

port

optional uint32

-

-

The gRPC port of the Qb2 device. If unset the default gRPC ports 50051 (unencrypted) or 55551 (TLS) will be used.

map_from_lidar

optional base.geometry.Transform

-

-

Transformation from the lidar frame to the map frame. If this transform is not set, this will be interpreted as identify transformation. Transforming all point cloud topics into the map frame results in a globally consistent combined point cloud in map frame.

application_key

optional string

-

-

Application key with authorized access level. If set, the field serial_number has to be set as well. This field is required if user-management is enabled on externally connected devices.

serial_number

optional string

-

-

Serial number. If set, the connection will be secured with TLS. This field is required if user-management is enabled on externally connected devices.

disabled

bool

-

-

Disable fetching data from this sensor, setting this flag to true disables the evaluation of the entire sensor point cloud

metadata

optional google.protobuf.Struct

-

-

Arbitrary metadata storage for client applications

Trigger

Configuration of Trigger Mode. In trigger mode the processing pipeline will reduce the frequency at which point clouds and state lists are getting computed to reduce the amount of data transmitted between the processing device and configured 'lidars'.

Table 3. Available fields in blickfeld.percept_pipeline.config.DataSource.Trigger
Field Type Default Unit

frequency

float

-

Hz

The frequency at which data is getting requested from the lidars and outputs are generated.

Camera

A camera watching the scene alongside the lidars.

Its video is passed on to viewers and recorded with the events it saw. A camera that can pan, tilt and zoom is also aimed at them, once ptz says how; whether it can is asked of the camera itself.

Table 4. Available fields in blickfeld.percept_pipeline.config.DataSource.Camera
Field Type Default Unit

serial_number

string

-

-

Serial number of the camera, as the camera itself reports it. Named as the lidar names its own. Used to key camera health and video.

onvif

Onvif

-

-

Over ONVIF.

map_from_camera

optional base.geometry.Transform

-

-

Transformation from the camera frame to the map frame, resolved from the WebGUI calibration wizard. If this transform is not set, it is interpreted as identity transformation.

ptz

optional Ptz

-

-

How to aim the camera, for one that can pan, tilt and zoom. Left unset the camera is not aimed: it is fixed, or not calibrated yet.

disabled

bool

-

-

Disable this camera, setting this flag to true stops any control and video capture for it.

metadata

optional google.protobuf.Struct

-

-

Arbitrary metadata storage for client applications

Onvif

How the device reaches a camera over ONVIF.

Table 5. Available fields in blickfeld.percept_pipeline.config.DataSource.Camera.Onvif
Field Type Default Unit

fqdn

string

-

-

The fully qualified domain name of the ONVIF device service. Unlike Qb2.fqdn, this is always required: there is no "current device" case for a camera.

port

optional uint32

-

-

The ONVIF device service port. If unset the default ONVIF port 80 is used.

username

optional string

-

-

ONVIF authentication username.

An administrator’s login is used once, when it is stored: the device creates an Operator account of its own on the camera, and stores that account instead.

password

optional string

-

-

ONVIF authentication password. Write-only: it is never read back. A camera stored again with the same username and no password keeps the one it has.

Ptz

How a camera that can pan, tilt and zoom is aimed at a point of the map.

Table 6. Available fields in blickfeld.percept_pipeline.config.DataSource.Camera.Ptz
Field Type Default Unit

calibration

Calibration

-

-

Calibration needed to turn a map-frame point into a pan/tilt/zoom command, resolved by the same client solve as Camera.map_from_camera.

The correspondences it was solved from are the client’s: the device aims by the answer and has no use for the workings, and a solve that only runs while somebody is calibrating does not belong on a device that has to keep a pipeline fed.

tracking

bool

-

-

Whether automatic tracking aims this camera at what the lidars are tracking. A camera with no calibration is not aimed whatever this says: there is nothing to turn a map-frame target into a pan/tilt/zoom command with.

Position

A pan/tilt/zoom position, in the camera’s own coordinate space.

Table 7. Available fields in blickfeld.percept_pipeline.config.DataSource.Camera.Ptz.Position
Field Type Default Unit

pan

float

-

-

Pan position.

tilt

float

-

-

Tilt position.

zoom

float

-

-

Zoom position.

Calibration

Calibration mapping a map-frame position to a pan/tilt/zoom command for a specific camera.

Table 8. Available fields in blickfeld.percept_pipeline.config.DataSource.Camera.Ptz.Calibration
Field Type Default Unit

half_fov_at_zoom_0

optional float

-

rad

Half the angular field of view the camera sees fully zoomed out, at zoom 0. With half_fov_at_zoom_1 this is the range a zoom command interpolates across.

half_fov_at_zoom_1

optional float

-

rad

Half the angular field of view the camera sees fully zoomed in, at zoom 1. Must be smaller than half_fov_at_zoom_0. A camera missing either is left fully zoomed out.

pan_offset

optional float

-

rad

Pan offset between the camera’s zero position and the map frame, applied before pan_scale converts the angle into the camera’s own units.

tilt_offset

optional float

-

rad

Tilt offset between the camera’s zero position and the map frame, applied before tilt_scale converts the angle into the camera’s own units.

invert_pan

bool

-

-

Invert the pan axis direction.

invert_tilt

bool

-

-

Invert the tilt axis direction.

pan_scale

optional float

-

-

Pan units the camera reports and accepts per radian of rotation. A camera whose normalised space spans -1..1 over a full turn has a pan_scale of 1/pi; one that works in degrees has 180/pi. Defaults to 1, meaning the camera’s units are radians.

tilt_scale

optional float

-

-

Tilt units the camera reports and accepts per radian of rotation, the tilt-axis counterpart of pan_scale. Defaults to 1, meaning the camera’s units are radians.

Qb2 Setup

The configuration of a Qb2 setup of the LiDAR devices

Table 9. Available fields in blickfeld.percept_pipeline.config.DataSource.Qb2Setup
Field Type Default Unit

lidars

repeated Qb2

-

-

the qb2 lidars to get the point clouds from

cameras

repeated Camera

-

-

Cameras watching the scene alongside the lidars above.

A camera is not a point cloud source and does not participate in swarm synchronization or data fusion; it is a consumer of the tracking output. Whether a camera is aimed automatically is its own tracking flag.

trigger

optional Trigger

-

-

If the field is set trigger mode is enabled. If the field is not set, the pipeline outputs are computed with the frequency of configured lidars, i.e. the scan pattern configured on those.

Swarm

Configuration options for Swarm mode

Table 10. Available fields in blickfeld.percept_pipeline.config.DataSource.Swarm
Field Type Default Unit

leader

bool

-

-

This device is the swarm leader.

follower

Qb2

-

-

This device is managed by another device.

synchronization_delay

float

-

s

Maximum latency of the data fusion in swarm mode: after the leader’s own frame is ready for fusion, the leader waits at most this long for the matching data of all remote devices. Fusion is triggered immediately once all expected remote data has been received. (default: 1 second)

metadata

optional google.protobuf.Struct

-

-

Arbitrary metadata storage for client applications