All Projects → ethz-asl → Libpointmatcher

ethz-asl / Libpointmatcher

An "Iterative Closest Point" library for 2-D/3-D mapping in Robotics

Projects that are alternatives of or similar to Libpointmatcher

Dynamic robot localization
Point cloud registration pipeline for robot localization and 3D perception
Stars: ✭ 339 (-65.37%)
Mutual labels:  robotics, lidar
Robotics setup
Setup Ubuntu 18.04, 16.04 and 14.04 with machine learning and robotics software plus user configuration. Includes ceres tensorflow ros caffe vrep eigen cudnn and cuda plus many more.
Stars: ✭ 110 (-88.76%)
Mutual labels:  robotics, ubuntu
Ssl slam2
SSL_SLAM2: Lightweight 3-D Localization and Mapping for Solid-State LiDAR (mapping and localization separated) ICRA 2021
Stars: ✭ 96 (-90.19%)
Mutual labels:  robotics, lidar
M Loam
Robust Odometry and Mapping for Multi-LiDAR Systems with Online Extrinsic Calibration
Stars: ✭ 114 (-88.36%)
Mutual labels:  robotics, lidar
ple
Probabilistic line extraction from 2-D range scan
Stars: ✭ 47 (-95.2%)
Mutual labels:  robotics, lidar
Extrinsic lidar camera calibration
This is a package for extrinsic calibration between a 3D LiDAR and a camera, described in paper: Improvements to Target-Based 3D LiDAR to Camera Calibration. This package is used for Cassie Blue's 3D LiDAR semantic mapping and automation.
Stars: ✭ 149 (-84.78%)
Mutual labels:  robotics, lidar
Awesome Robotic Tooling
Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace.
Stars: ✭ 1,876 (+91.62%)
Mutual labels:  robotics, lidar
direct lidar odometry
Direct LiDAR Odometry: Fast Localization with Dense Point Clouds
Stars: ✭ 202 (-79.37%)
Mutual labels:  robotics, lidar
Onboard Sdk
DJI Onboard SDK Official Repository
Stars: ✭ 669 (-31.66%)
Mutual labels:  robotics, lidar
Pepper Robot Programming
Pepper Programs : Object Detection Real Time without ROS
Stars: ✭ 29 (-97.04%)
Mutual labels:  robotics
Debbuild
Build deb packages from rpm specifications
Stars: ✭ 32 (-96.73%)
Mutual labels:  ubuntu
Gym Panda
An OpenAI Gym Env for Panda
Stars: ✭ 29 (-97.04%)
Mutual labels:  robotics
Particle Filter Prototype
Particle Filter Implementations in Python and C++, with lecture notes and visualizations
Stars: ✭ 29 (-97.04%)
Mutual labels:  robotics
Ansible Supervisor
Ansible role to set up (the latest or a specific version of) supervisor in Debian-like systems
Stars: ✭ 32 (-96.73%)
Mutual labels:  ubuntu
Benchbot
BenchBot is a tool for seamlessly testing & evaluating semantic scene understanding tools in both realistic 3D simulation & on real robots
Stars: ✭ 29 (-97.04%)
Mutual labels:  robotics
Rbdl Orb
RBDL - Rigid Body Dynamics Library - ORB Version - The two main differences to the original rbdl is that this version has error handling and uses polymorphism for constraints
Stars: ✭ 33 (-96.63%)
Mutual labels:  robotics
Halbox
Bash Script to Bootstrap Debian/Ubuntu Servers
Stars: ✭ 28 (-97.14%)
Mutual labels:  ubuntu
Hdl graph slam
3D LIDAR-based Graph SLAM
Stars: ✭ 945 (-3.47%)
Mutual labels:  lidar
Point Cloud Filter
Scripts showcasing filtering techniques applied to point cloud data.
Stars: ✭ 34 (-96.53%)
Mutual labels:  ubuntu
Spotmicro Chinese
spotMicro机器狗中文攻略,纯新手教程!
Stars: ✭ 33 (-96.63%)
Mutual labels:  robotics

alt tag


Documentation and Tutorials

libpointmatcher is a modular library implementing the Iterative Closest Point (ICP) algorithm for aligning point clouds. It has applications in robotics and computer vision. The library is written in C++ for effeciency with bindings in Python.

Quick link for the tutorial pages: Tutorials (also available on readthedocs.org).

