From cd18863fcfcc4e2913c856c22adb4b658319f237 Mon Sep 17 00:00:00 2001 From: Arnaud Billon Date: Thu, 24 Jun 2021 14:32:55 +0200 Subject: [PATCH 01/14] [upgrade][MOVE] Adapt new PV Plugin hierarchy --- .../{ => Plugin/LidarSlamPluginMod}/CMakeLists.txt | 0 .../{ => Plugin/LidarSlamPluginMod}/Slam.xml | 0 .../{ => Plugin/LidarSlamPluginMod}/vtkSlam.cxx | 0 .../{ => Plugin/LidarSlamPluginMod}/vtkSlam.h | 0 .../LidarSlamPluginMod}/vtkSlamManager.cxx | 0 .../LidarSlamPluginMod}/vtkSlamManager.h | 0 .../vtkSpinningSensorKeypointExtractor.cxx | 0 .../vtkSpinningSensorKeypointExtractor.h | 0 .../doc/How_to_SLAM_with_LidarView.html | 0 .../{ => Plugin}/doc/How_to_SLAM_with_LidarView.md | 0 .../{ => Plugin}/doc/aggregated_frames.png | Bin .../{ => Plugin}/doc/create_slam_filter.png | Bin .../{ => Plugin}/doc/enable_advance_feature.png | Bin .../{ => Plugin}/doc/enable_views_panels.png | Bin .../{ => Plugin}/doc/select_slam_filter_inputs.png | Bin 15 files changed, 0 insertions(+), 0 deletions(-) rename paraview_wrapping/{ => Plugin/LidarSlamPluginMod}/CMakeLists.txt (100%) rename paraview_wrapping/{ => Plugin/LidarSlamPluginMod}/Slam.xml (100%) rename paraview_wrapping/{ => Plugin/LidarSlamPluginMod}/vtkSlam.cxx (100%) rename paraview_wrapping/{ => Plugin/LidarSlamPluginMod}/vtkSlam.h (100%) rename paraview_wrapping/{ => Plugin/LidarSlamPluginMod}/vtkSlamManager.cxx (100%) rename paraview_wrapping/{ => Plugin/LidarSlamPluginMod}/vtkSlamManager.h (100%) rename paraview_wrapping/{ => Plugin/LidarSlamPluginMod}/vtkSpinningSensorKeypointExtractor.cxx (100%) rename paraview_wrapping/{ => Plugin/LidarSlamPluginMod}/vtkSpinningSensorKeypointExtractor.h (100%) rename paraview_wrapping/{ => Plugin}/doc/How_to_SLAM_with_LidarView.html (100%) rename paraview_wrapping/{ => Plugin}/doc/How_to_SLAM_with_LidarView.md (100%) rename paraview_wrapping/{ => Plugin}/doc/aggregated_frames.png (100%) rename paraview_wrapping/{ => Plugin}/doc/create_slam_filter.png (100%) rename paraview_wrapping/{ => Plugin}/doc/enable_advance_feature.png (100%) rename paraview_wrapping/{ => Plugin}/doc/enable_views_panels.png (100%) rename paraview_wrapping/{ => Plugin}/doc/select_slam_filter_inputs.png (100%) diff --git a/paraview_wrapping/CMakeLists.txt b/paraview_wrapping/Plugin/LidarSlamPluginMod/CMakeLists.txt similarity index 100% rename from paraview_wrapping/CMakeLists.txt rename to paraview_wrapping/Plugin/LidarSlamPluginMod/CMakeLists.txt diff --git a/paraview_wrapping/Slam.xml b/paraview_wrapping/Plugin/LidarSlamPluginMod/Slam.xml similarity index 100% rename from paraview_wrapping/Slam.xml rename to paraview_wrapping/Plugin/LidarSlamPluginMod/Slam.xml diff --git a/paraview_wrapping/vtkSlam.cxx b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.cxx similarity index 100% rename from paraview_wrapping/vtkSlam.cxx rename to paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.cxx diff --git a/paraview_wrapping/vtkSlam.h b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.h similarity index 100% rename from paraview_wrapping/vtkSlam.h rename to paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.h diff --git a/paraview_wrapping/vtkSlamManager.cxx b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.cxx similarity index 100% rename from paraview_wrapping/vtkSlamManager.cxx rename to paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.cxx diff --git a/paraview_wrapping/vtkSlamManager.h b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.h similarity index 100% rename from paraview_wrapping/vtkSlamManager.h rename to paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.h diff --git a/paraview_wrapping/vtkSpinningSensorKeypointExtractor.cxx b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.cxx similarity index 100% rename from paraview_wrapping/vtkSpinningSensorKeypointExtractor.cxx rename to paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.cxx diff --git a/paraview_wrapping/vtkSpinningSensorKeypointExtractor.h b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.h similarity index 100% rename from paraview_wrapping/vtkSpinningSensorKeypointExtractor.h rename to paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.h diff --git a/paraview_wrapping/doc/How_to_SLAM_with_LidarView.html b/paraview_wrapping/Plugin/doc/How_to_SLAM_with_LidarView.html similarity index 100% rename from paraview_wrapping/doc/How_to_SLAM_with_LidarView.html rename to paraview_wrapping/Plugin/doc/How_to_SLAM_with_LidarView.html diff --git a/paraview_wrapping/doc/How_to_SLAM_with_LidarView.md b/paraview_wrapping/Plugin/doc/How_to_SLAM_with_LidarView.md similarity index 100% rename from paraview_wrapping/doc/How_to_SLAM_with_LidarView.md rename to paraview_wrapping/Plugin/doc/How_to_SLAM_with_LidarView.md diff --git a/paraview_wrapping/doc/aggregated_frames.png b/paraview_wrapping/Plugin/doc/aggregated_frames.png similarity index 100% rename from paraview_wrapping/doc/aggregated_frames.png rename to paraview_wrapping/Plugin/doc/aggregated_frames.png diff --git a/paraview_wrapping/doc/create_slam_filter.png b/paraview_wrapping/Plugin/doc/create_slam_filter.png similarity index 100% rename from paraview_wrapping/doc/create_slam_filter.png rename to paraview_wrapping/Plugin/doc/create_slam_filter.png diff --git a/paraview_wrapping/doc/enable_advance_feature.png b/paraview_wrapping/Plugin/doc/enable_advance_feature.png similarity index 100% rename from paraview_wrapping/doc/enable_advance_feature.png rename to paraview_wrapping/Plugin/doc/enable_advance_feature.png diff --git a/paraview_wrapping/doc/enable_views_panels.png b/paraview_wrapping/Plugin/doc/enable_views_panels.png similarity index 100% rename from paraview_wrapping/doc/enable_views_panels.png rename to paraview_wrapping/Plugin/doc/enable_views_panels.png diff --git a/paraview_wrapping/doc/select_slam_filter_inputs.png b/paraview_wrapping/Plugin/doc/select_slam_filter_inputs.png similarity index 100% rename from paraview_wrapping/doc/select_slam_filter_inputs.png rename to paraview_wrapping/Plugin/doc/select_slam_filter_inputs.png -- GitLab From b9b78035d0a3f00fba466ee5818e538f4a927dd8 Mon Sep 17 00:00:00 2001 From: Arnaud Billon Date: Fri, 18 Jun 2021 16:41:21 +0200 Subject: [PATCH 02/14] [upgrade] Make vtk module / PV plugin --- CMakeLists.txt | 4 +- paraview_wrapping/CMakeLists.txt | 26 ++++++++++ paraview_wrapping/Plugin/CMakeLists.txt | 14 ++++++ .../Plugin/LidarSlamPluginMod/CMakeLists.txt | 48 +++++++++++-------- .../Plugin/LidarSlamPluginMod/vtk.module | 18 +++++++ .../Plugin/LidarSlamPluginMod/vtkSlam.h | 4 +- .../vtkSpinningSensorKeypointExtractor.h | 2 +- paraview_wrapping/Plugin/paraview.plugin | 16 +++++++ 8 files changed, 107 insertions(+), 25 deletions(-) create mode 100644 paraview_wrapping/CMakeLists.txt create mode 100644 paraview_wrapping/Plugin/CMakeLists.txt create mode 100644 paraview_wrapping/Plugin/LidarSlamPluginMod/vtk.module create mode 100644 paraview_wrapping/Plugin/paraview.plugin diff --git a/CMakeLists.txt b/CMakeLists.txt index d0734bfa..ae1f101a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,8 +37,6 @@ option(SLAM_PARAVIEW_PLUGIN "Build a Paraview plugin to wrap SLAM" OFF) if (SLAM_PARAVIEW_PLUGIN) # Find ParaView find_package(ParaView REQUIRED) - message(STATUS "PARAVIEW_USE_FILE: ${PARAVIEW_USE_FILE}") - include(${PARAVIEW_USE_FILE}) # As the PV plugin is a shared library, we also need to ensure that the core # SLAM lib is compatible with position independent code. set(CMAKE_POSITION_INDEPENDENT_CODE ON) @@ -99,4 +97,4 @@ if (SLAM_PARAVIEW_PLUGIN) endif() # To build/use ROS wrapping, just put this entire directory in the catkin src -# workspace and run `catkin_make` or `catkin build`. \ No newline at end of file +# workspace and run `catkin_make` or `catkin build`. diff --git a/paraview_wrapping/CMakeLists.txt b/paraview_wrapping/CMakeLists.txt new file mode 100644 index 00000000..a47eb1ef --- /dev/null +++ b/paraview_wrapping/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.16) +project(LidarSlamPlugin C CXX) + +set(BUILD_SHARED_LIBS ON) + +paraview_plugin_scan( + PLUGIN_FILES "${CMAKE_CURRENT_LIST_DIR}/Plugin/paraview.plugin" + ENABLE_BY_DEFAULT ON #You can use this instead of the variables above + PROVIDES_PLUGINS plugins + REQUIRES_MODULES required_modules) + +foreach (module IN LISTS required_modules) + if (NOT TARGET "${module}") + message(FATAL_ERROR "LidarSlamPlugin missing required module ${module}") + endif () +endforeach () + +paraview_plugin_build( + HEADERS_DESTINATION "${LV_INSTALL_INCLUDE_DIR}" + RUNTIME_DESTINATION "${LV_INSTALL_RUNTIME_DIR}" + LIBRARY_DESTINATION "${LV_INSTALL_LIBRARY_DIR}" + LIBRARY_SUBDIRECTORY "${LV_PLUGIN_BUILD_SUBDIRECTORY}" + PLUGINS_FILE_NAME "lidarview.LidarSlamPlugin.xml" + PLUGINS ${plugins} + AUTOLOAD LidarSlamPlugin +) diff --git a/paraview_wrapping/Plugin/CMakeLists.txt b/paraview_wrapping/Plugin/CMakeLists.txt new file mode 100644 index 00000000..ae894123 --- /dev/null +++ b/paraview_wrapping/Plugin/CMakeLists.txt @@ -0,0 +1,14 @@ +if(NOT LidarSlam_VERSION) + message(FATAL_ERROR "LidarSlam_VERSION not defined") +endif() + +# Create Plugin +paraview_add_plugin(LidarSlamPlugin + VERSION ${LidarSlam_VERSION} + MODULES LidarSlamPluginMod + MODULE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/LidarSlamPluginMod/vtk.module" + DOCUMENTATION_DIR "${CMAKE_CURRENT_SOURCE_DIR}/doc/" + MODULE_ARGS + LICENSE_DESTINATION "${LV_INSTALL_INCLUDE_DIR}" #wip Temporary fix + TEST_DIRECTORY_NAME "NONE" # Do not let vtk_module build the default 'Testing' subdir, it complexifies paths +) diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/CMakeLists.txt b/paraview_wrapping/Plugin/LidarSlamPluginMod/CMakeLists.txt index 43e6c4c1..acf4d1c0 100644 --- a/paraview_wrapping/Plugin/LidarSlamPluginMod/CMakeLists.txt +++ b/paraview_wrapping/Plugin/LidarSlamPluginMod/CMakeLists.txt @@ -1,25 +1,35 @@ -set(SLAM_INSTALL_PARAVIEW_PLUGIN_DIR ${SLAM_INSTALL_LIBRARY_DIR} CACHE STRING "Directory where to install Paraview LidarSlamPlugin") +set(lidarslam_sources) -set(ServerManagerSources - vtkSlam.cxx - vtkSlam.h - vtkSlamManager.cxx - vtkSlamManager.h - vtkSpinningSensorKeypointExtractor.cxx - vtkSpinningSensorKeypointExtractor.h) +set(lidarslam_classes + vtkSlam + vtkSlamManager + vtkSpinningSensorKeypointExtractor +) -set(ServerManagerXML - Slam.xml) +set(lidarslam_headers) +set(lidarslam_templates) -add_paraview_plugin(LidarSlamPlugin ${PROJECT_VERSION} - SERVER_MANAGER_XML ${ServerManagerXML} - SERVER_MANAGER_SOURCES ${ServerManagerSources} - DOCUMENTATION_DIR "${CMAKE_CURRENT_SOURCE_DIR}/doc/" +set(lidarslam_xml + Slam.xml ) -target_link_libraries(LidarSlamPlugin PUBLIC LidarSlam) +# Create Module +vtk_module_add_module(LidarSlamPluginMod + FORCE_STATIC # Using FORCE_STATIC build the vtk module statically into the plugin library, to avoid confusion when loading + SOURCES ${lidarslam_sources} # Will not trigger a PV wrapping + CLASSES ${lidarslam_classes} # Those will be PV ClientServer wrapped #shorcut for sources x.cxx x.h + HEADERS ${lidarslam_headers} # Those will be PV ClientServer wrapped + #TEMPLATES ${lidarslam_templates} # Those will be PV ClientServer wrapped + #PRIVATE_* variants exists and will not be wrapped, CLASSES are always PRIVATE/NOT-WRAPPED +) +paraview_add_server_manager_xmls( + MODULE LidarSlamPluginMod + XMLS ${lidarslam_xml} +) + +target_link_libraries(LidarSlamPluginMod PUBLIC LidarSlam) +target_include_directories(LidarSlamPluginMod + PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR} +) -install(TARGETS LidarSlamPlugin - RUNTIME DESTINATION ${SLAM_INSTALL_PARAVIEW_PLUGIN_DIR} - LIBRARY DESTINATION ${SLAM_INSTALL_PARAVIEW_PLUGIN_DIR} - COMPONENT Runtime) \ No newline at end of file diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtk.module b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtk.module new file mode 100644 index 00000000..f91a9601 --- /dev/null +++ b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtk.module @@ -0,0 +1,18 @@ +NAME + LidarSlamPluginMod +DEPENDS + VTK::CommonColor + VTK::CommonComputationalGeometry + VTK::CommonCore + VTK::CommonDataModel + VTK::CommonExecutionModel + VTK::CommonMath + VTK::CommonMisc + VTK::CommonSystem + VTK::CommonTransforms + VTK::FiltersGeneral + VTK::FiltersSources + VTK::FiltersGeometry +PRIVATE_DEPENDS + VTK::CommonCore + VTK::IOInfovis diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.h b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.h index 0ea9c8ab..a0960194 100644 --- a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.h +++ b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.h @@ -67,9 +67,9 @@ class VTK_EXPORT vtkSlam : public vtkPolyDataAlgorithm public: static vtkSlam* New(); vtkTypeMacro(vtkSlam, vtkPolyDataAlgorithm) - void PrintSelf(ostream& os, vtkIndent indent); + void PrintSelf(ostream& os, vtkIndent indent) override; - virtual vtkMTimeType GetMTime(); + virtual vtkMTimeType GetMTime() override; // --------------------------------------------------------------------------- // General stuff and flags diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.h b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.h index 66f9108d..65bb91cf 100644 --- a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.h +++ b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.h @@ -48,7 +48,7 @@ class VTK_EXPORT vtkSpinningSensorKeypointExtractor : public vtkObject public: static vtkSpinningSensorKeypointExtractor* New(); vtkTypeMacro(vtkSpinningSensorKeypointExtractor, vtkObject) - void PrintSelf(ostream& os, vtkIndent indent); + void PrintSelf(ostream& os, vtkIndent indent) override; vtkCustomSetMacro(NeighborWidth, int) diff --git a/paraview_wrapping/Plugin/paraview.plugin b/paraview_wrapping/Plugin/paraview.plugin new file mode 100644 index 00000000..c82b6e91 --- /dev/null +++ b/paraview_wrapping/Plugin/paraview.plugin @@ -0,0 +1,16 @@ +NAME + LidarSlamPlugin +DESCRIPTION + Kitware SLAM lib available as a Paraview Plugin +REQUIRES_MODULES + VTK::CommonColor + VTK::CommonComputationalGeometry + VTK::CommonCore + VTK::CommonDataModel + VTK::CommonExecutionModel + VTK::CommonMath + VTK::CommonMisc + VTK::CommonSystem + VTK::CommonTransforms + VTK::FiltersGeneral + VTK::FiltersSources -- GitLab From e20d7f6a99fba2b1b3aeec16350ce72247d959ef Mon Sep 17 00:00:00 2001 From: Arnaud Billon Date: Sat, 1 May 2021 03:51:29 +0200 Subject: [PATCH 03/14] [fix] vtkMacro need semicolon --- .../Plugin/LidarSlamPluginMod/vtkSlamManager.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.cxx b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.cxx index 45898b15..53a45793 100644 --- a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.cxx +++ b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.cxx @@ -69,22 +69,22 @@ int vtkSlamManager::RequestData(vtkInformation* request, int nbTimeSteps = inInfo->Length(vtkStreamingDemandDrivenPipeline::TIME_STEPS()); if (this->StepSize <= 0) { - vtkErrorMacro("StepSize must be greater than zero!") + vtkErrorMacro("StepSize must be greater than zero!"); return 0; } if (this->LastFrame < 0 || this->FirstFrame < 0) { - vtkErrorMacro("FirstFrame and LastFrame must be positive integers!") + vtkErrorMacro("FirstFrame and LastFrame must be positive integers!"); return 0; } if (this->FirstFrame > nbTimeSteps - 1 || this->LastFrame > nbTimeSteps - 1) { - vtkErrorMacro("The dataset only has " << nbTimeSteps << " frames!") + vtkErrorMacro("The dataset only has " << nbTimeSteps << " frames!"); return 0; } if (this->LastFrame < this->FirstFrame) { - vtkErrorMacro(<< "The last frame must come after the first frame!") + vtkErrorMacro(<< "The last frame must come after the first frame!"); return 0; } @@ -143,4 +143,4 @@ int vtkSlamManager::RequestData(vtkInformation* request, } return 1; -} \ No newline at end of file +} -- GitLab From 7e6b4c3a8029c3f46f47464058084934c6384b6f Mon Sep 17 00:00:00 2001 From: Arnaud Billon Date: Thu, 24 Jun 2021 17:16:39 +0200 Subject: [PATCH 04/14] [upgrade][vtk] Fix vtkCellArray usage --- .../Plugin/LidarSlamPluginMod/vtkSlam.cxx | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.cxx b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.cxx index 4c650e5f..64606a31 100644 --- a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.cxx +++ b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.cxx @@ -696,10 +696,10 @@ void vtkSlam::PointCloudToPolyData(LidarSlam::Slam::PointCloud::Ptr pc, vtkPolyD poly->GetPointData()->AddArray(intensityArray); // Init and register cells - vtkNew cells; - cells->SetNumberOfValues(nbPoints * 2); + vtkNew connectivity; + connectivity->SetNumberOfValues(nbPoints); vtkNew cellArray; - cellArray->SetCells(nbPoints, cells); + cellArray->SetData(1 , connectivity); poly->SetVerts(cellArray); // Fill points and cells values @@ -711,9 +711,7 @@ void vtkSlam::PointCloudToPolyData(LidarSlam::Slam::PointCloud::Ptr pc, vtkPolyD intensityArray->SetTuple1(i, p.intensity); // TODO : add other fields (time, laserId)? - // Set cell - cells->SetValue(i * 2, 1); - cells->SetValue(i * 2 + 1, i); + connectivity->SetValue(i, i); //TODO can we iota this thing } } @@ -899,4 +897,4 @@ void vtkSlam::SetTimeWindowDuration(float time) this->SlamAlgo->SetTimeWindowDuration(this->TimeWindowDuration); this->SlamAlgo->SetLoggingTimeout(1.1 * this->TimeWindowDuration); } -} \ No newline at end of file +} -- GitLab From fcee3570f304d5d393cd8a26ad25af1d3aca3d44 Mon Sep 17 00:00:00 2001 From: "arnaud.billon" Date: Fri, 2 Jul 2021 12:18:02 +0200 Subject: [PATCH 05/14] [fix] PCL Octree does not build on any MSVC --- slam_lib/include/LidarSlam/PointCloudStorage.h | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/slam_lib/include/LidarSlam/PointCloudStorage.h b/slam_lib/include/LidarSlam/PointCloudStorage.h index adba3a88..2460713c 100644 --- a/slam_lib/include/LidarSlam/PointCloudStorage.h +++ b/slam_lib/include/LidarSlam/PointCloudStorage.h @@ -28,11 +28,10 @@ #include "LidarSlam/Utilities.h" -// PCL Octree compression does not compile properly on Windows with MSVC 2015 -// and below. Therefore, we cannot compile OctreeCompressedPointCloud. -// If we use this code with MSVC 2015 and below, OctreeCompressedPointCloud -// becomes just an alias for basic PCLPointCloud. -#if defined(_MSC_VER) && _MSC_VER < 1910 +// PCL Octree compression does not compile properly on Windows with MSVC +// This issue may not be present on PCL version higher than 1.10.1 +// OctreeCompressedPointCloud is aliased into a basic PCLPointCloud. +#if defined(_MSC_VER) #define PCL_OCTREE_COMPRESSION_NOT_AVAILABLE #else @@ -352,4 +351,4 @@ struct PointCloudStorage std::unique_ptr> Data; ///< Pointcloud data. }; -} // end of LidarSlam namespace \ No newline at end of file +} // end of LidarSlam namespace -- GitLab From e06dc466d6fd6efa2ef9a098f2604265b9a38593 Mon Sep 17 00:00:00 2001 From: Arnaud Billon Date: Thu, 20 May 2021 12:44:38 +0200 Subject: [PATCH 06/14] [refactor] Removed unused VTK_EXPORT --- paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.h | 4 ++-- paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.h | 4 ++-- .../LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.h | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.h b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.h index a0960194..18b05596 100644 --- a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.h +++ b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.h @@ -62,7 +62,7 @@ virtual type Get##name() class vtkSpinningSensorKeypointExtractor; class vtkTable; -class VTK_EXPORT vtkSlam : public vtkPolyDataAlgorithm +class vtkSlam : public vtkPolyDataAlgorithm { public: static vtkSlam* New(); @@ -365,4 +365,4 @@ private: float TimeWindowDuration = 0.5; }; -#endif // VTK_SLAM_H \ No newline at end of file +#endif // VTK_SLAM_H diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.h b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.h index 469bc519..056f7176 100644 --- a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.h +++ b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.h @@ -40,7 +40,7 @@ virtual void Set##name(type _arg) } \ } -class VTK_EXPORT vtkSlamManager : public vtkSlam +class vtkSlamManager : public vtkSlam { public: static vtkSlamManager* New(); @@ -99,4 +99,4 @@ private: std::vector> Cache; }; -#endif // VTK_SLAM_MANAGER_H \ No newline at end of file +#endif // VTK_SLAM_MANAGER_H diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.h b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.h index 65bb91cf..ce88bb14 100644 --- a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.h +++ b/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.h @@ -43,7 +43,7 @@ virtual void Set##name(type _arg) * creation of a proxy. This way we get a free GUI. * It should only implement setter for the proxy, and a getter to the underlying keypointExtractor. */ -class VTK_EXPORT vtkSpinningSensorKeypointExtractor : public vtkObject +class vtkSpinningSensorKeypointExtractor : public vtkObject { public: static vtkSpinningSensorKeypointExtractor* New(); @@ -78,4 +78,4 @@ private: void operator=(const vtkSpinningSensorKeypointExtractor&) = delete; }; -#endif // VTK_SPINNING_SENSOR_KEYPOINT_EXTRACTOR_H \ No newline at end of file +#endif // VTK_SPINNING_SENSOR_KEYPOINT_EXTRACTOR_H -- GitLab From e20d292735d8154b3e52dd21dcd6787d65b63e82 Mon Sep 17 00:00:00 2001 From: "arnaud.billon" Date: Fri, 2 Jul 2021 12:17:19 +0200 Subject: [PATCH 07/14] [refactor] Simplify headers inclusion --- slam_lib/CMakeLists.txt | 26 +------------------------- 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/slam_lib/CMakeLists.txt b/slam_lib/CMakeLists.txt index 89e340f8..d3bd2f19 100644 --- a/slam_lib/CMakeLists.txt +++ b/slam_lib/CMakeLists.txt @@ -1,31 +1,10 @@ # If G2O is available, compile pose graph optimization stuff if (g2o_FOUND) - set(SLAM_g2o_headers include/LidarSlam/PoseGraphOptimization.h) set(SLAM_g2o_sources src/PoseGraphOptimization.cxx) set(g2o_targets g2o::core g2o::types_slam3d) add_definitions(-DUSE_G2O=1) endif() -set(LidarSlam_PUBLIC_HEADERS - include/LidarSlam/CeresCostFunctions.h - include/LidarSlam/ConfidenceEstimators.h - include/LidarSlam/Enums.h - include/LidarSlam/GlobalTrajectoriesRegistration.h - include/LidarSlam/KDTreePCLAdaptor.h - include/LidarSlam/KeypointsMatcher.h - include/LidarSlam/LidarPoint.h - include/LidarSlam/LocalOptimizer.h - include/LidarSlam/MotionModel.h - include/LidarSlam/PointCloudStorage.h - include/LidarSlam/RollingGrid.h - include/LidarSlam/SensorConstraints.h - include/LidarSlam/Slam.h - include/LidarSlam/SpinningSensorKeypointExtractor.h - include/LidarSlam/Transform.h - include/LidarSlam/Utilities.h - ${SLAM_g2o_headers} -) - # Generate export symbols on Windows to use this lib set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) @@ -41,7 +20,6 @@ add_library(LidarSlam src/SpinningSensorKeypointExtractor.cxx src/Transform.cxx src/Utilities.cxx - ${LidarSlam_PUBLIC_HEADERS} ${SLAM_g2o_sources} ) @@ -56,8 +34,6 @@ target_link_libraries(LidarSlam ${OpenMP_target} ) -set_target_properties(LidarSlam PROPERTIES PUBLIC_HEADER "${LidarSlam_PUBLIC_HEADERS}") - target_include_directories(LidarSlam PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) install(TARGETS LidarSlam @@ -65,4 +41,4 @@ install(TARGETS LidarSlam LIBRARY DESTINATION ${SLAM_INSTALL_LIBRARY_DIR} ARCHIVE DESTINATION ${SLAM_INSTALL_LIBRARY_DIR} PUBLIC_HEADER DESTINATION ${SLAM_INSTALL_INCLUDE_DIR}/LidarSlam - COMPONENT Runtime) \ No newline at end of file + COMPONENT Runtime) -- GitLab From a8505aa4755e6b1a9f3dbbbe4a6f0a59c20478f7 Mon Sep 17 00:00:00 2001 From: Arnaud Billon Date: Wed, 29 Sep 2021 14:01:13 +0200 Subject: [PATCH 08/14] [fix] Filter out VTK from PCL targets --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index ae1f101a..6cbae5f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,6 +61,9 @@ find_package(Ceres REQUIRED) find_package(PCL REQUIRED COMPONENTS common kdtree registration io) include_directories(SYSTEM ${PCL_INCLUDE_DIRS}) add_definitions(${PCL_DEFINITIONS}) +#We do not want VTK for now, FIX WIN32 command too long issue +#PCL is linked finds VTK in paraview/src rather than paraview/build +list(FILTER PCL_LIBRARIES EXCLUDE REGEX "VTK::.*") # Find optional g2o (only used for pose graph optimization) option(ENABLE_g2o "Use G2O, necessary for pose graph optimization." ON) -- GitLab From a0ae0d0cad1fee991c4f69b26bc5b1f413642b5f Mon Sep 17 00:00:00 2001 From: Arnaud Billon Date: Thu, 14 Oct 2021 15:24:59 +0200 Subject: [PATCH 09/14] [ci] Add paths for ZLIB PNG PYTHON --- ci/.gitlab-ci.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ci/.gitlab-ci.yml b/ci/.gitlab-ci.yml index 70e42fa3..caf547d3 100644 --- a/ci/.gitlab-ci.yml +++ b/ci/.gitlab-ci.yml @@ -21,6 +21,11 @@ default: echo "slam_cmake_option_g2o_DIR=$slam_cmake_option_g2o_DIR" echo "slam_cmake_option_ParaView_DIR=$slam_cmake_option_ParaView_DIR" echo "slam_cmake_option_Qt5_DIR=$slam_cmake_option_Qt5_DIR" + echo "slam_cmake_option_ZLIB_LIB=$slam_cmake_option_ZLIB_LIB" + echo "slam_cmake_option_ZLIB_INC=$slam_cmake_option_ZLIB_INC" + echo "slam_cmake_option_PNG_LIB=$slam_cmake_option_PNG_LIB" + echo "slam_cmake_option_PNG_PNG_INC=$slam_cmake_option_PNG_PNG_INC" + echo "slam_cmake_option_PYTHON=$slam_cmake_option_PYTHON" # Windows specific configuration .windows_runner_config: @@ -149,6 +154,11 @@ linux_ros_wrapping: $slam_cmake_option_g2o_DIR $slam_cmake_option_ParaView_DIR $slam_cmake_option_Qt5_DIR + $slam_cmake_option_ZLIB_LIB + $slam_cmake_option_ZLIB_INC + $slam_cmake_option_PNG_LIB + $slam_cmake_option_PNG_PNG_INC + $slam_cmake_option_PYTHON $CI_PROJECT_DIR - cmake --build $build_dir -j 4 -- GitLab From 3d757e6966119c84e9663477c14efb15d0974c87 Mon Sep 17 00:00:00 2001 From: Arnaud Billon Date: Thu, 14 Oct 2021 15:53:10 +0200 Subject: [PATCH 10/14] [fix] include(GNUInstallDirs) --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6cbae5f5..4e50dba6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,7 @@ list(APPEND CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${SLAM_INSTALL_LIBRARY_ option(SLAM_PARAVIEW_PLUGIN "Build a Paraview plugin to wrap SLAM" OFF) if (SLAM_PARAVIEW_PLUGIN) # Find ParaView + include(GNUInstallDirs) #Required find_package(ParaView REQUIRED) # As the PV plugin is a shared library, we also need to ensure that the core # SLAM lib is compatible with position independent code. -- GitLab From e1d306a49019b5cd7feff119f79ac6ee0f56c96a Mon Sep 17 00:00:00 2001 From: Arnaud Billon Date: Fri, 29 Oct 2021 10:31:02 +0200 Subject: [PATCH 11/14] [fix] MSVC enforce MT --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e50dba6..3e1cffe4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,11 @@ set(SLAM_INSTALL_INCLUDE_DIR "include" CACHE STRING "Directory where to install set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON) list(APPEND CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${SLAM_INSTALL_LIBRARY_DIR}") +# MSVC enforce MT +if(WIN32 AND MSVC) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded") +endif() + #------------------------- # Find dependencies #------------------------- -- GitLab From 2927c8a35ffa3ebf55366101a6873c22247f8950 Mon Sep 17 00:00:00 2001 From: Arnaud Billon Date: Fri, 29 Oct 2021 16:26:21 +0200 Subject: [PATCH 12/14] [fix] Boost use shared libs --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3e1cffe4..0fd95020 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,9 @@ if(WIN32 AND MSVC) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded") endif() +# Boost do not use STATIC libs (Superbuild like), coherent with BUILD_SHARED_LIBS ON +set(Boost_USE_STATIC_LIBS OFF) + #------------------------- # Find dependencies #------------------------- -- GitLab From a55dee4caa27c17eddcc8ecd5e97febf858d3005 Mon Sep 17 00:00:00 2001 From: Arnaud Billon Date: Fri, 29 Oct 2021 16:22:09 +0200 Subject: [PATCH 13/14] [ci] Build Static It is the setup employed by lidarview, the same used by the SLAM's CI dependencies --- ci/.gitlab-ci.yml | 2 +- paraview_wrapping/CMakeLists.txt | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/ci/.gitlab-ci.yml b/ci/.gitlab-ci.yml index caf547d3..b4ac3495 100644 --- a/ci/.gitlab-ci.yml +++ b/ci/.gitlab-ci.yml @@ -77,7 +77,7 @@ default: - cmake $cmake_option_GENERATOR -DCMAKE_BUILD_TYPE=Release - -DBUILD_SHARED_LIBS=ON + -DBUILD_SHARED_LIBS=OFF $slam_cmake_option_Eigen_DIR $slam_cmake_option_Ceres_DIR $slam_cmake_option_nanoflann_DIR diff --git a/paraview_wrapping/CMakeLists.txt b/paraview_wrapping/CMakeLists.txt index a47eb1ef..7c535954 100644 --- a/paraview_wrapping/CMakeLists.txt +++ b/paraview_wrapping/CMakeLists.txt @@ -1,8 +1,6 @@ cmake_minimum_required(VERSION 3.16) project(LidarSlamPlugin C CXX) -set(BUILD_SHARED_LIBS ON) - paraview_plugin_scan( PLUGIN_FILES "${CMAKE_CURRENT_LIST_DIR}/Plugin/paraview.plugin" ENABLE_BY_DEFAULT ON #You can use this instead of the variables above -- GitLab From 5e5d6926f7bd259e23da7d3ab6b6fb930333d050 Mon Sep 17 00:00:00 2001 From: Arnaud Billon Date: Wed, 3 Nov 2021 14:04:52 +0100 Subject: [PATCH 14/14] [refactor] Rename VTK module to vtkLidarSlam --- paraview_wrapping/Plugin/CMakeLists.txt | 4 ++-- .../{LidarSlamPluginMod => vtkLidarSlam}/CMakeLists.txt | 8 ++++---- .../Plugin/{LidarSlamPluginMod => vtkLidarSlam}/Slam.xml | 0 .../{LidarSlamPluginMod => vtkLidarSlam}/vtk.module | 2 +- .../{LidarSlamPluginMod => vtkLidarSlam}/vtkSlam.cxx | 0 .../Plugin/{LidarSlamPluginMod => vtkLidarSlam}/vtkSlam.h | 0 .../vtkSlamManager.cxx | 0 .../{LidarSlamPluginMod => vtkLidarSlam}/vtkSlamManager.h | 0 .../vtkSpinningSensorKeypointExtractor.cxx | 0 .../vtkSpinningSensorKeypointExtractor.h | 0 10 files changed, 7 insertions(+), 7 deletions(-) rename paraview_wrapping/Plugin/{LidarSlamPluginMod => vtkLidarSlam}/CMakeLists.txt (83%) rename paraview_wrapping/Plugin/{LidarSlamPluginMod => vtkLidarSlam}/Slam.xml (100%) rename paraview_wrapping/Plugin/{LidarSlamPluginMod => vtkLidarSlam}/vtk.module (94%) rename paraview_wrapping/Plugin/{LidarSlamPluginMod => vtkLidarSlam}/vtkSlam.cxx (100%) rename paraview_wrapping/Plugin/{LidarSlamPluginMod => vtkLidarSlam}/vtkSlam.h (100%) rename paraview_wrapping/Plugin/{LidarSlamPluginMod => vtkLidarSlam}/vtkSlamManager.cxx (100%) rename paraview_wrapping/Plugin/{LidarSlamPluginMod => vtkLidarSlam}/vtkSlamManager.h (100%) rename paraview_wrapping/Plugin/{LidarSlamPluginMod => vtkLidarSlam}/vtkSpinningSensorKeypointExtractor.cxx (100%) rename paraview_wrapping/Plugin/{LidarSlamPluginMod => vtkLidarSlam}/vtkSpinningSensorKeypointExtractor.h (100%) diff --git a/paraview_wrapping/Plugin/CMakeLists.txt b/paraview_wrapping/Plugin/CMakeLists.txt index ae894123..f72a7fb3 100644 --- a/paraview_wrapping/Plugin/CMakeLists.txt +++ b/paraview_wrapping/Plugin/CMakeLists.txt @@ -5,8 +5,8 @@ endif() # Create Plugin paraview_add_plugin(LidarSlamPlugin VERSION ${LidarSlam_VERSION} - MODULES LidarSlamPluginMod - MODULE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/LidarSlamPluginMod/vtk.module" + MODULES vtkLidarSlam + MODULE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/vtkLidarSlam/vtk.module" DOCUMENTATION_DIR "${CMAKE_CURRENT_SOURCE_DIR}/doc/" MODULE_ARGS LICENSE_DESTINATION "${LV_INSTALL_INCLUDE_DIR}" #wip Temporary fix diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/CMakeLists.txt b/paraview_wrapping/Plugin/vtkLidarSlam/CMakeLists.txt similarity index 83% rename from paraview_wrapping/Plugin/LidarSlamPluginMod/CMakeLists.txt rename to paraview_wrapping/Plugin/vtkLidarSlam/CMakeLists.txt index acf4d1c0..eb98f165 100644 --- a/paraview_wrapping/Plugin/LidarSlamPluginMod/CMakeLists.txt +++ b/paraview_wrapping/Plugin/vtkLidarSlam/CMakeLists.txt @@ -14,7 +14,7 @@ set(lidarslam_xml ) # Create Module -vtk_module_add_module(LidarSlamPluginMod +vtk_module_add_module(vtkLidarSlam FORCE_STATIC # Using FORCE_STATIC build the vtk module statically into the plugin library, to avoid confusion when loading SOURCES ${lidarslam_sources} # Will not trigger a PV wrapping CLASSES ${lidarslam_classes} # Those will be PV ClientServer wrapped #shorcut for sources x.cxx x.h @@ -23,12 +23,12 @@ vtk_module_add_module(LidarSlamPluginMod #PRIVATE_* variants exists and will not be wrapped, CLASSES are always PRIVATE/NOT-WRAPPED ) paraview_add_server_manager_xmls( - MODULE LidarSlamPluginMod + MODULE vtkLidarSlam XMLS ${lidarslam_xml} ) -target_link_libraries(LidarSlamPluginMod PUBLIC LidarSlam) -target_include_directories(LidarSlamPluginMod +target_link_libraries(vtkLidarSlam PUBLIC LidarSlam) +target_include_directories(vtkLidarSlam PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ) diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/Slam.xml b/paraview_wrapping/Plugin/vtkLidarSlam/Slam.xml similarity index 100% rename from paraview_wrapping/Plugin/LidarSlamPluginMod/Slam.xml rename to paraview_wrapping/Plugin/vtkLidarSlam/Slam.xml diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtk.module b/paraview_wrapping/Plugin/vtkLidarSlam/vtk.module similarity index 94% rename from paraview_wrapping/Plugin/LidarSlamPluginMod/vtk.module rename to paraview_wrapping/Plugin/vtkLidarSlam/vtk.module index f91a9601..7a4fbcc3 100644 --- a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtk.module +++ b/paraview_wrapping/Plugin/vtkLidarSlam/vtk.module @@ -1,5 +1,5 @@ NAME - LidarSlamPluginMod + vtkLidarSlam DEPENDS VTK::CommonColor VTK::CommonComputationalGeometry diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.cxx b/paraview_wrapping/Plugin/vtkLidarSlam/vtkSlam.cxx similarity index 100% rename from paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.cxx rename to paraview_wrapping/Plugin/vtkLidarSlam/vtkSlam.cxx diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.h b/paraview_wrapping/Plugin/vtkLidarSlam/vtkSlam.h similarity index 100% rename from paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlam.h rename to paraview_wrapping/Plugin/vtkLidarSlam/vtkSlam.h diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.cxx b/paraview_wrapping/Plugin/vtkLidarSlam/vtkSlamManager.cxx similarity index 100% rename from paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.cxx rename to paraview_wrapping/Plugin/vtkLidarSlam/vtkSlamManager.cxx diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.h b/paraview_wrapping/Plugin/vtkLidarSlam/vtkSlamManager.h similarity index 100% rename from paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSlamManager.h rename to paraview_wrapping/Plugin/vtkLidarSlam/vtkSlamManager.h diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.cxx b/paraview_wrapping/Plugin/vtkLidarSlam/vtkSpinningSensorKeypointExtractor.cxx similarity index 100% rename from paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.cxx rename to paraview_wrapping/Plugin/vtkLidarSlam/vtkSpinningSensorKeypointExtractor.cxx diff --git a/paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.h b/paraview_wrapping/Plugin/vtkLidarSlam/vtkSpinningSensorKeypointExtractor.h similarity index 100% rename from paraview_wrapping/Plugin/LidarSlamPluginMod/vtkSpinningSensorKeypointExtractor.h rename to paraview_wrapping/Plugin/vtkLidarSlam/vtkSpinningSensorKeypointExtractor.h -- GitLab