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

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.

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

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.

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.