diff --git a/ros-aicp-mapping/DESCR b/ros-aicp-mapping/DESCR new file mode 100644 index 0000000000000000000000000000000000000000..6fcc6ca3d61a288c6bae75c11fa3fc5baf3751f4 --- /dev/null +++ b/ros-aicp-mapping/DESCR @@ -0,0 +1 @@ +Auto-tuned Iterative Closest Point (AICP) is a module for laser-based localization and mapping (Nobili et al., ICRA 2017). The implementation of AICP includes a module for localization failure prediction (Nobili et al., ICRA 2018). The registration strategy is based on the libpointmatcher framework (Pomerleau et al., AR 2012). diff --git a/ros-aicp-mapping/Makefile b/ros-aicp-mapping/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..5b5bc51d537a44788407887f28c502bca4de5414 --- /dev/null +++ b/ros-aicp-mapping/Makefile @@ -0,0 +1,31 @@ +# robotpkg Makefile for: wip/ros-aicp-mapping +# Created: Guilhem Saurel on Fri, 24 Jan 2020 +# + +ROS_PKG= aicp_mapping +ROS_METAPKG= yes +ROS_VERSION= 0.0.1 +ROS_REPO= ori-drs + +HOMEPAGE= ${MASTER_SITE_GITHUB:=${ROS_REPO}/${ROS_PKG}} +MASTER_SITES= ${HOMEPAGE}/archive/ +MASTER_REPOSITORY= git ${HOMEPAGE}.git + +CATEGORIES= wip +ROS_COMMENT= Auto-tuned Iterative Closest Point -- AICP + +include ../../meta-pkgs/ros-base/Makefile.common + +include ../../wip/libnabo/depend.mk +include ../../wip/libpointmatcher/depend.mk + +include ../../interfaces/ros-common-msgs/depend.mk +include ../../interfaces/ros-std-msgs/depend.mk +include ../../lang/ros-message-generation/depend.mk +include ../../math/ros-geometry/depend.mk +include ../../middleware/ros-comm/depend.mk + +include ../../devel/ros-catkin/depend.mk +include ../../mk/sysdep/python.mk +include ../../mk/language/c++11.mk +include ../../mk/robotpkg.mk diff --git a/ros-aicp-mapping/PLIST b/ros-aicp-mapping/PLIST new file mode 100644 index 0000000000000000000000000000000000000000..3f6bbfbe07fea40628cf357e9e94967af003f2ee --- /dev/null +++ b/ros-aicp-mapping/PLIST @@ -0,0 +1,50 @@ +@comment Fri Jan 24 19:27:04 CET 2020 +include/aicp_core/abstract_classification.hpp +include/aicp_core/abstract_overlapper.hpp +include/aicp_core/abstract_registrator.hpp +include/aicp_core/aligned_cloud.hpp +include/aicp_core/aligned_clouds_graph.hpp +include/aicp_core/app.hpp +include/aicp_core/classification.hpp +include/aicp_core/common.hpp +include/aicp_core/filteringUtils.hpp +include/aicp_core/octrees_overlap.hpp +include/aicp_core/overlap.hpp +include/aicp_core/pointmatcher_registration.hpp +include/aicp_core/poseFileReader.hpp +include/aicp_core/registration.hpp +include/aicp_core/svm.hpp +include/aicp_core/timing.hpp +include/aicp_core/visualizer.hpp +include/aicp_core/yaml_configurator.hpp +include/aicp_ros/app_ros.hpp +include/aicp_ros/talker_ros.hpp +include/aicp_ros/velodyne_accumulator.hpp +include/aicp_ros/visualizer_ros.hpp +include/aicp_srv/ProcessFile.h +include/aicp_srv/ProcessFileRequest.h +include/aicp_srv/ProcessFileResponse.h +lib/libaicp_core.so +lib/libaicp_ros.so +lib/pkgconfig/aicp_core.pc +lib/pkgconfig/aicp_ros.pc +lib/pkgconfig/aicp_srv.pc +${PYTHON_SITELIB}/aicp_srv/__init__.py +${PYTHON_SITELIB}/aicp_srv/srv/_ProcessFile.py +${PYTHON_SITELIB}/aicp_srv/srv/__init__.py +share/aicp_core/cmake/aicp_coreConfig-version.cmake +share/aicp_core/cmake/aicp_coreConfig.cmake +share/aicp_core/package.xml +share/aicp_ros/cmake/aicp_rosConfig-version.cmake +share/aicp_ros/cmake/aicp_rosConfig.cmake +share/aicp_ros/package.xml +share/aicp_srv/cmake/aicp_srv-msg-extras.cmake +share/aicp_srv/cmake/aicp_srv-msg-paths.cmake +share/aicp_srv/cmake/aicp_srvConfig-version.cmake +share/aicp_srv/cmake/aicp_srvConfig.cmake +share/aicp_srv/package.xml +share/aicp_srv/srv/ProcessFile.srv +share/common-lisp/ros/aicp_srv/srv/ProcessFile.lisp +share/common-lisp/ros/aicp_srv/srv/_package.lisp +share/common-lisp/ros/aicp_srv/srv/_package_ProcessFile.lisp +share/common-lisp/ros/aicp_srv/srv/aicp_srv-srv.asd diff --git a/ros-aicp-mapping/depend.mk b/ros-aicp-mapping/depend.mk new file mode 100644 index 0000000000000000000000000000000000000000..5489c1dc97202e97762361b06cf8b35514fe5b2b --- /dev/null +++ b/ros-aicp-mapping/depend.mk @@ -0,0 +1,37 @@ +# robotpkg depend.mk for: wip/ros-aicp-mapping +# Created: Guilhem Saurel on Fri, 24 Jan 2020 +# + +DEPEND_DEPTH:= ${DEPEND_DEPTH}+ +ROS_AICP_MAPPING_DEPEND_MK:= ${ROS_AICP_MAPPING_DEPEND_MK}+ + +ifeq (+,$(DEPEND_DEPTH)) +DEPEND_PKG+= ros-aicp-mapping +endif + +ifeq (+,$(ROS_AICP_MAPPING_DEPEND_MK)) # -------------------------------------- + +include ../../meta-pkgs/ros-base/depend.common +include ../../mk/robotpkg.prefs.mk +ifeq (18.04,${OS_VERSION}) + PREFER.ros-aicp-mapping?= robotpkg +else + PREFER.ros-aicp-mapping?= ${PREFER.ros-base} + SYSTEM_PREFIX.ros-aicp-mapping?= ${SYSTEM_PREFIX.ros-base} +endif + +DEPEND_USE+= ros-aicp-mapping +ROS_DEPEND_USE+= ros-aicp-mapping + +DEPEND_ABI.ros-aicp-mapping?= ros-aicp-mapping>=0.0.1 +DEPEND_DIR.ros-aicp-mapping?= ../../wip/ros-aicp-mapping + +SYSTEM_SEARCH.ros-aicp-mapping=\ + include/aicp_core/common.hpp \ + 'lib/pkgconfig/aicp_core.pc:/Version/s/[^0-9.]//gp' + +CMAKE_PREFIX_PATH.ros-aicp-mapping= ${PREFIX.ros-aicp-mapping} + +endif # ROS_AICP_MAPPING_DEPEND_MK -------------------------------------------- + +DEPEND_DEPTH:= ${DEPEND_DEPTH:+=} diff --git a/ros-aicp-mapping/distinfo b/ros-aicp-mapping/distinfo new file mode 100644 index 0000000000000000000000000000000000000000..ac5ad3e067baa61b7224bdd1602ecbc1019dafc6 --- /dev/null +++ b/ros-aicp-mapping/distinfo @@ -0,0 +1,4 @@ +SHA1 (ros/aicp_mapping/0.0.1.tar.gz) = a03b4f7338ad7af573fbe9e5418e3c1d2bc90a16 +RMD160 (ros/aicp_mapping/0.0.1.tar.gz) = 2100555f38ca65b1b0af43486c9e6dc8b92fd429 +Size (ros/aicp_mapping/0.0.1.tar.gz) = 7201053 bytes +SHA1 (patch-aa) = 6b56a225faf9f008a290b21fa2657cda020dc18a diff --git a/ros-aicp-mapping/patches/patch-aa b/ros-aicp-mapping/patches/patch-aa new file mode 100644 index 0000000000000000000000000000000000000000..586cb39daa5abf8cb58ecc75865ab61c7bbf7eed --- /dev/null +++ b/ros-aicp-mapping/patches/patch-aa @@ -0,0 +1,33 @@ +create() provides an std::shared_ptr instead of a ptr. + +--- aicp_core/src/utils/icpMonitor.cpp.orig 2019-05-05 17:52:19.000000000 +0200 ++++ aicp_core/src/utils/icpMonitor.cpp 2020-01-24 19:24:13.338056526 +0100 +@@ -26,7 +26,7 @@ + params["knn"] = toParam(1); // for Hausdorff distance, we only need the first closest point + params["epsilon"] = toParam(0); + +- PM::Matcher* matcherHausdorff = PM::get().MatcherRegistrar.create("KDTreeMatcher", params); ++ auto matcherHausdorff = PM::get().MatcherRegistrar.create("KDTreeMatcher", params); + + float quantile = 0.60; + +@@ -102,7 +102,7 @@ + params["knn"] = toParam(1); // for Hausdorff distance, we only need the first closest point + params["epsilon"] = toParam(0); + +- PM::Matcher* matcher = PM::get().MatcherRegistrar.create("KDTreeMatcher", params); ++ auto matcher = PM::get().MatcherRegistrar.create("KDTreeMatcher", params); + + // from reading to reference + matcher->init(A); +--- aicp_core/src/registration/pointmatcher_registration.cpp.orig 2019-05-05 17:52:19.000000000 +0200 ++++ aicp_core/src/registration/pointmatcher_registration.cpp 2020-01-24 19:24:44.765800055 +0100 +@@ -72,7 +72,7 @@ + { + PM::TransformationParameters init_transform = parseTransformationDeg(params_.pointmatcher.initialTransform, 3); + +- PM::Transformation* rigid_transform = PM::get().REG(Transformation).create("RigidTransformation"); ++ auto rigid_transform = PM::get().REG(Transformation).create("RigidTransformation"); + + if (!rigid_transform->checkParameters(init_transform)) { + cerr << endl