A C++ library with ROS interface for managing multi-layered 2D grid maps in mobile robotics.
Grid Map is a C++ library with ROS interface for managing two-dimensional grid maps with multiple data layers in mobile robotics. It is designed to store and process various types of environmental data, such as elevation, variance, and traversability, particularly for rough terrain navigation. The library provides efficient data structures, seamless integration with robotics tools, and powerful filtering capabilities for real-time mapping applications.
Robotics researchers and engineers working on mobile robotic mapping, especially those focused on legged robots, autonomous navigation, and terrain analysis. It is also suitable for developers building perception and mapping pipelines within the ROS ecosystem.
Developers choose Grid Map for its efficient circular buffer implementation, which allows non-destructive map repositioning, and its deep integration with Eigen for high-performance data manipulation. Its comprehensive ROS and OpenCV interfaces, along with a flexible filter pipeline, make it a versatile and powerful tool for complex robotic mapping tasks.
Universal grid map library for mobile robotic mapping
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports any number of data layers for 2.5D mapping, allowing diverse data like elevation, color, and traversability in one structure, as highlighted in the overview.
Uses a circular buffer to shift map positions without copying data, crucial for real-time mobile robotics, demonstrated in the move() method animations.
Stores data as Eigen types, enabling direct use of Eigen's linear algebra algorithms for efficient manipulation, with examples like layer arithmetic in the iterators section.
Provides direct conversion to and from ROS messages like PointCloud2 and OccupancyGrid, with packages for costmap_2d, PCL, and OctoMap integration.
Includes a range of filters and mathematical expression evaluation via EigenLab, shown in the filters_demo for tasks like normal vector computation and inpainting.
The README disclaims fitness for purpose and notes it changes often, making it risky for production systems that require reliability and long-term support.
PointCloud2 can only be converted one-way due to an acknowledged issue (#158), restricting bidirectional data flow with common ROS point cloud formats.
Heavily dependent on ROS for core features like visualization and interfaces, adding setup overhead and limiting usability for non-ROS or lightweight projects.