obstacle_detector

obstacle_detector

This obstacle detector is forked from obstacle_detector We made some modifications so that the package can detect and track obstacles from 3D PointCloud. Detected obstacles come in a form of circles. The working principles of the method are described in an article provided in the resources folder.

This obstacle detection algorithms can predict the position (x,y), velocity (x,y), and size (assuming circular obstacles).

Input

rostopicrosmsg
/lidar_pointsPointCloud2

Output

Currently the obstacles are assumed to be represented by circles and their data is to be published to the vectors in the following rosparam

NameDescription
/obstacle/radiusradius of obstacle in (m)
/obstacle/vxglobal velocity in global x direction in (m/s)
/obstacle/vyglobal velocity in global y direction in (m/s)
/obstacle/xcurrent global x (m) position of vehicle in (m)
/obstacle/ycurrent global y (m) position of vehicle in (m)

Settings

NameDescription
/obstacle_detector/obstacle_extractor/activeactive/sleep mode
/obstacle_detector/obstacle_extractor/use_scanuse laser scan messages
/obstacle_detector/obstacle_extractor/use_pcluse point cloud messages
/obstacle_detector/obstacle_extractor/use_split_and_mergechoose wether to use Iterative End Point Fit (false) or Split And Merge (true) algorithm to detect segments
/obstacle_detector/obstacle_extractor/circles_from_visibledetect circular obstacles only from fully visible (not occluded) segments
/obstacle_detector/obstacle_extractor/discard_converted_segmentsdo not publish segments, from which the circles were spawned
/obstacle_detector/obstacle_extractor/min_group_pointstransform the coordinates of obstacles to a frame described with frame_id parameter
/obstacle_detector/obstacle_extractor/transform_coordinatesminimum number of points comprising a group to be further processed
/obstacle_detector/obstacle_extractor/max_group_distanceif the distance between two points is greater than this value, start a new group,
/obstacle_detector/obstacle_extractor/distance_proportionenlarge the allowable distance between points proportionally to the range of point (use scan angle increment in radians)
/obstacle_detector/obstacle_extractor/max_split_distanceif a point in group lays further from a leading line than this value, split the group
/obstacle_detector/obstacle_extractor/max_merge_separationif distance between obstacles is smaller than this value, consider merging them
/obstacle_detector/obstacle_extractor/max_merge_spreadmerge two segments if all of their extreme points lay closer to the leading line than this value
/obstacle_detector/obstacle_extractor/max_circle_radiusif a circle would have greater radius than this value, skip it
/obstacle_detector/obstacle_extractor/radius_enlargementartificially enlarge the circles radius by this value
/obstacle_detector/obstacle_extractor/frame_idname of the coordinate frame used as origin for produced obstacles (used only if transform_coordinates flag is set to true)
/obstacle_detector/obstacle_tracker/activeactive/sleep mode
/obstacle_detector/obstacle_tracker/loop_ratethe main loop rate in Hz
/obstacle_detector/obstacle_tracker/tracking_durationthe duration of obstacle tracking in the case of lack of incomming data
/obstacle_detector/obstacle_tracker/min_correspondence_costa threshold for correspondence test
/obstacle_detector/obstacle_tracker/std_correspondence_dev(experimental) standard deviation of the position ellipse in the correspondence test
/obstacle_detector/obstacle_tracker/process_variancevariance of obstacles position and radius (parameter of Kalman Filter)
/obstacle_detector/obstacle_tracker/process_rate_variancevariance of rate of change of obstacles values (parameter of Kalman Filter)
/obstacle_detector/obstacle_tracker/measurement_variancevariance of measured obstacles values (parameter of Kalman Filter)
/obstacle_detector/obstacle_tracker/frame_idname of the coordinate frame in which the obstacles are described
/voxel_grid/filter_field_namethe name of the point field to be used for filtering
/voxel_grid/filter_limit_minThe minimum limit of the filter interval
/voxel_grid/filter_limit_maxThe maximum limit of the filter interval
/voxel_grid/filter_limit_negativeInverts the meaning of the filter interval.
/voxel_grid/leaf_sizeThe extent of a leaf, respectively the voxel size of the result image or the size of the cells which shall accumulate points.

Flags

NameDescription
/system/obstacle_detector/flags/runningindicates whether the obstacle detector is running
/system/obstacle_detector/flags/initilizedindicates whether the obstacle detector is initialized

demo

N/A