Ignore readings less than the sensor's minimum range #9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
If a
LaserScan
message contains range readings that are below the sensor's minimum range, Karto will still use them for mapping purposes, resulting in situations like the one in the screenshot below, where the red arrow is the robot's initial pose,[0 0 0]
More details on this issue can be found here: http://answers.ros.org/question/232523Even though Karto does have filtering capabilities:
they are not used. All calls to
GetPointReadings
are withoutwantFiltered = true
. So, one way to address the issue would be to dopScan->GetPointReadings(true)
in the functionAddScan
. However, since there's already some filtering logic inAddScan
, I just added another condition to the if statement. (There is a slight difference between the two solutions. I went with the one that, imo, will have minimal side effects.)