[ros-users] Standardization of mapping interfaces

Armin Hornung HornungA at informatik.uni-freiburg.de
Tue Oct 23 11:49:56 UTC 2012


How is the process designated to go from here - should we propose 
changes by branching from Stéphane's files and discuss at Github? To 
summarize, I started branching and put my comments below.

On 2012-10-20 01:00, Stéphane Magnenat wrote:
> Hello,
>
> The first draft of REP 129, Node API for SLAM Packages, is available 
> for review:
>     https://github.com/ros-infrastructure/rep/pull/6/files
>
> Your comments and contributions are warmly welcome,

I propose to get rid of the reference to octree and octree maps in the 
REP. This is an implementation detail that depends on the underlying 3D 
map structure. Similarly, you could compress a 2D map in a quad-tree, 
but the common map format remains an OccupancyMap msg.

I started changing this at the beginning of "Specification", should I go 
on and propose a complete change of the file?
https://github.com/ahornung/rep/commit/2d3ecd2a90a9c73df8915b19998e0d9cd805ae43

The idea is that the common format for occupied cells in 3D are voxels, 
an octree can be used to store and maintain them efficiently (e.g. in 
OctoMap) but that should not affect the exchange format. After all, for 
small areas, a VoxelGrid may work just as well as map representation. So 
the 3D profiles should only specify volumetric 3D occupancy maps, 
encoded as centers of voxels and only one (homogeneus) size parameter 
for the map (this is completely analogous to the 2D case, minus the free 
space). If an octree structure is explicitly desired, it can be 
exchanged as octomap_msgs including full probabilities and free space. I 
don't think it makes sense to try and replicate the structure halfway 
with a PointCloud2 (that is missing essential parts of the tree 
structure anyways). Alternatively, only if differently-size voxels are 
permitted (which I think can only come from an octree), it may be useful 
to the store per-voxel cube size (essentially a CollisionMap from 
arm_navigation_msgs / moveit_msgs). In any case, since it's axis-aligned 
boxes, origin information is required.

In 3D Node API, I don't understand the following part or why it's there: 
"For algorithms working with octrees, one point shall be returned for 
every face of the cuboids pointing to the sensor."

In general, what I'm missing is viewpoint information in the final point 
cloud map (and incremental update), associated to each single point 
cloud after aligning it with SLAM. I'm thinking of the following 
scenario: You build a 3D map with a number of point clouds from the 
sensor, register them properly, and then want to build a 3D occupancy 
map e.g. in OctoMap. To clear the space and fill free space information, 
you will need the sensor origin for each single point cloud.

Best,
Armin

-- 
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