Browse by type
This repo contains the following two applications:
OGM2PGBM: generate pose graph-based maps on 2D occupancy grid maps, which can be created from a TLS Point cloud or a BIM/CAD model.
This pose graph-based maps can be used for accurate localization in changing and dynamic environments, as demostrated in our paper.The following figure shows an overview of the proposed open source method.

GMCL & CARTO/SLAM_toolbox: conbine the fast global localization feature of GMCL with the more accurate pose tracking performance of Cartographer/SLAM_toolboxAdditionally, it includes the packages amcl, gmcl, cartographer and slam_toolbox, so that they can be used and compared with a bagfile that should be located in the mounted directory ~/workspace easily.
================================== - Requirements: Install docker * OGM2PGBM * Principle * Running the code * Args * Step by step * Note * GMCL & CARTO/SLAM_toolbox * Citation * Reference projects
If you plan to use our docker container you only need to install docker.
If you don't want to use docker and you might see the content of the docker file and install the respective dependencies on your local machine.
The workflow of OGM2PGBM is as follows, see the function new_map_callback(self, grid_map) for details:
self.skeletonize())self.CPP())/laserscan topic (see self.raytracer())It produces /tf, /clock, /odom, /scan topics with frame robot_map, robot_odom and robot_base_link.
Since /tf is needed, python2.7 is used in this script.
This package is a standard ros package and can be launched with roslaunch command.
args:
- map_file: default value is /root/workspace/map/OGM_empty.pgm.yaml
- record: default value is false, the recorded bag can be found at /root/.ros/ogm2pgbm_sensordata.bag
git clone https://github.com/MigVega/Ogm2Pgbm.git
cd Ogm2Pgbm
With the launch file, we only need three steps to generate the base pbstream/posegraph based-map. 1. run into the docker
bash autorun.sh
Note: If you get the error docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
install nvidia-container-toolkit with the following command sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
roslaunch ogm2pgbm ogm2pgbm.launch map_file:=/root/workspace/map/OGM_empty.pgm.yaml record:=true
The target bag file will be stored under /root/.ros/ogm2pgbm_sensordata.bag. By default, the demo bag will also be copied into this place. So you can also skip the second step if you want.
roslaunch cartographer_ros ogm2pgbm_my_robot.launch bag_filename:=/root/.ros/ogm2pgbm_sensordata.bag
You can also launch Slam_toolbox. (There will be some error report in the terminal, just ignore them and wait for some seconds.)
roslaunch slam_toolbox ogm2pgbm.launch bag_filename:=/root/.ros/ogm2pgbm_sensordata.bag

The target pbstream file will be generated automatically at /root/.ros/ogm2pgbm_sensordata.bag.pbstream after .
For slam_toolbox, you also need to click on the serialization button on the rviz plugin. The target files are also located at /root/.ros.
shell
catkin_make_isolated --install --use-ninja --pkg ogm2pgbm
source install_isolated/setup.bashcartographer_ros/configuration_files/ogm2pgbm_my_robot.lua)/scan or /odom in launch file if neededThis project combines the pros of the two algorithms, using the fast global localization feature of GMCL and the accurate pose tracking performance of Cartographer or SLAM toolbox.
~/catkin_ws/src/gmcl_carto/gmcl_carto.py./root/workspace.python ~/catkin_ws/src/gmcl_carto/gmcl_carto.py. gmcl_carto/gmcl_slamtoolbox.py instead.If you use this library for an academic work, please cite the original paper.
@inproceedings{ vega:2022:2DLidarLocalization,
author = {Vega, M. and Braun, A. and Borrmann, A.},
title = {Occupancy Grid Map to Pose Graph-based Map: Robust BIM-based 2D- LiDAR Localization for Lifelong Indoor Navigation in Changing and Dynamic Environments},
booktitle = {Proc. of European Conference on Product and Process Modeling 2022},
year = {2022},
month = {Sep},
url = {https://publications.cms.bgu.tum.de/2022_ECPPM_Vega.pdf},
}
$ claude mcp add Ogm2Pgbm \
-- python -m otcore.mcp_server <graph>