koide3 / small_gicp Goto Github PK
View Code? Open in Web Editor NEWEfficient and parallel algorithms for point cloud registration [C++, Python]
License: MIT License
Efficient and parallel algorithms for point cloud registration [C++, Python]
License: MIT License
I'm trying to understand how RegistrationResult::{H,b,error}
are defined. Please let me know where I can find documentation for these.
Hello Koide, thanks for sharing this nice stuff.
I tried to include this repository, and I found that once the repository already contains nanoflann.hpp
, then two nanoflann.hpp
brings namespace conflict error.
Of course, it's very easy to resolve by manually changing the workspace name in the own package, but maybe we have to change the namespace of nanoflann.hpp in this repository for better usability (e.g., namespace koide_nanoflann or something)
Thanks!
TL; DR: Sharing that you are using small_gicp (and related packages) helps the author receive recognition within his organization and enables continued work on this project.
Long description: The author of this package is NOT a full-time OSS developer but just a researcher who dedicates the majority of his working hours to other assignments. His time for OSS projects is limited, and to sustain his involvement, internal acknowledgment within his organization is crucial. Metrics like the number of stars and forks are often overlooked by executives, who may not grasp their significance. Conversely, stating "this package is used by A/B universities and C/D corporations" can effectively communicate its value. So, if you find this package useful for your work, we kindly ask you to leave a comment in this thread. Just saying hello to the author is appreciated. If you could share about your organization and how you use the package, that would immensely support the author.
Thank you for the great repo! I encountered a problem described below.
make install
fails because of missing FindTBB.cmake
.
0.505 CMake Error at cmake_install.cmake:95 (file):
0.505 file INSTALL cannot find "/root/small_gicp/cmake/FindTBB.cmake": No such
0.505 file or directory.
Add RUN make install
after this line and build Docker image.
reference link: [nano_gicp]
miss setup.py
If I have normals, how can I manually add them to the point cloud to avoid duplicate calculations and improve calculation speed?
I have compiled small_gicp from the source code under the MinGW-w64 environment on Windows 10.
Then I try to compile the demo code 01_basic_registration.cpp
and run it. CMakeLists.txt file of this code is like this.
cmake_minimum_required(VERSION 3.14.0)
project(small_gicp_demo LANGUAGES C CXX VERSION 0.1.0)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Specify to use the GCC compiler
set(CMAKE_C_COMPILER gcc)
set(CMAKE_CXX_COMPILER g++)
# Find OpenMP
find_package(OpenMP)
include_directories(./3rdparty ./3rdparty/Eigen3/include/eigen3)
add_executable(small_gicp_demo main.cpp)
# Add your executable and link OpenMP if it's found
if(OpenMP_CXX_FOUND)
target_link_libraries(small_gicp_demo PUBLIC OpenMP::OpenMP_CXX)
endif()
target_link_directories(small_gicp_demo PUBLIC)
target_link_libraries(small_gicp_demo PUBLIC libsmall_gicp.dll.a)
The cmake command configure is ok. But fail to compile when I do make. It told me cannot find -lsmall_gicp. Could you help me?
$ make -j
[ 50%] Linking CXX executable small_gicp_demo.exe
D:/Programs/MinGW/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lsmall_gicp
collect2.exe: error: ld returned 1 exit status
make[2]: *** [CMakeFiles\small_gicp_demo.dir\build.make:104: small_gicp_demo.exe] Error 1
make[1]: *** [CMakeFiles\Makefile2:82: CMakeFiles/small_gicp_demo.dir/all] Error 2
make: *** [Makefile:90: all] Error 2
Hi @koide3 ,
Thank you for contributing a lot in scan matching field. I just want to ask something about the compilation part. As I tested, it works well with x86 processor. Does this parallelism and faster computation with openmp works also in arm architecture?
Thank you.
1.740 CMake Error at CMakeLists.txt:62 (set_target_properties):
1.740 Property INTERFACE_LINK_LIBRARIES may not contain link-type keyword
1.740 "optimized". The INTERFACE_LINK_LIBRARIES property may contain
1.740 configuration-sensitive generator-expressions which may be used to specify
1.740 per-configuration rules.
small_gicp$ docker build -t sg_image --build-arg BASE_IMAGE=ros:noetic -f docker/Dockerfile.build.gcc .
[+] Building 2.5s (10/11) docker:default
=> [internal] load build definition from Dockerfile.build.gcc 0.0s
=> => transferring dockerfile: 595B 0.0s
=> [internal] load metadata for docker.io/library/ros:noetic 0.4s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/8] FROM docker.io/library/ros:noetic@sha256:20b337f10f4275a6d589388cf8f72a7216de2ba3632b10d9d05c205c65446b8a 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 41.57kB 0.0s
=> CACHED [2/8] RUN apt-get update && apt-get install --no-install-recommends -y && apt-get install --no-install-recommends -y wget nano build-essential git cmake libeigen3-dev libfmt-dev libtbb-dev libomp-dev libgtest-dev ros-noetic-pcl-ros && apt-get clean && rm 0.0s
=> [3/8] COPY . /root/small_gicp 0.0s
=> [4/8] WORKDIR /root/small_gicp/build 0.0s
=> [5/8] RUN rm -rf ./* 0.2s
=> ERROR [6/8] RUN cmake .. -DBUILD_WITH_TBB=ON -DBUILD_WITH_PCL=ON 1.8s
------
> [6/8] RUN cmake .. -DBUILD_WITH_TBB=ON -DBUILD_WITH_PCL=ON:
0.370 -- The C compiler identification is GNU 9.4.0
0.402 -- The CXX compiler identification is GNU 9.4.0
0.405 -- Check for working C compiler: /usr/bin/cc
0.469 -- Check for working C compiler: /usr/bin/cc -- works
0.471 -- Detecting C compiler ABI info
0.593 -- Detecting C compiler ABI info - done
0.615 -- Detecting C compile features
0.615 -- Detecting C compile features - done
0.620 -- Check for working CXX compiler: /usr/bin/c++
0.758 -- Check for working CXX compiler: /usr/bin/c++ -- works
0.760 -- Detecting CXX compiler ABI info
0.894 -- Detecting CXX compiler ABI info - done
0.916 -- Detecting CXX compile features
0.917 -- Detecting CXX compile features - done
1.214 -- Found OpenMP_C: -fopenmp (found version "4.5")
1.368 -- Found OpenMP_CXX: -fopenmp (found version "4.5")
1.369 -- Found OpenMP: TRUE (found version "4.5")
1.387 -- Checking for module 'eigen3'
1.396 -- Found eigen3, version 3.3.7
1.449 -- Found Eigen: /usr/include/eigen3 (Required is at least version "3.1")
1.449 -- Eigen found (include: /usr/include/eigen3, version: 3.3.7)
1.505 -- Found Boost: /usr/include (found suitable version "1.71.0", minimum required is "1.55.0") found components: system filesystem date_time iostreams regex
1.519 -- Checking for module 'flann'
1.528 -- Found flann, version 1.9.1
1.588 -- Found FLANN: /usr/lib/x86_64-linux-gnu/libflann_cpp.so
1.650 -- The imported target "vtkParseOGLExt" references the file
1.650 "/usr/bin/vtkParseOGLExt-7.1"
1.650 but this file does not exist. Possible reasons include:
1.650 * The file was deleted, renamed, or moved to another location.
1.650 * An install or uninstall procedure did not complete successfully.
1.650 * The installation package was faulty and contained
1.650 "/usr/lib/cmake/vtk-7.1/VTKTargets.cmake"
1.650 but not all the files it references.
1.650
1.651 -- The imported target "vtkRenderingPythonTkWidgets" references the file
1.651 "/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so"
1.651 but this file does not exist. Possible reasons include:
1.651 * The file was deleted, renamed, or moved to another location.
1.651 * An install or uninstall procedure did not complete successfully.
1.651 * The installation package was faulty and contained
1.651 "/usr/lib/cmake/vtk-7.1/VTKTargets.cmake"
1.651 but not all the files it references.
1.651
1.652 -- The imported target "vtk" references the file
1.652 "/usr/bin/vtk"
1.652 but this file does not exist. Possible reasons include:
1.652 * The file was deleted, renamed, or moved to another location.
1.652 * An install or uninstall procedure did not complete successfully.
1.652 * The installation package was faulty and contained
1.652 "/usr/lib/cmake/vtk-7.1/VTKTargets.cmake"
1.652 but not all the files it references.
1.652
1.652 -- The imported target "pvtk" references the file
1.652 "/usr/bin/pvtk"
1.652 but this file does not exist. Possible reasons include:
1.652 * The file was deleted, renamed, or moved to another location.
1.652 * An install or uninstall procedure did not complete successfully.
1.652 * The installation package was faulty and contained
1.652 "/usr/lib/cmake/vtk-7.1/VTKTargets.cmake"
1.652 but not all the files it references.
1.652
1.664 -- Checking for module 'libusb-1.0'
1.666 -- No package 'libusb-1.0' found
1.668 -- Could NOT find USB_10 (missing: USB_10_LIBRARY USB_10_INCLUDE_DIR)
1.668 -- OpenNI disabled because libusb-1.0 not found.
1.668 ** WARNING ** io features related to openni will be disabled
1.670 -- Checking for module 'libusb-1.0'
1.672 -- No package 'libusb-1.0' found
1.673 -- Could NOT find USB_10 (missing: USB_10_LIBRARY USB_10_INCLUDE_DIR)
1.673 -- OpenNI 2 disabled because libusb-1.0 not found.
1.674 ** WARNING ** io features related to openni2 will be disabled
1.674 ** WARNING ** io features related to pcap will be disabled
1.674 ** WARNING ** io features related to png will be disabled
1.682 ** WARNING ** io features related to libusb-1.0 will be disabled
1.682 -- LIBUSB_1_LIBRARY (missing: LIBUSB_1_INCLUDE_DIR)
1.685 -- Checking for module 'libusb-1.0'
1.687 -- No package 'libusb-1.0' found
1.688 -- Could NOT find USB_10 (missing: USB_10_LIBRARY USB_10_INCLUDE_DIR)
1.688 -- OpenNI disabled because libusb-1.0 not found.
1.688 ** WARNING ** visualization features related to openni will be disabled
1.691 -- Checking for module 'libusb-1.0'
1.693 -- No package 'libusb-1.0' found
1.694 -- Could NOT find USB_10 (missing: USB_10_LIBRARY USB_10_INCLUDE_DIR)
1.694 -- OpenNI 2 disabled because libusb-1.0 not found.
1.694 ** WARNING ** visualization features related to openni2 will be disabled
1.706 -- Found Qhull: optimized;/usr/lib/x86_64-linux-gnu/libqhull.so;debug;/usr/lib/x86_64-linux-gnu/libqhull.so
1.706 -- QHULL found (include: /usr/include, lib: optimized;/usr/lib/x86_64-linux-gnu/libqhull.so;debug;/usr/lib/x86_64-linux-gnu/libqhull.so)
1.709 -- Checking for module 'libusb-1.0'
1.711 -- No package 'libusb-1.0' found
1.712 -- Could NOT find USB_10 (missing: USB_10_LIBRARY USB_10_INCLUDE_DIR)
1.712 -- OpenNI disabled because libusb-1.0 not found.
1.712 ** WARNING ** apps features related to openni will be disabled
1.721 -- looking for PCL_COMMON
1.721 -- Found PCL_COMMON: /usr/lib/x86_64-linux-gnu/libpcl_common.so
1.721 -- looking for PCL_KDTREE
1.722 -- Found PCL_KDTREE: /usr/lib/x86_64-linux-gnu/libpcl_kdtree.so
1.722 -- looking for PCL_OCTREE
1.723 -- Found PCL_OCTREE: /usr/lib/x86_64-linux-gnu/libpcl_octree.so
1.723 -- looking for PCL_SEARCH
1.724 -- Found PCL_SEARCH: /usr/lib/x86_64-linux-gnu/libpcl_search.so
1.724 -- looking for PCL_SAMPLE_CONSENSUS
1.725 -- Found PCL_SAMPLE_CONSENSUS: /usr/lib/x86_64-linux-gnu/libpcl_sample_consensus.so
1.725 -- looking for PCL_FILTERS
1.725 -- Found PCL_FILTERS: /usr/lib/x86_64-linux-gnu/libpcl_filters.so
1.726 -- looking for PCL_2D
1.726 -- Found PCL_2D: /usr/include/pcl-1.10
1.726 -- looking for PCL_GEOMETRY
1.726 -- Found PCL_GEOMETRY: /usr/include/pcl-1.10
1.726 -- looking for PCL_IO
1.727 -- Found PCL_IO: /usr/lib/x86_64-linux-gnu/libpcl_io.so
1.727 -- looking for PCL_FEATURES
1.728 -- Found PCL_FEATURES: /usr/lib/x86_64-linux-gnu/libpcl_features.so
1.728 -- looking for PCL_ML
1.728 -- Found PCL_ML: /usr/lib/x86_64-linux-gnu/libpcl_ml.so
1.729 -- looking for PCL_SEGMENTATION
1.729 -- Found PCL_SEGMENTATION: /usr/lib/x86_64-linux-gnu/libpcl_segmentation.so
1.729 -- looking for PCL_VISUALIZATION
1.730 -- Found PCL_VISUALIZATION: /usr/lib/x86_64-linux-gnu/libpcl_visualization.so
1.730 -- looking for PCL_SURFACE
1.731 -- Found PCL_SURFACE: /usr/lib/x86_64-linux-gnu/libpcl_surface.so
1.731 -- looking for PCL_REGISTRATION
1.731 -- Found PCL_REGISTRATION: /usr/lib/x86_64-linux-gnu/libpcl_registration.so
1.732 -- looking for PCL_KEYPOINTS
1.732 -- Found PCL_KEYPOINTS: /usr/lib/x86_64-linux-gnu/libpcl_keypoints.so
1.733 -- looking for PCL_TRACKING
1.733 -- Found PCL_TRACKING: /usr/lib/x86_64-linux-gnu/libpcl_tracking.so
1.734 -- looking for PCL_RECOGNITION
1.734 -- Found PCL_RECOGNITION: /usr/lib/x86_64-linux-gnu/libpcl_recognition.so
1.734 -- looking for PCL_STEREO
1.735 -- Found PCL_STEREO: /usr/lib/x86_64-linux-gnu/libpcl_stereo.so
1.735 -- looking for PCL_APPS
1.736 -- Found PCL_APPS: /usr/lib/x86_64-linux-gnu/libpcl_apps.so
1.736 -- looking for PCL_IN_HAND_SCANNER
1.737 -- Found PCL_IN_HAND_SCANNER: /usr/include/pcl-1.10
1.737 -- looking for PCL_POINT_CLOUD_EDITOR
1.737 -- Found PCL_POINT_CLOUD_EDITOR: /usr/include/pcl-1.10
1.737 -- looking for PCL_OUTOFCORE
1.738 -- Found PCL_OUTOFCORE: /usr/lib/x86_64-linux-gnu/libpcl_outofcore.so
1.738 -- looking for PCL_PEOPLE
1.739 -- Found PCL_PEOPLE: /usr/lib/x86_64-linux-gnu/libpcl_people.so
1.740 -- Found PCL: pcl_common;pcl_kdtree;pcl_octree;pcl_search;pcl_sample_consensus;pcl_filters;pcl_io;pcl_features;pcl_ml;pcl_segmentation;pcl_visualization;pcl_surface;pcl_registration;pcl_keypoints;pcl_tracking;pcl_recognition;pcl_stereo;pcl_apps;pcl_outofcore;pcl_people;/usr/lib/x86_64-linux-gnu/libboost_system.so;/usr/lib/x86_64-linux-gnu/libboost_filesystem.so;/usr/lib/x86_64-linux-gnu/libboost_date_time.so;/usr/lib/x86_64-linux-gnu/libboost_iostreams.so;/usr/lib/x86_64-linux-gnu/libboost_regex.so;optimized;/usr/lib/x86_64-linux-gnu/libqhull.so;debug;/usr/lib/x86_64-linux-gnu/libqhull.so;vtkChartsCore;vtkCommonColor;vtkCommonCore;vtksys;vtkCommonDataModel;vtkCommonMath;vtkCommonMisc;vtkCommonSystem;vtkCommonTransforms;vtkCommonExecutionModel;vtkFiltersGeneral;vtkCommonComputationalGeometry;vtkFiltersCore;vtkInfovisCore;vtkFiltersExtraction;vtkFiltersStatistics;vtkImagingFourier;vtkImagingCore;vtkalglib;vtkRenderingContext2D;vtkRenderingCore;vtkFiltersGeometry;vtkFiltersSources;vtkRenderingFreeType;/usr/lib/x86_64-linux-gnu/libfreetype.so;/usr/lib/x86_64-linux-gnu/libz.so;vtkFiltersModeling;vtkImagingSources;vtkInteractionStyle;vtkInteractionWidgets;vtkFiltersHybrid;vtkImagingColor;vtkImagingGeneral;vtkImagingHybrid;vtkIOImage;vtkDICOMParser;vtkmetaio;/usr/lib/x86_64-linux-gnu/libjpeg.so;/usr/lib/x86_64-linux-gnu/libpng.so;/usr/lib/x86_64-linux-gnu/libtiff.so;vtkRenderingAnnotation;vtkRenderingVolume;vtkIOXML;vtkIOCore;vtkIOXMLParser;/usr/lib/x86_64-linux-gnu/libexpat.so;vtkIOGeometry;vtkIOLegacy;vtkIOPLY;vtkRenderingLOD;vtkViewsContext2D;vtkViewsCore;vtkRenderingContextOpenGL2;vtkRenderingOpenGL2;FLANN::FLANN
1.740 CMake Error at CMakeLists.txt:62 (set_target_properties):
1.740 Property INTERFACE_LINK_LIBRARIES may not contain link-type keyword
1.740 "optimized". The INTERFACE_LINK_LIBRARIES property may contain
1.740 configuration-sensitive generator-expressions which may be used to specify
1.740 per-configuration rules.
1.740
1.740
1.742 -- Configuring incomplete, errors occurred!
1.742 See also "/root/small_gicp/build/CMakeFiles/CMakeOutput.log".
------
Dockerfile.build.gcc:18
--------------------
16 | RUN rm -rf ./*
17 |
18 | >>> RUN cmake .. -DBUILD_WITH_TBB=ON -DBUILD_WITH_PCL=ON
19 | RUN cmake --build . -j$(nproc)
20 |
--------------------
ERROR: failed to solve: process "/bin/sh -c cmake .. -DBUILD_WITH_TBB=ON -DBUILD_WITH_PCL=ON" did not complete successfully: exit code: 1
ros-noetic-pcl-ros
in the packages to be installed in the dockerfile.-DBUILD_WITH_PCL=ON
flagros:noetic
imageThank you for your excellent work. May I ask if there will be a faster version of GPU in the future ?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.