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
rostopic | rosmsg |
---|---|
/lidar_points | PointCloud2 |
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
Name | Description |
---|---|
/obstacle/radius | radius of obstacle in (m) |
/obstacle/vx | global velocity in global x direction in (m/s) |
/obstacle/vy | global velocity in global y direction in (m/s) |
/obstacle/x | current global x (m) position of vehicle in (m) |
/obstacle/y | current global y (m) position of vehicle in (m) |
Settings
Name | Description |
---|---|
/obstacle_detector/obstacle_extractor/active | active/sleep mode |
/obstacle_detector/obstacle_extractor/use_scan | use laser scan messages |
/obstacle_detector/obstacle_extractor/use_pcl | use point cloud messages |
/obstacle_detector/obstacle_extractor/use_split_and_merge | choose wether to use Iterative End Point Fit (false) or Split And Merge (true) algorithm to detect segments |
/obstacle_detector/obstacle_extractor/circles_from_visible | detect circular obstacles only from fully visible (not occluded) segments |
/obstacle_detector/obstacle_extractor/discard_converted_segments | do not publish segments, from which the circles were spawned |
/obstacle_detector/obstacle_extractor/min_group_points | transform the coordinates of obstacles to a frame described with frame_id parameter |
/obstacle_detector/obstacle_extractor/transform_coordinates | minimum number of points comprising a group to be further processed |
/obstacle_detector/obstacle_extractor/max_group_distance | if the distance between two points is greater than this value, start a new group, |
/obstacle_detector/obstacle_extractor/distance_proportion | enlarge the allowable distance between points proportionally to the range of point (use scan angle increment in radians) |
/obstacle_detector/obstacle_extractor/max_split_distance | if a point in group lays further from a leading line than this value, split the group |
/obstacle_detector/obstacle_extractor/max_merge_separation | if distance between obstacles is smaller than this value, consider merging them |
/obstacle_detector/obstacle_extractor/max_merge_spread | merge two segments if all of their extreme points lay closer to the leading line than this value |
/obstacle_detector/obstacle_extractor/max_circle_radius | if a circle would have greater radius than this value, skip it |
/obstacle_detector/obstacle_extractor/radius_enlargement | artificially enlarge the circles radius by this value |
/obstacle_detector/obstacle_extractor/frame_id | name of the coordinate frame used as origin for produced obstacles (used only if transform_coordinates flag is set to true) |
/obstacle_detector/obstacle_tracker/active | active/sleep mode |
/obstacle_detector/obstacle_tracker/loop_rate | the main loop rate in Hz |
/obstacle_detector/obstacle_tracker/tracking_duration | the duration of obstacle tracking in the case of lack of incomming data |
/obstacle_detector/obstacle_tracker/min_correspondence_cost | a 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_variance | variance of obstacles position and radius (parameter of Kalman Filter) |
/obstacle_detector/obstacle_tracker/process_rate_variance | variance of rate of change of obstacles values (parameter of Kalman Filter) |
/obstacle_detector/obstacle_tracker/measurement_variance | variance of measured obstacles values (parameter of Kalman Filter) |
/obstacle_detector/obstacle_tracker/frame_id | name of the coordinate frame in which the obstacles are described |
/voxel_grid/filter_field_name | the name of the point field to be used for filtering |
/voxel_grid/filter_limit_min | The minimum limit of the filter interval |
/voxel_grid/filter_limit_max | The maximum limit of the filter interval |
/voxel_grid/filter_limit_negative | Inverts the meaning of the filter interval. |
/voxel_grid/leaf_size | The extent of a leaf, respectively the voxel size of the result image or the size of the cells which shall accumulate points. |
Flags
Name | Description |
---|---|
/system/obstacle_detector/flags/running | indicates whether the obstacle detector is running |
/system/obstacle_detector/flags/initilized | indicates whether the obstacle detector is initialized |
demo
N/A