-
Notifications
You must be signed in to change notification settings - Fork 127
Supervisor PathLookout
This supervisor checks the path ahead of the robot for obstacles, observes detected obstacles and stops the robot if necessary.
The robot is not stopped immediately, if an obstacle appears on the path, but the obstacle is observed for some time. Only if the obstacle is too near to the robot or stays on the path for too long (or a combination of both), the robot is stopped and path execution aborted. The idea is, not to react directly on obstacles, that are still far away and may move away, before the robot reaches their position (e.g. someone is crossing the path).
This is realized by assigning weights to the observed obstacles. The weight increases, the longer an obstacle is observed and the lower the distance to the robot is. If the weight of any obstacle exceeds a fixed threshold, an alert is fired and path execution aborted.
There are some parameters to configure the path lookout:
Name | Type | Default | Description |
---|---|---|---|
~supervisor/path_lookout/obstacle_scale_distance | float | 1 | see below |
~supervisor/path_lookout/obstacle_scale_lifetime | float | 10 | see below |
~supervisor/path_lookout/path_width | float | 0.5 | Width of the path in meters (should be at least the width of the robot). |
~supervisor/path_lookout/segment_step_size | int | 5 | Number of path segments that are approximated by a line to speed up computation. |
~supervisor/path_lookout/scan_cluster_max_distance | float | 0.5 | Maximum distance between two obstacle points, to combine them to one obstacle. |
~supervisor/path_lookout/min_number_of_points | int | 3 | Minimum number of points on one obstacle (smaller clusters are ignored). |
The scale parameters obstacle_scale_distance
and obstacle_scale_lifetime
are the base for computing the obstacle weight and thus determine, how fast the robot will stop, if an obstacle appears.
The actual weight is the sum of a distance weight, that increases quadratically, the nearer the obstacle is and a lifetime weight, that increases quadratically, the longer the obstacle is "alive", i.e. the longer it is observed.
obstacle_scale_distance
defines the minimum distance at which the distance weight alone exceeds the threshold and obstacle_scale_lifetime
defines the maximum life time at which the life time weight exceeds the threshold.
That is any obstacle that is less than obstacle_scale_distance
meters away or that is longer than obstacle_scale_lifetime
seconds observed, will immediately stop the robot. Other obstacles may also stop it, if the sum of the two components gets too high.
To accelerate the computation, not every single path segment is checked but chunks of segment_step_size
segments are approximated by a line.