mapper not generating expected occupancy grid map
nitin5 opened this issue · comments
Hi,
I have been running a few experiments with 2D lidar data. I found that mapper do not generates complete occupancy grid initially. I am attaching two pictures. Please see that a lot of area is left as unknown in the map although, laser beams has passed through them.
This picture shows starting position of the robot. Size of a cell in rviz display is 0.25x0.25 m-sq while size of a cell in Stage grid is 1m-sq. Laser range in simulation is 10meters.
Further, Robot starts moving backward. Next picture is output after some movement backward.
I have been using following configuration data
Mapper
robot_id: 1
grid_resolution: 0.25
range_threshold: 10.0 #Maximum range of laser sensor
map_update_rate: 1
publish_pose_graph: true
max_covariance: 0.01 # Threshold to accept result of particle filter
transform_publish_period: 0.1
min_map_size: 20 #minimum number of nodes in map for localization
#laser_topic: base_scan
#map_frame: /map
#map_topic: map
#laser_frame: base_laser_link
#robot_frame: base_link
#odometry_frame: odom1
#offset_frame: offsetLocalizer
min_particles: 2500
max_particles: 10000Karto
MinimumTravelDistance: 1.0
MinimumTravelHeading: .52
LoopSearchMaximumDistance: 5.0
ScanBufferMaximumScanDistance: 20.0
ScanBufferSize: 8For a full list of available parameters and their
corresponding default values, see OpenKarto/OpenMapper.h
#UseScanMatching: true
#UseScanBarycenter: true
#MinimumTravelDistance: 1.0
#MinimumTravelHeading: 0.52
#ScanBufferSize: 70
#ScanBufferMaximumScanDistance: 20
#UseResponseExpansion: falseVariance of penalty for deviating from odometry when scan-matching. Use lower values if the robot's odometer is more accurate.
#DistanceVariancePenalty: 0.6
#MinimumDistancePenalty: 0.5
#AngleVariancePenalty: 0.1225 # variance of 20 x 20 degree sq in radians
#MinimumAnglePenalty: 0.9
#LinkMatchMinimumResponseFine: 0.6
#LinkScanMaximumDistance: 5.0
#CorrelationSearchSpaceDimension: 0.3 #Seach for correlation in area of 30x30 cm-square
#CorrelationSearchSpaceResolution: 0.1
#CorrelationSearchSpaceSmearDeviation: 0.03
#CoarseSearchAngleOffset: 0.34906585 #20 degrees
#FineSearchAngleOffset: 0.00349 #0.2degrees
#CoarseAngleResolution: 0.0349 #2 degrees
#LoopSearchSpaceDimension: 8 #search area of size 8x8 meter square
#LoopSearchSpaceResolution: 0.05
#LoopSearchSpaceSmearDeviation: 0.03
#LoopSearchMaximumDistance: 10.0
#When the loop closure detection finds a candidate it must be part of a large set of linked scans. If the chain of scans is less than this value, we do not attempt to close the loop.
#LoopMatchMinimumChainSize: 10
#LoopMatchMaximumVarianceCoarse: 0.16 #The co-variance values for a possible loop closure have to be less than this value to consider a viable solution
#LoopMatchMinimumResponseCoarse: 0.7 #if probability value is larger than this, initiate coarser level search
#LoopMatchMinimumResponseFine: 0.7 #if probability value is larger than this, initiate finer level search###########################################################
Any help in how can i refine output of mapping will be appreciated.
Is it intentional to use such a low resolution for the map? I would opt for a much higher one for indoor mapping (e.g. 0.05). And try to increase the mapping range_threshold as well. Maybe the rest of your points is out of this range.
I am not sure I fully understand the problem. The pictures look okay to me, given the shown laser scans and the low map resolution. Which cells should be cleared, that are not?
I realised that problem can be avoided using a finer resolution or long range sensor, at least in simulations.