0
$\begingroup$

Rosanswers logo

Hi all,

I'm trying to use navigation stack with a laser scanner which gives points from at least one meter distance. Move_base works fine but, when the robot (Pioneer) is close to an obstacle, the obstacle disappear from laser data, obstacle is cleared from costmap and robot hits it. Is there any possible solution? I'm using ROS Groovy and hydro-devel branch of navigation stack.

UPDATE:

Right now, I'm working only with simulation. Value range_min seems to be filled correctly.

angle_min: -3.1400001049 angle_max: 3.1400001049 angle_increment: 0.0015335775679 time_increment: 0.0 scan_time: 0.0 range_min: 1.0 range_max: 10.0

These are my settings (not yet transformed to the new format)...

Global costmap:

global_costmap:
  global_frame: odom
  robot_base_frame: base_footprint
  update_frequency: 5.0
  publish_frequency: 2.0
  static_map: false
  rolling_window: true
  width: 6.0
  height: 6.0
  resolution: 0.025
  origin_x: 0.0
  origin_y: 0.0

Local costmap:

local_costmap:
  global_frame: odom
  robot_base_frame: base_footprint
  update_frequency: 5.0
  publish_frequency: 2.0
  static_map: false
  rolling_window: true
  width: 6.0
  height: 6.0
  resolution: 0.025
  origin_x: 0.0
  origin_y: 0.0

Common params:

map_type: costmap

transform_tolerance: 0.4
obstacle_range: 2.5
raytrace_range: 3.0
inflation_radius: 1.0
footprint: [[0.3,0.3],[-0.3,0.3],[-0.3,-0.3],[0.3,-0.3]]


observation_sources: velodyne_scan

velodyne_scan: {sensor_frame: velodyne_link, topic: /velodyne/scan, data_type: LaserScan, marking: true, clearing: true}

UPDATE:

It seems that nav. stack ignores range_min in LaserScan msg (https://github.com/ros-planning/navigation/blob/hydro-devel/costmap_2d/plugins/obstacle_layer.cpp#L196).


Originally posted by ZdenekM on ROS Answers with karma: 704 on 2013-06-27

Post score: 1


Original comments

Comment by David Lu on 2013-09-05:
That seems true. Can you file a bug and maybe a patch?

Comment by ZdenekM on 2013-09-05:
https://github.com/ros-planning/navigation/issues/124

Comment by ZdenekM on 2013-09-05:
I'm just working on patch. Hopefully it will be useful also for others :)

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

The ROS laser message format allows you to specify a minimum valid range. Is your driver filling this in right? http://www.ros.org/doc/api/sensor_msgs/html/msg/LaserScan.html Clients that get data bigger than max or less than min should know to discard it.

After having a look to see if you can specify this in the sensor parameters in the costmap2d: http://www.ros.org/wiki/costmap_2d There isn't anything specified about minimum ranges as opposed to maximum ones. However that's somewhat expected, as that information should already be present in the laser scan message. Typically you're only interested in discarding large value ranges as they have the most uncertainty because of robot rotation.

To start, I'd check your laser messages, and see if the minimum range is set correctly by the driver.


Originally posted by Gav with karma: 478 on 2013-06-27

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by ZdenekM on 2013-06-27:
Thanks for tip. I checked msg and range_min is there. I will check costmap_2d code if it deals with this value somehow...

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.