From Péter Fankhauser via ros-users@:
We'd like to announce our new Grid Map package, developed to manage two-dimensional grid maps with multiple data layers and designed for mobile robotic mapping in rough terrain navigation.
The package is available for ROS Indigo, Jade, and Kinetic and can be installed from the ROS PPA. After multiple development cycles and use in many projects, the library is well tested and stable.
Features:
Multi-layered: Developed for universal 2.5-dimensional grid mapping with support for any number of layers.
Efficient map re-positioning: Data storage is implemented as two-dimensional circular buffer. This allows for non-destructive shifting of the map's position (e.g. to follow the robot) without copying data in memory.
Based on Eigen: Grid map data is stored as Eigen data types. Users can apply available Eigen algorithms directly to the mapdata for versatile and efficient data manipulation.
Convenience functions: Several helper methods allow for convenient and memory safe cell data access. For example, iterator functions for rectangular, circular, polygonal regions and lines are implemented.
ROS interface: Grid maps can be directly converted to and from ROS message types such as PointCloud2, OccupancyGrid, GridCells, and our custom GridMap message.
OpenCV interface: Grid maps can be seamlessly converted from and to OpenCV image types to make use of the tools provided by OpenCV.
Visualizations: The grid_map_rviz_plugin renders grid maps as 3d surface plots (height maps) in RViz. Additionally, the grid_map_visualization package helps to visualize grid maps as point clouds, occupancy grids, grid cells etc.
Source code, documentation, and tutorials available at https://github.com/ethz-asl/grid_map