This package consists of several nodes and tools to perform a 6D Monte Carlo Localization of robots equipped with a 3D LiDAR in 3D TSDF maps. The sensor update is massively accelerated by a GPU-based implementation, but can also be executed on the CPU.
- ROS Noetic (ros-noetic-desktop-full)
- ROS packages: See
package.xml
- OpenMP (for CPU acceleration)
- CUDA (optional, recommended for acceleration)
- Clone this repository into your ROS workspace
$ git clone --recursive https://github.com/uos/tsdf_localization.git
-
Make sure have also installed the required external packages or also cloned them into the local ROS workspace
-
Build the ROS workspace
$ catkin build
A quick startup including how to use tsdf_localization within your package is shown here: https://github.com/uos/tsdf_localization_demo.git
Please reference the following papers when using tsdf_localization
in your scientific work.
@inproceedings{eisoldt2023,
author={Eisoldt, Marc and Mock, Alexander and Porrmann, Mario and Wiemann, Thomas},
booktitle={2023 Seventh IEEE International Conference on Robotic Computing (IRC)},
title={{Towards 6D MCL for LiDARs in 3D TSDF Maps on Embedded Systems with GPUs}},
year={2023},
pages={158-165},
doi={10.1109/IRC59093.2023.00035}
}
Starts MCL in a given TSDF map.
initialpose (geometry_msgs/PoseWithCovarianceStamped)
Initial pose guess can be provided using RViz.
/cloud (sensor_msgs/PointCloud2)
PointCloud topic for sensor update.
/odom (nav_msgs/Odometry)
Odometry message for motion update.
(optional) /imu_data (sensor_msgs/Imu)
Start global localization:
/global_localization
We are happy about issues and pull requests or other feedback. Please let us know if something did not work out as expected.