==== SLAM ==== SLAM (Simultaneous Localization and Mapping) is a technique used in robotics to build a map of an unknown environment while simultaneously keeping track of the robot's location within it. This is a key technology for autonomous robots that need to operate in unknown environments. :ref:`localization` :ref:`mapping` .. _loop_closure: Loop Closure ============ Loop Closure is the process by which a robot recognizes that it has returned to a previously visited location in its environment, even after traveling a significant distance or through complex paths. Detecting loop closure is essential for **reducing drift** in the robot’s estimated position and **improving the accuracy of the map** it is building. Imagine being blindfolded, and then transported at the back of a car with armed kidnappers, only to be released near the Eiffel Tower. Suddenly, you realize "Hey, I know this place!" and you're (somewhat) relieved [`Source `_]. .. figure:: images/loop_closure.gif :width: 450px :alt: Loop Closure Loop Closure. `Source `_ Libraries and ROS packages ========================== * **SLAM Toolbox** is a set of tools and capabilities for 2D SLAM `GitHub `_ It is also the currently supported ROS2-SLAM library. See tutorials for working with it in `ROS 2 Nav2 here `_. * RTAB-Map (Real-Time Appearance-Based Mapping) is a RGB-D, Stereo and Lidar Graph-Based SLAM approach. `GitHub `_ * `nav_msgs/OccupancyGrid `_ - represents a 2-D grid map, in which each cell represents the probability of occupancy * **GMapping** (G means grid because this algorithm uses a grid map) is a highly efficient Rao-Blackwellized particle filter to learn grid maps from laser range data `GitHub `_