Return to Carano Antonio's personal page
Mobile robotics represents one of the most dynamic and promising fields in modern engineering, with applications ranging from logistics to autonomous driving, as well as service robotics and exploration in unstructured environments. One of the fundamental aspects to ensure the autonomy and reliability of a mobile robot is its ability to accurately localize itself within the environment in which it operates. This capability is an essential prerequisite for motion planning, autonomous navigation, and safe interaction with the surrounding space.
The internship project aimed to develop a Simultaneous Localization and Mapping (SLAM) system based on 3D sensors, designed to accurately estimate the robot’s trajectory and incrementally build a map of the environment. Specifically, the work was divided into three main phases: odometry and keyframe generation, place recognition, and point cloud registration.
The odometry and keyframe generation phase represents the first stage of the system and was aimed at estimating the robot’s motion in real time through the sequential processing of LiDAR point clouds. Odometry provides an incremental estimate of the robot’s pose by computing local transformations between consecutive scans (using KISS-ICP), allowing the vehicle’s trajectory to be tracked. At the same time, the system selects significant frames (keyframes) based on spatial displacement criteria, reducing data redundancy and optimizing the subsequent processing stages. These keyframes represent key positions along the trajectory and are used as references for map construction and place recognition.
The place recognition phase aimed to identify the revisiting of previously explored areas, a necessary condition for detecting loop closures and correcting the drift accumulated by odometry. For this component, the Scan Context library was adopted. The method converts each LiDAR point cloud into a two-dimensional descriptor that compactly represents the geometric structure of the surrounding environment, allowing for rapid comparison of different scenes through similarity measures.
In particular, the descriptor is organized in a polar grid (radial and angular), and the search for similar candidates is performed in two stages: a preliminary fast comparison phase using ring keys, which are average radial vectors stored in a KD-tree, followed by a more detailed Scan Context matching phase based on the similarity measure between the columns of the descriptive matrices using cosine distance. If the distance between two descriptors falls below a predefined threshold, it is assumed that the two scans originate from the same place, thereby validating a possible loop closure.
Eventually, the point cloud registration phase aimed to verify and geometrically align the keyframes associated with places recognized as potential matches. This process consists of finding the rigid transformation (rotation and translation) that best overlaps two point clouds acquired at different times, thereby confirming the validity of the loop closure and improving the global consistency of the map.
From a technical implementation perspective, the internship involved the development of a ROS 2 node, named ira_slam, which integrates the various components of the system. The node was designed to modularly handle sensor data acquisition (odometry and point clouds), keyframe selection, and descriptor extraction for place recognition. In particular, an odometry callback computes the robot’s displacement with respect to its previous position and, once a predefined threshold is exceeded, triggers the storage of a new keyframe. The point cloud callback, in turn, processes the LiDAR data, associating them with the valid keyframes and inserting them into the processing pipeline.
This work made it possible to gain a solid understanding of modern techniques for 3D localization and mapping, delving into LiDAR odometry methods, place recognition based on geometric descriptors, and point cloud registration.