0
$\begingroup$

Rosanswers logo

I am having the same issues as this:

Blue points are obstacles marked obstacles marked

Pink are the laser scans laser scans

I am using Hokuyo UHG-08LX. What I still do not understand is, why are the obstacles not seen by the laser still left behind? This is so even after a few minutes (with robot not moving).

If the laser could see the obstacles before, there should be scans which would pass through these points after the obstacle is removed. Raytracing should have been able to clear those paths. Or am I missing something?


Originally posted by weiin on ROS Answers with karma: 2268 on 2012-03-19

Post score: 1

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

If the laser scanner is seeing maximum range, it might not be able to clear your obstacles. Some laser scanners will fill a maximum range point with 0.0 instead of some value. No return means that the costmap cannot be cleared. In order to clear an obstacle, the costmap must receive a scan that raytraces through where the obstacle used to be and returns a value. This tells the costmap "since I have now received a scan point that is farther away than the previous one, there must no longer be an obstacle here". If you do not receive this farther point (because max range fills 0.0 or your raytrace_range parameter is too low), you cannot clear the map.

Based on your images, I'm guessing that the scenario I mentioned above is likely.


Originally posted by DimitriProsser with karma: 11163 on 2012-03-20

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by weiin on 2012-03-20:
Yes, I was suspecting this as well when I echo the /scan topic and see quite a few 0.0 range readings. So the question is, what is the usual procedure to deal with out-of-range readings?

Comment by weiin on 2012-03-20:
It seems odd that if a robot was sitting there doing nothing and something passes in front of it for a brief moment. The robot records it, and after a few minutes when the robot is asked to move off, it still assumes an obstacle is there.

Comment by DimitriProsser on 2012-03-21:
I run the LaserScan through a custom filter (based on the laser_filters package) that replaces all values of 0.0 with max_range. Since the laser scanner hardware is actually incapable of measuring 0.0 (they have a minimum range), you can safely assume a 0.0 is a max range scan

Comment by musiqsoulchild on 2015-03-23:
Does anyone have a custom filter similar to the one Dimitri is talking about?

Comment by nbanyk on 2016-01-21:
To customize the filter take the LaserScanRangeFilter from laser_filters and modify the header file (range_filter.h) so that instead of filtered_scan.ranges[i] = quiet_NaN(), make it filtered_scan.ranges[i] = max_value; where max_value is within your laser range max.

Comment by Procópio on 2016-02-02:
I have tried that solution, but still the laser scans with max range (or max_range + 1 as the current hydro-devel laser_filters apply) were not clearing the cells. This seems to be the desired behavior, as shown in the discussion below (see link in next comment)

Comment by Procópio on 2016-02-02:
discussion on why max range scans do not clear costmaps

Comment by nbanyk on 2016-02-02:
Yes, in the end it was actually a value something slightly less than max that allowed for clearing.

Comment by mcarr on 2017-04-21:
I had the above problem however used a filter and adjusted my parameters and now it seems to be clearing obstacles. However sometimes when an obstacle is cleared, a few tiny pixels of that obstacle remain. If anyone has the same problem, I would try increasing the resolution parameter in the costmap

$\endgroup$

Your Answer

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