2.2.2 SLAM Back-End
The pose estimation of the robot established by the visual odometer inevitably leads to the accumulation of errors. To reduce the error, graph optimization technique is used for pose optimization. When the keyframes are established, the visual BoW is used for loop detection. The keyframes with high similarity to the current frame are obtained from the stored keyframes database, and the pose transformation is calculated. Then, the keyframe poses and map points are as graph nodes, and re-projection errors of the map points to the corresponding keyframes are as edges. Keyframe poses and positions of map points are optimized by minimizing the sum of reprojection errors. We can use g2o framework to implement the optimization.
The backend deals with the accumulative error introduced in the frontend. As mention above, a pose graph is built from successive key frames. In loop closure detection, a new edge is added between two nodes in the pose graph if a loop is detected. These additional edges improve SLAM algorithm in backend optimization process.
The purpose of the backend is to get a globally consistent trajectory and optimize the pose graph. In our approach, we optimize the pose graph by using g2o 1 which is a general framework for graph optimization. g2o has been designed to be easily extended to a wide range of problems, such as several variants of SLAM and bundle adjustment. It runs a minimization of a nonlinear error function that can be represented as a graph.
2.2.3 Map Representation
The system described so far computes a globally consistent trajectory. Using this trajectory, the original data can be used to construct a representation of the environment. Projecting all point measurements into a global 3D coordinate system leads to a straightforward point-based representation. Such a model, however, is highly redundant and requires vast computational and memory resources.
To overcome these limitations, we use 3D occupancy grid maps to represent the environment. In our implementation, we use the octree-based mapping framework OctoMap 3. Voxels are managed in an efficient tree structure that leads to a compact memory representation and inherently allows for map queries at multiple resolutions. The use of probabilistic occupancy estimation furthermore provides a means of coping with noisy measurements and errors in pose estimation.
In contrast to a point-based representation, it represents free space and unmapped areas explicitly which is essential for robot navigation and exploration tasks.