[ros-users] Standardization of mapping interfaces

Stéphane Magnenat stephane.magnenat at mavt.ethz.ch
Fri Nov 2 01:54:16 UTC 2012


Thanks for these links! Your message and the general direction of the 
discussion make me think that maybe map_dispatcher and its interfaces 
should be moved into their own REP. In the spirit of the ROS 
architecture, it seems better to have small self-contained standalone 
pieces than a complicated node/spec. What is the opinion of the 
community about this?

So if I understand well the design you propose, map_dispatcher would be 
a map blackboard [1], right? I can imagine plugins able to register 
triggers (in the database sense) so that plugins can be notified when 
certain parts of the map change. Although I like the idea of plugins, I 
would keep the functionality currently defined in REP129 as part of the 
default feature set, as they do not consume any processing power when 
not used (they can still be implemented as plugins internally).

Your description and the post of Loy raise several questions in my mind:

- What type of information would you like to store in the map? Occupancy 
is one thing, but other types of data like categorical information make 
a lot of sense in the context of space segmentation for instance. Based 
on my experience with semantic mapping [2] and the post of Loy, I 
typically see several Occupancy/probabilistic maps, segmented into 
several categorical maps, processed into symbolic information that has 
geometric properties attached and links back to the maps.

- Should the map dispatcher be limited to a voxel/octree representation, 
or should it also support point clouds? Processing on point clouds can 
be useful, for instance to build a mesh for display or further 
processing, or to do planning.

- As plugins will manipulate voxel/octree/point-cloud data, there should 
be a library of choice to do so, but which? This question has the 
potentiality to open a Pandora's box: For instance for point clouds, on 
one hand PCL is widely used, on the other hand PCL define point-cloud 
channels statically with templates, which will force to use PointCloud2 
between the map and the plugins, which might affect performances. I do 
not know the situation for voxel/octrees.

- We should support both 2D and 3D, should it be in a single node or in 
two different nodes?

- The plugin architecture you propose as the disadvantage that 
everything runs inside a single memory space. Maybe the architecture 
should be based on nodelets, letting open the choice of whether to run 
plugins in-process or out-of-process?

I think that's all for now from my side,



[1] http://en.wikipedia.org/wiki/Blackboard_system
[2] http://www.springerlink.com/content/k55337520q7341hq/

Dr Stéphane Magnenat

More information about the ros-users mailing list