diff --git a/README.md b/README.md index d879a3de..4901ed71 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ The library is written in C++ for efficiency with [bindings in Python](doc/index       [![Mentioned in Awesome Robotics](https://awesome.re/mentioned-badge.svg)](https://github.com/ahundt/awesome-robotics#point-clouds)
- +             LIDAR                             @@ -48,9 +48,9 @@ The library is written in C++ for efficiency with [bindings in Python](doc/index ### Supported OS And Architecture _libpointmatcher_ is tested on our build system under the following architecture and OS: -- Ubuntu bionic (18.04), focal (20.04) and jammy (22.04) +- Ubuntu bionic (18.04), focal (20.04) and jammy (22.04) - x86 and arm64/v8 - + Note: - _libpointmatcher_ reportedly works on MacOs OsX (latest) and Windows (latest) @@ -66,7 +66,7 @@ Execute the following to clone the repository with its submodule: ```shell git clone --recurse-submodules https://github.com/norlab-ulaval/libpointmatcher.git ``` -If _libpointmatcher_ was previously cloned, execute the following to fetch its new submodule +If _libpointmatcher_ was previously cloned, execute the following to fetch its new submodule ```shell git submodule update --remote --recursive --init ``` @@ -79,12 +79,12 @@ on your workstation to speed up your local development workflow. [//]: # (====Body=================================================================================) # Documentation and Tutorials - + **Quick link for the tutorial pages: [Tutorials](http://libpointmatcher.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. +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](https://norlab.ulaval.ca/libpointmatcher-doc/), but it is suggested to use the one build for your version in `doc/html`. +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](https://norlab.ulaval.ca/libpointmatcher-doc/), but it is suggested to use the one build for your version in `doc/html`. libpointmatcher was orginaly developed by [François Pomerleau](mailto:f.pomerleau@gmail.com) and [Stéphane Magnenat](http://stephane.magnenat.net) as part of our work at [ASL-ETH](http://www.asl.ethz.ch). It is now maintained by the Northern Robotics Laboratory ([Norlab](https://norlab.ulaval.ca/)), led by François Pomerleau. @@ -102,7 +102,7 @@ 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](/doc/CompilationUbuntu.md)) * Mac OS X ([see how](/doc/CompilationMac.md)) @@ -131,9 +131,9 @@ bash lpm_install_docker_tools.bash ``` -### Compilation & Installation +### Compilation & Installation -For beginner users unfamiliar with compiling and installing a library in Linux, go [here](doc/CompilationUbuntu.md) for detailed instructions on compiling libpointmatcher from the source code. +For beginner users unfamiliar with compiling and installing a library in Linux, go [here](doc/CompilationUbuntu.md) for detailed instructions on compiling libpointmatcher from the source code. For conveniences, you can use the provided installer script for ubuntu ```shell @@ -214,7 +214,7 @@ and/or 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 +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](https://www.researchgate.net/publication/277558596_A_Review_of_Point_Cloud_Registration_Algorithms_for_Mobile_Robotics). @@ -226,7 +226,7 @@ We also produced those freely available data sets to test different registration ![alt tag](http://projects.asl.ethz.ch/datasets/lib/exe/fetch.php?cache=&media=laserregistration:asldataset_weblarge.jpg) -You can download the files in CSV or VTK formats, which are directly supported by the library I/O module. +You can download the files in CSV or VTK formats, which are directly supported by the library I/O module. # Projects and Partners @@ -241,7 +241,8 @@ If you are using libpointmatcher in your project and you would like to have it l * [Norlab](https://norlab.ulaval.ca/) is maintaining and using the library for its research on autonomous navigation in harsh environments. * [ANYbotics AG](https://www.anybotics.com) is investigating autonomous navigation algorithms using this library. * [Point Laz Mining LiDAR Expert](https://www.pointlaz.com/) is scanning mine shafts to ensure infrastructure safety. - + * [Point Laz Mining LiDAR Expert](https://www.pointlaz.com/) is scanning mine shafts to ensure infrastructure safety. + * [DREAM lab](https://dream.georgiatech-metz.fr/research/woodseer/) use libpointmatcher to reconstruct wood logs in 3D. For a larger list of work realized with libpointmatcher, please see the page [Applications And Publications](/doc/ApplicationsAndPub.md). diff --git a/build_system/.env.build_matrix.dependencies b/build_system/.env.build_matrix.dependencies index f06b22cb..72696fd2 100644 --- a/build_system/.env.build_matrix.dependencies +++ b/build_system/.env.build_matrix.dependencies @@ -10,8 +10,8 @@ NBS_EXECUTE_BUILD_MATRIX_OVER_COMPOSE_FILE=docker-compose.dependencies.yaml # # Libpointmatcher version # -# 'latest' is the latest push to the libpointmatcher master branch -NBS_MATRIX_REPOSITORY_VERSIONS=( '1.4.2' 'latest' ) +# 'latest' is the most recent push to the current libpointmatcher checkout branch +NBS_MATRIX_REPOSITORY_VERSIONS=( '1.4.3' 'latest' ) # # Libpointmatcher dependencies CMAKE_BUILD_TYPE @@ -32,7 +32,7 @@ NBS_MATRIX_SUPPORTED_OS=( 'ubuntu' ) # Ubuntu release: https://ubuntu.com/about/release-cycle # bionic=18.04 focal=20.04 jammy=22.04 # Part of the build matrix used for PR -NBS_MATRIX_UBUNTU_SUPPORTED_VERSIONS=( 'bionic' 'focal' 'jammy' ) +NBS_MATRIX_UBUNTU_SUPPORTED_VERSIONS=( 'jammy' 'focal' 'bionic' ) # # iceboxed: implement other OS support (ref task NMO-213 OsX arm64-Darwin and NMO-210 OsX x86 CD components) #NBS_MATRIX_OSX_SUPPORTED_VERSIONS=( 'monterey' 'ventura' ) diff --git a/build_system/.env.build_matrix.libpointmatcher b/build_system/.env.build_matrix.libpointmatcher index 0aabd817..3055ef0c 100644 --- a/build_system/.env.build_matrix.libpointmatcher +++ b/build_system/.env.build_matrix.libpointmatcher @@ -10,8 +10,7 @@ NBS_EXECUTE_BUILD_MATRIX_OVER_COMPOSE_FILE=docker-compose.libpointmatcher.yaml # # Libpointmatcher version # -# 'latest' is the latest push to the libpointmatcher master branch -#NBS_MATRIX_REPOSITORY_VERSIONS=( '1.4.2' 'latest' ) +# 'latest' is the most recent push to the current libpointmatcher checkout branch NBS_MATRIX_REPOSITORY_VERSIONS=( 'latest' ) # @@ -32,7 +31,7 @@ NBS_MATRIX_SUPPORTED_OS=( 'ubuntu' ) # # Ubuntu release: https://ubuntu.com/about/release-cycle # bionic=18.04 focal=20.04 jammy=22.04 -NBS_MATRIX_UBUNTU_SUPPORTED_VERSIONS=( 'bionic' 'focal' 'jammy' ) +NBS_MATRIX_UBUNTU_SUPPORTED_VERSIONS=( 'jammy' 'focal' 'bionic' ) # # iceboxed: implement other OS support (ref task NMO-213 OsX arm64-Darwin and NMO-210 OsX x86 CD components) #NBS_MATRIX_OSX_SUPPORTED_VERSIONS=( 'monterey' 'ventura' ) diff --git a/build_system/.env.build_matrix.libpointmatcher.bleeding b/build_system/.env.build_matrix.libpointmatcher.bleeding index 661de48f..fa4b2c16 100644 --- a/build_system/.env.build_matrix.libpointmatcher.bleeding +++ b/build_system/.env.build_matrix.libpointmatcher.bleeding @@ -10,8 +10,7 @@ NBS_EXECUTE_BUILD_MATRIX_OVER_COMPOSE_FILE=docker-compose.libpointmatcher.yaml # # Libpointmatcher version # -# 'latest' is the latest push to the libpointmatcher master branch -#NBS_MATRIX_REPOSITORY_VERSIONS=( '1.4.2' 'latest' ) +# 'latest' is the most recent push to the current libpointmatcher checkout branch NBS_MATRIX_REPOSITORY_VERSIONS=( 'latest' ) # @@ -33,7 +32,7 @@ NBS_MATRIX_SUPPORTED_OS=( 'ubuntu' ) # # Ubuntu release: https://ubuntu.com/about/release-cycle # bionic=18.04 focal=20.04 jammy=22.04 -NBS_MATRIX_UBUNTU_SUPPORTED_VERSIONS=( 'bionic' 'focal' 'jammy' ) +NBS_MATRIX_UBUNTU_SUPPORTED_VERSIONS=( 'jammy' 'focal' 'bionic' ) # # iceboxed: implement other OS support (ref task NMO-213 OsX arm64-Darwin and NMO-210 OsX x86 CD components) #NBS_MATRIX_OSX_SUPPORTED_VERSIONS=( 'monterey' 'ventura' ) diff --git a/build_system/.env.build_matrix.libpointmatcher.release b/build_system/.env.build_matrix.libpointmatcher.release index 0bf2693b..48ec46a6 100644 --- a/build_system/.env.build_matrix.libpointmatcher.release +++ b/build_system/.env.build_matrix.libpointmatcher.release @@ -10,8 +10,8 @@ NBS_EXECUTE_BUILD_MATRIX_OVER_COMPOSE_FILE=docker-compose.libpointmatcher.yaml # # Libpointmatcher version # -# 'latest' is the latest push to the libpointmatcher master branch -NBS_MATRIX_REPOSITORY_VERSIONS=( '1.4.2' 'latest' ) +# 'latest' is the most recent push to the current libpointmatcher checkout branch +NBS_MATRIX_REPOSITORY_VERSIONS=( '1.4.3' 'latest' ) # # Libpointmatcher CMAKE_BUILD_TYPE @@ -30,7 +30,7 @@ NBS_MATRIX_SUPPORTED_OS=( 'ubuntu' ) # # Ubuntu release: https://ubuntu.com/about/release-cycle # bionic=18.04 focal=20.04 jammy=22.04 -NBS_MATRIX_UBUNTU_SUPPORTED_VERSIONS=( 'bionic' 'focal' 'jammy' ) +NBS_MATRIX_UBUNTU_SUPPORTED_VERSIONS=( 'jammy' 'focal' 'bionic' ) # # iceboxed: implement other OS support (ref task NMO-213 OsX arm64-Darwin and NMO-210 OsX x86 CD components) #NBS_MATRIX_OSX_SUPPORTED_VERSIONS=( 'monterey' 'ventura' ) diff --git "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies_arm64v8 ci_PR_arm64v8 _popup_.run.xml" "b/build_system/.jetbrains_run_config/bash lpm_crawl_libpointmatcher_build_matrix.bash \342\200\272 build ci_PR_arm64 _popup_.run.xml" similarity index 100% rename from "build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies_arm64v8 ci_PR_arm64v8 _popup_.run.xml" rename to "build_system/.jetbrains_run_config/bash lpm_crawl_libpointmatcher_build_matrix.bash \342\200\272 build ci_PR_arm64 _popup_.run.xml" diff --git a/build_system/docker-compose.dependencies.yaml b/build_system/docker-compose.dependencies.yaml index 9fcf3340..f6fdba7f 100644 --- a/build_system/docker-compose.dependencies.yaml +++ b/build_system/docker-compose.dependencies.yaml @@ -3,14 +3,15 @@ services: # ====Dependency related services================================================================ dependencies-general: image: ${NBS_DOCKERHUB_NAMESPACE:?err}/libpointmatcher-dependencies-general:${NBS_IMAGE_TAG:?err} + pull_policy: build # Execute the `build` attribute over pulling the `image` attribute build: target: libpointmatcher-dependencies-general context: .. dockerfile: ${NBS_SUPERPROJECT_BUILD_SYSTEM_DIR:?err}/ubuntu/Dockerfile.dependencies - no_cache: true + no_cache: true # Enforce full rebuild platforms: - "linux/amd64" - - "linux/arm64/v8" + - "linux/arm64" args: BASE_IMAGE: ${DEPENDENCIES_BASE_IMAGE:?err} BASE_IMAGE_TAG: ${DEPENDENCIES_BASE_IMAGE_TAG:?err} @@ -35,14 +36,15 @@ services: build: context: .. dockerfile: ${NBS_SUPERPROJECT_BUILD_SYSTEM_DIR:?err}/ubuntu/Dockerfile.dependencies.doxygen - platforms: - - "linux/amd64" - - "linux/arm64/v8" + pull: false # Use the local image store to execute the FROM directive args: PROJECT_HUB: ${NBS_DOCKERHUB_NAMESPACE} BASE_IMAGE: libpointmatcher-dependencies BASE_IMAGE_TAG: ${NBS_IMAGE_TAG} IS_TEAMCITY_RUN: ${IS_TEAMCITY_RUN} + platforms: + - "linux/amd64" + - "linux/arm64" depends_on: - dependencies tty: true diff --git a/build_system/docker-compose.libpointmatcher.yaml b/build_system/docker-compose.libpointmatcher.yaml index be08fd70..d950fade 100644 --- a/build_system/docker-compose.libpointmatcher.yaml +++ b/build_system/docker-compose.libpointmatcher.yaml @@ -4,18 +4,18 @@ include: services: # ====Pull-request related services============================================================== - # ....Test logic related to libpointmatcher install casses....................................... + # ....Test logic related to libpointmatcher install cases........................................ _test_compilation: image: ${NBS_DOCKERHUB_NAMESPACE:?err}/libpointmatcher-compilation-test:${NBS_IMAGE_TAG:?err} - pull_policy: build + pull_policy: build # Execute the `build` attribute over pulling the `image` attribute build: context: .. dockerfile: ${NBS_SUPERPROJECT_BUILD_SYSTEM_DIR:?err}/ubuntu/Dockerfile.libpointmatcher.compilation_test - no_cache: true + no_cache: true # Enforce full rebuild target: test-compilation-auto-path-resolution platforms: - "linux/amd64" - - "linux/arm64/v8" + - "linux/arm64" args: PROJECT_HUB: ${NBS_DOCKERHUB_NAMESPACE} BASE_IMAGE: libpointmatcher-dependencies-general @@ -45,11 +45,11 @@ services: # ....Test logic related to libpointmatcher codebase unit-test................................... ci_PR: image: ${NBS_DOCKERHUB_NAMESPACE:?err}/libpointmatcher-ci-pr:${NBS_IMAGE_TAG:?err} - pull_policy: build + pull_policy: build # Execute the `build` attribute over pulling the `image` attribute build: context: .. dockerfile: ${NBS_SUPERPROJECT_BUILD_SYSTEM_DIR}/ubuntu/Dockerfile.libpointmatcher.ci_PR - no_cache: false + no_cache: true # Enforce full rebuild args: PROJECT_HUB: ${NBS_DOCKERHUB_NAMESPACE} BASE_IMAGE: libpointmatcher-dependencies @@ -90,13 +90,14 @@ services: release: image: ${NBS_DOCKERHUB_NAMESPACE:?err}/libpointmatcher:${NBS_IMAGE_TAG:?err} container_name: libpointmatcher + pull_policy: build # Execute the `build` attribute over pulling the `image` attribute build: context: .. dockerfile: ${NBS_SUPERPROJECT_BUILD_SYSTEM_DIR}/ubuntu/Dockerfile.libpointmatcher.hub_release platforms: - "linux/amd64" - - "linux/arm64/v8" - no_cache: false + - "linux/arm64" + no_cache: true # Enforce full rebuild args: PROJECT_HUB: ${NBS_DOCKERHUB_NAMESPACE} BASE_IMAGE: libpointmatcher-dependencies-doc diff --git a/build_system/ubuntu/Dockerfile.libpointmatcher.ci_PR b/build_system/ubuntu/Dockerfile.libpointmatcher.ci_PR index 14839ffa..9f437670 100644 --- a/build_system/ubuntu/Dockerfile.libpointmatcher.ci_PR +++ b/build_system/ubuntu/Dockerfile.libpointmatcher.ci_PR @@ -2,6 +2,8 @@ ARG PROJECT_HUB=norlabulaval ARG BASE_IMAGE=libpointmatcher-dependencies ARG BASE_IMAGE_TAG FROM ${PROJECT_HUB}/${BASE_IMAGE}:${BASE_IMAGE_TAG:?err} AS libpointmatcher-dependencies +ARG TARGETPLATFORM +ARG TARGETARCH LABEL org.opencontainers.image.authors="luc.coupal.1@ulaval.ca" @@ -40,14 +42,13 @@ WORKDIR "${NBS_LIB_INSTALL_PATH}/${NBS_REPOSITORY_NAME}" RUN chmod +x ./utest/listVersionsUbuntu.sh RUN utest/listVersionsUbuntu.sh -# ==== Build libpointmatcher checkout branch ====================================================== +# ==== Build/test libpointmatcher checkout branch ================================================= WORKDIR ./build_system/ubuntu RUN chmod +x lpm_install_libpointmatcher_ubuntu.bash RUN chmod +x lpm_execute_libpointmatcher_unittest.bash RUN chmod +x entrypoint.bash - RUN bash lpm_install_libpointmatcher_ubuntu.bash \ --repository-version ${REPOSITORY_VERSION} \ --cmake-build-type ${CMAKE_BUILD_TYPE} \ diff --git a/build_system/ubuntu/lpm_execute_libpointmatcher_unittest.bash b/build_system/ubuntu/lpm_execute_libpointmatcher_unittest.bash index b4ec00ac..eed8b049 100644 --- a/build_system/ubuntu/lpm_execute_libpointmatcher_unittest.bash +++ b/build_system/ubuntu/lpm_execute_libpointmatcher_unittest.bash @@ -27,7 +27,7 @@ source "${N2ST_PATH}/import_norlab_shell_script_tools_lib.bash" # ====Begin======================================================================================== n2st::print_formated_script_header 'lpm_execute_libpointmatcher_unittest.bash' ':' -cd "${NBS_LIB_INSTALL_PATH}/${NBS_REPOSITORY_NAME}/build" +cd "${NBS_LIB_INSTALL_PATH}/${NBS_REPOSITORY_NAME}/build" || exit 1 if [[ ${IS_TEAMCITY_RUN} == true ]] || [[ ${TEAMCITY_VERSION} ]]; then echo -e "##teamcity[testSuiteStarted name='gtest']" @@ -68,5 +68,5 @@ fi n2st::print_formated_script_footer 'lpm_execute_libpointmatcher_unittest.bash' ':' # ====Teardown===================================================================================== -cd "${TMP_CWD}" +cd "${TMP_CWD}" || exit 1 exit $UTEST_EXIT_CODE diff --git a/build_system/ubuntu/lpm_install_dependencies_general_ubuntu.bash b/build_system/ubuntu/lpm_install_dependencies_general_ubuntu.bash index 82b8b2d4..aea9a11f 100644 --- a/build_system/ubuntu/lpm_install_dependencies_general_ubuntu.bash +++ b/build_system/ubuntu/lpm_install_dependencies_general_ubuntu.bash @@ -148,4 +148,4 @@ n2st::teamcity_service_msg_blockClosed n2st::print_formated_script_footer "lpm_install_dependencies_general_ubuntu.bash (${IMAGE_ARCH_AND_OS})" "${MSG_LINE_CHAR_INSTALLER}" # ====Teardown===================================================================================== -cd "${TMP_CWD}" +cd "${TMP_CWD}" || exit diff --git a/build_system/ubuntu/lpm_install_libpointmatcher_ubuntu.bash b/build_system/ubuntu/lpm_install_libpointmatcher_ubuntu.bash index 63f92425..2c164b2d 100644 --- a/build_system/ubuntu/lpm_install_libpointmatcher_ubuntu.bash +++ b/build_system/ubuntu/lpm_install_libpointmatcher_ubuntu.bash @@ -53,7 +53,7 @@ export DEBIAN_FRONTEND=noninteractive TMP_CWD=$(pwd) LPM_PATH=$(git rev-parse --show-toplevel) -cd "${LPM_PATH}/build_system" || exit +cd "${LPM_PATH}/build_system" || exit 1 # ....Load environment variables from file......................................................... set -o allexport @@ -176,7 +176,7 @@ n2st::teamcity_service_msg_blockOpened "Install ${NBS_REPOSITORY_NAME}" mkdir -p "${NBS_LIB_INSTALL_PATH}" n2st::print_msg "Directories (pre libpointmatcher install)$(tree -L 2 "${NBS_LIB_INSTALL_PATH}")" -cd "${NBS_LIB_INSTALL_PATH}" +cd "${NBS_LIB_INSTALL_PATH}" || exit 1 # ....Repository cloning step...................................................................... if [[ ${BUILD_SYSTEM_CI_INSTALL} == FALSE ]]; then @@ -188,7 +188,7 @@ if [[ ${BUILD_SYSTEM_CI_INSTALL} == FALSE ]]; then git clone https://github.com/"${NBS_REPOSITORY_DOMAIN}"/"${NBS_REPOSITORY_NAME}".git if [[ "${REPOSITORY_VERSION}" != 'latest' ]]; then - cd "${NBS_REPOSITORY_NAME}" + cd "${NBS_REPOSITORY_NAME}" || exit 1 git fetch --tags git tag --list @@ -203,7 +203,7 @@ if [[ ${BUILD_SYSTEM_CI_INSTALL} == FALSE ]]; then fi fi -cd "${NBS_LIB_INSTALL_PATH}/${NBS_REPOSITORY_NAME}" +cd "${NBS_LIB_INSTALL_PATH}/${NBS_REPOSITORY_NAME}" || exit 1 mkdir -p build && cd build # ....Cmake install step........................................................................... @@ -223,12 +223,10 @@ else # CMAKE_FLAGS=( -D BOOST_ROOT="$BOOST_ROOT" "${CMAKE_FLAGS[@]}" ) cmake "${CMAKE_FLAGS[@]}" "${NBS_LIB_INSTALL_PATH}/${NBS_REPOSITORY_NAME}" - BUILD_EXIT_CODE=$? make -j $(nproc) sudo make install - INSTALL_EXIT_CODE=$? if [[ ${GENERATE_API_DOC_FLAG} = TRUE ]]; then @@ -281,4 +279,4 @@ fi n2st::print_formated_script_footer "${CALLER_NAME} (${IMAGE_ARCH_AND_OS})" "${MSG_LINE_CHAR_INSTALLER}" # ====Teardown===================================================================================== -cd "${TMP_CWD}" +cd "${TMP_CWD}" || exit 1 diff --git a/doc/LinkingProjects.md b/doc/LinkingProjects.md index caafafcd..416af32a 100644 --- a/doc/LinkingProjects.md +++ b/doc/LinkingProjects.md @@ -12,7 +12,7 @@ In this following example, we build a very simple CMake project containing one e cmake_minimum_required (VERSION 3.10.12) project (myProject) -find_package(libpointmatcher 1.4.2 REQUIRED) +find_package(libpointmatcher 1.4.3 REQUIRED) include_directories("${libpointmatcher_INCLUDE_DIRS}") message(STATUS "Using libpointmatcher version ${libpointmatcher_VERSION}")