libpointmatcher package from libpointmatcher repo

libpointmatcher

Package Summary

Tags No category tags.
Version 1.3.1
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-asl/libpointmatcher.git
VCS Type git
VCS Version master
Last Updated 2023-05-26
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

libpointmatcher is a modular ICP library, useful for robotics and computer vision.

Additional Links

Maintainers

  • Francois Pomerleau

Authors

No additional authors.

Mentioned in Awesome LIDAR Awesome LIDAR; Mentioned in Awesome Robotics Libraries Awesome Robotics Libraries; Mentioned in Awesome Robotics Awesome Robotics banner


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: * Ubuntu (see how) * Mac OS X (see how) * Windows (see how - partially supported)

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

CHANGELOG

Changelog for package libpointmatcher

1.3.1 (2019-03-04)

  • Added documentation for people using ROS.
  • Increased libnabo minimal version to 1.0.7.
  • Added interface to inform if maximum number of iterations was reached.
  • Fixed portability issue of the FileLogger.
  • Fixed unit tests on Windows.
  • Fixed parameter-less modules having \'unknown\' as class name.
  • Updated Windows compilation tutorial.
  • Fixed compilation problems on Windows.
  • Fixed PointToPlan error residual.
  • Changed DOI resolver link in documentation.
  • Added validation for the input transformation matrix in ICP.cpp.
  • Removed duplication of PointToPoint compute in PointToPointWithCov.
  • Added the RemoveSensorBias filter.
  • Splitted ErrorMinimizersImpl.cpp into multiple files.

1.3.0 (2018-10-26)

  • Removed some boost utilities supported by c++11
  • Replaced raw pointers by std smart pointers

1.2.4 (2018-10-15)

  • Support of Eigen 3.3
  • Introduced SurfaceNormalDataPointsFilter, OctreeGridDataPointsFilter and NormalSpaceDataPointsFilter
  • A lot of bugs were fixed

