Subjective Local Maps for Hybrid Metric-Topological SLAM, Robotics and Autonomous Systems, 2009 – (PDF).
Abstract: Hybrid maps where local metric sub-maps are kept in the nodes of a graph-based topological structure are gaining relevance as the focus of robot Simultaneous Localization and Mapping (SLAM) shifts towards spatial scalability and long-term operation. In this paper we examine the applicability of spectral graph partitioning techniques to automatically generate metric sub-maps by establishing groups in the sequence of observations gathered by the robot. One of the main aims of this work is to provide a probabilistically grounded interpretation of such a partitioning technique in the context of generating these local maps. We also discuss how to apply it to different kinds of sensory data (stereo images and laser range scans) and how to consider them simultaneously. An important feature of our approach is that it implicitly takes into account the intrinsic characteristics of the sensors, such as the sensor field of view, to perform the partitioning instead of applying heuristics supplied by a human as in other works, and thus the robot builds “subjective” local maps. The ideas presented here are supported by experimental results from a real mobile robot as well as simulations for statistical analysis. We discuss the effects of considering different combinations of sensors in the resulting clustering of the environment.
Bibtex:
@article{blanco2009slm,
title={{Subjective local maps for hybrid metric-topological SLAM}},
author={Blanco, JL and Gonz{\'a}lez, J. and Fern{\'a}ndez-Madrigal, J.A.},
journal={Robotics and Autonomous Systems},
volume={57},
number={1},
pages={64--74},
year={2009},
publisher={Elsevier}
}
2. Source code
The main method described in the paper, partitioning a map using a spectral graph-cut technique, is implemented in the class mrpt::slam::CIncrementalMapPartitioner. The generic algorithm for partitioning any graph given its adjacency matrix is implemented in mrpt::math::CGraphPartitioner.
There is a ready-to-use application, map-partition, which takes a map as input (a “.simplemap” file), and processes it to build the adjacency matrix and generate the partitions. It also shows graphically the original and the rearranged weight matrix (Ω in the paper).
3. The experiments
3.1. Statistical results
The statistical experiments reported in the paper have been obtained by invoking 150 times the following MRPT programs:
$ simul-landmarks
$ kf-slam ./partition_EKF-SLAM_test.ini
The first program simul-landmarks, takes its parameters from “config.ini” and generates a synthetic dataset “out.rawlog”.
Next, the application kf-slam executes the EKF filter and generates a file “OUT_KF-SLAM/ERRORS.txt” with an analysis of the information losses for each partitioning algorithm (refer to the paper for details).
The contents of the configuration files is:
config.ini
<br />; Parameters for the Landmark-Map Rawlog simulator.<br />[Params] nSteps=250 ; Number of steps to simulate<br />circularPath=0 ; Circular/Square paths<br />squarePathLength=10000 ; "Steps" or length of the square path (integer)<br />; If file is empty, generate them at random from parameters below:<br />; file contains one row X Y Z per landmark.<br />loadLandmarksFromFile=<br />odometryNoiseXY_std=0.01 ; In meters (1 sigma)<br />odometryNoisePhi_std_deg=0.1 ; In degs (1 sigma)<br />minSensorDistance=0<br />maxSensorDistance=5<br />fieldOfView_deg=180<br />stdRange=0.01 ; The "sigma" of the sensor in range<br />stdYaw_deg=0.1 ; The "sigma" of the sensor in yaw (degrees)<br />stdPitch_deg=0.0 ; The "sigma" of the sensor in pitch (degrees)<br />outFile=simLandmarkPath.rawlog<br />outDir=OUT <br /><br />[RANDOMSET_1]<br />; Number of landmarks if there is no file<br />nLandmarks=60<br />min_x=0<br />max_x=55<br />min_y=-2<br />max_y=2<br />min_z=0<br />max_z=0<br /> read more