Skip to content

Commit

Permalink
Merge branch 'develop' into binary-ply-files
Browse files Browse the repository at this point in the history
  • Loading branch information
boxanm authored Dec 10, 2024
2 parents 7499180 + ff0d2e1 commit 8cd09ab
Show file tree
Hide file tree
Showing 13 changed files with 52 additions and 51 deletions.
27 changes: 14 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
<br>
<sup>
<sup>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
<a href="https://github.com/szenergy/awesome-lidar#basic-matching-algorithms">LIDAR</a>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Expand All @@ -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)

Expand All @@ -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
```
Expand All @@ -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:[email protected]) 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.
Expand All @@ -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))
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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).

Expand All @@ -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
Expand All @@ -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).


Expand Down
6 changes: 3 additions & 3 deletions build_system/.env.build_matrix.dependencies
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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' )
Expand Down
5 changes: 2 additions & 3 deletions build_system/.env.build_matrix.libpointmatcher
Original file line number Diff line number Diff line change
Expand Up @@ -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' )

#
Expand All @@ -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' )
Expand Down
5 changes: 2 additions & 3 deletions build_system/.env.build_matrix.libpointmatcher.bleeding
Original file line number Diff line number Diff line change
Expand Up @@ -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' )

#
Expand All @@ -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' )
Expand Down
6 changes: 3 additions & 3 deletions build_system/.env.build_matrix.libpointmatcher.release
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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' )
Expand Down
12 changes: 7 additions & 5 deletions build_system/docker-compose.dependencies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand All @@ -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
Expand Down
17 changes: 9 additions & 8 deletions build_system/docker-compose.libpointmatcher.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
5 changes: 3 additions & 2 deletions build_system/ubuntu/Dockerfile.libpointmatcher.ci_PR
Original file line number Diff line number Diff line change
Expand Up @@ -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="[email protected]"

Expand Down Expand Up @@ -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} \
Expand Down
4 changes: 2 additions & 2 deletions build_system/ubuntu/lpm_execute_libpointmatcher_unittest.bash
Original file line number Diff line number Diff line change
Expand Up @@ -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']"
Expand Down Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
12 changes: 5 additions & 7 deletions build_system/ubuntu/lpm_install_libpointmatcher_ubuntu.bash
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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...........................................................................
Expand All @@ -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
Expand Down Expand Up @@ -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
2 changes: 1 addition & 1 deletion doc/LinkingProjects.md
Original file line number Diff line number Diff line change
Expand Up @@ -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}")
Expand Down

0 comments on commit 8cd09ab

Please sign in to comment.