Repo symbol

rmcl repository

localization robotics cuda ros mesh lidar rtx optix embree triangle-mesh micp rmagine mesh-localization micp-l mesh-icp ray-casting-correspondences
Repo symbol

rmcl repository

localization robotics cuda ros mesh lidar rtx optix embree triangle-mesh micp rmagine mesh-localization micp-l mesh-icp ray-casting-correspondences
Repo symbol

rmcl repository

localization robotics cuda ros mesh lidar rtx optix embree triangle-mesh micp rmagine mesh-localization micp-l mesh-icp ray-casting-correspondences
Repo symbol

rmcl repository

localization robotics cuda ros mesh lidar rtx optix embree triangle-mesh micp rmagine mesh-localization micp-l mesh-icp ray-casting-correspondences
Repo symbol

rmcl repository

localization robotics cuda ros mesh lidar rtx optix embree triangle-mesh micp rmagine mesh-localization micp-l mesh-icp ray-casting-correspondences rmcl rmcl_msgs rmcl_ros

Repository Summary

Description Mobile Robot Localization in 3D Triangle Meshes
Checkout URI https://github.com/uos/rmcl.git
VCS Type git
VCS Version humble
Last Updated 2025-05-17
Dev Status UNKNOWN
Released UNRELEASED
Tags localization robotics cuda ros mesh lidar rtx optix embree triangle-mesh micp rmagine mesh-localization micp-l mesh-icp ray-casting-correspondences
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rmcl 2.2.0
rmcl_msgs 2.2.0
rmcl_ros 2.2.0

README

RMCL

Software Tools for Mobile Robot Localization in 3D Meshes

Code   •   Documentation   •   Videos   •   Issues   •   Examples


This repository contains algorithms designed for map-based robot localization, specifically when dealing with maps composed of triangle meshes or complete scene graphs. These maps may be provided by architects who have designed the building in which the robot operates, or they can be autonomously generated by the robot through Simultaneous Localization and Mapping (SLAM) methods. It’s crucial to note that map-based localization differs from SLAM; it focuses on estimating the robot’s pose within a potentially large map, whether the initial pose is roughly known (tracking) or entirely unknown from the start aka kidnapped robot problem. Map-based localization is essential for precisely planning the robot’s missions on a given map.

MICP-L - Pose Tracking in Meshes

MICP-L: Mesh-based ICP for Robot Localization Using Hardware-Accelerated Ray Casting. An approach to directly register range sensor data to a mesh in order to localize a mobile robot using hardware-accelerated ray casting correspondences (See publications).

Teaser

Hilti: 6DoF Localization MulRan: Large-scale scenes
MICP-L Hilti Video MICP-L MulRan Video

Requirements:

  • At least one range sensor is equipped and running
  • Triangle mesh as map
  • Prior odometry estimation of the robot given as TF

IMU prior is also possible as long as it is integrated as TF-Transform, e.g. with Madgwick Filter.

Publication

Please reference the following paper when using the MICP-L method in your scientific work.

@inproceedings{mock2024micpl,
  title={{MICP-L}: Mesh-based ICP for Robot Localization Using Hardware-Accelerated Ray Casting}, 
  author={Mock, Alexander and Wiemann, Thomas and Pütz, Sebastian and Hertzberg, Joachim},
  booktitle={2024 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)}, 
  year={2024},
  pages={10664-10671},
  doi={10.1109/IROS58592.2024.10802360}
}

The paper is available on IEEE Xplore and as preprint on arXiv. The experiments are available at https://github.com/amock/micp_experiments, but they are primarily compatible with the ROS 1 version.
See the older branches or commits for reference.

Running micp_localization_node (Theoretical Usage)

Note: The following is a theoretical usage example meant to illustrate the general setup.
For actual working examples and detailed instructions, please refer to:
https://github.com/amock/rmcl_examples

The micp_localization_node starts the process of localizing the robot within a triangle mesh using MICP, based on a given pose estimate. It is typically launched via a launch file:

<launch>
  <node pkg="rmcl_ros" exec="micp_localization_node" name="rmcl_micpl" output="screen">
    <param name="map_file" value="/path/to/mesh/map.dae" />
    <param from="/path/to/config/file.yaml" />
  </node>
</launch>

Once the launch file is started, the output in Terminal should look as follows: ```console [micp_localization_node-2] ------------------------- [micp_localization_node-2] --- MAP --- [micp_localization_node-2] ------------------------- [micp_localization_node-2] - file: /home/amock/rmcl_ws/install/rmcl_examples_maps/share/rmcl_examples_maps/maps/tray.dae [micp_localization_node-2] - meshes: 1 [micp_localization_node-2] Cube-mesh [micp_localization_node-2] - vertices, faces: 30, 10 [micp_localization_node-2] For more infos enter in terminal: [micp_localization_node-2] $ rmagine_map_info /home/amock/rmcl_ws/install/rmcl_examples_maps/share/rmcl_examples_maps/maps/tray.dae [micp_localization_node-2] [micp_localization_node-2] -------------------------- [micp_localization_node-2] --- BACKENDS --- [micp_localization_node-2] -------------------------- File truncated at 100 lines [see the full file](https://github.com/uos/rmcl/tree/humble/README.md)
Repo symbol

rmcl repository

localization robotics cuda ros mesh lidar rtx optix embree triangle-mesh micp rmagine mesh-localization micp-l mesh-icp ray-casting-correspondences
Repo symbol

rmcl repository

localization robotics cuda ros mesh lidar rtx optix embree triangle-mesh micp rmagine mesh-localization micp-l mesh-icp ray-casting-correspondences
Repo symbol

rmcl repository

localization robotics cuda ros mesh lidar rtx optix embree triangle-mesh micp rmagine mesh-localization micp-l mesh-icp ray-casting-correspondences
Repo symbol

rmcl repository

localization robotics cuda ros mesh lidar rtx optix embree triangle-mesh micp rmagine mesh-localization micp-l mesh-icp ray-casting-correspondences