From 035b3e9c2229bb66860fe6d0a093827d59af5eee Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 03:24:36 -0500 Subject: [PATCH 01/14] docs: update supported Ubuntu version --- doc/CompilationUbuntu.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/doc/CompilationUbuntu.md b/doc/CompilationUbuntu.md index c9dcf9ca..1344ce2f 100644 --- a/doc/CompilationUbuntu.md +++ b/doc/CompilationUbuntu.md @@ -7,19 +7,19 @@ If you are used to development projects, here is what you need: -| Name | Version
(Tested Feb. 20, 2015) |Version
(Tested Sept. 6, 2016) | Version
(Tested Jan. 8, 2019) | -|----------------|-----------------------------------------|-----------------------|-----------------------| -| Ubuntu | 12.04.5 LTS (64 bit) | 14.04.5 LTS (64 bit) | 18.04.1 LTS (64 bit) | -| gcc | 4.6.3 | 4.8.4 | 7.3.0 | -| git | 1.7.9.5 | 1.9.1 | 2.17.1 | -| cmake | 2.8.11.2 | 2.8.12.2 | 3.10.2 | -| doxygen (opt.) | 1.7.6.1 | 1.8.6-2 | 1.8.13-10 | -| | ||| -| _Dependency:_ | | | -| boost | 1.48.0.2 | 1.54.0 | 1.65.1 | -| eigen | 3.0.5 | 3.2.0-8 | 3.3.4-4 | -| yaml-cpp | 0.5+ | 0.5+ | 0.5+ | -| libnabo | [from source](https://github.com/ethz-asl/libnabo) | [from source](https://github.com/ethz-asl/libnabo) | [from source](https://github.com/ethz-asl/libnabo) | +| Name | Version
(Tested A2023) | Version
(Tested A2023) | +|----------------|----------------------------------------------------|----------------------------------------------------| +| Ubuntu | bionic 18.04.1 LTS (64 bit) | focal 20.04 LTS (64 bit) | +| gcc | 7.3.0 | latest | +| git | 2.17.1 | latest | +| cmake | 3.10.2 | latest | +| doxygen (opt.) | 1.8.13-10 | latest | +| | | | +| _Dependency:_ | | | +| boost | 1.65.1 | latest | +| eigen | 3.3.4-4 | latest | +| yaml-cpp | 0.5+ | latest | +| libnabo | [from source](https://github.com/ethz-asl/libnabo) | [from source](https://github.com/ethz-asl/libnabo) | __Note:__ we only support 64-bit systems because of some issues with Eigen. Other versions will most probably work but you'll have to try yourself to know for sure. From 2b745e7bdcdb424991701ac19404215c5742449f Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 03:25:30 -0500 Subject: [PATCH 02/14] docs: update git install step. Note: git-core is a legacy package --- doc/CompilationUbuntu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/CompilationUbuntu.md b/doc/CompilationUbuntu.md index 1344ce2f..848ea2e8 100644 --- a/doc/CompilationUbuntu.md +++ b/doc/CompilationUbuntu.md @@ -64,7 +64,7 @@ git version 2.17.1 If not refer to the Git homepage for installation instructions or install via the package manager by running ```bash -sudo apt-get install git-core +sudo apt-get install git ``` #### c. Installing CMake From 5984e626f6f7a7d8fc1899c6cc5466d0ef8642b4 Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 03:29:17 -0500 Subject: [PATCH 03/14] docs: update latex install for doxygen. Note: 'texlive-full' is ~6GB. 'doxygen-latex' is a slim version tailor made for doxygen code documentation task --- doc/CompilationUbuntu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/CompilationUbuntu.md b/doc/CompilationUbuntu.md index 848ea2e8..f51c91a1 100644 --- a/doc/CompilationUbuntu.md +++ b/doc/CompilationUbuntu.md @@ -178,7 +178,7 @@ sudo apt-get install doxygen You will also need LaTeX for the equations rendering : ```bash -sudo apt-get install texlive-full +sudo apt-get install doxygen-latex ``` After you have installed Doxygen and LaTeX, you can enable the documentation by setting the CMake variable `GENERATE_API_DOC` to `TRUE`. This can be achieved through CMake-GUI or by the command line: From 72e78194a94eb3333ebb81207bb4f0fda19da9c5 Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 03:39:21 -0500 Subject: [PATCH 04/14] docs: refactor all url pointing to `github.com/ethz-asl/libpointmatcher` domain to the new domain `github.com/norlab-ulaval/libpointmatcher` [NMO-377] --- README.md | 6 +++--- build_system/.env | 4 ++-- debian/copyright | 2 +- doc/ApplyingDataFilters.md | 4 ++-- doc/BasicRegistration.md | 2 +- doc/CompilationUbuntu.md | 2 +- doc/CompilationWindows.md | 8 ++++---- doc/Configuration.md | 4 ++-- doc/DataFilters.md | 2 +- doc/DataPointsFilterDev.md | 18 +++++++++--------- doc/ICPIntro.md | 10 +++++----- doc/ICPWithoutYaml.md | 2 +- doc/ImportExport.md | 4 ++-- doc/LinkingProjects.md | 4 ++-- doc/ReleaseNotes.md | 6 +++--- doc/TransformationDev.md | 2 +- doc/UnitTestDev.md | 6 +++--- doc/index.md | 14 +++++++------- examples/build_map.cpp | 2 +- examples/python/build_map.py | 2 +- mkdocs.yml | 2 +- pointmatcher.pc.in | 2 +- pointmatcher/PointMatcher.h | 4 ++-- 23 files changed, 56 insertions(+), 56 deletions(-) diff --git a/README.md b/README.md index 481f9c20..f48ecbdd 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ # 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](https://github.com/ethz-asl/libpointmatcher/blob/master/doc/index.md#python-). +The library is written in C++ for effeciency with [bindings in Python](https://github.com/norlab-ulaval/libpointmatcher/blob/master/doc/index.md#python-). **Quick link for the tutorial pages: [Tutorials](doc/index.md) (also available on [readthedocs.org](http://libpointmatcher.readthedocs.org/)).** @@ -59,12 +59,12 @@ utest/utest --path ../examples/data/ ### Linking to external projects. -We mainly develop for __cmake projects__ and we provide example files under [`examples/demo_cmake/`](https://github.com/ethz-asl/libpointmatcher/tree/master/examples/demo_cmake) to help you in your own project. We also provide a __QT Creator__ example in [`examples/demo_QT/`](https://github.com/ethz-asl/libpointmatcher/tree/master/examples/demo_Qt), which manually lists all the dependencies in the file [`demo.pro`](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/demo_Qt/demo.pro). You would need to ajust those paths to point at the appropriate locations on your system. For a more detailed procedure, check the [Linking Projects to libpointmatcher](doc/LinkingProjects.md) section. +We mainly develop for __cmake projects__ and we provide example files under [`examples/demo_cmake/`](https://github.com/norlab-ulaval/libpointmatcher/tree/master/examples/demo_cmake) to help you in your own project. We also provide a __QT Creator__ example in [`examples/demo_QT/`](https://github.com/norlab-ulaval/libpointmatcher/tree/master/examples/demo_Qt), which manually lists all the dependencies in the file [`demo.pro`](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/demo_Qt/demo.pro). You would need to ajust those paths to point at the appropriate locations on your system. For a more detailed procedure, check the [Linking Projects to libpointmatcher](doc/LinkingProjects.md) section. ### Bug reporting -Please use our [github's issue tracker](http://github.com/ethz-asl/libpointmatcher/issues) to report bugs. If you are running the library on Ubuntu, copy-paste the output of the script [listVersionsUbuntu.sh](https://github.com/ethz-asl/libpointmatcher/blob/master/utest/listVersionsUbuntu.sh) to simplify the search of an answer. +Please use our [github's issue tracker](http://github.com/ethz-asl/libpointmatcher/issues) to report bugs. If you are running the library on Ubuntu, copy-paste the output of the script [listVersionsUbuntu.sh](https://github.com/norlab-ulaval/libpointmatcher/blob/master/utest/listVersionsUbuntu.sh) to simplify the search of an answer. ## File formats The library support different file formats for importing or exporting data: diff --git a/build_system/.env b/build_system/.env index 6eb473a4..24dd13eb 100644 --- a/build_system/.env +++ b/build_system/.env @@ -8,8 +8,8 @@ NBS_DOCKERHUB_NAMESPACE=norlabulaval # Repository url # # Note: -# - Original repo: https://github.com/ethz-asl/libpointmatcher -# - DEV repo: https://github.com/norlab-ulaval/libpointmatcher-build-system +# - Main repo: https://github.com/norlab-ulaval/libpointmatcher +# - Legacy repo: https://github.com/ethz-asl/libpointmatcher NBS_REPOSITORY_DOMAIN=norlab-ulaval diff --git a/debian/copyright b/debian/copyright index d68ae7ce..e9cccc5b 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,6 +1,6 @@ Format: http://dep.debian.net/deps/dep5 Upstream-Name: libpointmatcher -Source: https://github.com/ethz-asl/libpointmatcher +Source: https://github.com/norlab-ulaval/libpointmatcher Files: * Copyright: 2010--2014, François Pomerleau and Stephane Magnenat , ASL, ETHZ, Switzerland diff --git a/doc/ApplyingDataFilters.md b/doc/ApplyingDataFilters.md index 1b5aded6..74d13330 100644 --- a/doc/ApplyingDataFilters.md +++ b/doc/ApplyingDataFilters.md @@ -5,7 +5,7 @@ ## Overview -The following will go through the steps needed to write a simple program which configures a chain of data filters and applies this chain to a point cloud. For information on data filters, refer to the [data point filters tutorial](DataFilters.md). The filtered point cloud is then saved to disk. The source code associated with this tutorial can be found in [examples/demo_cmake/convert.cpp](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/demo_cmake/convert.cpp). +The following will go through the steps needed to write a simple program which configures a chain of data filters and applies this chain to a point cloud. For information on data filters, refer to the [data point filters tutorial](DataFilters.md). The filtered point cloud is then saved to disk. The source code associated with this tutorial can be found in [examples/demo_cmake/convert.cpp](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/demo_cmake/convert.cpp). ***IMPORTANT:*** This tutorial makes use of YAML configuration files. If you did not install yaml-cpp before installing libpointmatcher, you must do so before following these instructions. Information on installing yaml-cpp can be found in the installation instructions for [Ubuntu](CompilationUbuntu.md), [Windows](CompilationWindows.md) and [Mac OS X](CompilationMac.md). @@ -81,7 +81,7 @@ return 0; ## Configuring the Data Filters Chain -An example configuration file can be found at [examples/data/default-convert.yaml](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/data/default-convert.yaml). A diagram of this chain is shown in Figure 1. +An example configuration file can be found at [examples/data/default-convert.yaml](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/data/default-convert.yaml). A diagram of this chain is shown in Figure 1. |**Figure 1**: Default chain of data filters in `default-convert.yaml`| |:---:| diff --git a/doc/BasicRegistration.md b/doc/BasicRegistration.md index b7aca472..23a0b1fe 100644 --- a/doc/BasicRegistration.md +++ b/doc/BasicRegistration.md @@ -5,7 +5,7 @@ ## Overview -The following tutorial will go through the various steps that are performed in a basic ICP registration example. The source code associated with this tutorial can be found in [examples/icp_simple.cpp](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/icp_simple.cpp). +The following tutorial will go through the various steps that are performed in a basic ICP registration example. The source code associated with this tutorial can be found in [examples/icp_simple.cpp](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/icp_simple.cpp). Point cloud registration is a critical step in 3D reconstruction of objects and terrains and is used in such varied fields as robotics, medicine, and geography. diff --git a/doc/CompilationUbuntu.md b/doc/CompilationUbuntu.md index f51c91a1..1590484e 100644 --- a/doc/CompilationUbuntu.md +++ b/doc/CompilationUbuntu.md @@ -248,7 +248,7 @@ sudo make install ``` # Having problems? -Some dependencies changed and we don't keep track of all combinations possible. Before reporting a problem, make sure to include the versions you are using. You can run the bash script `./utest/listVersionsUbuntu.sh` and copy-paste its output when [reporting an issue on github](https://github.com/ethz-asl/libpointmatcher/issues). You may need to ensure that the file is executable: +Some dependencies changed and we don't keep track of all combinations possible. Before reporting a problem, make sure to include the versions you are using. You can run the bash script `./utest/listVersionsUbuntu.sh` and copy-paste its output when [reporting an issue on github](https://github.com/norlab-ulaval/libpointmatcher/issues). You may need to ensure that the file is executable: ```bash chmod +x ./utest/listVersionsUbuntu.sh diff --git a/doc/CompilationWindows.md b/doc/CompilationWindows.md index a5623bac..20746532 100644 --- a/doc/CompilationWindows.md +++ b/doc/CompilationWindows.md @@ -35,7 +35,7 @@ This tutorial is divided up like this: | Eigen3 | | 3.3.9 | | grep | | 2.5.4 | | libnabo | | Commit 16250bf | -| libpointmatcher | | Commit e9a832d | +| libpointmatcher | | Commit e9a832d | ### Notes @@ -120,7 +120,7 @@ This tutorial is divided up like this: 1. Do the following commands ```bash - git clone https://github.com/ethz-asl/libpointmatcher + git clone https://github.com/norlab-ulaval/libpointmatcher mkdir .\libpointmatcher\build mkdir .\libpointmatcher\build\install cd .\libpointmatcher\build\ @@ -145,8 +145,8 @@ Currently, we don't have a developer fully supporting compilation on Windows. If Before reporting new building issues, have a look in the current/past list of issues. Add as many details as you can since you will most probably receive answers from developers that cannot reproduce the problem on their side. Here are some of them: -- Your directory structure need to be well organized as mentioned in [Issue #136](https://github.com/ethz-asl/libpointmatcher/issues/136). -- There might be some problems related to libnabo as mentioned in [Issue #118](https://github.com/ethz-asl/libpointmatcher/issues/118). +- Your directory structure need to be well organized as mentioned in [Issue #136](https://github.com/norlab-ulaval/libpointmatcher/issues/136). +- There might be some problems related to libnabo as mentioned in [Issue #118](https://github.com/norlab-ulaval/libpointmatcher/issues/118). ## Special Thanks diff --git a/doc/Configuration.md b/doc/Configuration.md index ef9b1eef..dfd7d86c 100644 --- a/doc/Configuration.md +++ b/doc/Configuration.md @@ -86,7 +86,7 @@ To load an ICP configuration from a YAML file, use the `PointMatcher::ICPChai ## Where To Go From Here -Now that you have the tools to configure your own ICP chain, we recommend that you make a copy of the default configuration file located at [examples/data/default.yaml](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/data/default.yaml). For example: +Now that you have the tools to configure your own ICP chain, we recommend that you make a copy of the default configuration file located at [examples/data/default.yaml](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/data/default.yaml). For example: `cp examples/data/default.yaml my_config.yaml` @@ -106,4 +106,4 @@ You can now make changes to the configuration in `my_config.yaml` and experiment [SamplingSurfaceNormalDataPointsFilter]: DataFilters.md#samplingnormhead [ShadowDataPointsFilter]: DataFilters.md#shadowpointhead [SimpleSensorNoiseDataPointsFilter]: DataFilters.md#sensornoisehead -[SurfaceNormalDataPointsFilter]: DataFilters.md#surfacenormalhead \ No newline at end of file +[SurfaceNormalDataPointsFilter]: DataFilters.md#surfacenormalhead diff --git a/doc/DataFilters.md b/doc/DataFilters.md index da24f595..09cc61b6 100644 --- a/doc/DataFilters.md +++ b/doc/DataFilters.md @@ -13,7 +13,7 @@ As a reminder, *datapoint filters* can have several purposes: Note that *datapoint filters* differ from *outlier filters* which appear further down the ICP chain and have a different purpose. -[Libpointmatcher](https://github.com/ethz-asl/libpointmatcher) provides developers with a number of datapoint filters which process an input point cloud into an intermediate point cloud used in the alignment procedure. Filters function as independent modules that can and often are combined into chains. Sequential chains of datapoint filters can thus be adapted to the alignment problem at hand. +[Libpointmatcher](https://github.com/norlab-ulaval/libpointmatcher) provides developers with a number of datapoint filters which process an input point cloud into an intermediate point cloud used in the alignment procedure. Filters function as independent modules that can and often are combined into chains. Sequential chains of datapoint filters can thus be adapted to the alignment problem at hand. ## Filter Index diff --git a/doc/DataPointsFilterDev.md b/doc/DataPointsFilterDev.md index 305a8a9d..ff8bbeb2 100644 --- a/doc/DataPointsFilterDev.md +++ b/doc/DataPointsFilterDev.md @@ -9,7 +9,7 @@ In the following tutorials we will discuss how you can extend the functionality For a more detailed procedure or if it's the first time developping a filter, please see the example of the [VoxelGrid filter](#voxelgridhead). Here, to implement a _Dummy_ filter we have to follow these steps: -1. Create files in the [pointmatcher/DataPointsFilters/](https://github.com/ethz-asl/libpointmatcher/tree/master/pointmatcher/DataPointsFilters) folder +1. Create files in the [pointmatcher/DataPointsFilters/](https://github.com/norlab-ulaval/libpointmatcher/tree/master/pointmatcher/DataPointsFilters) folder - the header : `Dummy.h` - the implementation file : `Dummy.cpp` @@ -47,7 +47,7 @@ For a more detailed procedure or if it's the first time developping a filter, pl template struct DummyDataPointsFilter; template struct DummyDataPointsFilter; -1. Declare the filter in [pointmatcher/DataPointsFiltersImpl.h](https://github.com/ethz-asl/libpointmatcher/blob/master/pointmatcher/DataPointsFiltersImpl.h) as follow: +1. Declare the filter in [pointmatcher/DataPointsFiltersImpl.h](https://github.com/norlab-ulaval/libpointmatcher/blob/master/pointmatcher/DataPointsFiltersImpl.h) as follow: #include "DataPointsFilters/Dummy.h" @@ -58,7 +58,7 @@ For a more detailed procedure or if it's the first time developping a filter, pl /* our declaraction -> */ typedef ::DummyDataPointsFilter DummyDataPointsFilter; }; -1. Add it to the _Registry_ [pointmatcher/Registry.cpp](https://github.com/ethz-asl/libpointmatcher/blob/master/pointmatcher/Registry.cpp) +1. Add it to the _Registry_ [pointmatcher/Registry.cpp](https://github.com/norlab-ulaval/libpointmatcher/blob/master/pointmatcher/Registry.cpp) - If the filter has some parameters: ADD_TO_REGISTRAR(DataPointsFilter, DummyDataPointsFilter, typename DataPointsFiltersImpl::DummyDataPointsFilter) @@ -67,7 +67,7 @@ For a more detailed procedure or if it's the first time developping a filter, pl ADD_TO_REGISTRAR_NO_PARAM(DataPointsFilter, DummyDataPointsFilter, typename DataPointsFiltersImpl::DummyDataPointsFilter) -1. Finally, add the source file in the [CMakeLists.txt](https://github.com/ethz-asl/libpointmatcher/blob/master/CMakeLists.txt) in the `POINTMATCHER_SRC` variable. +1. Finally, add the source file in the [CMakeLists.txt](https://github.com/norlab-ulaval/libpointmatcher/blob/master/CMakeLists.txt) in the `POINTMATCHER_SRC` variable. ## The Voxel Grid Filter @@ -100,7 +100,7 @@ We will now implement the voxel grid within the framework of libpointmatcher. O ### Declaration -The implementations of data point filters are declared in [pointmatcher/DataPointsFilters/](https://github.com/ethz-asl/libpointmatcher/tree/master/pointmatcher/DataPointsFilters). In this folder, we add a new header and source file to implement our filter: for instance, here we create the file [pointmatcher/DataPointsFilters/VoxelGrid.h](https://github.com/ethz-asl/libpointmatcher/blob/master/pointmatcher/DataPointsFilters/VoxelGrid.h). In this file, we declare a new templated struct called `VoxelGridDataPointsFiler`. This class is derived from the general class `PointMatcher::DataPointsFilter` so as to inherit pure virtual methods and functionality that are common to all data point filters. +The implementations of data point filters are declared in [pointmatcher/DataPointsFilters/](https://github.com/norlab-ulaval/libpointmatcher/tree/master/pointmatcher/DataPointsFilters). In this folder, we add a new header and source file to implement our filter: for instance, here we create the file [pointmatcher/DataPointsFilters/VoxelGrid.h](https://github.com/norlab-ulaval/libpointmatcher/blob/master/pointmatcher/DataPointsFilters/VoxelGrid.h). In this file, we declare a new templated struct called `VoxelGridDataPointsFiler`. This class is derived from the general class `PointMatcher::DataPointsFilter` so as to inherit pure virtual methods and functionality that are common to all data point filters. **Note:** *Libpointmatcher is a templated library and supports data of either float or double types. This allows users the flexibility of selecting between two levels of precision depending on the requirements of their application. As a result, classes which are added to libpointmatcher should be templated so as to support both types.* @@ -178,7 +178,7 @@ The `filter` function performs the filter operation on the input point cloud and ### Implementation of the Filter -The implementation of the filter must be in the file [pointmatcher/DataPointsFilters/VoxelGrid.cpp](https://github.com/ethz-asl/libpointmatcher/blob/master/pointmatcher/DataPointsFilters/VoxelGrid.cpp) that should also be added to the [CMakelists.txt](https://github.com/ethz-asl/libpointmatcher/blob/master/CMakeLists.txt) in the `POINTMATCHER_SRC` variable. +The implementation of the filter must be in the file [pointmatcher/DataPointsFilters/VoxelGrid.cpp](https://github.com/norlab-ulaval/libpointmatcher/blob/master/pointmatcher/DataPointsFilters/VoxelGrid.cpp) that should also be added to the [CMakelists.txt](https://github.com/norlab-ulaval/libpointmatcher/blob/master/CMakeLists.txt) in the `POINTMATCHER_SRC` variable. The steps performed by the filter are all contained in the `inPlaceFilter` function. Because the voxel grid filter does not sub-sample points from the input but rather creates new points, we use the following strategy for performing in place filtering. @@ -464,7 +464,7 @@ We first sort the points voxel points by index and place them in order, at the b ## Registering the Filter as a Libpointmatcher Module -First, we have to declare it in [pointmatcher/DataPointsFiltersImpl.h](https://github.com/ethz-asl/libpointmatcher/blob/master/pointmatcher/DataPointsFiltersImpl.h) as follow: +First, we have to declare it in [pointmatcher/DataPointsFiltersImpl.h](https://github.com/norlab-ulaval/libpointmatcher/blob/master/pointmatcher/DataPointsFiltersImpl.h) as follow: ```cpp template @@ -475,7 +475,7 @@ struct DataPointsFiltersImpl }; ``` -Now that we have completed the implementation of our voxel filter, we can add it to libpointmatcher as a usable DataPointsFilter. We do so by adding the following macro function in [pointmatcher/Registry.cpp](https://github.com/ethz-asl/libpointmatcher/blob/master/pointmatcher/Registry.cpp) +Now that we have completed the implementation of our voxel filter, we can add it to libpointmatcher as a usable DataPointsFilter. We do so by adding the following macro function in [pointmatcher/Registry.cpp](https://github.com/norlab-ulaval/libpointmatcher/blob/master/pointmatcher/Registry.cpp) ```cpp ADD_TO_REGISTRAR(DataPointsFilter, VoxelGridDataPointsFilter, typename DataPointsFiltersImpl::VoxelGridDataPointsFilter) @@ -487,7 +487,7 @@ Now recompile the library and check that the new transformation is listed as an If you are not comfortable with the material covered in this tutorial, we suggest that you attempt to re-design a very simple filter such as the `MaxDistDataPointsFilter`. You can find - its implementation in [pointmatcher/DataPointsFilters/MaxDist.h](https://github.com/ethz-asl/libpointmatcher/blob/master/pointmatcher/DataPointsFilters/MaxDist.h) and [pointmatcher/DataPointsFilters/MaxDist.cpp](https://github.com/ethz-asl/libpointmatcher/blob/master/pointmatcher/DataPointsFilters/MaxDist.cpp) with which to compare your solution. + its implementation in [pointmatcher/DataPointsFilters/MaxDist.h](https://github.com/norlab-ulaval/libpointmatcher/blob/master/pointmatcher/DataPointsFilters/MaxDist.h) and [pointmatcher/DataPointsFilters/MaxDist.cpp](https://github.com/norlab-ulaval/libpointmatcher/blob/master/pointmatcher/DataPointsFilters/MaxDist.cpp) with which to compare your solution. For more information on extending libpointmatcher the [next tutorial](TransformationDev.md) covers the design of a transformation class and is similar in nature to this tutorial. diff --git a/doc/ICPIntro.md b/doc/ICPIntro.md index c00f3ae8..cc0a3c5e 100644 --- a/doc/ICPIntro.md +++ b/doc/ICPIntro.md @@ -25,7 +25,7 @@ A top-down view of the point cloud is depicted below, with the colors showing ve ## Visualizing a Point Cloud in Paraview -We will now open the example point clouds for viewing in paraview. The two views from the apartment dataset can be found in [examples/icp_tutorial/cloud_0.vtk](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/icp_tutorial/cloud_0.vtk) and [examples/icp_tutorial/cloud_1.vtk](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/icp_tutorial/cloud_1.vtk). Open Paraview and you will be greeted by the following window: +We will now open the example point clouds for viewing in paraview. The two views from the apartment dataset can be found in [examples/icp_tutorial/cloud_0.vtk](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/icp_tutorial/cloud_0.vtk) and [examples/icp_tutorial/cloud_1.vtk](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/icp_tutorial/cloud_1.vtk). Open Paraview and you will be greeted by the following window: ### The Paraview Main Window @@ -41,7 +41,7 @@ On the bottom-left you can find options for editing properties, and retrieving i ### Opening the Point Clouds in Paraview -Go to File -> Open and open [examples/icp_tutorial/cloud_0.vtk](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/icp_tutorial/cloud_0.vtk). Don't forget to click the apply button in the properties pane in order to load the point cloud into the viewer. Now, we will change some properties of the point cloud to make it easer to visualize in the viewer. In the properties pane, change the representation style from surface to points, and change the point size to 1. +Go to File -> Open and open [examples/icp_tutorial/cloud_0.vtk](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/icp_tutorial/cloud_0.vtk). Don't forget to click the apply button in the properties pane in order to load the point cloud into the viewer. Now, we will change some properties of the point cloud to make it easer to visualize in the viewer. In the properties pane, change the representation style from surface to points, and change the point size to 1. |Figure 4: Point properties window of Paraview| |:------------| @@ -49,7 +49,7 @@ Go to File -> Open and open [examples/icp_tutorial/cloud_0.vtk](https://github.c You can click and drag in the viewer pane to navigate the 3D environment. -You can then open the second view in [examples/icp_tutorial/cloud_1.vtk](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/icp_tutorial/cloud_1.vtk). Change the representation to points and change the color to blue so that the second point cloud is visible over the first. You can see that both point clouds represent the same scene but do not have the same number of points and are misaligned. ICP registration will be used to find a transformation which best aligns the points from the first point cloud to the second, while being robust to the differences or outliers between the two views. +You can then open the second view in [examples/icp_tutorial/cloud_1.vtk](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/icp_tutorial/cloud_1.vtk). Change the representation to points and change the color to blue so that the second point cloud is visible over the first. You can see that both point clouds represent the same scene but do not have the same number of points and are misaligned. ICP registration will be used to find a transformation which best aligns the points from the first point cloud to the second, while being robust to the differences or outliers between the two views. |Figure 5: The two point clouds of the apartment scene used in this tutorial. The reading is colored white and the reference blue.| |:------------| @@ -59,7 +59,7 @@ You can also import a sequence of point clouds and play them as a video. If a f ### An Empty ICP Configuration -In libpointmatcher, configurations are stored in YAML files. For more information, refer to the [configuration tutorial](Configuration.md). For the purpose of this tutorial, we will start with a simplistic configuration file stored in [examples/icp_tutorial/icp_tutorial_empty.yaml](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/icp_tutorial/icp_tutorial_empty.yaml). The configuration is shown below. +In libpointmatcher, configurations are stored in YAML files. For more information, refer to the [configuration tutorial](Configuration.md). For the purpose of this tutorial, we will start with a simplistic configuration file stored in [examples/icp_tutorial/icp_tutorial_empty.yaml](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/icp_tutorial/icp_tutorial_empty.yaml). The configuration is shown below. ```yaml readingDataPointsFilters: @@ -129,7 +129,7 @@ Additionally, 3 files: `test_ref.vtk`, `test_data_in.vtk`, and `test_data_out.vt ### A Real ICP Configuration -We will now replace the empty configuration with something which makes more sense for registration. We will use the second configuration file of our tutorial folder [examples/icp_tutorial/icp_tutorial_cfg.yaml](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/icp_tutorial/icp_tutorial_cfg.yaml), which contain the following: +We will now replace the empty configuration with something which makes more sense for registration. We will use the second configuration file of our tutorial folder [examples/icp_tutorial/icp_tutorial_cfg.yaml](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/icp_tutorial/icp_tutorial_cfg.yaml), which contain the following: ```yaml readingDataPointsFilters: diff --git a/doc/ICPWithoutYaml.md b/doc/ICPWithoutYaml.md index a3c8706c..58347236 100644 --- a/doc/ICPWithoutYaml.md +++ b/doc/ICPWithoutYaml.md @@ -3,7 +3,7 @@ # Example of an ICP solution without yaml -See [examples/icp_customized.cpp](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/icp_customized.cpp) for a working example. +See [examples/icp_customized.cpp](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/icp_customized.cpp) for a working example. Here are the important part of the example. First, generate an empty ICP object with some generic variables: diff --git a/doc/ImportExport.md b/doc/ImportExport.md index 512296a4..6598be56 100644 --- a/doc/ImportExport.md +++ b/doc/ImportExport.md @@ -104,7 +104,7 @@ While most files should contain data structured in a natural order ie ("x", "y" --- ### Note For libpointmatcher Developers -The association between descriptor properties identifiers and libpointmatcher descriptor labels is set in the `getDescAssocationMap` function in [pointmatcher/IO.cpp](https://github.com/ethz-asl/libpointmatcher/blob/master/pointmatcher/IO.cpp). To extend IO support to additional descriptors, you can modify this function. +The association between descriptor properties identifiers and libpointmatcher descriptor labels is set in the `getDescAssocationMap` function in [pointmatcher/IO.cpp](https://github.com/norlab-ulaval/libpointmatcher/blob/master/pointmatcher/IO.cpp). To extend IO support to additional descriptors, you can modify this function. The `getDescAssocationMap` returns a map which associates a property identifier and a pair consisting of a row number and a point matcher descriptor name. For example, the descriptor identifier *nx* maps to row 0 of the *normals* libpointmatcher descriptor. Ie: @@ -112,4 +112,4 @@ The `getDescAssocationMap` returns a map which associates a property identifier "ny" -> (1, "normals")
"nz" -> (2, "normals") -For converting libpointmatcher descriptors back to a property identifier, you must modify the `getColLabel` function in [pointmatcher/IO.cpp](https://github.com/ethz-asl/libpointmatcher/blob/master/pointmatcher/IO.cpp). +For converting libpointmatcher descriptors back to a property identifier, you must modify the `getColLabel` function in [pointmatcher/IO.cpp](https://github.com/norlab-ulaval/libpointmatcher/blob/master/pointmatcher/IO.cpp). diff --git a/doc/LinkingProjects.md b/doc/LinkingProjects.md index 4d6b12b8..d66d8530 100644 --- a/doc/LinkingProjects.md +++ b/doc/LinkingProjects.md @@ -22,7 +22,7 @@ message(STATUS "Using libpointmatcher version ${libpointmatcher_VERSION}") add_executable(myProgram myProgram.cpp) target_link_libraries(myProgram ${libpointmatcher_LIBRARIES}) ``` -A working example of how to link to an external project can be found in [./examples/demo_cmake](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/demo_cmake). +A working example of how to link to an external project can be found in [./examples/demo_cmake](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/demo_cmake). ## Option 2: Using Eclipse @@ -87,7 +87,7 @@ LIBS += /usr/local/lib/libboost_thread-mt.dylib \ /Users/francoispomerleau/Research/Code/libpointmatcher/build/contrib/yaml-cpp-pm/libyaml-cpp-pm.a ``` -A working example of how to link to an external project can be found in [./examples/demo_Qt](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/demo_Qt). +A working example of how to link to an external project can be found in [./examples/demo_Qt](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/demo_Qt). ## Option 4: Using Compiler Flags diff --git a/doc/ReleaseNotes.md b/doc/ReleaseNotes.md index 3146124d..a5e07744 100644 --- a/doc/ReleaseNotes.md +++ b/doc/ReleaseNotes.md @@ -2,7 +2,7 @@ ## Wish list for next release - * Change the API to allow only on kind of transformation, not a list of transformations. See issue [#164](https://github.com/ethz-asl/libpointmatcher/issues/164). + * Change the API to allow only on kind of transformation, not a list of transformations. See issue [#164](https://github.com/norlab-ulaval/libpointmatcher/issues/164). * Migrate ffrom yaml-cpp 0.3 to 0.5 * Fix portability problem with FileLogger on Windows * Support for OpenMP parallel computing @@ -13,11 +13,11 @@ Already implemented in the current master: * add a new OutlierFilter: RobustWelschOutlierFilter (for robust cost function using Welsch weighting). * Add a new ErrorMinimizer: PointToPointSimilarityErrorMinimizer (rotation + translation + scale) * Add a new Transformation: SimilarityTransformation. - * Add a new data filter: [VoxelGrid](https://github.com/ethz-asl/libpointmatcher/blob/master/doc/Datafilters.md#voxel-grid-filter-) (April 2014, thanks to Samuel Charreyron) + * Add a new data filter: [VoxelGrid](https://github.com/norlab-ulaval/libpointmatcher/blob/master/doc/Datafilters.md#voxel-grid-filter-) (April 2014, thanks to Samuel Charreyron) * Add support for PCL ([Point Cloud Library](http://pointclouds.org/)) data format: PCD (April 2014, thanks to Samuel Charreyron) * Improve *.vtk legacy format to handle UNSTRUCTURED_GRID format (April 2014, thanks to Samuel Charreyron) * New ErrorMinimizer producing covariance matrix (1 April, 2014, thanks to Francisco J Perez Grau) - * Better user [documentation and tutorials](https://github.com/ethz-asl/libpointmatcher/blob/master/doc/index.md) (5 Fev. 2014 thanks to Samuel Charreyron) + * Better user [documentation and tutorials](https://github.com/norlab-ulaval/libpointmatcher/blob/master/doc/index.md) (5 Fev. 2014 thanks to Samuel Charreyron) * Avoid point cloud copies when filtering (10 Jan. 2014 thanks to Oleg Alexandrov) * Add CMake support for find_package (20 Sept. 2013) * Added support for PLY ([Polygon File Format or the Stanford Triangle Format](http://en.wikipedia.org/wiki/PLY_(file_format))) for ascii encoding (14 March, 2014) diff --git a/doc/TransformationDev.md b/doc/TransformationDev.md index b379abdc..4a4f3c6f 100644 --- a/doc/TransformationDev.md +++ b/doc/TransformationDev.md @@ -130,7 +130,7 @@ inline static const std::string description() } ``` -After adding the class to `TransformationsImpl`, we will add it to the registry as a libpointmatcher module. We do so by adding the following macro in [pointmatcher/Registry.cpp](https://github.com/ethz-asl/libpointmatcher/blob/master/pointmatcher/Registry.cpp) +After adding the class to `TransformationsImpl`, we will add it to the registry as a libpointmatcher module. We do so by adding the following macro in [pointmatcher/Registry.cpp](https://github.com/norlab-ulaval/libpointmatcher/blob/master/pointmatcher/Registry.cpp) ```cpp ADD_TO_REGISTRAR_NO_PARAM(Transformation, PureTranslation, typename TransformationsImpl::PureTranslation) diff --git a/doc/UnitTestDev.md b/doc/UnitTestDev.md index ad19d697..bbb7c137 100644 --- a/doc/UnitTestDev.md +++ b/doc/UnitTestDev.md @@ -7,7 +7,7 @@ It is often good practice to accompany the development of new software features Libpointmatcher uses the [C++ testing framework developed by Google](https://github.com/google/googletest). If you are not sure if you installed libpointmatcher with GTest, go to the libpointmatcher's CMake build directory and run `make test`. If the tests do not run, refer back to the [compilation instructions](CompilationUbuntu.md) to recompile with GTest. -Libpointmatcher's unit tests can be found in [utest/utest.cpp](https://github.com/ethz-asl/libpointmatcher/blob/master/utest/utest.cpp). In this tutorial, we will write a series of tests for validating the voxel grid filter developed in [this past tutorial](DataPointsFilterDev.md). Note that this test will not cover the myriad of features that GTest provides. Nevertheless, it is very easy to understand GTest without extensive experience. For those who wish to have a solid introduction to GTest we recommend to start with this [this primer](https://github.com/google/googletest/blob/master/googletest/docs/primer.md). +Libpointmatcher's unit tests can be found in [utest/utest.cpp](https://github.com/norlab-ulaval/libpointmatcher/blob/master/utest/utest.cpp). In this tutorial, we will write a series of tests for validating the voxel grid filter developed in [this past tutorial](DataPointsFilterDev.md). Note that this test will not cover the myriad of features that GTest provides. Nevertheless, it is very easy to understand GTest without extensive experience. For those who wish to have a solid introduction to GTest we recommend to start with this [this primer](https://github.com/google/googletest/blob/master/googletest/docs/primer.md). ## A Unit Test for the Voxel Grid Filter @@ -254,7 +254,7 @@ You can check that these tests are run succesfully by executing the following co To avoid writting the same basic test for a given combination of solution, a generic test uses a list of yaml files and executes them to verify that the solution is the same as before. This - list can be found here: [examples/data/icp_data/](https://github.com/ethz-asl/libpointmatcher/tree/master/examples/data/icp_data/) + list can be found here: [examples/data/icp_data/](https://github.com/norlab-ulaval/libpointmatcher/tree/master/examples/data/icp_data/) There are two types of files with the same name, but with a different extension. The first one is the `.yaml` which contains the solution to be tested (see [Configurations with YAML](Configuration.md)). The second one is the `.ref_trans`, which contains the 4 by 4 matrix used as the valid output. @@ -262,7 +262,7 @@ The steps to add a new test is the following: 1. Add a yaml file in `examples/data/icp_data/` with the desired configuration to test. - 1. In this configuration, add a `VTKFileInspector` as in [this tutorial](https://github.com/ethz-asl/libpointmatcher/blob/master/doc/ICPIntro.md#a-real-icp-configuration). + 1. In this configuration, add a `VTKFileInspector` as in [this tutorial](https://github.com/norlab-ulaval/libpointmatcher/blob/master/doc/ICPIntro.md#a-real-icp-configuration). 1. Run the unit tests (the test will fail, it's normal): `./utest/utest --path ../examples/data/ --gtest_filter=icpTest.icpTest` diff --git a/doc/index.md b/doc/index.md index 4d6757f3..a69c5812 100644 --- a/doc/index.md +++ b/doc/index.md @@ -32,13 +32,13 @@ This page lists the available tutorials for libpointmatcher. The [Beginner](#beg - [Example: Writing a program which performs ICP](BasicRegistration.md) - [How to move a point cloud using a rigid transformation?](Transformations.md) - [Example: Configure an ICP solution without yaml](ICPWithoutYaml.md) -- Measuring Hausdorff distance, Haussdorff quantile and mean residual error? [See this discussion for code examples.](https://github.com/ethz-asl/libpointmatcher/issues/125) -- How to compute the residual error with `ErrorMinimizer::getResidualError(...)` [See the example code provided here.](https://github.com/ethz-asl/libpointmatcher/issues/193#issue-203885636) -- How to build a global map from a sequence of scans? [See the example align_sequence.cpp](https://github.com/ethz-asl/libpointmatcher/blob/master/examples/align_sequence.cpp ). -- How to minimize the error with translation, rotation and scale? [See this example.](https://github.com/ethz-asl/libpointmatcher/issues/188#issuecomment-270960696) -- How to do a nearest neighbor search between two point clouds without an ICP object? [See the comments here.](https://github.com/ethz-asl/libpointmatcher/issues/193#issuecomment-276093785) -- How to construct a `DataPoints` from my own point cloud? [See the unit test on `Datapoints` here.](https://github.com/ethz-asl/libpointmatcher/blob/master/utest/ui/DataFilters.cpp#L52) -- How to link against [PCL](https://pointclouds.org/)? [See the comments here.](https://github.com/ethz-asl/libpointmatcher/issues/176#issuecomment-734067786) +- Measuring Hausdorff distance, Haussdorff quantile and mean residual error? [See this discussion for code examples.](https://github.com/norlab-ulaval/libpointmatcher/issues/125) +- How to compute the residual error with `ErrorMinimizer::getResidualError(...)` [See the example code provided here.](https://github.com/norlab-ulaval/libpointmatcher/issues/193#issue-203885636) +- How to build a global map from a sequence of scans? [See the example align_sequence.cpp](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/align_sequence.cpp ). +- How to minimize the error with translation, rotation and scale? [See this example.](https://github.com/norlab-ulaval/libpointmatcher/issues/188#issuecomment-270960696) +- How to do a nearest neighbor search between two point clouds without an ICP object? [See the comments here.](https://github.com/norlab-ulaval/libpointmatcher/issues/193#issuecomment-276093785) +- How to construct a `DataPoints` from my own point cloud? [See the unit test on `Datapoints` here.](https://github.com/norlab-ulaval/libpointmatcher/blob/master/utest/ui/DataFilters.cpp#L52) +- How to link against [PCL](https://pointclouds.org/)? [See the comments here.](https://github.com/norlab-ulaval/libpointmatcher/issues/176#issuecomment-734067786) ## Developer diff --git a/examples/build_map.cpp b/examples/build_map.cpp index 939ce449..9df2a2b3 100644 --- a/examples/build_map.cpp +++ b/examples/build_map.cpp @@ -98,7 +98,7 @@ int main(int argc, char *argv[]) ); // For a complete description of filter, see - // https://github.com/ethz-asl/libpointmatcher/blob/master/doc/Datafilters.md + // https://github.com/norlab-ulaval/libpointmatcher/blob/master/doc/Datafilters.md std::shared_ptr normalFilter = PM::get().DataPointsFilterRegistrar.create( "SurfaceNormalDataPointsFilter", diff --git a/examples/python/build_map.py b/examples/python/build_map.py index 7101b66a..fcd2dc8c 100644 --- a/examples/python/build_map.py +++ b/examples/python/build_map.py @@ -47,7 +47,7 @@ params.clear() # For a complete description of filter, see -# https://github.com/ethz-asl/libpointmatcher/blob/master/doc/Datafilters.md +# https://github.com/norlab-ulaval/libpointmatcher/blob/master/doc/Datafilters.md params["knn"] = "10" params["epsilon"] = "5" params["keepNormals"] = "1" diff --git a/mkdocs.yml b/mkdocs.yml index 102745ee..1ae9bef9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,5 +1,5 @@ site_name: libpointmatcher -repo_url: https://github.com/ethz-asl/libpointmatcher +repo_url: https://github.com/norlab-ulaval/libpointmatcher edit_uri: edit/master/doc site_description: An "Iterative Closest Point" library for 2-D/3-D mapping in robotic google_analytics: ['UA-70950258-1', 'libpointmatcher.readthedocs.org'] diff --git a/pointmatcher.pc.in b/pointmatcher.pc.in index 116a8100..a6e744cf 100644 --- a/pointmatcher.pc.in +++ b/pointmatcher.pc.in @@ -4,7 +4,7 @@ libdir=${prefix}/lib includedir=${prefix}/include Name: @CMAKE_PROJECT_NAME@ -Description: See https://github.com/ethz-asl/libpointmatcher +Description: See https://github.com/norlab-ulaval/libpointmatcher Version: @PROJECT_VERSION@ Libs: -L${libdir} @LIBRARY_CC_ARGS@ Cflags: -I${includedir}/ diff --git a/pointmatcher/PointMatcher.h b/pointmatcher/PointMatcher.h index 0529e39c..57760726 100644 --- a/pointmatcher/PointMatcher.h +++ b/pointmatcher/PointMatcher.h @@ -750,14 +750,14 @@ struct PointMatcher "Function now always returns map with filter chain applied. " "This may have altered your program behavior." "Reasons for this stated here and in associated PR: " - "https://github.com/ethz-asl/libpointmatcher/issues/209.") + "https://github.com/norlab-ulaval/libpointmatcher/issues/209.") const DataPoints& getInternalMap() const; const DataPoints& getPrefilteredInternalMap() const; PM_DEPRECATED("Use getPrefilteredMap instead. " "Function now always returns map with filter chain applied. " "This may have altered your program behavior." "Reasons for this stated here and in associated PR: " - "https://github.com/ethz-asl/libpointmatcher/issues/209") + "https://github.com/norlab-ulaval/libpointmatcher/issues/209") const DataPoints getMap() const; const DataPoints getPrefilteredMap() const; From 5a6c0869bf883e2e14375320e7121d30aeb8fa87 Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 03:45:59 -0500 Subject: [PATCH 05/14] docs: dropping `cmake-gui` workaround instruction. They are outdated, the environment variable mentioned and showed in the pictured have changed. The new cmake install logic should be able to handle those cases. --- doc/CompilationUbuntu.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/CompilationUbuntu.md b/doc/CompilationUbuntu.md index 1590484e..e143ad12 100644 --- a/doc/CompilationUbuntu.md +++ b/doc/CompilationUbuntu.md @@ -221,6 +221,7 @@ Finally, to install libpointmatcher on your system, run the following command: sudo make install ``` + + # Having problems? Some dependencies changed and we don't keep track of all combinations possible. Before reporting a problem, make sure to include the versions you are using. You can run the bash script `./utest/listVersionsUbuntu.sh` and copy-paste its output when [reporting an issue on github](https://github.com/norlab-ulaval/libpointmatcher/issues). You may need to ensure that the file is executable: From 9e861c7c9462c21b7c019404d9e4291ac01eee42 Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 05:07:34 -0500 Subject: [PATCH 06/14] docs: Codebase development workflow (draft) --- README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f48ecbdd..1f791209 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ 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](https://github.com/norlab-ulaval/libpointmatcher/blob/master/doc/index.md#python-). - -**Quick link for the tutorial pages: [Tutorials](doc/index.md) (also available on [readthedocs.org](http://libpointmatcher.readthedocs.org/)).** + +**Quick link for the tutorial pages: [Tutorials](doc/index.md)** (also available on [readthedocs.org](http://libpointmatcher.readthedocs.org/) but might not be up-to-date). 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. @@ -61,11 +61,21 @@ utest/utest --path ../examples/data/ We mainly develop for __cmake projects__ and we provide example files under [`examples/demo_cmake/`](https://github.com/norlab-ulaval/libpointmatcher/tree/master/examples/demo_cmake) to help you in your own project. We also provide a __QT Creator__ example in [`examples/demo_QT/`](https://github.com/norlab-ulaval/libpointmatcher/tree/master/examples/demo_Qt), which manually lists all the dependencies in the file [`demo.pro`](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/demo_Qt/demo.pro). You would need to ajust those paths to point at the appropriate locations on your system. For a more detailed procedure, check the [Linking Projects to libpointmatcher](doc/LinkingProjects.md) section. +## Contributing ### Bug reporting Please use our [github's issue tracker](http://github.com/ethz-asl/libpointmatcher/issues) to report bugs. If you are running the library on Ubuntu, copy-paste the output of the script [listVersionsUbuntu.sh](https://github.com/norlab-ulaval/libpointmatcher/blob/master/utest/listVersionsUbuntu.sh) to simplify the search of an answer. +### Codebase development + +Libpointmatcher codebase now integrate [norlab-build-system (NBS)](https://github.com/norlab-ulaval/norlab-build-system) which is a build infrastructure agnostic build system custom made for our need at NorLab. +NBS is deployed on our [TeamCity](https://www.jetbrains.com/teamcity/) continuous integration/deployment server and oversee both protected branch of the [libpointmatcher](https://github.com/norlab-ulaval/libpointmatcher) GitHub repository: the `master` branch and the `develop` branch. +- The `master` branch can only be merged from the `release` branch through a pull-request done the repository admin; +- The `develop` branch can only be merged from any `` branch through a pull-request. Any contributor can submit a pullrequest to the `develop` branch + + + ## File formats The library support different file formats for importing or exporting data: * csv (Comma Separated Values) From db6d59d9afd44df1fc59c7427ed6071d949db313 Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 06:21:17 -0500 Subject: [PATCH 07/14] docs: Codebase development workflow --- README.md | 88 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 74 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 1f791209..617ac7df 100644 --- a/README.md +++ b/README.md @@ -61,29 +61,89 @@ utest/utest --path ../examples/data/ We mainly develop for __cmake projects__ and we provide example files under [`examples/demo_cmake/`](https://github.com/norlab-ulaval/libpointmatcher/tree/master/examples/demo_cmake) to help you in your own project. We also provide a __QT Creator__ example in [`examples/demo_QT/`](https://github.com/norlab-ulaval/libpointmatcher/tree/master/examples/demo_Qt), which manually lists all the dependencies in the file [`demo.pro`](https://github.com/norlab-ulaval/libpointmatcher/blob/master/examples/demo_Qt/demo.pro). You would need to ajust those paths to point at the appropriate locations on your system. For a more detailed procedure, check the [Linking Projects to libpointmatcher](doc/LinkingProjects.md) section. -## Contributing +## 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 +limited functionality support. For more details, see the +tutorial [Importing and Exporting Point Clouds](doc/ImportExport.md). Example executables using +those file formats from the command line can be found in the `/examples` directory and are +described [here](doc/ICPIntro.md) in more detail. + +# Contributing -### Bug reporting +## Bug reporting Please use our [github's issue tracker](http://github.com/ethz-asl/libpointmatcher/issues) to report bugs. If you are running the library on Ubuntu, copy-paste the output of the script [listVersionsUbuntu.sh](https://github.com/norlab-ulaval/libpointmatcher/blob/master/utest/listVersionsUbuntu.sh) to simplify the search of an answer. -### Codebase development +## Codebase -Libpointmatcher codebase now integrate [norlab-build-system (NBS)](https://github.com/norlab-ulaval/norlab-build-system) which is a build infrastructure agnostic build system custom made for our need at NorLab. -NBS is deployed on our [TeamCity](https://www.jetbrains.com/teamcity/) continuous integration/deployment server and oversee both protected branch of the [libpointmatcher](https://github.com/norlab-ulaval/libpointmatcher) GitHub repository: the `master` branch and the `develop` branch. -- The `master` branch can only be merged from the `release` branch through a pull-request done the repository admin; -- The `develop` branch can only be merged from any `` branch through a pull-request. Any contributor can submit a pullrequest to the `develop` branch +Libpointmatcher codebase now integrate [norlab-build-system (NBS)](https://github.com/norlab-ulaval/norlab-build-system) and [norlab-shell-script-tools (N2ST)](https://github.com/norlab-ulaval/norlab-shell-script-tools). `NBS` is a build-infrastructure-agnostic build system custom-made for our need at NorLab and `N2ST` is library of shell script, function for shell script development and a shell testing tools leveraging `bats-core`. +NBS is deployed on our [TeamCity](https://www.jetbrains.com/teamcity/) continuous integration/deployment server and oversees both protected branch of the [libpointmatcher](https://github.com/norlab-ulaval/libpointmatcher) GitHub repository: the `master` branch and the `develop` branch. +- The `develop` branch can only be merged through a pull-request from any `` branchs. Any contributor can submit a pull request to the `develop` branch; +- The `master` branch can only be merged from the `release` branch through a pull-request by a repository admin. +In both cases submiting a pull request will trigger a build configuration on our build system and the pull request will be granted if the build/test run succeede. -## 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) +**Current build matrix:** +`[latest] x [x86, arm64] x [ubuntu] x [bionic, focal, jammy] x [Release, RelWithDebInfo, MinSizeRel]` + +### Development workflow + +To speed up the development process, you can run the build system localy on your workstation and have access to stacktrace and build log. +It support multi-OS and multi-architecture through docker container. +Install steps +```shell +cd + +# If libpointmatcher is already cloned, fetch the NBS and N2ST submodule +git submodule update --remote --recursive --init + +cd ./build_system/lpm_utility_script + +# Execute docker tools install script i.e. docker daemon, docker compose, docker buildx +bash lpm_install_docker_tools.bash + +# Configure a multi-architecture docker builder +bash lpm_create_multiarch_docker_builder.bash +``` + +Execute build/test step localy +```shell +cd /build_system + + +# Run the build matrix as specified in ".env.build_matrix.libpointmatcher" on native architecture using "ci_PR" service +bash lpm_crawl_libpointmatcher_build_matrix.bash --fail-fast -- build ci_PR + +# Run a specific case using build flags with multi-architecture virtualization using "ci_PR_amd64" and "ci_PR_arm64v8" services +bash lpm_crawl_libpointmatcher_build_matrix.bash --repository-version-build-matrix-override latest \ + --os-name-build-matrix-override ubuntu \ + --cmake-build-type-build-matrix-override RelWithDebInfo \ + --ubuntu-version-build-matrix-override focal \ + --fail-fast \ + -- build ci_PR_amd64 ci_PR_arm64v8 + +# Read the help for details +bash lpm_crawl_libpointmatcher_build_matrix.bash --help +``` + +**Build system notes:** +- `lpm_crawl_dependencies_build_matrix.bash` execute the build matrix for the libpointmatcher dependencies. + It's not required to build them locally as they are pre-build by our TeamCity server periodically push to dockerhub. + When executing `lpm_crawl_libpointmatcher_build_matrix.bash`, the `libpointmatcher-dependencies` docker images are pull and used as base image for the `libpointmatcher-[ci_PR_test|release]` images. +- About `libpointmatcher/.github/workflow/` vs `libpointmatcher/build_system/` logic: Those are separate build logic. + `.github/workflow/` was community contributed and as the responsibilities of building python-binding and pushing packages. + For this reason, it run a one-dimension build matrix: multiple python version, single OS version, single arch (x86) and + single compile flag which GitHub action computing resources can handle just fine. -Those functionnalities are available without increasing the list of dependencies at the expense of limited functionality support. For more details, see the tutorial [Importing and Exporting Point Clouds](doc/ImportExport.md). Example executables using those file formats from the command line can be found in the `/examples` directory and are described [here](doc/ICPIntro.md) in more detail. # Citing From ef82b1c4be25813d1cd3b1a4ebf29da2096e4da4 Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 06:42:06 -0500 Subject: [PATCH 08/14] docs: Update CHANGELOG.rst --- CHANGELOG.rst | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 686cd35a..f9d19042 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,6 +2,91 @@ Changelog for package libpointmatcher ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +2.0.0 (2023-12-15) +----------------- +* fix: N2ST path resolution in dependencies-doc docker image +* refactor: move libpointmatcher build-system logic to norlab-build-system submodule +* fix: build-system side unstable compilation issue fix +* Fixes to CMake library management config generation +* New DataPoints filter for descriptor augmentation Enhancement +* Fix 2D transformation tests in debug +* Fix Transformations test build when using Eigen3.4 +* Disable static boost linkage by default +* Update CompilationPython.md +* Update README.md +* Update readme_test.md for docker daemon test +* Create readme_test.md +* Updated the inner loop counter +* build-system minor mod +* libpointmatcher build-system +* Fix omega descriptor export +* Handle libnabo config mode +* Build python binding as regular package +* Fix time values after applying Sampling surface normal filter +* Add seed to Random sampling filter +* Add more details in pypointmatcher's installation docs +* Fixed compilation on Visual Studio 2022 +* Fix 4DoF PointToPlane error minimizer crash +* Use the LOG_INFO_STREAM macro instead of std::cerr +* package format=3 +* Create LICENSE file based on BSD license as per package.xml +* catkin not required for pure cmake packages +* Histogram::computeStats() without sorting the Histogram +* Windows: Fix Narrowing conversion of seed in MaxPointCount +* Change storage ordering of the eigen vectors descriptors +* Apply the transformation to eigen vectors +* Fix the surface normals datapoints filter covariance matrix bug +* Fix weird behavior of MaxPointCountDataPointsFilter +* Bug fix in SurfaceNormalOutlierFilter +* Update CompilationWindows.md +* [Matches/OutlierFiltersImpl] Made convergence error messages more informative +* RemoveBeyond option for the maxQuantileDistance filter +* refactor: Drop support for yaml-cpp old API Enhancement +* Automaticaly find eigen3 +* Strong Windows installation tutorial update +* Add libpointmatcher_INCLUDE_DIR to match with CGAL +* Add Boost_LIBRARIES to pointmatcher_LIBRARIES +* Add option to weight by reading pc +* Fixes for windows +* Fix windows doc +* Include iso646.h to add and, or, not macros +* Typo in PCL lib name +* Implemented an in-place method for transforming DataPoints objects +* The keyword "or" is not supported by windows compilers. +* Link against pthread +* [DataPoints] Added check to prevent unsigned int underflow in getEuclideanDim() +* [feature/spdf] Add SpectralDecompositionFilter (SpDF) +* Fixed the differences between examples and documentation (#409) +* Fix build of downstream packages. +* Reorganization of the compiling tutorials for ubuntu and macos +* Added reference for PointToPlaneWithCov ErrorMinimizer. +* [WIP] feature/python_module : Adding libpointmatcher's Python bindings (#222) Enhancement +* Feature/speedup random sampling filter +* Replaced the remaining raw pointers with shared pointers in Registrar.h +* Adding the new outlierfilters documentation to mkdocs .yml +* Outlier filter documentation added +* Fix/typo Fixes tutorials building failure +* Fixes tutorials formatting problem (#373) +* [WIP] Fix/typo : Tutorials improvements +* Fix out-of-bounds access +* Add missing force4DOF param to PointToPlaneWithCov +* Modernize cmake; make cmake compatible with git submoduling +* Feature/4 dof for point to plane minimizer +* Feature/geometry data points filter for master +* Get rid of the Visual C++ warnings +* Change matrix type +* Update link to documentation in readme +* Fix segfault happening in ICPSequence class +* Added missing include that made windows compilation fail. +* Change icp chain image to an svg +* Add support for Travis +* Fix typo +* Improve speed of Normal Space filtering +* Fix/normal space hashing +* Fix/clamp normals + + + 1.3.1 (2019-03-04) ------------------ * Added documentation for people using ROS. From 669daa9bfd6d349fc80c0d01e9e8619d4036a1dd Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 06:42:47 -0500 Subject: [PATCH 09/14] docs: add git submodule instructions --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 617ac7df..6c98765a 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,15 @@ You can read the latest changes in the [release notes](doc/ReleaseNotes.md). # Quick Start +Clone the repository with its submodule +```shell +git clone --recurse-submodules https://github.com/norlab-ulaval/libpointmatcher.git + +# If libpointmatcher is already cloned, fetch its new submodule +git submodule update --remote --recursive --init +``` + + Although we suggest to use the [tutorials](doc/index.md), here is a quick version of it: The library has a light dependency list: From a5faeb81cc6b260e33b57cbb36f6a244137642c5 Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 07:53:15 -0500 Subject: [PATCH 10/14] docs: add build system development instruction --- README.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6c98765a..de25a172 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,8 @@ tutorial [Importing and Exporting Point Clouds](doc/ImportExport.md). Example ex those file formats from the command line can be found in the `/examples` directory and are described [here](doc/ICPIntro.md) in more detail. +--- + # Contributing ## Bug reporting @@ -108,7 +110,8 @@ In both cases submiting a pull request will trigger a build configuration on our To speed up the development process, you can run the build system localy on your workstation and have access to stacktrace and build log. It support multi-OS and multi-architecture through docker container. -Install steps + +#### Install _libpointmatcher-build-system_ dependencies ```shell cd @@ -124,11 +127,10 @@ bash lpm_install_docker_tools.bash bash lpm_create_multiarch_docker_builder.bash ``` -Execute build/test step localy +#### libpointmatcher development › to execute build/test step locally ```shell cd /build_system - # Run the build matrix as specified in ".env.build_matrix.libpointmatcher" on native architecture using "ci_PR" service bash lpm_crawl_libpointmatcher_build_matrix.bash --fail-fast -- build ci_PR @@ -144,7 +146,14 @@ bash lpm_crawl_libpointmatcher_build_matrix.bash --repository-version-build-matr bash lpm_crawl_libpointmatcher_build_matrix.bash --help ``` -**Build system notes:** +#### Build system development › to execute docker dryrun and configuration test +```shell +cd /build_system/tests/ + +bash run_all_docker_dryrun_and_config_tests.bash +``` + +#### Build system notes: - `lpm_crawl_dependencies_build_matrix.bash` execute the build matrix for the libpointmatcher dependencies. It's not required to build them locally as they are pre-build by our TeamCity server periodically push to dockerhub. When executing `lpm_crawl_libpointmatcher_build_matrix.bash`, the `libpointmatcher-dependencies` docker images are pull and used as base image for the `libpointmatcher-[ci_PR_test|release]` images. @@ -153,6 +162,7 @@ bash lpm_crawl_libpointmatcher_build_matrix.bash --help For this reason, it run a one-dimension build matrix: multiple python version, single OS version, single arch (x86) and single compile flag which GitHub action computing resources can handle just fine. +--- # Citing From b634570b1553c799439a88c88ae277398ede01e1 Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 08:51:48 -0500 Subject: [PATCH 11/14] docs: update bionic dependencies version --- doc/CompilationUbuntu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/CompilationUbuntu.md b/doc/CompilationUbuntu.md index e143ad12..d584927c 100644 --- a/doc/CompilationUbuntu.md +++ b/doc/CompilationUbuntu.md @@ -10,7 +10,7 @@ If you are used to development projects, here is what you need: | Name | Version
(Tested A2023) | Version
(Tested A2023) | |----------------|----------------------------------------------------|----------------------------------------------------| | Ubuntu | bionic 18.04.1 LTS (64 bit) | focal 20.04 LTS (64 bit) | -| gcc | 7.3.0 | latest | +| gcc | 7.5.0 | latest | | git | 2.17.1 | latest | | cmake | 3.10.2 | latest | | doxygen (opt.) | 1.8.13-10 | latest | From f4fb09f48389b203a6068aafa55404d23ab89567 Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 10:09:59 -0500 Subject: [PATCH 12/14] docs: update jammy dependencies version --- doc/CompilationUbuntu.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/doc/CompilationUbuntu.md b/doc/CompilationUbuntu.md index d584927c..6b7b81f8 100644 --- a/doc/CompilationUbuntu.md +++ b/doc/CompilationUbuntu.md @@ -7,19 +7,19 @@ If you are used to development projects, here is what you need: -| Name | Version
(Tested A2023) | Version
(Tested A2023) | -|----------------|----------------------------------------------------|----------------------------------------------------| -| Ubuntu | bionic 18.04.1 LTS (64 bit) | focal 20.04 LTS (64 bit) | -| gcc | 7.5.0 | latest | -| git | 2.17.1 | latest | -| cmake | 3.10.2 | latest | -| doxygen (opt.) | 1.8.13-10 | latest | -| | | | -| _Dependency:_ | | | -| boost | 1.65.1 | latest | -| eigen | 3.3.4-4 | latest | -| yaml-cpp | 0.5+ | latest | -| libnabo | [from source](https://github.com/ethz-asl/libnabo) | [from source](https://github.com/ethz-asl/libnabo) | +| Name | Version
(Tested A2023) | Version
(Tested A2023) | Version
(Tested A2023) | +|----------------|----------------------------------------------------|----------------------------------------------------|----------------------------------------------------| +| Ubuntu | bionic 18.04.1 LTS (64 bit) | focal 20.04 LTS (64 bit) | jammy 22.04 LTS (64 bit) | +| gcc | 7.5.0 | latest | latest | +| git | 2.17.1 | latest | latest | +| cmake | 3.10.2 | latest | latest | +| doxygen (opt.) | 1.8.13-10 | latest | latest | +| | | | | +| _Dependency:_ | | | | +| boost | 1.65.1 | latest | latest | +| eigen | 3.3.4-4 | latest | latest | +| yaml-cpp | 0.5+ | latest | latest | +| libnabo | [from source](https://github.com/ethz-asl/libnabo) | [from source](https://github.com/ethz-asl/libnabo) | [from source](https://github.com/ethz-asl/libnabo) | __Note:__ we only support 64-bit systems because of some issues with Eigen. Other versions will most probably work but you'll have to try yourself to know for sure. From 3a15503c673ff63ea6cc7807c8dc78a1f289ed57 Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 16:20:33 -0500 Subject: [PATCH 13/14] refactor: change prefix `NBS_LINE_` to n2st compliant `MSG_LINE_`; use n2st script instead of lpm_which_python3_version.bash, lpm_export_which_architecture.bash and lpm_install_docker_tools.bash. --- ...ependencies (BUILD MATRIX SUBSET).run.xml" | 2 +- ...uild test_compilation__ (Release).run.xml" | 4 +- .../lpm_utility_script/lpm_bashrc_config.bash | 6 +- .../lpm_create_multiarch_docker_builder.bash | 7 +- .../lpm_export_which_architecture.bash | 70 ------------------- .../lpm_install_docker_tools.bash | 66 ++--------------- .../lpm_which_python3_version.bash | 5 -- .../build_and_run_IamBuildSystemTester.bash | 4 +- build_system/ubuntu/Dockerfile.dependencies | 1 - .../ubuntu/Dockerfile.dependencies.doxygen | 1 - ...m_install_dependencies_general_ubuntu.bash | 8 +-- ...m_install_dependencies_libnabo_ubuntu.bash | 8 +-- .../lpm_install_doc_dependencies_ubuntu.bash | 8 +-- .../lpm_install_libpointmatcher_ubuntu.bash | 14 ++-- build_system/utilities/norlab-build-system | 2 +- 15 files changed, 35 insertions(+), 171 deletions(-) delete mode 100644 build_system/lpm_utility_script/lpm_export_which_architecture.bash delete mode 100644 build_system/lpm_utility_script/lpm_which_python3_version.bash diff --git "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies-general dependencies (BUILD MATRIX SUBSET).run.xml" "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies-general dependencies (BUILD MATRIX SUBSET).run.xml" index ce434e21..10b135ac 100644 --- "a/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies-general dependencies (BUILD MATRIX SUBSET).run.xml" +++ "b/build_system/.jetbrains_run_config/bash lpm_execute_compose_over_build_matrix.bash \342\200\272 build dependencies-general dependencies (BUILD MATRIX SUBSET).run.xml" @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/build_system/lpm_utility_script/lpm_bashrc_config.bash b/build_system/lpm_utility_script/lpm_bashrc_config.bash index 3fd13fc8..6e2bd44f 100644 --- a/build_system/lpm_utility_script/lpm_bashrc_config.bash +++ b/build_system/lpm_utility_script/lpm_bashrc_config.bash @@ -19,13 +19,13 @@ function lpm::configure_bashrc() { source .env set +o allexport - # ....Helper function.............................................................................................. + # ....Helper function............................................................................ # import shell functions from utilities library N2ST_PATH=${N2ST_PATH:-"${LPM_PATH}/build_system/utilities/norlab-shell-script-tools"} source "${N2ST_PATH}/import_norlab_shell_script_tools_lib.bash" # ====Begin====================================================================================== - print_formated_script_header 'lpm_bashrc_config.bash' "${NBS_LINE_CHAR_UTIL}" + print_formated_script_header 'lpm_bashrc_config.bash' "${MSG_LINE_CHAR_UTIL}" if [[ "$(basename ${LPM_PATH})" != "${NBS_REPOSITORY_NAME}" ]]; then @@ -49,7 +49,7 @@ function lpm::configure_bashrc() { print_msg_done "New aliases with prefix 'lpm' added to .bashrc" - print_formated_script_footer 'lpm_bashrc_config.bash' "${NBS_LINE_CHAR_UTIL}" + print_formated_script_footer 'lpm_bashrc_config.bash' "${MSG_LINE_CHAR_UTIL}" # ====Teardown=================================================================================== cd "${TMP_CWD}" diff --git a/build_system/lpm_utility_script/lpm_create_multiarch_docker_builder.bash b/build_system/lpm_utility_script/lpm_create_multiarch_docker_builder.bash index b8096f51..98d35e2f 100644 --- a/build_system/lpm_utility_script/lpm_create_multiarch_docker_builder.bash +++ b/build_system/lpm_utility_script/lpm_create_multiarch_docker_builder.bash @@ -7,20 +7,19 @@ # function lpm::create_multiarch_docker_builder() { - # ....Project root logic......................................................................... local TMP_CWD TMP_CWD=$(pwd) # ....Project root logic......................................................................... LPM_PATH=$(git rev-parse --show-toplevel) - cd "${LPM_PATH}/build_system" || exit # ....Load environment variables from file....................................................... + cd "${LPM_PATH}/build_system" || exit set -o allexport source .env set +o allexport - # ....Helper function.............................................................................................. + # ....Helper function............................................................................ # import shell functions from utilities library N2ST_PATH=${N2ST_PATH:-"${LPM_PATH}/build_system/utilities/norlab-shell-script-tools"} source "${N2ST_PATH}/import_norlab_shell_script_tools_lib.bash" @@ -42,7 +41,7 @@ function lpm::create_multiarch_docker_builder() { docker buildx ls - print_formated_script_footer 'lpm_create_multiarch_docker_builder.bash' "${NBS_LINE_CHAR_UTIL}" + print_formated_script_footer 'lpm_create_multiarch_docker_builder.bash' "${MSG_LINE_CHAR_UTIL}" # ====Teardown=================================================================================== cd "${TMP_CWD}" } diff --git a/build_system/lpm_utility_script/lpm_export_which_architecture.bash b/build_system/lpm_utility_script/lpm_export_which_architecture.bash deleted file mode 100644 index c1bf12db..00000000 --- a/build_system/lpm_utility_script/lpm_export_which_architecture.bash +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/bash -# -# Tools to export the NBS_IMAGE_ARCHITECTURE environment variable with the host architecture and OS type. -# -# Usage: -# $ source ./lpm_utility_script/lpm_export_which_architecture.bash -# -# Globals: -# Read NBS_LINE_CHAR_UTIL -# Arguments: -# none -# Outputs: -# environment variable NBS_IMAGE_ARCHITECTURE will be exported either as -# - NBS_IMAGE_ARCHITECTURE=x86-linux -# - NBS_IMAGE_ARCHITECTURE=arm64-linux -# - NBS_IMAGE_ARCHITECTURE=arm64-l4t -# - NBS_IMAGE_ARCHITECTURE=arm64-darwin -# depending on which architecture and OS type the script is running: -# - ARCH: aarch64, arm64, x86_64 -# - OS: Linux, Darwin, Window -# -# (NICE TO HAVE) ToDo: assessment >> check the convention used by docker >> os[/arch[/variant]] -# linux/arm64/v8 -# darwin/arm64/v8 -# l4t/arm64/v8 -# ref: https://docs.docker.com/compose/compose-file/05-services/#platform -# -# Returns: -# exit 1 in case of unsupported processor architecture - -function lpm::export_which_architecture() { - local TMP_CWD - TMP_CWD=$(pwd) - - # ....Project root logic......................................................................... - LPM_PATH=$(git rev-parse --show-toplevel) - cd "${LPM_PATH}/build_system" || exit - - # ....Helper function.............................................................................................. - # import shell functions from utilities library - N2ST_PATH=${N2ST_PATH:-"${LPM_PATH}/build_system/utilities/norlab-shell-script-tools"} - source "${N2ST_PATH}/import_norlab_shell_script_tools_lib.bash" - - # ====Begin====================================================================================== - #print_formated_script_header 'lpm_export_which_architecture.bash' "${NBS_LINE_CHAR_UTIL}" - - if [[ $(uname -m) == "aarch64" ]]; then - if [[ -n $(uname -r | grep tegra) ]]; then - export NBS_IMAGE_ARCHITECTURE='arm64-l4t' - elif [[ $(uname) == "Linux" ]]; then - export NBS_IMAGE_ARCHITECTURE='arm64-linux' - else - echo -e "${MSG_ERROR} Unsupported OS for aarch64 processor" - fi - elif [[ $(uname -m) == "arm64" ]] && [[ $(uname) == "Darwin" ]]; then - export NBS_IMAGE_ARCHITECTURE='arm64-darwin' - elif [[ $(uname -m) == "x86_64" ]] && [[ $(uname) == "Linux" ]]; then - export NBS_IMAGE_ARCHITECTURE='x86-linux' - else - print_msg_error_and_exit "Unsupported processor architecture" - fi - - print_msg "Setting NBS_IMAGE_ARCHITECTURE=${NBS_IMAGE_ARCHITECTURE}" - #print_formated_script_footer 'lpm_export_which_architecture.bash' "${NBS_LINE_CHAR_UTIL}" - # ====Teardown=================================================================================== - cd "${TMP_CWD}" -} - -# ::::main::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -lpm::export_which_architecture diff --git a/build_system/lpm_utility_script/lpm_install_docker_tools.bash b/build_system/lpm_utility_script/lpm_install_docker_tools.bash index 5ccf08bc..6f572305 100644 --- a/build_system/lpm_utility_script/lpm_install_docker_tools.bash +++ b/build_system/lpm_utility_script/lpm_install_docker_tools.bash @@ -7,84 +7,26 @@ # function lpm::install_docker_tools() { - # ....Project root logic......................................................................... local TMP_CWD TMP_CWD=$(pwd) # ....Project root logic......................................................................... LPM_PATH=$(git rev-parse --show-toplevel) - cd "${LPM_PATH}/build_system" || exit # ....Load environment variables from file....................................................... + cd "${LPM_PATH}/build_system" || exit set -o allexport source .env set +o allexport - # ....Helper function.............................................................................................. + # ....Helper function............................................................................ # import shell functions from utilities library N2ST_PATH=${N2ST_PATH:-"${LPM_PATH}/build_system/utilities/norlab-shell-script-tools"} source "${N2ST_PATH}/import_norlab_shell_script_tools_lib.bash" - # ====Begin====================================================================================== - print_formated_script_header 'lpm_install_docker_tools.bash' - - # ............................................................................................... - echo - print_msg "Install utilities" - echo - - sudo apt-get update && - sudo apt-get upgrade --assume-yes && - sudo apt-get install --assume-yes \ - ca-certificates \ - curl \ - lsb-release \ - gnupg \ - apt-utils && - sudo rm -rf /var/lib/apt/lists/* - - # ............................................................................................... - echo - print_msg "Install Docker tools" "${NBS_LINE_CHAR_UTIL}" - - # . . Add Docker’s official GPG key:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - sudo mkdir -m 0755 -p /etc/apt/keyrings - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg - - # . . set up the docker repository:. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - echo \ - "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list >/dev/null - - # ............................................................................................... - print_msg "Install Docker-compose" - echo - - sudo apt-get update && - sudo apt-get upgrade && - sudo apt-get install --assume-yes \ - docker-ce \ - docker-ce-cli \ - containerd.io \ - docker-buildx-plugin \ - docker-compose-plugin - - # ............................................................................................... - echo - print_msg "Configure docker" - echo - - print_msg "Manage Docker as a non-root user" - # Config so that we dont have to preface docker command with sudo everytime - # Ref: https://docs.docker.com/engine/install/linux-postinstall/ - echo - - sudo groupadd -f docker - sudo usermod -a -G docker "$(whoami)" - - print_msg "${NTSI_ADMIN_USER} added to docker group" +# # ====Begin===================================================================================== + cd "${N2ST_PATH}"/src/utility_scripts/ && bash install_docker_tools.bash - print_formated_script_footer 'lpm_install_docker_tools.bash' "${NBS_LINE_CHAR_UTIL}" # ====Teardown=================================================================================== cd "${TMP_CWD}" } diff --git a/build_system/lpm_utility_script/lpm_which_python3_version.bash b/build_system/lpm_utility_script/lpm_which_python3_version.bash deleted file mode 100644 index f84c4f7c..00000000 --- a/build_system/lpm_utility_script/lpm_which_python3_version.bash +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -PYTHON3_VERSION=$(python3 -c 'import sys; version=sys.version_info; print(f"{version.major}.{version.minor}")') - -export PYTHON3_VERSION diff --git a/build_system/tests/build_and_run_IamBuildSystemTester.bash b/build_system/tests/build_and_run_IamBuildSystemTester.bash index 21e94176..0731adfc 100644 --- a/build_system/tests/build_and_run_IamBuildSystemTester.bash +++ b/build_system/tests/build_and_run_IamBuildSystemTester.bash @@ -52,7 +52,7 @@ fi # ====Begin======================================================================================== -print_formated_script_header 'build_and_run_IamBuildSystemTester.bash' "${NBS_LINE_CHAR_TEST}" +print_formated_script_header 'build_and_run_IamBuildSystemTester.bash' "${MSG_LINE_CHAR_TEST}" # ....Build image.................................................................................. echo @@ -71,6 +71,6 @@ fi show_and_execute_docker "run --name IamBuildSystemTester -t -i --rm lpm.ubuntu20.buildsystem.test ${DOCKER_CMD_ARGS}" -print_formated_script_footer 'build_and_run_IamBuildSystemTester.bash' "${NBS_LINE_CHAR_TEST}" +print_formated_script_footer 'build_and_run_IamBuildSystemTester.bash' "${MSG_LINE_CHAR_TEST}" # ====Teardown===================================================================================== cd "${TMP_CWD}" diff --git a/build_system/ubuntu/Dockerfile.dependencies b/build_system/ubuntu/Dockerfile.dependencies index a55b7758..bee478fe 100644 --- a/build_system/ubuntu/Dockerfile.dependencies +++ b/build_system/ubuntu/Dockerfile.dependencies @@ -87,7 +87,6 @@ WORKDIR "${NBS_LIB_INSTALL_PATH}/${NBS_REPOSITORY_NAME}/${NBS_SUPERPROJECT_BUILD COPY ./${NBS_SUPERPROJECT_BUILD_SYSTEM_DIR}/ubuntu/lpm_install_dependencies_general_ubuntu.bash ./ubuntu/ COPY ./${NBS_SUPERPROJECT_BUILD_SYSTEM_DIR}/ubuntu/lpm_install_dependencies_libnabo_ubuntu.bash ./ubuntu/ -COPY ./${NBS_SUPERPROJECT_BUILD_SYSTEM_DIR}/lpm_utility_script/lpm_export_which_architecture.bash ./lpm_utility_script/ WORKDIR ./ubuntu RUN chmod +x ./lpm_install_dependencies_general_ubuntu.bash diff --git a/build_system/ubuntu/Dockerfile.dependencies.doxygen b/build_system/ubuntu/Dockerfile.dependencies.doxygen index 53e2d962..f16485a3 100644 --- a/build_system/ubuntu/Dockerfile.dependencies.doxygen +++ b/build_system/ubuntu/Dockerfile.dependencies.doxygen @@ -20,7 +20,6 @@ WORKDIR "${NBS_LIB_INSTALL_PATH}/${NBS_REPOSITORY_NAME}/build_system" COPY ./build_system/.env . COPY ./build_system/ubuntu/lpm_install_doc_dependencies_ubuntu.bash ./ubuntu/ -COPY ./build_system/lpm_utility_script/lpm_export_which_architecture.bash ./lpm_utility_script/ # ====Install Libpointmatcher documentation related dependencies=================================== WORKDIR ./ubuntu diff --git a/build_system/ubuntu/lpm_install_dependencies_general_ubuntu.bash b/build_system/ubuntu/lpm_install_dependencies_general_ubuntu.bash index d1c16cb9..d5a0f16b 100644 --- a/build_system/ubuntu/lpm_install_dependencies_general_ubuntu.bash +++ b/build_system/ubuntu/lpm_install_dependencies_general_ubuntu.bash @@ -26,8 +26,8 @@ set +o allexport N2ST_PATH=${N2ST_PATH:-"${LPM_PATH}/build_system/utilities/norlab-shell-script-tools"} source "${N2ST_PATH}/import_norlab_shell_script_tools_lib.bash" -# Set environment variable NBS_IMAGE_ARCHITECTURE -source "${LPM_PATH}/build_system/lpm_utility_script/lpm_export_which_architecture.bash" +# Set environment variable IMAGE_ARCH_AND_OS +cd "${N2ST_PATH}"/src/utility_scripts/ && source "which_architecture_and_os.bash" # ====Begin======================================================================================== SHOW_SPLASH_IDU="${SHOW_SPLASH_IDU:-true}" @@ -36,7 +36,7 @@ if [[ "${SHOW_SPLASH_IDU}" == 'true' ]]; then norlab_splash "${NBS_SPLASH_NAME}" "https://github.com/${NBS_REPOSITORY_DOMAIN}/${NBS_REPOSITORY_NAME}" fi -print_formated_script_header "lpm_install_dependencies_general_ubuntu.bash (${NBS_IMAGE_ARCHITECTURE})" "${NBS_LINE_CHAR_INSTALLER}" +print_formated_script_header "lpm_install_dependencies_general_ubuntu.bash (${IMAGE_ARCH_AND_OS})" "${MSG_LINE_CHAR_INSTALLER}" # ................................................................................................. teamcity_service_msg_blockOpened "Install development utilities" @@ -102,6 +102,6 @@ sudo apt-get update && teamcity_service_msg_blockClosed #echo " " && print_msg_done "Libpointmatcher general dependencies installed" -print_formated_script_footer "lpm_install_dependencies_general_ubuntu.bash (${NBS_IMAGE_ARCHITECTURE})" "${NBS_LINE_CHAR_INSTALLER}" +print_formated_script_footer "lpm_install_dependencies_general_ubuntu.bash (${IMAGE_ARCH_AND_OS})" "${MSG_LINE_CHAR_INSTALLER}" # ====Teardown===================================================================================== cd "${TMP_CWD}" diff --git a/build_system/ubuntu/lpm_install_dependencies_libnabo_ubuntu.bash b/build_system/ubuntu/lpm_install_dependencies_libnabo_ubuntu.bash index e282502f..a5ae2511 100644 --- a/build_system/ubuntu/lpm_install_dependencies_libnabo_ubuntu.bash +++ b/build_system/ubuntu/lpm_install_dependencies_libnabo_ubuntu.bash @@ -31,8 +31,8 @@ set +o allexport N2ST_PATH=${N2ST_PATH:-"${LPM_PATH}/build_system/utilities/norlab-shell-script-tools"} source "${N2ST_PATH}/import_norlab_shell_script_tools_lib.bash" -# Set environment variable NBS_IMAGE_ARCHITECTURE -source "${LPM_PATH}/build_system/lpm_utility_script/lpm_export_which_architecture.bash" +# Set environment variable IMAGE_ARCH_AND_OS +cd "${N2ST_PATH}"/src/utility_scripts/ && source "which_architecture_and_os.bash" # ....Override..................................................................................... declare -a DEFAULT_LIBNABO_CMAKE_INSTALL_PREFIX=( "-D CMAKE_INSTALL_PREFIX=${NBS_LIB_INSTALL_PATH:?err}" ) @@ -47,7 +47,7 @@ if [[ "${SHOW_SPLASH_IDU}" == 'true' ]]; then norlab_splash "${NBS_SPLASH_NAME}" "https://github.com/${NBS_REPOSITORY_DOMAIN}/${NBS_REPOSITORY_NAME}" fi -print_formated_script_header "lpm_install_dependencies_libnabo_ubuntu.bash (${NBS_IMAGE_ARCHITECTURE})" "${NBS_LINE_CHAR_INSTALLER}" +print_formated_script_header "lpm_install_dependencies_libnabo_ubuntu.bash (${IMAGE_ARCH_AND_OS})" "${MSG_LINE_CHAR_INSTALLER}" # ................................................................................................. teamcity_service_msg_blockOpened "Install Libpointmatcher dependencies › Libnabo" @@ -108,7 +108,7 @@ teamcity_service_msg_compilationFinished teamcity_service_msg_blockClosed echo " " && print_msg_done "Libpointmatcher dependencies installed" -print_formated_script_footer "lpm_install_dependencies_libnabo_ubuntu.bash (${NBS_IMAGE_ARCHITECTURE})" "${NBS_LINE_CHAR_INSTALLER}" +print_formated_script_footer "lpm_install_dependencies_libnabo_ubuntu.bash (${IMAGE_ARCH_AND_OS})" "${MSG_LINE_CHAR_INSTALLER}" # ====Teardown===================================================================================== cd "${TMP_CWD}" diff --git a/build_system/ubuntu/lpm_install_doc_dependencies_ubuntu.bash b/build_system/ubuntu/lpm_install_doc_dependencies_ubuntu.bash index a8f2d7ec..ee7f6a2e 100644 --- a/build_system/ubuntu/lpm_install_doc_dependencies_ubuntu.bash +++ b/build_system/ubuntu/lpm_install_doc_dependencies_ubuntu.bash @@ -27,8 +27,8 @@ set +o allexport N2ST_PATH=${N2ST_PATH:-"${LPM_PATH}/build_system/utilities/norlab-shell-script-tools"} source "${N2ST_PATH}/import_norlab_shell_script_tools_lib.bash" -# Set environment variable NBS_IMAGE_ARCHITECTURE -source "${LPM_PATH}/build_system/lpm_utility_script/lpm_export_which_architecture.bash" +# Set environment variable IMAGE_ARCH_AND_OS +cd "${N2ST_PATH}"/src/utility_scripts/ && source "which_architecture_and_os.bash" # ====Begin======================================================================================== SHOW_SPLASH_IDDU="${SHOW_SPLASH_IDDU:-true}" @@ -37,7 +37,7 @@ if [[ "${SHOW_SPLASH_IDDU}" == 'true' ]]; then norlab_splash "${NBS_SPLASH_NAME}" "https://github.com/${NBS_REPOSITORY_DOMAIN}/${NBS_REPOSITORY_NAME}" fi -print_formated_script_header "lpm_install_doc_dependencies_ubuntu.bash (${NBS_IMAGE_ARCHITECTURE})" "${NBS_LINE_CHAR_INSTALLER}" +print_formated_script_header "lpm_install_doc_dependencies_ubuntu.bash (${IMAGE_ARCH_AND_OS})" "${MSG_LINE_CHAR_INSTALLER}" # ................................................................................................. @@ -54,7 +54,7 @@ sudo apt-get update && teamcity_service_msg_blockClosed echo " " && print_msg_done "Libpointmatcher documentation related dependencies installed" -print_formated_script_footer "lpm_install_doc_dependencies_ubuntu.bash (${NBS_IMAGE_ARCHITECTURE})" "${NBS_LINE_CHAR_INSTALLER}" +print_formated_script_footer "lpm_install_doc_dependencies_ubuntu.bash (${IMAGE_ARCH_AND_OS})" "${MSG_LINE_CHAR_INSTALLER}" # ====Teardown===================================================================================== cd "${TMP_CWD}" diff --git a/build_system/ubuntu/lpm_install_libpointmatcher_ubuntu.bash b/build_system/ubuntu/lpm_install_libpointmatcher_ubuntu.bash index 44394ee1..31e78a54 100644 --- a/build_system/ubuntu/lpm_install_libpointmatcher_ubuntu.bash +++ b/build_system/ubuntu/lpm_install_libpointmatcher_ubuntu.bash @@ -58,8 +58,8 @@ set +o allexport N2ST_PATH=${N2ST_PATH:-"${LPM_PATH}/build_system/utilities/norlab-shell-script-tools"} source "${N2ST_PATH}/import_norlab_shell_script_tools_lib.bash" -# Set environment variable NBS_IMAGE_ARCHITECTURE -source "${LPM_PATH}/build_system/lpm_utility_script/lpm_export_which_architecture.bash" +# Set environment variable IMAGE_ARCH_AND_OS +cd "${N2ST_PATH}"/src/utility_scripts/ && source "which_architecture_and_os.bash" function print_help_in_terminal() { echo -e "\$ ${0} [] @@ -88,7 +88,7 @@ if [[ "${SHOW_SPLASH_ILU}" == 'true' ]]; then norlab_splash "${NBS_SPLASH_NAME}" "https://github.com/${NBS_REPOSITORY_DOMAIN}/${NBS_REPOSITORY_NAME}" fi -print_formated_script_header "lpm_install_libpointmatcher_ubuntu.bash (${NBS_IMAGE_ARCHITECTURE})" "${NBS_LINE_CHAR_INSTALLER}" +print_formated_script_header "lpm_install_libpointmatcher_ubuntu.bash (${IMAGE_ARCH_AND_OS})" "${MSG_LINE_CHAR_INSTALLER}" # ....Script command line flags.................................................................... @@ -223,11 +223,11 @@ if [[ ${IS_TEAMCITY_RUN} == true ]]; then else if [[ ${BUILD_EXIT_CODE} != 0 ]]; then echo -e "##teamcity[message text='${MSG_BASE_TEAMCITY} ${FAILURE_MSG}' errorDetails='$BUILD_EXIT_CODE' status='ERROR']" - print_formated_script_footer "lpm_install_libpointmatcher_ubuntu.bash (${NBS_IMAGE_ARCHITECTURE})" "${NBS_LINE_CHAR_INSTALLER}" + print_formated_script_footer "lpm_install_libpointmatcher_ubuntu.bash (${IMAGE_ARCH_AND_OS})" "${MSG_LINE_CHAR_INSTALLER}" exit $BUILD_EXIT_CODE else echo -e "##teamcity[message text='${MSG_BASE_TEAMCITY} ${FAILURE_MSG}' errorDetails='$INSTALL_EXIT_CODE' status='ERROR']" - print_formated_script_footer "lpm_install_libpointmatcher_ubuntu.bash (${NBS_IMAGE_ARCHITECTURE})" "${NBS_LINE_CHAR_INSTALLER}" + print_formated_script_footer "lpm_install_libpointmatcher_ubuntu.bash (${IMAGE_ARCH_AND_OS})" "${MSG_LINE_CHAR_INSTALLER}" exit $INSTALL_EXIT_CODE fi fi @@ -236,7 +236,7 @@ else echo " " && print_msg_done "${SUCCESS_MSG}" else print_msg_error "${FAILURE_MSG}" - print_formated_script_footer "lpm_install_libpointmatcher_ubuntu.bash (${NBS_IMAGE_ARCHITECTURE})" "${NBS_LINE_CHAR_INSTALLER}" + print_formated_script_footer "lpm_install_libpointmatcher_ubuntu.bash (${IMAGE_ARCH_AND_OS})" "${MSG_LINE_CHAR_INSTALLER}" if [[ ${BUILD_EXIT_CODE} != 0 ]]; then exit $BUILD_EXIT_CODE else @@ -245,7 +245,7 @@ else fi fi -print_formated_script_footer "lpm_install_libpointmatcher_ubuntu.bash (${NBS_IMAGE_ARCHITECTURE})" "${NBS_LINE_CHAR_INSTALLER}" +print_formated_script_footer "lpm_install_libpointmatcher_ubuntu.bash (${IMAGE_ARCH_AND_OS})" "${MSG_LINE_CHAR_INSTALLER}" # ====Teardown===================================================================================== cd "${TMP_CWD}" diff --git a/build_system/utilities/norlab-build-system b/build_system/utilities/norlab-build-system index c4575d2a..90228cf6 160000 --- a/build_system/utilities/norlab-build-system +++ b/build_system/utilities/norlab-build-system @@ -1 +1 @@ -Subproject commit c4575d2abd0918e9fcd02fcde4fb750a78162786 +Subproject commit 90228cf6a1dbd6095cb298b3f6d1c65b5f3c06e4 From f49b2c62177e407b41a2dcd5167030c06cd8f237 Mon Sep 17 00:00:00 2001 From: RedLeaderOne Date: Mon, 11 Dec 2023 17:06:54 -0500 Subject: [PATCH 14/14] docs: add README.md info on support and update ubuntu supported version --- README.md | 4 +++- doc/CompilationUbuntu.md | 27 ++++++++++++++------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index de25a172..14aca33b 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,9 @@ --- - +`libpointmatcher` is currently tested on our build system with the following architecture and OS +- x86 and arm64/v8 +- Ubuntu bionic (18.04) and focal (20.04) # Documentation and Tutorials diff --git a/doc/CompilationUbuntu.md b/doc/CompilationUbuntu.md index 6b7b81f8..96f18723 100644 --- a/doc/CompilationUbuntu.md +++ b/doc/CompilationUbuntu.md @@ -7,19 +7,20 @@ If you are used to development projects, here is what you need: -| Name | Version
(Tested A2023) | Version
(Tested A2023) | Version
(Tested A2023) | -|----------------|----------------------------------------------------|----------------------------------------------------|----------------------------------------------------| -| Ubuntu | bionic 18.04.1 LTS (64 bit) | focal 20.04 LTS (64 bit) | jammy 22.04 LTS (64 bit) | -| gcc | 7.5.0 | latest | latest | -| git | 2.17.1 | latest | latest | -| cmake | 3.10.2 | latest | latest | -| doxygen (opt.) | 1.8.13-10 | latest | latest | -| | | | | -| _Dependency:_ | | | | -| boost | 1.65.1 | latest | latest | -| eigen | 3.3.4-4 | latest | latest | -| yaml-cpp | 0.5+ | latest | latest | -| libnabo | [from source](https://github.com/ethz-asl/libnabo) | [from source](https://github.com/ethz-asl/libnabo) | [from source](https://github.com/ethz-asl/libnabo) | +| Name | Version
(Tested on our CI/CD server) | Version
(Tested on our CI/CD server) | +|:---------------|:--------------------------------------------------:|:--------------------------------------------------:| +| Ubuntu | bionic 18.04.1 LTS (64 bit) | focal 20.04 LTS (64 bit) | +| Architecture | x86 and arm64/v8 | x86 and arm64/v8 | +| gcc | 7.5.0 | latest | +| git | 2.17.1 | latest | +| cmake | 3.10.2 | latest | +| doxygen (opt.) | 1.8.13-10 | latest | +| | | | +| _Dependency:_ | | | +| boost | 1.65.1 | latest | +| eigen | 3.3.4-4 | latest | +| yaml-cpp | 0.5+ | latest | +| libnabo | [from source](https://github.com/ethz-asl/libnabo) | [from source](https://github.com/ethz-asl/libnabo) | __Note:__ we only support 64-bit systems because of some issues with Eigen. Other versions will most probably work but you'll have to try yourself to know for sure.