Skip to content
forked from ctu-mrs/RMS

Code for RA-L paper "RMS: Redundancy-Minimizing Point Cloud Sampling for Real-Time Pose Estimation"

License

Notifications You must be signed in to change notification settings

leggedrobotics/RMS

This branch is 1 commit ahead of ctu-mrs/RMS:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

55d07f0 · Dec 13, 2024

History

13 Commits
Jun 13, 2024
Jul 23, 2024
Dec 12, 2023
Dec 13, 2024
Jun 13, 2024
Dec 13, 2024
May 7, 2024
May 7, 2024
May 7, 2024
Apr 24, 2024
Jun 13, 2024
May 7, 2024
May 7, 2024

Repository files navigation

RMS: Redundancy-Minimizing Point Cloud Sampling

RMS

  • quick sampling of 3D LiDAR point clouds
    • pipelines using RMS are fast (low latency) and accurate
  • designed for real-time LiDAR-based 6-DoF odometry/SLAM pipelines
    • both point-based (ICP-like) and feature-based (LOAM-like) methods
  • single parameter only: lambda
    • depends on the SLAM pipeline (and not the environment!)
    • tuned just once given your pipeline
  • deterministic (no data for learning needed)
  • when is it not going to perform well (most probably):
    • the data have large orientation changes between two consecutive frames (tens of degrees)
    • under heavy noise

Paper

Published in IEEE RA-L --- pdf.

Code & How to

Installation

  1. Install prerequisities (mrs_lib, PCL):
  curl https://ctu-mrs.github.io/ppa-stable/add_ppa.sh | bash
  apt-get install ros-noetic-mrs-lib ros-noetic-pcl-ros
  1. Clone and build via catkin
  cd <ROS1_WORKSPACE>/src
  git clone [email protected]:ctu-mrs/RMS.git
  catkin build

How to use

  1. Launch as nodelet:
roslaunch rms rms_nodelet.launch NS:=<NAMESPACE> points_in:=<POINTS IN TOPIC> points_out:=<POINTS OUT TOPIC>
  1. Use as library in your code:
  • add rms among dependencies in CMakeLists.txt and package.xml and include the <rms/rms.h> header file
  • basic usage:
    #include <rms/rms.h>
    ...
    // Initialize
    ros::NodeHandle nh;
    mrs_lib::ParamLoader param_loader(nh, "RMS");
    RMS rms = RMS(param_loader);
    ...
    // Use
    sensor_msgs::PointCloud2::Ptr msg = ...;
    rms->sample(msg); // 'msg' now contains sampled data
  • example usage: RMSNodelet implemented in src/rms_nodelet.cpp

Run it yourself

To complement the in-paper experiments, we offer comparison on the MulRan dataset by plugging its 3D LiDAR (Ouster OS1-64) data to the KISS-ICP odometry. For ROS Noetic, you may follow this workflow:

  1. Click here to download the Sejong01 sequence rosbag (beware: 56 GB).
  2. Install RMS (see Installation above).
  3. Clone, compile, and source our KISS-ICP fork (minor changes made for ROS Noetic and launching).
cd ~/ROS1_WORKSPACE/src
git clone [email protected]:petrapa6/kiss-icp.git
cd kiss_icp
git checkout noetic
catkin build --this
source ~/ROS1_WORKSPACE/devel/setup.sh
  1. Launch as:
  roslaunch kiss_icp odometry.launch bagfile:=<PATH TO ROSBAG> topic:=/mulran/velo/pointclouds use_RMS:=[true | false]

Results for the Sejong01 experiment here. APE of the experiment (voxelization in blue, RMS in orange):

ape rms

How to cite

@article{petracek2024rms,
  author  = {Petracek, Pavel and Alexis, Kostas and Saska, Martin},
  title   = {{RMS: Redundancy-Minimizing Point Cloud Sampling for Real-Time Pose Estimation}},
  journal = {IEEE Robotics and Automation Letters},
  year    = {2024},
  volume  = {9},
  number  = {6},
  pages   = {5230--5237},
  doi     = {10.1109/LRA.2024.3389820}
}

Acknowledgment

This work was supported

  • by CTU grant no. SGS23/177/OHK3/3T/13,
  • by the Czech Science Foundation under research project No. 23-06162M,
  • by the European Union under the project Robotics and advanced industrial production (reg. no. CZ.02.01.01/00/22_008/0004590), and
  • by the Research Council of Norway Award NO-321435.

About

Code for RA-L paper "RMS: Redundancy-Minimizing Point Cloud Sampling for Real-Time Pose Estimation"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 91.3%
  • CMake 8.7%