This code is a modified version of glam code (v39). We add a glass detection algorithm and integrated it with the existing SLAM algorithm to produce maps with detected glass panels marked as solid wall objects. We developed and tested our algorithm and code on an unmodified PR2 robot platform.
Clone the repository in a working catkin workspace.
run ./configure
under gmapping_glass/gmapping_export
directory, then do cd ..;make -f Makefile.gmapping
.
After the libraries is compiled, go back to catkin root directory and compile the application with catkin_make
.
roslaunch slam_glass slam_glass_pr2.launch
You can download our test dataset here and run it against slam_glass service node. Simply extract the bag files from the compressed file and use rosplay
to playback the data files. You should hopefully produce a map similar to the following figure.
Figure 1. SLAM with glass detection.
If the same dataset is run against the default SLAM ROS package, the generated map will be similar to Figure 2.
Figure 2. Default SLAM without glass detection.
Detected glasses can be visualised using rviz
program. You will need to turn on the visualisation feature by uncommenting line 80 in CMakeFiles.txt
and recompile slam_glass source code. The detected glass is marked in green colour in the grid map (see Figure 3). You can also visualse the robot trajectory by adding a visual marker and subscribe to /slam_glass/robot_trajectory
.
Figure 3. Visualise detected glass and robot trajectory.
If you use this code in your project, please cite the following reference.
@article{Wang201797,
title = "Detecting glass in Simultaneous Localisation and Mapping",
journal = "Robotics and Autonomous Systems",
volume = "88",
pages = "97 - 103",
year = "2017",
issn = "0921-8890",
doi = "http://dx.doi.org/10.1016/j.robot.2016.11.003",
author = "Xun Wang and JianGuo Wang"
}