[ros-users] Standardization of mapping interfaces

Armin Hornung HornungA at informatik.uni-freiburg.de
Fri Oct 26 12:31:04 UTC 2012


Hi all,

(as I hope we get more feedback from other users as well)

>
>> I agree with the need for compression for the full map. In that case
>>  (for large environments / full probabilities and free space) one can
>>  simply build an octomap out of it and transmit it as
>> octomap_msgs/OctomapBinary (only requires octomap and octomap_msgs, I
>>  would see this as sufficiently lightweight). Even large maps will be
>>  ~10MB or less. So I don't see the PointCloud2 occupancy map as a
>> full representation, only as a quick common intermediate format that
>> can be exchanged or shown in RViz. Although, to that end, a
>> MarkerArray of boxes would be even better....
>>
>> So far I had the assumption that the PointCloud2 occupancy map *is* a
>>  sparse representation, only containing a list of occupied voxel
>> centers?
>
> Sorry I had misunderstood, I thought you did not want to use PointCloud2
> for voxels.
>
> Now using PointCloud2 with voxels, do you plan to have constant-size
> voxels or let open the possibility to have them of different sizes
> within a single message? If the size is constant, it would be a bit
> strange to have one channel with a field "size" that is constant for the
> whole message.

I thought to only have one field "size" in the message, not one for each 
point. Sorry if that wasn't clear.


>
> Also, should we define a field for "probability" of occupancy, to be 
> consistent with OccupancyGrid? This raises again the question of 
> standardizing field names in the PointCloud2 message.

See below.


>
>> So far I changed "octree map" to "occupancy map". I'm not sure if I
>> see the benefit at the moment of providing voxel maps at all, besides
>> quick volumetric map checking e.g. in RViz by showing the occupied
>> voxels. It would be definitely beneficial to obtain the aligned
>> points clouds with their sensor origin, so a volumetric map can be
>> externally built e.g. in octomap_server. It would then end up in the
>> octree format there.
>
> Thanks for your changes. They raise one question: do you wish that a 
> node providing mapping on voxels does not need to provide a 
> point-cloud map? (make profile 3D optional if 3DO is present). I was 
> thinking of requiring such a map in order to have a minimal interface 
> to which any 3D mapper will comply. But I agree that this is matter of 
> discussion.


OK, maybe we should backtrack one step. My point of view was from a 
mapping perspective, while I think yours was in the SLAM perspective. I 
was thinking more in terms of a consumer of the point clouds directly 
after alignment, while I now understand you were thinking about the 
first part that should, of course, provide the full point clouds and 
registered poses.


So why not making that clearer and moving the 3D map building into its 
own part, or into map_dispatcher? The output of the SLAM node should 
then be defined as tf and registered point clouds. Occupancy map 
building can then happen on top of that e.g. in octomap_server. For 
memory reasons, the map building part should not need to keep another 
copy of all the point clouds after they were already integrated. The 
occupancy mapping can happen in the same node or in a separate node that 
consumes the point clouds.

In that case I would skip defining the voxel output completely, since 
that now depends on the actual occupancy mapping implementation. In the 
case of octomap_server, the output is an octomap_msgs/Octomap (binary - 
only free & occupied or full probabilities) that can already be directly 
used for collision checks in Groovy. I would only suggest auxiliary 
output such as an MarkerArray of occupied cells for visualization for 
all kinds of volumetric mapping interfaces.

In that case everything we were trying to solve with an interim format 
is already done and implemented (full probabilities for free & occupied 
space, multi-resolution, compression built-in).


-- 
Armin Hornung
Humanoid Robots Lab, Albert-Ludwigs-Universität Freiburg
Contact: http://www.informatik.uni-freiburg.de/~hornunga




More information about the ros-users mailing list