1.2.3 (2015-05-15)

  • Support including other versions of YAML in compilation units that also include the YAML version packed with libpointmatcher (PR #80)
  • Changed immutability concept for SupportLabel to support MSVC 2012 (#78)
  • Fixed build system related bugs (#79, #70, ..).
  • updated build_map example, added better error message, added better information prints
  • cleaned CMakeList and added missing dependencies for external projetcs
  • avoid possibility of building dynamic library on MacOS
  • updated Mac build instructions
  • Tim3xx laser support on Simple Noise filter (#64)
  • Modified default covariance return in PointToPlaneWithCovErrorMinimizer (#59)
  • update usage text and retab
  • Removed compilation warnings
  • add unit test for ICPSequence
  • added application of reference data points filters for ICPSequence objects (#56)
  • Merge branch \'master\' of github.com:ethz-asl/libpointmatcher
  • fix problem with libnabo linking (#54)
  • Adapted the code to handle 2D point clouds and decided to split the initial/icp/complete transformation matrices in 3 different files. It should be easier to post process the transformations.
  • Changed matrix for matrices as output suffix
  • Changed the ICP example (pmicp) to accept initial translation/rotation input and allow to output the transformation matrices
  • CutBelowLevelDataPointsFilter (PR #48)
  • split unit tests (PR #47)
  • Delete roadmap.txt
  • change year to 2014
  • correct bug in DataPoints operator==
  • add a method to remove features or descriptors
  • add empty function for removing features and descriptors
  • add functions to DataPoints avoiding error on rows and cols
  • fill missing documentation
  • resolve warning from unsigned to int in IO.cpp
  • add extra empty line in utest
  • add extra unit tests and resolve remaining bugs
  • Refactored how to load PLY files
  • Allow 2D descriptors (##45)
  • Allow saving 2D descriptors coming from a 2Dmap, that are converted to 3D when writing to the file but needed after if we want to load the map as 2D.
  • Contributors: Francis Colas, Francisco J Perez Grau, Fran

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

System Dependencies

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged libpointmatcher at answers.ros.org

libpointmatcher package from libpointmatcher repo

libpointmatcher

Package Summary

Tags No category tags.
Version 1.3.1
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-asl/libpointmatcher.git
VCS Type git
VCS Version master
Last Updated 2023-05-26
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

libpointmatcher is a modular ICP library, useful for robotics and computer vision.

Additional Links

Maintainers

  • Francois Pomerleau

Authors

No additional authors.

Mentioned in Awesome LIDAR Awesome LIDAR; Mentioned in Awesome Robotics Libraries Awesome Robotics Libraries; Mentioned in Awesome Robotics Awesome Robotics banner


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: * Ubuntu (see how) * Mac OS X (see how) * Windows (see how - partially supported)

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

CHANGELOG

Changelog for package libpointmatcher

1.3.1 (2019-03-04)

  • Added documentation for people using ROS.
  • Increased libnabo minimal version to 1.0.7.
  • Added interface to inform if maximum number of iterations was reached.
  • Fixed portability issue of the FileLogger.
  • Fixed unit tests on Windows.
  • Fixed parameter-less modules having \'unknown\' as class name.
  • Updated Windows compilation tutorial.
  • Fixed compilation problems on Windows.
  • Fixed PointToPlan error residual.
  • Changed DOI resolver link in documentation.
  • Added validation for the input transformation matrix in ICP.cpp.
  • Removed duplication of PointToPoint compute in PointToPointWithCov.
  • Added the RemoveSensorBias filter.
  • Splitted ErrorMinimizersImpl.cpp into multiple files.

1.3.0 (2018-10-26)

  • Removed some boost utilities supported by c++11
  • Replaced raw pointers by std smart pointers

1.2.4 (2018-10-15)

  • Support of Eigen 3.3
  • Introduced SurfaceNormalDataPointsFilter, OctreeGridDataPointsFilter and NormalSpaceDataPointsFilter
  • A lot of bugs were fixed

1.2.3 (2015-05-15)

  • Support including other versions of YAML in compilation units that also include the YAML version packed with libpointmatcher (PR #80)
  • Changed immutability concept for SupportLabel to support MSVC 2012 (#78)
  • Fixed build system related bugs (#79, #70, ..).
  • updated build_map example, added better error message, added better information prints
  • cleaned CMakeList and added missing dependencies for external projetcs
  • avoid possibility of building dynamic library on MacOS
  • updated Mac build instructions
  • Tim3xx laser support on Simple Noise filter (#64)
  • Modified default covariance return in PointToPlaneWithCovErrorMinimizer (#59)
  • update usage text and retab
  • Removed compilation warnings
  • add unit test for ICPSequence
  • added application of reference data points filters for ICPSequence objects (#56)
  • Merge branch \'master\' of github.com:ethz-asl/libpointmatcher
  • fix problem with libnabo linking (#54)
  • Adapted the code to handle 2D point clouds and decided to split the initial/icp/complete transformation matrices in 3 different files. It should be easier to post process the transformations.
  • Changed matrix for matrices as output suffix
  • Changed the ICP example (pmicp) to accept initial translation/rotation input and allow to output the transformation matrices
  • CutBelowLevelDataPointsFilter (PR #48)
  • split unit tests (PR #47)
  • Delete roadmap.txt
  • change year to 2014
  • correct bug in DataPoints operator==
  • add a method to remove features or descriptors
  • add empty function for removing features and descriptors
  • add functions to DataPoints avoiding error on rows and cols
  • fill missing documentation
  • resolve warning from unsigned to int in IO.cpp
  • add extra empty line in utest
  • add extra unit tests and resolve remaining bugs
  • Refactored how to load PLY files
  • Allow 2D descriptors (##45)
  • Allow saving 2D descriptors coming from a 2Dmap, that are converted to 3D when writing to the file but needed after if we want to load the map as 2D.
  • Contributors: Francis Colas, Francisco J Perez Grau, Fran

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

System Dependencies

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged libpointmatcher at answers.ros.org

libpointmatcher package from libpointmatcher repo

libpointmatcher

Package Summary

Tags No category tags.
Version 1.3.1
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-asl/libpointmatcher.git
VCS Type git
VCS Version master
Last Updated 2023-05-26
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

libpointmatcher is a modular ICP library, useful for robotics and computer vision.

Additional Links

Maintainers

  • Francois Pomerleau

Authors

No additional authors.

Mentioned in Awesome LIDAR Awesome LIDAR; Mentioned in Awesome Robotics Libraries Awesome Robotics Libraries; Mentioned in Awesome Robotics Awesome Robotics banner


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: * Ubuntu (see how) * Mac OS X (see how) * Windows (see how - partially supported)

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

CHANGELOG

Changelog for package libpointmatcher

1.3.1 (2019-03-04)

  • Added documentation for people using ROS.
  • Increased libnabo minimal version to 1.0.7.
  • Added interface to inform if maximum number of iterations was reached.
  • Fixed portability issue of the FileLogger.
  • Fixed unit tests on Windows.
  • Fixed parameter-less modules having \'unknown\' as class name.
  • Updated Windows compilation tutorial.
  • Fixed compilation problems on Windows.
  • Fixed PointToPlan error residual.
  • Changed DOI resolver link in documentation.
  • Added validation for the input transformation matrix in ICP.cpp.
  • Removed duplication of PointToPoint compute in PointToPointWithCov.
  • Added the RemoveSensorBias filter.
  • Splitted ErrorMinimizersImpl.cpp into multiple files.

1.3.0 (2018-10-26)

  • Removed some boost utilities supported by c++11
  • Replaced raw pointers by std smart pointers

1.2.4 (2018-10-15)

  • Support of Eigen 3.3
  • Introduced SurfaceNormalDataPointsFilter, OctreeGridDataPointsFilter and NormalSpaceDataPointsFilter
  • A lot of bugs were fixed

1.2.3 (2015-05-15)

  • Support including other versions of YAML in compilation units that also include the YAML version packed with libpointmatcher (PR #80)
  • Changed immutability concept for SupportLabel to support MSVC 2012 (#78)
  • Fixed build system related bugs (#79, #70, ..).
  • updated build_map example, added better error message, added better information prints
  • cleaned CMakeList and added missing dependencies for external projetcs
  • avoid possibility of building dynamic library on MacOS
  • updated Mac build instructions
  • Tim3xx laser support on Simple Noise filter (#64)
  • Modified default covariance return in PointToPlaneWithCovErrorMinimizer (#59)
  • update usage text and retab
  • Removed compilation warnings
  • add unit test for ICPSequence
  • added application of reference data points filters for ICPSequence objects (#56)
  • Merge branch \'master\' of github.com:ethz-asl/libpointmatcher
  • fix problem with libnabo linking (#54)
  • Adapted the code to handle 2D point clouds and decided to split the initial/icp/complete transformation matrices in 3 different files. It should be easier to post process the transformations.
  • Changed matrix for matrices as output suffix
  • Changed the ICP example (pmicp) to accept initial translation/rotation input and allow to output the transformation matrices
  • CutBelowLevelDataPointsFilter (PR #48)
  • split unit tests (PR #47)
  • Delete roadmap.txt
  • change year to 2014
  • correct bug in DataPoints operator==
  • add a method to remove features or descriptors
  • add empty function for removing features and descriptors
  • add functions to DataPoints avoiding error on rows and cols
  • fill missing documentation
  • resolve warning from unsigned to int in IO.cpp
  • add extra empty line in utest
  • add extra unit tests and resolve remaining bugs
  • Refactored how to load PLY files
  • Allow 2D descriptors (##45)
  • Allow saving 2D descriptors coming from a 2Dmap, that are converted to 3D when writing to the file but needed after if we want to load the map as 2D.
  • Contributors: Francis Colas, Francisco J Perez Grau, Fran

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

System Dependencies

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged libpointmatcher at answers.ros.org

libpointmatcher package from libpointmatcher repo

libpointmatcher

Package Summary

Tags No category tags.
Version 1.3.1
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-asl/libpointmatcher.git
VCS Type git
VCS Version master
Last Updated 2023-05-26
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

libpointmatcher is a modular ICP library, useful for robotics and computer vision.

Additional Links

Maintainers

  • Francois Pomerleau

Authors

No additional authors.

Mentioned in Awesome LIDAR Awesome LIDAR; Mentioned in Awesome Robotics Libraries Awesome Robotics Libraries; Mentioned in Awesome Robotics Awesome Robotics banner


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: * Ubuntu (see how) * Mac OS X (see how) * Windows (see how - partially supported)

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

CHANGELOG

Changelog for package libpointmatcher

1.3.1 (2019-03-04)

  • Added documentation for people using ROS.
  • Increased libnabo minimal version to 1.0.7.
  • Added interface to inform if maximum number of iterations was reached.
  • Fixed portability issue of the FileLogger.
  • Fixed unit tests on Windows.
  • Fixed parameter-less modules having \'unknown\' as class name.
  • Updated Windows compilation tutorial.
  • Fixed compilation problems on Windows.
  • Fixed PointToPlan error residual.
  • Changed DOI resolver link in documentation.
  • Added validation for the input transformation matrix in ICP.cpp.
  • Removed duplication of PointToPoint compute in PointToPointWithCov.
  • Added the RemoveSensorBias filter.
  • Splitted ErrorMinimizersImpl.cpp into multiple files.

1.3.0 (2018-10-26)

  • Removed some boost utilities supported by c++11
  • Replaced raw pointers by std smart pointers

1.2.4 (2018-10-15)

  • Support of Eigen 3.3
  • Introduced SurfaceNormalDataPointsFilter, OctreeGridDataPointsFilter and NormalSpaceDataPointsFilter
  • A lot of bugs were fixed

1.2.3 (2015-05-15)

  • Support including other versions of YAML in compilation units that also include the YAML version packed with libpointmatcher (PR #80)
  • Changed immutability concept for SupportLabel to support MSVC 2012 (#78)
  • Fixed build system related bugs (#79, #70, ..).
  • updated build_map example, added better error message, added better information prints
  • cleaned CMakeList and added missing dependencies for external projetcs
  • avoid possibility of building dynamic library on MacOS
  • updated Mac build instructions
  • Tim3xx laser support on Simple Noise filter (#64)
  • Modified default covariance return in PointToPlaneWithCovErrorMinimizer (#59)
  • update usage text and retab
  • Removed compilation warnings
  • add unit test for ICPSequence
  • added application of reference data points filters for ICPSequence objects (#56)
  • Merge branch \'master\' of github.com:ethz-asl/libpointmatcher
  • fix problem with libnabo linking (#54)
  • Adapted the code to handle 2D point clouds and decided to split the initial/icp/complete transformation matrices in 3 different files. It should be easier to post process the transformations.
  • Changed matrix for matrices as output suffix
  • Changed the ICP example (pmicp) to accept initial translation/rotation input and allow to output the transformation matrices
  • CutBelowLevelDataPointsFilter (PR #48)
  • split unit tests (PR #47)
  • Delete roadmap.txt
  • change year to 2014
  • correct bug in DataPoints operator==
  • add a method to remove features or descriptors
  • add empty function for removing features and descriptors
  • add functions to DataPoints avoiding error on rows and cols
  • fill missing documentation
  • resolve warning from unsigned to int in IO.cpp
  • add extra empty line in utest
  • add extra unit tests and resolve remaining bugs
  • Refactored how to load PLY files
  • Allow 2D descriptors (##45)
  • Allow saving 2D descriptors coming from a 2Dmap, that are converted to 3D when writing to the file but needed after if we want to load the map as 2D.
  • Contributors: Francis Colas, Francisco J Perez Grau, Fran

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

System Dependencies

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged libpointmatcher at answers.ros.org

libpointmatcher package from libpointmatcher repo

libpointmatcher

Package Summary

Tags No category tags.
Version 1.3.1
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-asl/libpointmatcher.git
VCS Type git
VCS Version master
Last Updated 2023-05-26
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

libpointmatcher is a modular ICP library, useful for robotics and computer vision.

Additional Links

Maintainers

  • Francois Pomerleau

Authors

No additional authors.

Mentioned in Awesome LIDAR Awesome LIDAR; Mentioned in Awesome Robotics Libraries Awesome Robotics Libraries; Mentioned in Awesome Robotics Awesome Robotics banner


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: * Ubuntu (see how) * Mac OS X (see how) * Windows (see how - partially supported)

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

CHANGELOG

Changelog for package libpointmatcher

1.3.1 (2019-03-04)

  • Added documentation for people using ROS.
  • Increased libnabo minimal version to 1.0.7.
  • Added interface to inform if maximum number of iterations was reached.
  • Fixed portability issue of the FileLogger.
  • Fixed unit tests on Windows.
  • Fixed parameter-less modules having \'unknown\' as class name.
  • Updated Windows compilation tutorial.
  • Fixed compilation problems on Windows.
  • Fixed PointToPlan error residual.
  • Changed DOI resolver link in documentation.
  • Added validation for the input transformation matrix in ICP.cpp.
  • Removed duplication of PointToPoint compute in PointToPointWithCov.
  • Added the RemoveSensorBias filter.
  • Splitted ErrorMinimizersImpl.cpp into multiple files.

1.3.0 (2018-10-26)

  • Removed some boost utilities supported by c++11
  • Replaced raw pointers by std smart pointers

1.2.4 (2018-10-15)

  • Support of Eigen 3.3
  • Introduced SurfaceNormalDataPointsFilter, OctreeGridDataPointsFilter and NormalSpaceDataPointsFilter
  • A lot of bugs were fixed

1.2.3 (2015-05-15)

  • Support including other versions of YAML in compilation units that also include the YAML version packed with libpointmatcher (PR #80)
  • Changed immutability concept for SupportLabel to support MSVC 2012 (#78)
  • Fixed build system related bugs (#79, #70, ..).
  • updated build_map example, added better error message, added better information prints
  • cleaned CMakeList and added missing dependencies for external projetcs
  • avoid possibility of building dynamic library on MacOS
  • updated Mac build instructions
  • Tim3xx laser support on Simple Noise filter (#64)
  • Modified default covariance return in PointToPlaneWithCovErrorMinimizer (#59)
  • update usage text and retab
  • Removed compilation warnings
  • add unit test for ICPSequence
  • added application of reference data points filters for ICPSequence objects (#56)
  • Merge branch \'master\' of github.com:ethz-asl/libpointmatcher
  • fix problem with libnabo linking (#54)
  • Adapted the code to handle 2D point clouds and decided to split the initial/icp/complete transformation matrices in 3 different files. It should be easier to post process the transformations.
  • Changed matrix for matrices as output suffix
  • Changed the ICP example (pmicp) to accept initial translation/rotation input and allow to output the transformation matrices
  • CutBelowLevelDataPointsFilter (PR #48)
  • split unit tests (PR #47)
  • Delete roadmap.txt
  • change year to 2014
  • correct bug in DataPoints operator==
  • add a method to remove features or descriptors
  • add empty function for removing features and descriptors
  • add functions to DataPoints avoiding error on rows and cols
  • fill missing documentation
  • resolve warning from unsigned to int in IO.cpp
  • add extra empty line in utest
  • add extra unit tests and resolve remaining bugs
  • Refactored how to load PLY files
  • Allow 2D descriptors (##45)
  • Allow saving 2D descriptors coming from a 2Dmap, that are converted to 3D when writing to the file but needed after if we want to load the map as 2D.
  • Contributors: Francis Colas, Francisco J Perez Grau, Fran

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged libpointmatcher at answers.ros.org

libpointmatcher package from libpointmatcher repo

libpointmatcher

Package Summary

Tags No category tags.
Version 1.3.1
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-asl/libpointmatcher.git
VCS Type git
VCS Version master
Last Updated 2023-05-26
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

libpointmatcher is a modular ICP library, useful for robotics and computer vision.

Additional Links

Maintainers

  • Francois Pomerleau

Authors

No additional authors.

Mentioned in Awesome LIDAR Awesome LIDAR; Mentioned in Awesome Robotics Libraries Awesome Robotics Libraries; Mentioned in Awesome Robotics Awesome Robotics banner


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: * Ubuntu (see how) * Mac OS X (see how) * Windows (see how - partially supported)

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

CHANGELOG

Changelog for package libpointmatcher

1.3.1 (2019-03-04)

  • Added documentation for people using ROS.
  • Increased libnabo minimal version to 1.0.7.
  • Added interface to inform if maximum number of iterations was reached.
  • Fixed portability issue of the FileLogger.
  • Fixed unit tests on Windows.
  • Fixed parameter-less modules having \'unknown\' as class name.
  • Updated Windows compilation tutorial.
  • Fixed compilation problems on Windows.
  • Fixed PointToPlan error residual.
  • Changed DOI resolver link in documentation.
  • Added validation for the input transformation matrix in ICP.cpp.
  • Removed duplication of PointToPoint compute in PointToPointWithCov.
  • Added the RemoveSensorBias filter.
  • Splitted ErrorMinimizersImpl.cpp into multiple files.

1.3.0 (2018-10-26)

  • Removed some boost utilities supported by c++11
  • Replaced raw pointers by std smart pointers

1.2.4 (2018-10-15)

  • Support of Eigen 3.3
  • Introduced SurfaceNormalDataPointsFilter, OctreeGridDataPointsFilter and NormalSpaceDataPointsFilter
  • A lot of bugs were fixed

1.2.3 (2015-05-15)

  • Support including other versions of YAML in compilation units that also include the YAML version packed with libpointmatcher (PR #80)
  • Changed immutability concept for SupportLabel to support MSVC 2012 (#78)
  • Fixed build system related bugs (#79, #70, ..).
  • updated build_map example, added better error message, added better information prints
  • cleaned CMakeList and added missing dependencies for external projetcs
  • avoid possibility of building dynamic library on MacOS
  • updated Mac build instructions
  • Tim3xx laser support on Simple Noise filter (#64)
  • Modified default covariance return in PointToPlaneWithCovErrorMinimizer (#59)
  • update usage text and retab
  • Removed compilation warnings
  • add unit test for ICPSequence
  • added application of reference data points filters for ICPSequence objects (#56)
  • Merge branch \'master\' of github.com:ethz-asl/libpointmatcher
  • fix problem with libnabo linking (#54)
  • Adapted the code to handle 2D point clouds and decided to split the initial/icp/complete transformation matrices in 3 different files. It should be easier to post process the transformations.
  • Changed matrix for matrices as output suffix
  • Changed the ICP example (pmicp) to accept initial translation/rotation input and allow to output the transformation matrices
  • CutBelowLevelDataPointsFilter (PR #48)
  • split unit tests (PR #47)
  • Delete roadmap.txt
  • change year to 2014
  • correct bug in DataPoints operator==
  • add a method to remove features or descriptors
  • add empty function for removing features and descriptors
  • add functions to DataPoints avoiding error on rows and cols
  • fill missing documentation
  • resolve warning from unsigned to int in IO.cpp
  • add extra empty line in utest
  • add extra unit tests and resolve remaining bugs
  • Refactored how to load PLY files
  • Allow 2D descriptors (##45)
  • Allow saving 2D descriptors coming from a 2Dmap, that are converted to 3D when writing to the file but needed after if we want to load the map as 2D.
  • Contributors: Francis Colas, Francisco J Perez Grau, Fran

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

System Dependencies

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged libpointmatcher at answers.ros.org

No version for distro ardent. Known supported distros are highlighted in the buttons above.
No version for distro bouncy. Known supported distros are highlighted in the buttons above.
No version for distro crystal. Known supported distros are highlighted in the buttons above.
No version for distro eloquent. Known supported distros are highlighted in the buttons above.
No version for distro dashing. Known supported distros are highlighted in the buttons above.

libpointmatcher package from libpointmatcher repo

libpointmatcher

Package Summary

Tags No category tags.
Version 1.3.1
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-asl/libpointmatcher.git
VCS Type git
VCS Version master
Last Updated 2023-05-26
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

libpointmatcher is a modular ICP library, useful for robotics and computer vision.

Additional Links

Maintainers

  • Francois Pomerleau

Authors

No additional authors.

Mentioned in Awesome LIDAR Awesome LIDAR; Mentioned in Awesome Robotics Libraries Awesome Robotics Libraries; Mentioned in Awesome Robotics Awesome Robotics banner


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: * Ubuntu (see how) * Mac OS X (see how) * Windows (see how - partially supported)

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

CHANGELOG

Changelog for package libpointmatcher

1.3.1 (2019-03-04)

  • Added documentation for people using ROS.
  • Increased libnabo minimal version to 1.0.7.
  • Added interface to inform if maximum number of iterations was reached.
  • Fixed portability issue of the FileLogger.
  • Fixed unit tests on Windows.
  • Fixed parameter-less modules having \'unknown\' as class name.
  • Updated Windows compilation tutorial.
  • Fixed compilation problems on Windows.
  • Fixed PointToPlan error residual.
  • Changed DOI resolver link in documentation.
  • Added validation for the input transformation matrix in ICP.cpp.
  • Removed duplication of PointToPoint compute in PointToPointWithCov.
  • Added the RemoveSensorBias filter.
  • Splitted ErrorMinimizersImpl.cpp into multiple files.

1.3.0 (2018-10-26)

  • Removed some boost utilities supported by c++11
  • Replaced raw pointers by std smart pointers

1.2.4 (2018-10-15)

  • Support of Eigen 3.3
  • Introduced SurfaceNormalDataPointsFilter, OctreeGridDataPointsFilter and NormalSpaceDataPointsFilter
  • A lot of bugs were fixed

1.2.3 (2015-05-15)

  • Support including other versions of YAML in compilation units that also include the YAML version packed with libpointmatcher (PR #80)
  • Changed immutability concept for SupportLabel to support MSVC 2012 (#78)
  • Fixed build system related bugs (#79, #70, ..).
  • updated build_map example, added better error message, added better information prints
  • cleaned CMakeList and added missing dependencies for external projetcs
  • avoid possibility of building dynamic library on MacOS
  • updated Mac build instructions
  • Tim3xx laser support on Simple Noise filter (#64)
  • Modified default covariance return in PointToPlaneWithCovErrorMinimizer (#59)
  • update usage text and retab
  • Removed compilation warnings
  • add unit test for ICPSequence
  • added application of reference data points filters for ICPSequence objects (#56)
  • Merge branch \'master\' of github.com:ethz-asl/libpointmatcher
  • fix problem with libnabo linking (#54)
  • Adapted the code to handle 2D point clouds and decided to split the initial/icp/complete transformation matrices in 3 different files. It should be easier to post process the transformations.
  • Changed matrix for matrices as output suffix
  • Changed the ICP example (pmicp) to accept initial translation/rotation input and allow to output the transformation matrices
  • CutBelowLevelDataPointsFilter (PR #48)
  • split unit tests (PR #47)
  • Delete roadmap.txt
  • change year to 2014
  • correct bug in DataPoints operator==
  • add a method to remove features or descriptors
  • add empty function for removing features and descriptors
  • add functions to DataPoints avoiding error on rows and cols
  • fill missing documentation
  • resolve warning from unsigned to int in IO.cpp
  • add extra empty line in utest
  • add extra unit tests and resolve remaining bugs
  • Refactored how to load PLY files
  • Allow 2D descriptors (##45)
  • Allow saving 2D descriptors coming from a 2Dmap, that are converted to 3D when writing to the file but needed after if we want to load the map as 2D.
  • Contributors: Francis Colas, Francisco J Perez Grau, Fran

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

System Dependencies

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged libpointmatcher at answers.ros.org

No version for distro lunar. Known supported distros are highlighted in the buttons above.
No version for distro jade. Known supported distros are highlighted in the buttons above.

libpointmatcher package from libpointmatcher repo

libpointmatcher

Package Summary

Tags No category tags.
Version 1.3.1
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-asl/libpointmatcher.git
VCS Type git
VCS Version master
Last Updated 2023-05-26
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

libpointmatcher is a modular ICP library, useful for robotics and computer vision.

Additional Links

Maintainers

  • Francois Pomerleau

Authors

No additional authors.

Mentioned in Awesome LIDAR Awesome LIDAR; Mentioned in Awesome Robotics Libraries Awesome Robotics Libraries; Mentioned in Awesome Robotics Awesome Robotics banner


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: * Ubuntu (see how) * Mac OS X (see how) * Windows (see how - partially supported)

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

CHANGELOG

Changelog for package libpointmatcher

1.3.1 (2019-03-04)

  • Added documentation for people using ROS.
  • Increased libnabo minimal version to 1.0.7.
  • Added interface to inform if maximum number of iterations was reached.
  • Fixed portability issue of the FileLogger.
  • Fixed unit tests on Windows.
  • Fixed parameter-less modules having \'unknown\' as class name.
  • Updated Windows compilation tutorial.
  • Fixed compilation problems on Windows.
  • Fixed PointToPlan error residual.
  • Changed DOI resolver link in documentation.
  • Added validation for the input transformation matrix in ICP.cpp.
  • Removed duplication of PointToPoint compute in PointToPointWithCov.
  • Added the RemoveSensorBias filter.
  • Splitted ErrorMinimizersImpl.cpp into multiple files.

1.3.0 (2018-10-26)

  • Removed some boost utilities supported by c++11
  • Replaced raw pointers by std smart pointers

1.2.4 (2018-10-15)

  • Support of Eigen 3.3
  • Introduced SurfaceNormalDataPointsFilter, OctreeGridDataPointsFilter and NormalSpaceDataPointsFilter
  • A lot of bugs were fixed

1.2.3 (2015-05-15)

  • Support including other versions of YAML in compilation units that also include the YAML version packed with libpointmatcher (PR #80)
  • Changed immutability concept for SupportLabel to support MSVC 2012 (#78)
  • Fixed build system related bugs (#79, #70, ..).
  • updated build_map example, added better error message, added better information prints
  • cleaned CMakeList and added missing dependencies for external projetcs
  • avoid possibility of building dynamic library on MacOS
  • updated Mac build instructions
  • Tim3xx laser support on Simple Noise filter (#64)
  • Modified default covariance return in PointToPlaneWithCovErrorMinimizer (#59)
  • update usage text and retab
  • Removed compilation warnings
  • add unit test for ICPSequence
  • added application of reference data points filters for ICPSequence objects (#56)
  • Merge branch \'master\' of github.com:ethz-asl/libpointmatcher
  • fix problem with libnabo linking (#54)
  • Adapted the code to handle 2D point clouds and decided to split the initial/icp/complete transformation matrices in 3 different files. It should be easier to post process the transformations.
  • Changed matrix for matrices as output suffix
  • Changed the ICP example (pmicp) to accept initial translation/rotation input and allow to output the transformation matrices
  • CutBelowLevelDataPointsFilter (PR #48)
  • split unit tests (PR #47)
  • Delete roadmap.txt
  • change year to 2014
  • correct bug in DataPoints operator==
  • add a method to remove features or descriptors
  • add empty function for removing features and descriptors
  • add functions to DataPoints avoiding error on rows and cols
  • fill missing documentation
  • resolve warning from unsigned to int in IO.cpp
  • add extra empty line in utest
  • add extra unit tests and resolve remaining bugs
  • Refactored how to load PLY files
  • Allow 2D descriptors (##45)
  • Allow saving 2D descriptors coming from a 2Dmap, that are converted to 3D when writing to the file but needed after if we want to load the map as 2D.
  • Contributors: Francis Colas, Francisco J Perez Grau, Fran

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged libpointmatcher at answers.ros.org

libpointmatcher package from libpointmatcher repo

libpointmatcher

Package Summary

Tags No category tags.
Version 1.3.1
License BSD
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ethz-asl/libpointmatcher.git
VCS Type git
VCS Version master
Last Updated 2023-05-26
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

libpointmatcher is a modular ICP library, useful for robotics and computer vision.

Additional Links

Maintainers

  • Francois Pomerleau

Authors

No additional authors.

Mentioned in Awesome LIDAR Awesome LIDAR; Mentioned in Awesome Robotics Libraries Awesome Robotics Libraries; Mentioned in Awesome Robotics Awesome Robotics banner


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: * Ubuntu (see how) * Mac OS X (see how) * Windows (see how - partially supported)

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

CHANGELOG

Changelog for package libpointmatcher

1.3.1 (2019-03-04)

  • Added documentation for people using ROS.
  • Increased libnabo minimal version to 1.0.7.
  • Added interface to inform if maximum number of iterations was reached.
  • Fixed portability issue of the FileLogger.
  • Fixed unit tests on Windows.
  • Fixed parameter-less modules having \'unknown\' as class name.
  • Updated Windows compilation tutorial.
  • Fixed compilation problems on Windows.
  • Fixed PointToPlan error residual.
  • Changed DOI resolver link in documentation.
  • Added validation for the input transformation matrix in ICP.cpp.
  • Removed duplication of PointToPoint compute in PointToPointWithCov.
  • Added the RemoveSensorBias filter.
  • Splitted ErrorMinimizersImpl.cpp into multiple files.

1.3.0 (2018-10-26)

  • Removed some boost utilities supported by c++11
  • Replaced raw pointers by std smart pointers

1.2.4 (2018-10-15)

  • Support of Eigen 3.3
  • Introduced SurfaceNormalDataPointsFilter, OctreeGridDataPointsFilter and NormalSpaceDataPointsFilter
  • A lot of bugs were fixed

1.2.3 (2015-05-15)

  • Support including other versions of YAML in compilation units that also include the YAML version packed with libpointmatcher (PR #80)
  • Changed immutability concept for SupportLabel to support MSVC 2012 (#78)
  • Fixed build system related bugs (#79, #70, ..).
  • updated build_map example, added better error message, added better information prints
  • cleaned CMakeList and added missing dependencies for external projetcs
  • avoid possibility of building dynamic library on MacOS
  • updated Mac build instructions
  • Tim3xx laser support on Simple Noise filter (#64)
  • Modified default covariance return in PointToPlaneWithCovErrorMinimizer (#59)
  • update usage text and retab
  • Removed compilation warnings
  • add unit test for ICPSequence
  • added application of reference data points filters for ICPSequence objects (#56)
  • Merge branch \'master\' of github.com:ethz-asl/libpointmatcher
  • fix problem with libnabo linking (#54)
  • Adapted the code to handle 2D point clouds and decided to split the initial/icp/complete transformation matrices in 3 different files. It should be easier to post process the transformations.
  • Changed matrix for matrices as output suffix
  • Changed the ICP example (pmicp) to accept initial translation/rotation input and allow to output the transformation matrices
  • CutBelowLevelDataPointsFilter (PR #48)
  • split unit tests (PR #47)
  • Delete roadmap.txt
  • change year to 2014
  • correct bug in DataPoints operator==
  • add a method to remove features or descriptors
  • add empty function for removing features and descriptors
  • add functions to DataPoints avoiding error on rows and cols
  • fill missing documentation
  • resolve warning from unsigned to int in IO.cpp
  • add extra empty line in utest
  • add extra unit tests and resolve remaining bugs
  • Refactored how to load PLY files
  • Allow 2D descriptors (##45)
  • Allow saving 2D descriptors coming from a 2Dmap, that are converted to 3D when writing to the file but needed after if we want to load the map as 2D.
  • Contributors: Francis Colas, Francisco J Perez Grau, Fran

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged libpointmatcher at answers.ros.org

No version for distro kinetic. Known supported distros are highlighted in the buttons above.