Those tutorials are written using Markdown syntax and stored in the project's /doc folder. Their scope ranges from introductory material on performing point cloud registration to instructions for the more experienced developer on how to extend the library's codebase.

Libpointmatcher's source code is fully documented based on doxygen to provide an easy API to developers. An example of this API can be found here, but it is suggested to use the one build for your version in doc/html.

libpointmatcher is being developed by François Pomerleau and Stéphane Magnenat as part of our work at ASL-ETH.

You can read the latest changes in the release notes.

Quick Start

Although we suggest to use the tutorials, here is a quick version of it:

The library has a light dependency list:

  • Eigen version 3, a modern C++ matrix and linear-algebra library,
  • boost version 1.48 and up, portable C++ source libraries,
  • libnabo version 1.0.7, a fast K Nearest Neighbour library for low-dimensional spaces,

and was compiled on:

Compilation & Installation

For beginner users who are not familiar with compiling and installing a library in Linux, go here for detailed instructions on how to compile libpointmatcher from the source code. If you are comfortable with Linux and CMake and have already installed the prerequisites above, the following commands should install libpointmatcher on your system.

mkdir build && cd build
cmake ..
make
sudo make install

Testing

Libpointmatcher ships with a version of the Google testing framework GTest. Unit tests are located in the utest/ directory and are compiled with libpointmatcher (CMake variable BUILD_TESTS must be set to TRUE before compiling). To run the tests and make sure that your compiled version is working correctly, run the test executable in your build directory:

cd build
utest/utest --path ../examples/data/

Linking to external projects.

We mainly develop for cmake projects and we provide example files under examples/demo_cmake/ to help you in your own project. We also provide a QT Creator example in examples/demo_QT/, which manually list all the dependencies in the file demo.pro. You would need to ajust those paths to point at the appropriate locations on your system. For a more detailled procedure, check the Linking Projects to libpointmatcher section.

Bug reporting

Please use our github's issue tracker to report bugs. If you are running the library on Ubuntu, copy-paste the output of the script listVersionsUbuntu.sh to simplify the search of an answer.

File formats

The library support different file formats for importing or exporting data:

  • csv (Comma Separated Values)
  • vtk (Visualization Toolkit Files)
  • ply (Polygon File Format)
  • pcd (Point Cloud Library Format)

Those functionnalities are available without increasing the list of dependencies at the expense of a limited functionality support. For more details, see the tutorial Importing and Exporting Point Clouds. Example executables using those file formats from the command line can be found in the /examples directory and are described here in more details.

Citing

If you use libpointmatcher in an academic context, please cite the following publication:

@article{Pomerleau12comp,
	author = {Pomerleau, Fran{\c c}ois and Colas, Francis and Siegwart, Roland and Magnenat, St{\'e}phane},
	title = {{Comparing ICP Variants on Real-World Data Sets}},
	journal = {Autonomous Robots},
	year = {2013},
	volume = {34},
	number = {3},
	pages = {133--148},
	month = feb
}

and/or

@INPROCEEDINGS{pomerleau11tracking,
	author = {Fran{\c c}ois Pomerleau and St{\'e}phane Magnenat and Francis Colas and Ming Liu and Roland Siegwart},
	title = {Tracking a Depth Camera: Parameter Exploration for Fast ICP},
	booktitle = {Proc. of the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
	publisher = {IEEE Press},
	pages = {3824--3829},
	year = {2011}
}

Extra Reading

If you are interested in learning more about different registration algorithms, we recently put together a literature review surveying multiple solutions. The review is organized in the same way as the library and many examples are provided based on real deployments.

F. Pomerleau, F. Colas and R. Siegwart (2015), "A Review of Point Cloud Registration Algorithms for Mobile Robotics", Foundations and Trends® in Robotics: Vol. 4: No. 1, pp 1-104. https://doi.org/10.1561/2300000035

If you don't have access to the journal, you can download it from here.

More Point Clouds

We also produced those freely available data sets to test different registration solutions:

Challenging data sets for point cloud registration algorithms

alt tag

You can download the files in CSV or VTK formats, which are directly supported by the library I/O module.

Projects and Partners

If you are using libpointmatcher in your project and you would like to have it listed here, please contact François Pomerleau.

For a larger list of work realized with libpointmatcher, please see the page Applications And Publications.

License

libpointmatcher is released under a permissive BSD license. Enjoy!


alt tag

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].