Zone Algorithm

An algorithm that monitors the area within and around a zone.

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

name

string

-

-

The user readable zone algorithm name

uuid

string

-

-

The uuid of the zone algorithm (uuid4)

shape

base.geometry.Shape

-

-

Geometric shape (usually a Box) in which the algorithm detects certain behaviors/scenarios

disabled

bool

-

-

Disable this zone, setting this flag to true disables the evaluation of the zone

metadata

optional google.protobuf.Struct

-

-

Arbitrary metadata storage for client applications

volume

Volume

-

-

Run volume monitoring within the zone

security

Security

-

-

Run alarm detection within the zone

exclusion

Exclusion

-

-

Run exclusion zone

object_based_security

ObjectBasedSecurity

-

-

Run object-based alarm detection within the zone

occupancy

Occupancy

-

-

Run occupancy zone

traversal_security

TraversalSecurity

-

-

Run traversal zone

Volume

Algorithm that measure the volume of a zone

The volume of a zone is approximated by computing a 'volume map' from the input point clouds. The volume map discretize the zone into 'tiles' in the xy-plane with a side-length of 'resolution'. Each tile contains the height information about the points that fall into this tile. The volume of the volume map can be calculated by adding up the volumes of the tiles in the volume map.

Table 2. Available fields in blickfeld.percept_pipeline.config.ZoneAlgorithm.Volume
Field Type Default Unit

resolution

float

-

m

Grid resolution per tile used to measure the volume.

Reasonable default: 0.1

empty_volume

float

-

m^3

The measured volume while area covered by the zone is considered 'empty'. The value can be set using TareVolume method while the area of the zone is empty.

Reasonable default: 0

disable_when_occupied_zone_uuids

repeated string

-

-

Link volume zone to occupancy zones (by uuid).

Disables the volume zone state when one of the occupancy zones is occupied.

angle_of_repose

optional float

-

rad

Angle of repose.

Steepest angle of descent when the measured material is piled. See https://en.wikipedia.org/wiki/Angle_of_repose.

minimum_coverage

optional float

-

-

Minimum coverage value for zone.

When the estimated coverage is below the configured threshold, the state output will be disabled.

This can be used to automatically disable zones when the viewport to the zone area is blocked or the sensor is temporarily failed.

Default: 0

Security

Algorithm that triggers an alarm if movement was detected in the zone

Table 3. Available fields in blickfeld.percept_pipeline.config.ZoneAlgorithm.Security
Field Type Default Unit

min_points

uint32

-

-

Minimum number of (foreground) points in the security zone to trigger the alarm. Reasonable default: 10

max_points

uint32

-

-

Maximum number of (foreground) points in the security zone that still triggers an alarm. More points will disable the alarm. This logic can be disabled by setting max_points to '0'. Default: 0

minimum_intruding_duration

float

-

s

Minimum active intrusion duration before alarm is triggered.

Default: 0

minimum_intrusion_confidence

float

-

-

Minimum intrusion confidence before alarm is triggered.

Only applicable when the minimum intruding duration is configured.

Default: 1

hold_duration

float

-

s

Alarm is kept active for the given duration to reduce jitter.

Default: 0

Object Based Security

Algorithm that triggers an alarm when an object of one of the selected sizes is in the zone

Table 4. Available fields in blickfeld.percept_pipeline.config.ZoneAlgorithm.ObjectBasedSecurity
Field Type Default Unit

alarm_sizes

repeated ObjectSize

-

-

Selection of sizes which trigger an alarm. Each size in the array will only trigger an alarm for the interval of that size.

minimum_intruder_lifetime

float

-

s

Minimum lifetime of object before alarm is triggered.

Default: 0

minimum_intruder_track_length

float

-

m

Minimum track length of object before alarm is triggered.

Default: 0

minimum_intruding_duration

float

-

s

Minimum active intrusion duration before alarm is triggered.

Default: 0

objects_in_background

bool

-

-

Trigger alarm for objects with the "in_background" property.

Enabling this might increase the false alarm rate.

minimum_intrusion_confidence

float

-

-

Minimum intrusion confidence before alarm is triggered.

Only applicable when the minimum intruding duration is configured.

Default: 1

hold_duration

float

-

s

Alarm is kept active for the given duration to reduce jitter.

Default: 0

Exclusion

Algorithm that excludes points from the input point cloud

Occupancy

Algorithm that detects if a zone is occupied

Table 5. Available fields in blickfeld.percept_pipeline.config.ZoneAlgorithm.Occupancy
Field Type Default Unit

min_points

uint32

-

-

Minimum number of points to mark the zone as occupied.

Reasonable default: 10

adaptive_baseline_time_constant

optional float

-

s

If set, the min_points is not compared against zero but against an adaptive baseline. The baseline is calculated with an exponential filter with the zone point count as input.

The given time constant is used to calculate the alpha for the exponential filter. After a restart, the baseline is initialized with the current zone point count.

Reasonable default: 3600s (1 hour)

voxel_size

optional float

-

m

The point cloud inside the zone is down sampled with a voxel grid. This is done to achieve a distance-independent parametrization. The size of a voxel cell can be configured with this parameter.

Default: 0.05m

invert

bool

-

-

Invert the state of the zone

This might be useful in situations where e.g. a static crane should be detected in its home position.

Traversal Security

Algorithm that detects if objects are traversing through the zone.

Table 6. Available fields in blickfeld.percept_pipeline.config.ZoneAlgorithm.TraversalSecurity
Field Type Default Unit

alarm_sizes

repeated ObjectSize

-

-

Selection of sizes which trigger an alarm. An alarm will only be triggered by objects of sizes specified in the array.

hold_duration

float

-

s

Alarm is kept active for the given duration to reduce jitter.

Default: 0