Grid_map: Mapping empty space without obstacle in laser range

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Grid_map: Mapping empty space without obstacle in laser range

Mark
Hi,

the grid_map don't declare regions with no obstacle in laser range as empty space for me. The map is simply empty in such regions. See here: http://markalbers.de/bilder/grid_map.png 
Is there a way to change it?

Regards
Mark
Reply | Threaded
Open this post in threaded view
|

Re: Grid_map: Mapping empty space without obstacle in laser range

matlabbe
Administrator
Hi Mark,

If the objects are outside the laser scan range, the "empty" spaces will not be traced. Only for the latest node added to map that the empty spaces will be traced (as you can see on your screenshot in front of the robot).

You can try /rtabmap/proj_map instead of /rtabmap/grid_map, the proj_map will add empty cells on the ground (assuming that the camera can see the ground).

cheers
Reply | Threaded
Open this post in threaded view
|

Re: Grid_map: Mapping empty space without obstacle in laser range

Mark
Ok, so it is not possible to change that behavior of grid_map (for navigation purpose)?
Reply | Threaded
Open this post in threaded view
|

Re: Grid_map: Mapping empty space without obstacle in laser range

matlabbe
Administrator
Hi,

The option was in the library, but not in ROS. I've just updated the library and the ros package with parameter "grid_unknown_space_filled" (bool, default false). In the launch under rtabmap node:
 <node name="rtabmap" pkg="rtabmap_ros" type="rtabmap">
	[...]
	<param name="grid_unknown_space_filled" type="bool"   value="true"/>
</node>

cheers
Reply | Threaded
Open this post in threaded view
|

Re: Grid_map: Mapping empty space without obstacle in laser range

Mark
Thanks for your help!

The result with this option is not like i expected it to be.
See here: http://markalbers.de/bilder/grid_map_grid_unknown_space_filled.png

When no obstacle is in front of the robot, rtabmap gives this warning:
SensorData.cpp:553::uncompressDataConst() Requested laser scan data, but the sensor data (124) doesn't have laser scan.
The space doesn't get filled in map, then.

Info: I use the depthimage_to_laserscan nodelet.

Regards
Mark
Reply | Threaded
Open this post in threaded view
|

Re: Grid_map: Mapping empty space without obstacle in laser range

matlabbe
Administrator
Hi,

This warning comes from inside the rtabmap library. The library uses point clouds instead of laser scans, so the laser scans are converted to point clouds. The point clouds contain only valid scan values. The filling algorithm set empty space between 2 valid points. If the point cloud is empty, the filling algorithm cannot work (giving this warning).

The reason why the filling empty space option is disabled by default is that it may be difficult to know if a null depth value from the Kinect is infinity or invalid. For example, you don't want to fill empty space in front of the robot if you put your hand directly on the sensor to hide it. Invalid values are threaten as unknown values so it is why the cells are still kept at unknown state.

I don't know in which kind of environment you are, but if there are enough obstacles detected by the kinect under its maximum range (e.g., ~10 meters), you could get maps like these (created using demo_turtlebot_mapping.launch):

"/rtabmap/cloud_map" (3D point cloud):


"/rtabmap/grid_map" (from laser scans created by depthimage_to_laserscan):


"/rtabmap/proj_map" (from projection of the 3D point cloud above):


cheers