Data Set htwddKogRob-InfReal for Localization and Lifelong Mapping
Creators
- 1. University of Applied Sciences Dresden, Artificial Intelligence and Cognitive Robotics Labs
Description
This small dataset contains real world log files from a 2.2 km long patrol between two points of a previously known map (see htwddKogRob-InfReal.png | 1px \(\widehat{=} \) 0.1m). The environment changes slightly and there are some dynamic obstacles. The figure (see htwddKogRob-InfReal_path.jpg) shows the path driven by the robots according to the real kilometers driven and the patrol points.
The work was first presented in:
- A Fuzzy-based Adaptive Environment Model for Indoor Robot Localization
- Authors: Frank Bahrmann, Sven Hellbach, Hans-Joachim Böhme
- Date of Publication: 2016/10/6
- Conference: Telehealth and Assistive Technology / 847: Intelligent Systems and Robotics
- Publisher: ACTA Press
Additionally, we present a video with the proposed algorithm and an insight of this dataset under:
- youtube.com/AugustDerSmarte
- https://www.youtube.com/watch?v=26NBFN_XeQg
Instructions for use
The zip archive contains ascii files, which contain the log files of the robot observations and robot poses. Since this data set was recorded in a real environment, the logfile provides only the odometry based robot poses. For further information, please refer to the header of the logfile. To simplify the parsing of the files, you can use these two Java snippets:
Laser Range Measurements:
List<Double> ranges = new ArrayList<>(numOfLaserRays);
List<Error> errors = new ArrayList<>(numOfLaserRays);
String s = line.substring(4);
String delimiter = "()";
StringTokenizer tokenizer = new StringTokenizer(s, delimiter);
while(tokenizer.hasMoreElements()){
String[] arr = tokenizer.nextToken().split(";");
boolean usable = (arr[0].equals("0")?false:true);
double range = Double.parseDouble(arr[1]);
ranges.add(range);
errors.add(usable?Error.OKAY:Error.INVALID_MEASUREMENT);
}
Poses:
String poseString = line.split(":")[2];
String[] elements = poseString.substring(1, poseString.length()-1).split(";");
double x = Double.parseDouble(elements[0]);
double y = Double.parseDouble(elements[1]);
double phi = Double.parseDouble(elements[2]);