CAD2SLAM: Adaptive Projection Between CAD Blueprints and SLAM Maps
Martín Bayón-Gutiérrez, Natalia Prieto-Fernández, María Teresa García-Ordás, José Alberto Benítez-Andrades, Héctor Alaiz-Moretón, Giorgio Grisetti
IEEE Robotics and Automation Letters, Volume: 10, 2025
DOI: 10.1109/LRA.2024.3522838
Coming Soon
Open-source ROS2 implementation will be available soon
Installation
Install the SRRG Suite in your catkin workspace
Clone the project: cd ~/workspace/src/ & git clone https://github.com/martin-bayon/CAD2SLAM
Compile the project: cd ~/workspace/ & catkin build
Run the example
Prepare your terminal: source ~/workspace/devel/setup.bash & cd ~/workspace/src/cad2slam/config
Run CAD2SLAM projector: rosrun cad2slam launch_projector demo.conf
Prepare your own environment
Prepare your terminal: source ~/workspace/devel/setup.bash & cd ~/workspace/src/cad2slam/config
Place your .png and .yaml files for the CAD and SLAM maps on ~/workspace/src/cad2slam/config/data/maps/
Clone the demo config file: cp demo.conf my.conf
Modify your config file: confviz -c my.conf
Create the correspondences set: rosrun cad2slam launch_correspondence_finder my.conf
Prepare your environment: ./launcher.srrg my.conf
Run CAD2SLAM projector: rosrun cad2slam launch_projector my.conf
Replicate our results:
Prepare your terminal: source ~/workspace/devel/setup.bash & cd ~/workspace/src/cad2slam/config
Run the experiments: rosrun cad2slam launch_experiment_1 <environment.conf>
Each environment is composed of 4 files
2 .png files for the CAD and SLAM maps of the environments
2 .yaml files for the CAD and SLAM maps containing meta information about the png files
4 test environments
Demo environment, sintetically generated
DIAG (Dipartimento di Ingegneria informatica, automatica e gestionale) 2nd floor, Sapienza Università di Roma, Italy
EIII-0 (Escuela de Ingeniería Industrial, Informática y Aeroespacial) ground floor, Universidad de León, Spain
EIII-3 (Escuela de Ingeniería Industrial, Informática y Aeroespacial) 3rd floor, Universidad de León, Spain
MIC (Módulo de investigación cibernética) 1st floor, Universidad de León, Spain
Computer-Aided Design (CAD) Maps
Demo
DIAG
EIII-0
EIII-3
MIC
Robot-generated (SLAM) Maps
Demo
DIAG
EIII-0
EIII-3
MIC
Correspondence points for the CAD and SLAM maps are provided.
The correspondence pair set is fed to CAD2SLAM and allows for an adaptative projection between the CAD and SLAM maps.
The number of correspondence points may vary depending on the environment and the application.
Generally, a higher number of correspondences in a region will produce a more acurate projection in such region.
Since neither the CAD blueprint nor the SLAM map can be considered as ground truth, we have developed an experiment in which a robot trajectory on the CAD blueprint is projected onto the SLAM map and sinthetic LiDAR measurements in both representations of the environment are compared in a point-to-point fashion.
The results allows to indirectly evaluate the mapping accuracy given that, under perfect conditions, the observations from both maps should be identical.
Diagram of the experiment
The steps of the experiment are as follow:
Given start and goal positions in the CAD map, each step of the robot trajectory is projected onto the SLAM map using CAD2SLAM
For each step of the trajectory, a simulated LiDAR pointcloud is generated, both in the CAD and SLAM maps
The pointcloud for the CAD map is projected onto the SLAM map using CAD2SLAM
The resulting pointclouds are compared in a point-to-point fashion
The mean square error for each LiDAR reading is used to colorize the following plots
From left to right:
Path on the CAD/SLAM map (Green)
Number of outliers in each step of the path
Point-to-point value
The dataset, is compressed in a zip file with the following structure:
├── correspondences
│ ├── demo_correspondences.data
│ ├── diag_correspondences.data
│ ├── eiii-0_correspondences.data
│ ├── eiii-3_correspondences.data
│ └── mic_correspondences.data
│
└── maps
├── demo_cad.png
├── demo_cad.yaml
├── demo_slam.png
├── demo_slam.yaml
├── diag_cad.png
├── diag_cad.yaml
├── diag_slam.png
├── diag_slam.yaml
├── eiii-0_cad.png
├── eiii-0_cad.yaml
├── eiii-0_slam.png
├── eiii-0_slam.yaml
├── eiii-3_cad.png
├── eiii-3_cad.yaml
├── eiii-3_slam.png
├── eiii-3_slam.yaml
├── mic_cad.png
├── mic_cad.yaml
├── mic_slam.png
└── mic_slam.yaml
Where:
The correspondences folder contains the correspondence points pairs for the CAD blueprint and the SLAM map
The maps folder contains the .png image of the environment and its correspoding .yaml metadata file
The experiments results are included in a zip file with the following structure:
├── demo_001
│ ├── cad2slam_clouds
│ ├── cad_clouds
│ ├── info.txt
│ ├── results
│ └── slam_clouds
│
├── demo_002
│ ├── cad2slam_clouds
│ ├── cad_clouds
│ ├── info.txt
│ ├── results
│ └── slam_clouds
│
└── env_XXX
├── cad2slam_clouds
├── cad_clouds
├── info.txt
├── results
└── slam_clouds
Where:
Each experiment is stored in an individual folder containing the name of the environment and the experiment_id
cad2slam_clouds folder contains the CAD blueprint LiDAR readings after been projected onto the SLAM map
cad_clouds folder contains the CAD blueprint LiDAR readings
results folder contain the experiments results in txt format, as well as the plots of the experiment
slam_clouds folder contains the CAD blueprint LiDAR readings after been projected onto the SLAM map