ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
1

Navigation stack vs. sensor with dead zone

asked 2013-06-27 10:40:42 -0500

ZdenekM gravatar image

updated 2014-01-28 17:17:04 -0500

ngrennan gravatar image

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).

edit retag flag offensive close merge delete

Comments

That seems true. Can you file a bug and maybe a patch?

David Lu gravatar image David Lu  ( 2013-09-05 04:42:51 -0500 )edit

https://github.com/ros-planning/navigation/issues/124

ZdenekM gravatar image ZdenekM  ( 2013-09-05 05:41:31 -0500 )edit
1

I'm just working on patch. Hopefully it will be useful also for others :)

ZdenekM gravatar image ZdenekM  ( 2013-09-05 05:42:02 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2013-06-27 16:53:42 -0500

Gav gravatar image

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.

edit flag offensive delete link more

Comments

Thanks for tip. I checked msg and range_min is there. I will check costmap_2d code if it deals with this value somehow...

ZdenekM gravatar image ZdenekM  ( 2013-06-27 19:06:24 -0500 )edit

Question Tools

Stats

Asked: 2013-06-27 10:40:42 -0500

Seen: 802 times

Last updated: Sep 04 '13