summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev-python/django-sortedm2m/django-sortedm2m-2.0.0.ebuild6
-rw-r--r--dev-python/easy-thumbnails/easy-thumbnails-2.7.ebuild1
-rw-r--r--dev-ros/pcl_conversions/Manifest5
-rw-r--r--dev-ros/pcl_conversions/pcl_conversions-0.2.1-r1.ebuild24
-rw-r--r--dev-ros/pcl_conversions/pcl_conversions-1.6.1.ebuild25
-rw-r--r--dev-ros/pcl_conversions/pcl_conversions-1.6.2.ebuild25
-rw-r--r--dev-ros/pcl_conversions/pcl_conversions-1.7.1.ebuild (renamed from dev-ros/pcl_conversions/pcl_conversions-1.7.0.ebuild)2
-rw-r--r--dev-ros/pcl_ros/Manifest5
-rw-r--r--dev-ros/pcl_ros/files/pcl111.patch963
-rw-r--r--dev-ros/pcl_ros/pcl_ros-1.5.4.ebuild39
-rw-r--r--dev-ros/pcl_ros/pcl_ros-1.6.2.ebuild40
-rw-r--r--dev-ros/pcl_ros/pcl_ros-1.7.0.ebuild40
-rw-r--r--dev-ros/pcl_ros/pcl_ros-1.7.1.ebuild (renamed from dev-ros/pcl_ros/pcl_ros-1.6.1.ebuild)4
-rw-r--r--dev-ros/pcl_ros/pcl_ros-9999.ebuild3
-rw-r--r--eclass/ros-catkin.eclass2
-rw-r--r--ros-meta/perception_pcl/Manifest1
-rw-r--r--ros-meta/perception_pcl/perception_pcl-1.7.1.ebuild20
-rw-r--r--sci-libs/rtabmap/Manifest1
-rw-r--r--sci-libs/rtabmap/files/boost173.patch13
-rw-r--r--sci-libs/rtabmap/files/ocv.patch24
-rw-r--r--sci-libs/rtabmap/files/pcl111.patch49
-rw-r--r--sci-libs/rtabmap/rtabmap-0.19.7.ebuild69
22 files changed, 1153 insertions, 208 deletions
diff --git a/dev-python/django-sortedm2m/django-sortedm2m-2.0.0.ebuild b/dev-python/django-sortedm2m/django-sortedm2m-2.0.0.ebuild
index f513c330485d..7e0513e1cb52 100644
--- a/dev-python/django-sortedm2m/django-sortedm2m-2.0.0.ebuild
+++ b/dev-python/django-sortedm2m/django-sortedm2m-2.0.0.ebuild
@@ -21,7 +21,11 @@ IUSE="test"
RESTRICT="!test? ( test )"
RDEPEND="dev-python/django[${PYTHON_USEDEP}]"
-BDEPEND="test? ( ${RDEPEND} )"
+BDEPEND="
+ test? (
+ $(python_gen_impl_dep sqlite)
+ ${RDEPEND}
+ )"
python_test() {
local -x PYTHONPATH=test_project:${PYTHONPATH}
diff --git a/dev-python/easy-thumbnails/easy-thumbnails-2.7.ebuild b/dev-python/easy-thumbnails/easy-thumbnails-2.7.ebuild
index 3aabbec54a96..f532eb55869d 100644
--- a/dev-python/easy-thumbnails/easy-thumbnails-2.7.ebuild
+++ b/dev-python/easy-thumbnails/easy-thumbnails-2.7.ebuild
@@ -23,6 +23,7 @@ RDEPEND="
"
BDEPEND="
test? (
+ $(python_gen_impl_dep sqlite)
${RDEPEND}
dev-python/testfixtures[${PYTHON_USEDEP}]
)
diff --git a/dev-ros/pcl_conversions/Manifest b/dev-ros/pcl_conversions/Manifest
index 463eeebad32a..111bcc238e1c 100644
--- a/dev-ros/pcl_conversions/Manifest
+++ b/dev-ros/pcl_conversions/Manifest
@@ -1,4 +1 @@
-DIST pcl_conversions-0.2.1.tar.gz 8450 BLAKE2B a77cf70f751c7d80bcdee1214554aecaf1cd3518266fed75f730c865f3ccff9ba2cb502861084c9792df4850fe411e6606c94afb2bdc490cad396be0b319763e SHA512 a9d8a2b45463d67d858ee9b62f0e895f808c79b3bac3d2833c6ba02bd36bdeec0d4697897446c9e2968559667e1d9c5f93df6b583f13fd3b26220d3cd0a71632
-DIST perception_pcl-1.6.1.tar.gz 82552 BLAKE2B a442c9df193e38b6aca9e45ec3a469d6603bc2c909fc8c33ad612b2b6448956863555608cb0a0102593e2e71aa7f54ae88b677c2bfbde7df23b114ff4ca83c8f SHA512 c0b63833dd12f3eee5f5ec1e5d8f8bd9c001f1f1787572717a0845fa9a18862bb49a134638f9f0bde5587ac26ab8fd9e6534fcd5ed6b69842780a6fd3762fb5c
-DIST perception_pcl-1.6.2.tar.gz 82896 BLAKE2B dc5d4e25b1841ffde720f7f0231570fcca687d32158da0bb9510f37b7cefbd71dd774bae31a0aa8fdfe7330c98721a7d0df7236bbc9452f9f82c09cd42236695 SHA512 c7c0524a8095fd42b8e12bf2f4453a07d758822ba5a345353df8790e4c22faf250e400fa88a90aea828e80ef4a9992ead04635a5898a45b47245235fec7700ed
-DIST perception_pcl-1.7.0.tar.gz 84987 BLAKE2B de309d013b24f3fb3ad2c1a5531cdee9860c4173cd885d7f294a30153ed1cb1613cd26035ec161879cb3804d75670a6d58096251f867cffaf9fd6eb74741ef40 SHA512 01eee6b2fec2b0be0737adaf8a1347922631edee8466c28815e1b183e9365c632f66544c8f85231a5c81262bcab3e24a3d6bff986262b1cb64dc2e3b27adef67
+DIST perception_pcl-1.7.1.tar.gz 80899 BLAKE2B 2898d88efa1b27a27eea06fb949254127cf92eb2c788ae914a40f0000fa8204202c4823c69ab5fa9bd83c2426289a4897a56fab9ec3df61e3ab0a184fc068c41 SHA512 97e9240c660adde84976860ed9c94cf8c127615526641dbcdb729ffbda4cda4dfb9f351cc2d471988732ad61e6508bfa5906c8b4503c31172e7f4e4dfc31260e
diff --git a/dev-ros/pcl_conversions/pcl_conversions-0.2.1-r1.ebuild b/dev-ros/pcl_conversions/pcl_conversions-0.2.1-r1.ebuild
deleted file mode 100644
index 5a66b310e0f5..000000000000
--- a/dev-ros/pcl_conversions/pcl_conversions-0.2.1-r1.ebuild
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 1999-2016 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-ROS_REPO_URI="https://github.com/ros-perception/pcl_conversions"
-KEYWORDS="~amd64 ~arm"
-
-inherit ros-catkin
-
-DESCRIPTION="Provides conversions from PCL data types and ROS message types"
-LICENSE="BSD"
-SLOT="0"
-IUSE=""
-
-RDEPEND="
- dev-ros/roscpp
- sci-libs/pcl:=
- dev-ros/pcl_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-ros/std_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-ros/sensor_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-cpp/eigen:3
-"
-DEPEND="${RDEPEND}
- test? ( dev-cpp/gtest )"
diff --git a/dev-ros/pcl_conversions/pcl_conversions-1.6.1.ebuild b/dev-ros/pcl_conversions/pcl_conversions-1.6.1.ebuild
deleted file mode 100644
index 79f1ab5d1922..000000000000
--- a/dev-ros/pcl_conversions/pcl_conversions-1.6.1.ebuild
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-ROS_REPO_URI="https://github.com/ros-perception/perception_pcl"
-ROS_SUBDIR=${PN}
-KEYWORDS="~amd64 ~arm"
-
-inherit ros-catkin
-
-DESCRIPTION="Provides conversions from PCL data types and ROS message types"
-LICENSE="BSD"
-SLOT="0"
-IUSE=""
-
-RDEPEND="
- dev-ros/roscpp
- sci-libs/pcl:=
- dev-ros/pcl_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-ros/std_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-ros/sensor_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-cpp/eigen:3
-"
-DEPEND="${RDEPEND}
- test? ( dev-cpp/gtest )"
diff --git a/dev-ros/pcl_conversions/pcl_conversions-1.6.2.ebuild b/dev-ros/pcl_conversions/pcl_conversions-1.6.2.ebuild
deleted file mode 100644
index 79f1ab5d1922..000000000000
--- a/dev-ros/pcl_conversions/pcl_conversions-1.6.2.ebuild
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-ROS_REPO_URI="https://github.com/ros-perception/perception_pcl"
-ROS_SUBDIR=${PN}
-KEYWORDS="~amd64 ~arm"
-
-inherit ros-catkin
-
-DESCRIPTION="Provides conversions from PCL data types and ROS message types"
-LICENSE="BSD"
-SLOT="0"
-IUSE=""
-
-RDEPEND="
- dev-ros/roscpp
- sci-libs/pcl:=
- dev-ros/pcl_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-ros/std_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-ros/sensor_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-cpp/eigen:3
-"
-DEPEND="${RDEPEND}
- test? ( dev-cpp/gtest )"
diff --git a/dev-ros/pcl_conversions/pcl_conversions-1.7.0.ebuild b/dev-ros/pcl_conversions/pcl_conversions-1.7.1.ebuild
index 84ff87429a51..2d924e7a3445 100644
--- a/dev-ros/pcl_conversions/pcl_conversions-1.7.0.ebuild
+++ b/dev-ros/pcl_conversions/pcl_conversions-1.7.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2019 Gentoo Authors
+# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=5
diff --git a/dev-ros/pcl_ros/Manifest b/dev-ros/pcl_ros/Manifest
index 3748d2c0df52..111bcc238e1c 100644
--- a/dev-ros/pcl_ros/Manifest
+++ b/dev-ros/pcl_ros/Manifest
@@ -1,4 +1 @@
-DIST perception_pcl-1.5.4.tar.gz 73829 BLAKE2B cfc6e964691da42717d134e0b639ef4af4491074de171a84d081bf66c061a51b7c2da750ff539dd784a7a4c34cfdfe18d7d2e38c4e6d0370fbc441f9b3a6196d SHA512 e9da9b2f9b602b67bceec9b0adf515b500d77c9e5c2dbdc1f63bf5a91419bbf7f9f41d602646b8197dffcf7a077b63eb402a507dbc6bb96405a8f4d64576e36e
-DIST perception_pcl-1.6.1.tar.gz 82552 BLAKE2B a442c9df193e38b6aca9e45ec3a469d6603bc2c909fc8c33ad612b2b6448956863555608cb0a0102593e2e71aa7f54ae88b677c2bfbde7df23b114ff4ca83c8f SHA512 c0b63833dd12f3eee5f5ec1e5d8f8bd9c001f1f1787572717a0845fa9a18862bb49a134638f9f0bde5587ac26ab8fd9e6534fcd5ed6b69842780a6fd3762fb5c
-DIST perception_pcl-1.6.2.tar.gz 82896 BLAKE2B dc5d4e25b1841ffde720f7f0231570fcca687d32158da0bb9510f37b7cefbd71dd774bae31a0aa8fdfe7330c98721a7d0df7236bbc9452f9f82c09cd42236695 SHA512 c7c0524a8095fd42b8e12bf2f4453a07d758822ba5a345353df8790e4c22faf250e400fa88a90aea828e80ef4a9992ead04635a5898a45b47245235fec7700ed
-DIST perception_pcl-1.7.0.tar.gz 84987 BLAKE2B de309d013b24f3fb3ad2c1a5531cdee9860c4173cd885d7f294a30153ed1cb1613cd26035ec161879cb3804d75670a6d58096251f867cffaf9fd6eb74741ef40 SHA512 01eee6b2fec2b0be0737adaf8a1347922631edee8466c28815e1b183e9365c632f66544c8f85231a5c81262bcab3e24a3d6bff986262b1cb64dc2e3b27adef67
+DIST perception_pcl-1.7.1.tar.gz 80899 BLAKE2B 2898d88efa1b27a27eea06fb949254127cf92eb2c788ae914a40f0000fa8204202c4823c69ab5fa9bd83c2426289a4897a56fab9ec3df61e3ab0a184fc068c41 SHA512 97e9240c660adde84976860ed9c94cf8c127615526641dbcdb729ffbda4cda4dfb9f351cc2d471988732ad61e6508bfa5906c8b4503c31172e7f4e4dfc31260e
diff --git a/dev-ros/pcl_ros/files/pcl111.patch b/dev-ros/pcl_ros/files/pcl111.patch
new file mode 100644
index 000000000000..8f3433ffccaa
--- /dev/null
+++ b/dev-ros/pcl_ros/files/pcl111.patch
@@ -0,0 +1,963 @@
+From e812d3cf1b67cc73841b41e690d53c74e5077a05 Mon Sep 17 00:00:00 2001
+From: Kunal Tyagi <tyagi.kunal@live.com>
+Date: Wed, 6 May 2020 08:41:07 +0900
+Subject: [PATCH] Changes in preparation for PCL 1.11 (#273)
+
+* Deriving typedef from pcl type
+
+* Explicit boost shared_ptr for function parameters
+
+* Use boost::shared_ptr instead of PCL::Ptr
+
+* Implementing boost-std compatibility
+
+* Using the compatibility layer
+---
+ pcl_ros/include/pcl_ros/features/feature.h | 14 +-
+ pcl_ros/include/pcl_ros/filters/filter.h | 4 +-
+ pcl_ros/include/pcl_ros/pcl_nodelet.h | 9 +-
+ pcl_ros/include/pcl_ros/point_cloud.h | 121 ++++++++++++++++++
+ .../extract_polygonal_prism_data.h | 4 +-
+ .../pcl_ros/segmentation/sac_segmentation.h | 12 +-
+ .../segmentation/segment_differences.h | 4 +-
+ pcl_ros/include/pcl_ros/surface/convex_hull.h | 4 +-
+ .../pcl_ros/surface/moving_least_squares.h | 4 +-
+ pcl_ros/src/pcl_ros/features/boundary.cpp | 10 +-
+ pcl_ros/src/pcl_ros/features/fpfh.cpp | 10 +-
+ pcl_ros/src/pcl_ros/features/fpfh_omp.cpp | 10 +-
+ .../pcl_ros/features/moment_invariants.cpp | 8 +-
+ pcl_ros/src/pcl_ros/features/normal_3d.cpp | 8 +-
+ .../src/pcl_ros/features/normal_3d_omp.cpp | 8 +-
+ .../src/pcl_ros/features/normal_3d_tbb.cpp | 4 +-
+ pcl_ros/src/pcl_ros/features/pfh.cpp | 10 +-
+ .../pcl_ros/features/principal_curvatures.cpp | 10 +-
+ pcl_ros/src/pcl_ros/features/shot.cpp | 10 +-
+ pcl_ros/src/pcl_ros/features/shot_omp.cpp | 10 +-
+ pcl_ros/src/pcl_ros/features/vfh.cpp | 10 +-
+ .../pcl_ros/segmentation/extract_clusters.cpp | 4 +-
+ .../extract_polygonal_prism_data.cpp | 6 +-
+ .../pcl_ros/segmentation/sac_segmentation.cpp | 6 +-
+ .../segmentation/segment_differences.cpp | 8 +-
+ pcl_ros/src/pcl_ros/surface/convex_hull.cpp | 8 +-
+ .../pcl_ros/surface/moving_least_squares.cpp | 10 +-
+ pcl_ros/tools/pointcloud_to_pcd.cpp | 2 +-
+ 28 files changed, 225 insertions(+), 103 deletions(-)
+
+diff --git a/pcl_ros/include/pcl_ros/features/feature.h b/pcl_ros/include/pcl_ros/features/feature.h
+index 26bcfe6b..098c20bc 100644
+--- a/pcl_ros/include/pcl_ros/features/feature.h
++++ b/pcl_ros/include/pcl_ros/features/feature.h
+@@ -69,11 +69,11 @@ namespace pcl_ros
+ typedef pcl::KdTree<pcl::PointXYZ>::Ptr KdTreePtr;
+
+ typedef pcl::PointCloud<pcl::PointXYZ> PointCloudIn;
+- typedef PointCloudIn::Ptr PointCloudInPtr;
+- typedef PointCloudIn::ConstPtr PointCloudInConstPtr;
++ typedef boost::shared_ptr<PointCloudIn> PointCloudInPtr;
++ typedef boost::shared_ptr<const PointCloudIn> PointCloudInConstPtr;
+
+- typedef boost::shared_ptr <std::vector<int> > IndicesPtr;
+- typedef boost::shared_ptr <const std::vector<int> > IndicesConstPtr;
++ typedef pcl::IndicesPtr IndicesPtr;
++ typedef pcl::IndicesConstPtr IndicesConstPtr;
+
+ /** \brief Empty constructor. */
+ Feature () : /*input_(), indices_(), surface_(), */tree_(), k_(0), search_radius_(0),
+@@ -152,7 +152,7 @@ namespace pcl_ros
+ indices.header.stamp = pcl_conversions::fromPCL(input->header).stamp;
+ PointCloudIn cloud;
+ cloud.header.stamp = input->header.stamp;
+- nf_pc_.add (cloud.makeShared ());
++ nf_pc_.add (ros_ptr(cloud.makeShared ()));
+ nf_pi_.add (boost::make_shared<PointIndices> (indices));
+ }
+
+@@ -190,8 +190,8 @@ namespace pcl_ros
+ typedef sensor_msgs::PointCloud2 PointCloud2;
+
+ typedef pcl::PointCloud<pcl::Normal> PointCloudN;
+- typedef PointCloudN::Ptr PointCloudNPtr;
+- typedef PointCloudN::ConstPtr PointCloudNConstPtr;
++ typedef boost::shared_ptr<PointCloudN> PointCloudNPtr;
++ typedef boost::shared_ptr<const PointCloudN> PointCloudNConstPtr;
+
+ FeatureFromNormals () : normals_() {};
+
+diff --git a/pcl_ros/include/pcl_ros/filters/filter.h b/pcl_ros/include/pcl_ros/filters/filter.h
+index 94c1e883..b4e79538 100644
+--- a/pcl_ros/include/pcl_ros/filters/filter.h
++++ b/pcl_ros/include/pcl_ros/filters/filter.h
+@@ -58,8 +58,8 @@ namespace pcl_ros
+ public:
+ typedef sensor_msgs::PointCloud2 PointCloud2;
+
+- typedef boost::shared_ptr <std::vector<int> > IndicesPtr;
+- typedef boost::shared_ptr <const std::vector<int> > IndicesConstPtr;
++ typedef pcl::IndicesPtr IndicesPtr;
++ typedef pcl::IndicesConstPtr IndicesConstPtr;
+
+ Filter () {}
+
+diff --git a/pcl_ros/include/pcl_ros/pcl_nodelet.h b/pcl_ros/include/pcl_ros/pcl_nodelet.h
+index f12e62d7..279d6730 100644
+--- a/pcl_ros/include/pcl_ros/pcl_nodelet.h
++++ b/pcl_ros/include/pcl_ros/pcl_nodelet.h
+@@ -48,6 +48,7 @@
+ // PCL includes
+ #include <pcl_msgs/PointIndices.h>
+ #include <pcl_msgs/ModelCoefficients.h>
++#include <pcl/pcl_base.h>
+ #include <pcl/point_types.h>
+ #include <pcl_conversions/pcl_conversions.h>
+ #include "pcl_ros/point_cloud.h"
+@@ -75,8 +76,8 @@ namespace pcl_ros
+ typedef sensor_msgs::PointCloud2 PointCloud2;
+
+ typedef pcl::PointCloud<pcl::PointXYZ> PointCloud;
+- typedef PointCloud::Ptr PointCloudPtr;
+- typedef PointCloud::ConstPtr PointCloudConstPtr;
++ typedef boost::shared_ptr<PointCloud> PointCloudPtr;
++ typedef boost::shared_ptr<const PointCloud> PointCloudConstPtr;
+
+ typedef pcl_msgs::PointIndices PointIndices;
+ typedef PointIndices::Ptr PointIndicesPtr;
+@@ -86,8 +87,8 @@ namespace pcl_ros
+ typedef ModelCoefficients::Ptr ModelCoefficientsPtr;
+ typedef ModelCoefficients::ConstPtr ModelCoefficientsConstPtr;
+
+- typedef boost::shared_ptr <std::vector<int> > IndicesPtr;
+- typedef boost::shared_ptr <const std::vector<int> > IndicesConstPtr;
++ typedef pcl::IndicesPtr IndicesPtr;
++ typedef pcl::IndicesConstPtr IndicesConstPtr;
+
+ /** \brief Empty constructor. */
+ PCLNodelet () : use_indices_ (false), latched_indices_ (false),
+diff --git a/pcl_ros/include/pcl_ros/point_cloud.h b/pcl_ros/include/pcl_ros/point_cloud.h
+index bbf30ad1..93df7365 100644
+--- a/pcl_ros/include/pcl_ros/point_cloud.h
++++ b/pcl_ros/include/pcl_ros/point_cloud.h
+@@ -270,4 +270,125 @@ namespace ros
+
+ } // namespace ros
+
++// test if testing machinery can be implemented
++#if defined(__cpp_rvalue_references) && defined(__cpp_constexpr)
++#define ROS_POINTER_COMPATIBILITY_IMPLEMENTED 1
++#else
++#define ROS_POINTER_COMPATIBILITY_IMPLEMENTED 0
++#endif
++
++#if ROS_POINTER_COMPATIBILITY_IMPLEMENTED
++#include <type_traits> // for std::is_same
++#include <memory> // for std::shared_ptr
++
++#include <pcl/pcl_config.h>
++#if PCL_VERSION_COMPARE(>=, 1, 11, 0)
++#include <pcl/memory.h>
++#elif PCL_VERSION_COMPARE(>=, 1, 10, 0)
++#include <pcl/make_shared.h>
++#endif
++#endif
++
++namespace pcl
++{
++ namespace detail
++ {
++#if ROS_POINTER_COMPATIBILITY_IMPLEMENTED
++#if PCL_VERSION_COMPARE(>=, 1, 10, 0)
++ template <class T>
++ constexpr static bool pcl_uses_boost = std::is_same<boost::shared_ptr<T>,
++ pcl::shared_ptr<T>>::value;
++#else
++ template <class T>
++ constexpr static bool pcl_uses_boost = true;
++#endif
++
++ template<class SharedPointer> struct Holder
++ {
++ SharedPointer p;
++
++ Holder(const SharedPointer &p) : p(p) {}
++ Holder(const Holder &other) : p(other.p) {}
++ Holder(Holder &&other) : p(std::move(other.p)) {}
++
++ void operator () (...) { p.reset(); }
++ };
++
++ template<class T>
++ inline std::shared_ptr<T> to_std_ptr(const boost::shared_ptr<T> &p)
++ {
++ typedef Holder<std::shared_ptr<T>> H;
++ if(H *h = boost::get_deleter<H>(p))
++ {
++ return h->p;
++ }
++ else
++ {
++ return std::shared_ptr<T>(p.get(), Holder<boost::shared_ptr<T>>(p));
++ }
++ }
++
++ template<class T>
++ inline boost::shared_ptr<T> to_boost_ptr(const std::shared_ptr<T> &p)
++ {
++ typedef Holder<boost::shared_ptr<T>> H;
++ if(H * h = std::get_deleter<H>(p))
++ {
++ return h->p;
++ }
++ else
++ {
++ return boost::shared_ptr<T>(p.get(), Holder<std::shared_ptr<T>>(p));
++ }
++ }
++#endif
++ } // namespace pcl::detail
++
++// add functions to convert to smart pointer used by ROS
++ template <class T>
++ inline boost::shared_ptr<T> ros_ptr(const boost::shared_ptr<T> &p)
++ {
++ return p;
++ }
++
++#if ROS_POINTER_COMPATIBILITY_IMPLEMENTED
++ template <class T>
++ inline boost::shared_ptr<T> ros_ptr(const std::shared_ptr<T> &p)
++ {
++ return detail::to_boost_ptr(p);
++ }
++
++// add functions to convert to smart pointer used by PCL, based on PCL's own pointer
++ template <class T, class = typename std::enable_if<!detail::pcl_uses_boost<T>>::type>
++ inline std::shared_ptr<T> pcl_ptr(const std::shared_ptr<T> &p)
++ {
++ return p;
++ }
++
++ template <class T, class = typename std::enable_if<!detail::pcl_uses_boost<T>>::type>
++ inline std::shared_ptr<T> pcl_ptr(const boost::shared_ptr<T> &p)
++ {
++ return detail::to_std_ptr(p);
++ }
++
++ template <class T, class = typename std::enable_if<detail::pcl_uses_boost<T>>::type>
++ inline boost::shared_ptr<T> pcl_ptr(const std::shared_ptr<T> &p)
++ {
++ return detail::to_boost_ptr(p);
++ }
++
++ template <class T, class = typename std::enable_if<detail::pcl_uses_boost<T>>::type>
++ inline boost::shared_ptr<T> pcl_ptr(const boost::shared_ptr<T> &p)
++ {
++ return p;
++ }
++#else
++ template <class T>
++ inline boost::shared_ptr<T> pcl_ptr(const boost::shared_ptr<T> &p)
++ {
++ return p;
++ }
++#endif
++} // namespace pcl
++
+ #endif
+diff --git a/pcl_ros/include/pcl_ros/segmentation/extract_polygonal_prism_data.h b/pcl_ros/include/pcl_ros/segmentation/extract_polygonal_prism_data.h
+index 7134f905..13b85316 100644
+--- a/pcl_ros/include/pcl_ros/segmentation/extract_polygonal_prism_data.h
++++ b/pcl_ros/include/pcl_ros/segmentation/extract_polygonal_prism_data.h
+@@ -64,8 +64,8 @@ namespace pcl_ros
+ class ExtractPolygonalPrismData : public PCLNodelet
+ {
+ typedef pcl::PointCloud<pcl::PointXYZ> PointCloud;
+- typedef PointCloud::Ptr PointCloudPtr;
+- typedef PointCloud::ConstPtr PointCloudConstPtr;
++ typedef boost::shared_ptr<PointCloud> PointCloudPtr;
++ typedef boost::shared_ptr<const PointCloud> PointCloudConstPtr;
+
+ protected:
+ /** \brief The output PointIndices publisher. */
+diff --git a/pcl_ros/include/pcl_ros/segmentation/sac_segmentation.h b/pcl_ros/include/pcl_ros/segmentation/sac_segmentation.h
+index af2c9126..9243e363 100644
+--- a/pcl_ros/include/pcl_ros/segmentation/sac_segmentation.h
++++ b/pcl_ros/include/pcl_ros/segmentation/sac_segmentation.h
+@@ -61,8 +61,8 @@ namespace pcl_ros
+ class SACSegmentation : public PCLNodelet
+ {
+ typedef pcl::PointCloud<pcl::PointXYZ> PointCloud;
+- typedef PointCloud::Ptr PointCloudPtr;
+- typedef PointCloud::ConstPtr PointCloudConstPtr;
++ typedef boost::shared_ptr<PointCloud> PointCloudPtr;
++ typedef boost::shared_ptr<const PointCloud> PointCloudConstPtr;
+
+ public:
+ /** \brief Constructor. */
+@@ -181,12 +181,12 @@ namespace pcl_ros
+ class SACSegmentationFromNormals: public SACSegmentation
+ {
+ typedef pcl::PointCloud<pcl::PointXYZ> PointCloud;
+- typedef PointCloud::Ptr PointCloudPtr;
+- typedef PointCloud::ConstPtr PointCloudConstPtr;
++ typedef boost::shared_ptr<PointCloud> PointCloudPtr;
++ typedef boost::shared_ptr<const PointCloud> PointCloudConstPtr;
+
+ typedef pcl::PointCloud<pcl::Normal> PointCloudN;
+- typedef PointCloudN::Ptr PointCloudNPtr;
+- typedef PointCloudN::ConstPtr PointCloudNConstPtr;
++ typedef boost::shared_ptr<PointCloudN> PointCloudNPtr;
++ typedef boost::shared_ptr<const PointCloudN> PointCloudNConstPtr;
+
+ public:
+ /** \brief Set the input TF frame the data should be transformed into before processing, if input.header.frame_id is different.
+diff --git a/pcl_ros/include/pcl_ros/segmentation/segment_differences.h b/pcl_ros/include/pcl_ros/segmentation/segment_differences.h
+index 4914bc86..da767ab3 100644
+--- a/pcl_ros/include/pcl_ros/segmentation/segment_differences.h
++++ b/pcl_ros/include/pcl_ros/segmentation/segment_differences.h
+@@ -60,8 +60,8 @@ namespace pcl_ros
+ class SegmentDifferences : public PCLNodelet
+ {
+ typedef pcl::PointCloud<pcl::PointXYZ> PointCloud;
+- typedef PointCloud::Ptr PointCloudPtr;
+- typedef PointCloud::ConstPtr PointCloudConstPtr;
++ typedef boost::shared_ptr<PointCloud> PointCloudPtr;
++ typedef boost::shared_ptr<const PointCloud> PointCloudConstPtr;
+
+ public:
+ /** \brief Empty constructor. */
+diff --git a/pcl_ros/include/pcl_ros/surface/convex_hull.h b/pcl_ros/include/pcl_ros/surface/convex_hull.h
+index e419c0f8..54a1f367 100644
+--- a/pcl_ros/include/pcl_ros/surface/convex_hull.h
++++ b/pcl_ros/include/pcl_ros/surface/convex_hull.h
+@@ -53,8 +53,8 @@ namespace pcl_ros
+ class ConvexHull2D : public PCLNodelet
+ {
+ typedef pcl::PointCloud<pcl::PointXYZ> PointCloud;
+- typedef PointCloud::Ptr PointCloudPtr;
+- typedef PointCloud::ConstPtr PointCloudConstPtr;
++ typedef boost::shared_ptr<PointCloud> PointCloudPtr;
++ typedef boost::shared_ptr<const PointCloud> PointCloudConstPtr;
+
+ private:
+ /** \brief Nodelet initialization routine. */
+diff --git a/pcl_ros/include/pcl_ros/surface/moving_least_squares.h b/pcl_ros/include/pcl_ros/surface/moving_least_squares.h
+index b909edf8..e90f562a 100644
+--- a/pcl_ros/include/pcl_ros/surface/moving_least_squares.h
++++ b/pcl_ros/include/pcl_ros/surface/moving_least_squares.h
+@@ -62,8 +62,8 @@ namespace pcl_ros
+ typedef pcl::PointNormal NormalOut;
+
+ typedef pcl::PointCloud<PointIn> PointCloudIn;
+- typedef PointCloudIn::Ptr PointCloudInPtr;
+- typedef PointCloudIn::ConstPtr PointCloudInConstPtr;
++ typedef boost::shared_ptr<PointCloudIn> PointCloudInPtr;
++ typedef boost::shared_ptr<const PointCloudIn> PointCloudInConstPtr;
+ typedef pcl::PointCloud<NormalOut> NormalCloudOut;
+
+ typedef pcl::KdTree<PointIn> KdTree;
+diff --git a/pcl_ros/src/pcl_ros/features/boundary.cpp b/pcl_ros/src/pcl_ros/features/boundary.cpp
+index 9334641a..26ee07c1 100644
+--- a/pcl_ros/src/pcl_ros/features/boundary.cpp
++++ b/pcl_ros/src/pcl_ros/features/boundary.cpp
+@@ -43,7 +43,7 @@ pcl_ros::BoundaryEstimation::emptyPublish (const PointCloudInConstPtr &cloud)
+ {
+ PointCloudOut output;
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ void
+@@ -57,17 +57,17 @@ pcl_ros::BoundaryEstimation::computePublish (const PointCloudInConstPtr &cloud,
+ impl_.setRadiusSearch (search_radius_);
+
+ // Set the inputs
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices);
+- impl_.setSearchSurface (surface);
+- impl_.setInputNormals (normals);
++ impl_.setSearchSurface (pcl_ptr(surface));
++ impl_.setInputNormals (pcl_ptr(normals));
+ // Estimate the feature
+ PointCloudOut output;
+ impl_.compute (output);
+
+ // Enforce that the TF frame and the timestamp are copied
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ typedef pcl_ros::BoundaryEstimation BoundaryEstimation;
+diff --git a/pcl_ros/src/pcl_ros/features/fpfh.cpp b/pcl_ros/src/pcl_ros/features/fpfh.cpp
+index 3f698aad..53be549c 100644
+--- a/pcl_ros/src/pcl_ros/features/fpfh.cpp
++++ b/pcl_ros/src/pcl_ros/features/fpfh.cpp
+@@ -43,7 +43,7 @@ pcl_ros::FPFHEstimation::emptyPublish (const PointCloudInConstPtr &cloud)
+ {
+ PointCloudOut output;
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ void
+@@ -57,10 +57,10 @@ pcl_ros::FPFHEstimation::computePublish (const PointCloudInConstPtr &cloud,
+ impl_.setRadiusSearch (search_radius_);
+
+ // Set the inputs
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices);
+- impl_.setSearchSurface (surface);
+- impl_.setInputNormals (normals);
++ impl_.setSearchSurface (pcl_ptr(surface));
++ impl_.setInputNormals (pcl_ptr(normals));
+ // Estimate the feature
+ PointCloudOut output;
+ impl_.compute (output);
+@@ -68,7 +68,7 @@ pcl_ros::FPFHEstimation::computePublish (const PointCloudInConstPtr &cloud,
+ // Publish a Boost shared ptr const data
+ // Enforce that the TF frame and the timestamp are copied
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ typedef pcl_ros::FPFHEstimation FPFHEstimation;
+diff --git a/pcl_ros/src/pcl_ros/features/fpfh_omp.cpp b/pcl_ros/src/pcl_ros/features/fpfh_omp.cpp
+index 58dd911f..e4adcabb 100644
+--- a/pcl_ros/src/pcl_ros/features/fpfh_omp.cpp
++++ b/pcl_ros/src/pcl_ros/features/fpfh_omp.cpp
+@@ -43,7 +43,7 @@ pcl_ros::FPFHEstimationOMP::emptyPublish (const PointCloudInConstPtr &cloud)
+ {
+ PointCloudOut output;
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ void
+@@ -57,10 +57,10 @@ pcl_ros::FPFHEstimationOMP::computePublish (const PointCloudInConstPtr &cloud,
+ impl_.setRadiusSearch (search_radius_);
+
+ // Set the inputs
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices);
+- impl_.setSearchSurface (surface);
+- impl_.setInputNormals (normals);
++ impl_.setSearchSurface (pcl_ptr(surface));
++ impl_.setInputNormals (pcl_ptr(normals));
+ // Estimate the feature
+ PointCloudOut output;
+ impl_.compute (output);
+@@ -68,7 +68,7 @@ pcl_ros::FPFHEstimationOMP::computePublish (const PointCloudInConstPtr &cloud,
+ // Publish a Boost shared ptr const data
+ // Enforce that the TF frame and the timestamp are copied
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ typedef pcl_ros::FPFHEstimationOMP FPFHEstimationOMP;
+diff --git a/pcl_ros/src/pcl_ros/features/moment_invariants.cpp b/pcl_ros/src/pcl_ros/features/moment_invariants.cpp
+index d0ec3441..a6e2249a 100644
+--- a/pcl_ros/src/pcl_ros/features/moment_invariants.cpp
++++ b/pcl_ros/src/pcl_ros/features/moment_invariants.cpp
+@@ -43,7 +43,7 @@ pcl_ros::MomentInvariantsEstimation::emptyPublish (const PointCloudInConstPtr &c
+ {
+ PointCloudOut output;
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ void
+@@ -56,9 +56,9 @@ pcl_ros::MomentInvariantsEstimation::computePublish (const PointCloudInConstPtr
+ impl_.setRadiusSearch (search_radius_);
+
+ // Set the inputs
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices);
+- impl_.setSearchSurface (surface);
++ impl_.setSearchSurface (pcl_ptr(surface));
+ // Estimate the feature
+ PointCloudOut output;
+ impl_.compute (output);
+@@ -66,7 +66,7 @@ pcl_ros::MomentInvariantsEstimation::computePublish (const PointCloudInConstPtr
+ // Publish a Boost shared ptr const data
+ // Enforce that the TF frame and the timestamp are copied
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ typedef pcl_ros::MomentInvariantsEstimation MomentInvariantsEstimation;
+diff --git a/pcl_ros/src/pcl_ros/features/normal_3d.cpp b/pcl_ros/src/pcl_ros/features/normal_3d.cpp
+index 9e700f78..042186a9 100644
+--- a/pcl_ros/src/pcl_ros/features/normal_3d.cpp
++++ b/pcl_ros/src/pcl_ros/features/normal_3d.cpp
+@@ -43,7 +43,7 @@ pcl_ros::NormalEstimation::emptyPublish (const PointCloudInConstPtr &cloud)
+ {
+ PointCloudOut output;
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ void
+@@ -56,9 +56,9 @@ pcl_ros::NormalEstimation::computePublish (const PointCloudInConstPtr &cloud,
+ impl_.setRadiusSearch (search_radius_);
+
+ // Set the inputs
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices);
+- impl_.setSearchSurface (surface);
++ impl_.setSearchSurface (pcl_ptr(surface));
+ // Estimate the feature
+ PointCloudOut output;
+ impl_.compute (output);
+@@ -66,7 +66,7 @@ pcl_ros::NormalEstimation::computePublish (const PointCloudInConstPtr &cloud,
+ // Publish a Boost shared ptr const data
+ // Enforce that the TF frame and the timestamp are copied
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ typedef pcl_ros::NormalEstimation NormalEstimation;
+diff --git a/pcl_ros/src/pcl_ros/features/normal_3d_omp.cpp b/pcl_ros/src/pcl_ros/features/normal_3d_omp.cpp
+index a741c052..3e92d2f2 100644
+--- a/pcl_ros/src/pcl_ros/features/normal_3d_omp.cpp
++++ b/pcl_ros/src/pcl_ros/features/normal_3d_omp.cpp
+@@ -43,7 +43,7 @@ pcl_ros::NormalEstimationOMP::emptyPublish (const PointCloudInConstPtr &cloud)
+ {
+ PointCloudOut output;
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ void
+@@ -56,9 +56,9 @@ pcl_ros::NormalEstimationOMP::computePublish (const PointCloudInConstPtr &cloud,
+ impl_.setRadiusSearch (search_radius_);
+
+ // Set the inputs
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices);
+- impl_.setSearchSurface (surface);
++ impl_.setSearchSurface (pcl_ptr(surface));
+ // Estimate the feature
+ PointCloudOut output;
+ impl_.compute (output);
+@@ -66,7 +66,7 @@ pcl_ros::NormalEstimationOMP::computePublish (const PointCloudInConstPtr &cloud,
+ // Publish a Boost shared ptr const data
+ // Enforce that the TF frame and the timestamp are copied
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ typedef pcl_ros::NormalEstimationOMP NormalEstimationOMP;
+diff --git a/pcl_ros/src/pcl_ros/features/normal_3d_tbb.cpp b/pcl_ros/src/pcl_ros/features/normal_3d_tbb.cpp
+index a4a8581e..680a4a02 100644
+--- a/pcl_ros/src/pcl_ros/features/normal_3d_tbb.cpp
++++ b/pcl_ros/src/pcl_ros/features/normal_3d_tbb.cpp
+@@ -45,7 +45,7 @@ pcl_ros::NormalEstimationTBB::emptyPublish (const PointCloudInConstPtr &cloud)
+ {
+ PointCloud output;
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ void
+@@ -71,7 +71,7 @@ pcl_ros::NormalEstimationTBB::computePublish (const PointCloudInConstPtr &cloud,
+ // Publish a Boost shared ptr const data
+ // Enforce that the TF frame and the timestamp are copied
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ typedef pcl_ros::NormalEstimationTBB NormalEstimationTBB;
+diff --git a/pcl_ros/src/pcl_ros/features/pfh.cpp b/pcl_ros/src/pcl_ros/features/pfh.cpp
+index 38b4d19c..dd8409e2 100644
+--- a/pcl_ros/src/pcl_ros/features/pfh.cpp
++++ b/pcl_ros/src/pcl_ros/features/pfh.cpp
+@@ -43,7 +43,7 @@ pcl_ros::PFHEstimation::emptyPublish (const PointCloudInConstPtr &cloud)
+ {
+ PointCloudOut output;
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ void
+@@ -57,10 +57,10 @@ pcl_ros::PFHEstimation::computePublish (const PointCloudInConstPtr &cloud,
+ impl_.setRadiusSearch (search_radius_);
+
+ // Set the inputs
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices);
+- impl_.setSearchSurface (surface);
+- impl_.setInputNormals (normals);
++ impl_.setSearchSurface (pcl_ptr(surface));
++ impl_.setInputNormals (pcl_ptr(normals));
+ // Estimate the feature
+ PointCloudOut output;
+ impl_.compute (output);
+@@ -68,7 +68,7 @@ pcl_ros::PFHEstimation::computePublish (const PointCloudInConstPtr &cloud,
+ // Publish a Boost shared ptr const data
+ // Enforce that the TF frame and the timestamp are copied
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ typedef pcl_ros::PFHEstimation PFHEstimation;
+diff --git a/pcl_ros/src/pcl_ros/features/principal_curvatures.cpp b/pcl_ros/src/pcl_ros/features/principal_curvatures.cpp
+index 113124dc..501d686e 100644
+--- a/pcl_ros/src/pcl_ros/features/principal_curvatures.cpp
++++ b/pcl_ros/src/pcl_ros/features/principal_curvatures.cpp
+@@ -43,7 +43,7 @@ pcl_ros::PrincipalCurvaturesEstimation::emptyPublish (const PointCloudInConstPtr
+ {
+ PointCloudOut output;
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ void
+@@ -57,10 +57,10 @@ pcl_ros::PrincipalCurvaturesEstimation::computePublish (const PointCloudInConstP
+ impl_.setRadiusSearch (search_radius_);
+
+ // Set the inputs
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices);
+- impl_.setSearchSurface (surface);
+- impl_.setInputNormals (normals);
++ impl_.setSearchSurface (pcl_ptr(surface));
++ impl_.setInputNormals (pcl_ptr(normals));
+ // Estimate the feature
+ PointCloudOut output;
+ impl_.compute (output);
+@@ -68,7 +68,7 @@ pcl_ros::PrincipalCurvaturesEstimation::computePublish (const PointCloudInConstP
+ // Publish a Boost shared ptr const data
+ // Enforce that the TF frame and the timestamp are copied
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ typedef pcl_ros::PrincipalCurvaturesEstimation PrincipalCurvaturesEstimation;
+diff --git a/pcl_ros/src/pcl_ros/features/shot.cpp b/pcl_ros/src/pcl_ros/features/shot.cpp
+index d051ab0f..ed6ba44b 100644
+--- a/pcl_ros/src/pcl_ros/features/shot.cpp
++++ b/pcl_ros/src/pcl_ros/features/shot.cpp
+@@ -42,7 +42,7 @@ pcl_ros::SHOTEstimation::emptyPublish (const PointCloudInConstPtr &cloud)
+ {
+ PointCloudOut output;
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ void
+@@ -56,10 +56,10 @@ pcl_ros::SHOTEstimation::computePublish (const PointCloudInConstPtr &cloud,
+ impl_.setRadiusSearch (search_radius_);
+
+ // Set the inputs
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices);
+- impl_.setSearchSurface (surface);
+- impl_.setInputNormals (normals);
++ impl_.setSearchSurface (pcl_ptr(surface));
++ impl_.setInputNormals (pcl_ptr(normals));
+ // Estimate the feature
+ PointCloudOut output;
+ impl_.compute (output);
+@@ -67,7 +67,7 @@ pcl_ros::SHOTEstimation::computePublish (const PointCloudInConstPtr &cloud,
+ // Publish a Boost shared ptr const data
+ // Enforce that the TF frame and the timestamp are copied
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ typedef pcl_ros::SHOTEstimation SHOTEstimation;
+diff --git a/pcl_ros/src/pcl_ros/features/shot_omp.cpp b/pcl_ros/src/pcl_ros/features/shot_omp.cpp
+index 1ac1b065..4563f123 100644
+--- a/pcl_ros/src/pcl_ros/features/shot_omp.cpp
++++ b/pcl_ros/src/pcl_ros/features/shot_omp.cpp
+@@ -42,7 +42,7 @@ pcl_ros::SHOTEstimationOMP::emptyPublish (const PointCloudInConstPtr &cloud)
+ {
+ PointCloudOut output;
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ void
+@@ -56,10 +56,10 @@ pcl_ros::SHOTEstimationOMP::computePublish (const PointCloudInConstPtr &cloud,
+ impl_.setRadiusSearch (search_radius_);
+
+ // Set the inputs
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices);
+- impl_.setSearchSurface (surface);
+- impl_.setInputNormals (normals);
++ impl_.setSearchSurface (pcl_ptr(surface));
++ impl_.setInputNormals (pcl_ptr(normals));
+ // Estimate the feature
+ PointCloudOut output;
+ impl_.compute (output);
+@@ -67,7 +67,7 @@ pcl_ros::SHOTEstimationOMP::computePublish (const PointCloudInConstPtr &cloud,
+ // Publish a Boost shared ptr const data
+ // Enforce that the TF frame and the timestamp are copied
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ typedef pcl_ros::SHOTEstimationOMP SHOTEstimationOMP;
+diff --git a/pcl_ros/src/pcl_ros/features/vfh.cpp b/pcl_ros/src/pcl_ros/features/vfh.cpp
+index 9d0fe361..ece448fd 100644
+--- a/pcl_ros/src/pcl_ros/features/vfh.cpp
++++ b/pcl_ros/src/pcl_ros/features/vfh.cpp
+@@ -43,7 +43,7 @@ pcl_ros::VFHEstimation::emptyPublish (const PointCloudInConstPtr &cloud)
+ {
+ PointCloudOut output;
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ void
+@@ -57,10 +57,10 @@ pcl_ros::VFHEstimation::computePublish (const PointCloudInConstPtr &cloud,
+ impl_.setRadiusSearch (search_radius_);
+
+ // Set the inputs
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices);
+- impl_.setSearchSurface (surface);
+- impl_.setInputNormals (normals);
++ impl_.setSearchSurface (pcl_ptr(surface));
++ impl_.setInputNormals (pcl_ptr(normals));
+ // Estimate the feature
+ PointCloudOut output;
+ impl_.compute (output);
+@@ -68,7 +68,7 @@ pcl_ros::VFHEstimation::computePublish (const PointCloudInConstPtr &cloud,
+ // Publish a Boost shared ptr const data
+ // Enforce that the TF frame and the timestamp are copied
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ typedef pcl_ros::VFHEstimation VFHEstimation;
+diff --git a/pcl_ros/src/pcl_ros/segmentation/extract_clusters.cpp b/pcl_ros/src/pcl_ros/segmentation/extract_clusters.cpp
+index 17adec46..5599b408 100644
+--- a/pcl_ros/src/pcl_ros/segmentation/extract_clusters.cpp
++++ b/pcl_ros/src/pcl_ros/segmentation/extract_clusters.cpp
+@@ -202,7 +202,7 @@ pcl_ros::EuclideanClusterExtraction::input_indices_callback (
+ if (indices)
+ indices_ptr.reset (new std::vector<int> (indices->indices));
+
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices_ptr);
+
+ std::vector<pcl::PointIndices> clusters;
+@@ -239,7 +239,7 @@ pcl_ros::EuclideanClusterExtraction::input_indices_callback (
+ header.stamp += ros::Duration (i * 0.001);
+ toPCL(header, output.header);
+ // Publish a Boost shared ptr const data
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ NODELET_DEBUG ("[segmentAndPublish] Published cluster %zu (with %zu values and stamp %f) on topic %s",
+ i, clusters[i].indices.size (), header.stamp.toSec (), pnh_->resolveName ("output").c_str ());
+ }
+diff --git a/pcl_ros/src/pcl_ros/segmentation/extract_polygonal_prism_data.cpp b/pcl_ros/src/pcl_ros/segmentation/extract_polygonal_prism_data.cpp
+index 0185bfbe..ff823b19 100644
+--- a/pcl_ros/src/pcl_ros/segmentation/extract_polygonal_prism_data.cpp
++++ b/pcl_ros/src/pcl_ros/segmentation/extract_polygonal_prism_data.cpp
+@@ -189,16 +189,16 @@ pcl_ros::ExtractPolygonalPrismData::input_hull_indices_callback (
+ pub_output_.publish (inliers);
+ return;
+ }
+- impl_.setInputPlanarHull (planar_hull.makeShared ());
++ impl_.setInputPlanarHull (pcl_ptr(planar_hull.makeShared ()));
+ }
+ else
+- impl_.setInputPlanarHull (hull);
++ impl_.setInputPlanarHull (pcl_ptr(hull));
+
+ IndicesPtr indices_ptr;
+ if (indices && !indices->header.frame_id.empty ())
+ indices_ptr.reset (new std::vector<int> (indices->indices));
+
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices_ptr);
+
+ // Final check if the data is empty (remember that indices are set to the size of the data -- if indices* = NULL)
+diff --git a/pcl_ros/src/pcl_ros/segmentation/sac_segmentation.cpp b/pcl_ros/src/pcl_ros/segmentation/sac_segmentation.cpp
+index b73dd3fd..bc7b97e7 100644
+--- a/pcl_ros/src/pcl_ros/segmentation/sac_segmentation.cpp
++++ b/pcl_ros/src/pcl_ros/segmentation/sac_segmentation.cpp
+@@ -324,7 +324,7 @@ pcl_ros::SACSegmentation::input_indices_callback (const PointCloudConstPtr &clou
+ if (indices && !indices->header.frame_id.empty ())
+ indices_ptr.reset (new std::vector<int> (indices->indices));
+
+- impl_.setInputCloud (cloud_tf);
++ impl_.setInputCloud (pcl_ptr(cloud_tf));
+ impl_.setIndices (indices_ptr);
+
+ // Final check if the data is empty (remember that indices are set to the size of the data -- if indices* = NULL)
+@@ -651,8 +651,8 @@ pcl_ros::SACSegmentationFromNormals::input_normals_indices_callback (
+ return;
+ }
+
+- impl_.setInputCloud (cloud);
+- impl_.setInputNormals (cloud_normals);
++ impl_.setInputCloud (pcl_ptr(cloud));
++ impl_.setInputNormals (pcl_ptr(cloud_normals));
+
+ IndicesPtr indices_ptr;
+ if (indices && !indices->header.frame_id.empty ())
+diff --git a/pcl_ros/src/pcl_ros/segmentation/segment_differences.cpp b/pcl_ros/src/pcl_ros/segmentation/segment_differences.cpp
+index 4c934152..e3979549 100644
+--- a/pcl_ros/src/pcl_ros/segmentation/segment_differences.cpp
++++ b/pcl_ros/src/pcl_ros/segmentation/segment_differences.cpp
+@@ -115,7 +115,7 @@ pcl_ros::SegmentDifferences::input_target_callback (const PointCloudConstPtr &cl
+ NODELET_ERROR ("[%s::input_indices_callback] Invalid input!", getName ().c_str ());
+ PointCloud output;
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ return;
+ }
+
+@@ -126,13 +126,13 @@ pcl_ros::SegmentDifferences::input_target_callback (const PointCloudConstPtr &cl
+ cloud->width * cloud->height, pcl::getFieldsList (*cloud).c_str (), fromPCL(cloud->header).stamp.toSec (), cloud->header.frame_id.c_str (), pnh_->resolveName ("input").c_str (),
+ cloud_target->width * cloud_target->height, pcl::getFieldsList (*cloud_target).c_str (), fromPCL(cloud_target->header).stamp.toSec (), cloud_target->header.frame_id.c_str (), pnh_->resolveName ("target").c_str ());
+
+- impl_.setInputCloud (cloud);
+- impl_.setTargetCloud (cloud_target);
++ impl_.setInputCloud (pcl_ptr(cloud));
++ impl_.setTargetCloud (pcl_ptr(cloud_target));
+
+ PointCloud output;
+ impl_.segment (output);
+
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ NODELET_DEBUG ("[%s::segmentAndPublish] Published PointCloud2 with %zu points and stamp %f on topic %s", getName ().c_str (),
+ output.points.size (), fromPCL(output.header).stamp.toSec (), pnh_->resolveName ("output").c_str ());
+ }
+diff --git a/pcl_ros/src/pcl_ros/surface/convex_hull.cpp b/pcl_ros/src/pcl_ros/surface/convex_hull.cpp
+index 4b7eeaf5..75903889 100644
+--- a/pcl_ros/src/pcl_ros/surface/convex_hull.cpp
++++ b/pcl_ros/src/pcl_ros/surface/convex_hull.cpp
+@@ -121,7 +121,7 @@ void
+ NODELET_ERROR ("[%s::input_indices_callback] Invalid input!", getName ().c_str ());
+ // Publish an empty message
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ return;
+ }
+ // If indices are given, check if they are valid
+@@ -130,7 +130,7 @@ void
+ NODELET_ERROR ("[%s::input_indices_callback] Invalid indices!", getName ().c_str ());
+ // Publish an empty message
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ return;
+ }
+
+@@ -150,7 +150,7 @@ void
+ if (indices)
+ indices_ptr.reset (new std::vector<int> (indices->indices));
+
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+ impl_.setIndices (indices_ptr);
+
+ // Estimate the feature
+@@ -194,7 +194,7 @@ void
+ }
+ // Publish a Boost shared ptr const data
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ }
+
+ typedef pcl_ros::ConvexHull2D ConvexHull2D;
+diff --git a/pcl_ros/src/pcl_ros/surface/moving_least_squares.cpp b/pcl_ros/src/pcl_ros/surface/moving_least_squares.cpp
+index b9a01e64..99e5d481 100644
+--- a/pcl_ros/src/pcl_ros/surface/moving_least_squares.cpp
++++ b/pcl_ros/src/pcl_ros/surface/moving_least_squares.cpp
+@@ -141,7 +141,7 @@ pcl_ros::MovingLeastSquares::input_indices_callback (const PointCloudInConstPtr
+ {
+ NODELET_ERROR ("[%s::input_indices_callback] Invalid input!", getName ().c_str ());
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ return;
+ }
+ // If indices are given, check if they are valid
+@@ -149,7 +149,7 @@ pcl_ros::MovingLeastSquares::input_indices_callback (const PointCloudInConstPtr
+ {
+ NODELET_ERROR ("[%s::input_indices_callback] Invalid indices!", getName ().c_str ());
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ return;
+ }
+
+@@ -166,7 +166,7 @@ pcl_ros::MovingLeastSquares::input_indices_callback (const PointCloudInConstPtr
+ ///
+
+ // Reset the indices and surface pointers
+- impl_.setInputCloud (cloud);
++ impl_.setInputCloud (pcl_ptr(cloud));
+
+ IndicesPtr indices_ptr;
+ if (indices)
+@@ -182,9 +182,9 @@ pcl_ros::MovingLeastSquares::input_indices_callback (const PointCloudInConstPtr
+ // Publish a Boost shared ptr const data
+ // Enforce that the TF frame and the timestamp are copied
+ output.header = cloud->header;
+- pub_output_.publish (output.makeShared ());
++ pub_output_.publish (ros_ptr(output.makeShared ()));
+ normals->header = cloud->header;
+- pub_normals_.publish (normals);
++ pub_normals_.publish (ros_ptr(normals));
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////
+diff --git a/pcl_ros/tools/pointcloud_to_pcd.cpp b/pcl_ros/tools/pointcloud_to_pcd.cpp
+index 484113da..fb149b46 100644
+--- a/pcl_ros/tools/pointcloud_to_pcd.cpp
++++ b/pcl_ros/tools/pointcloud_to_pcd.cpp
+@@ -78,7 +78,7 @@ class PointCloudToPCD
+ ////////////////////////////////////////////////////////////////////////////////
+ // Callback
+ void
+- cloud_cb (const pcl::PCLPointCloud2::ConstPtr& cloud)
++ cloud_cb (const boost::shared_ptr<const pcl::PCLPointCloud2>& cloud)
+ {
+ if ((cloud->width * cloud->height) == 0)
+ return;
diff --git a/dev-ros/pcl_ros/pcl_ros-1.5.4.ebuild b/dev-ros/pcl_ros/pcl_ros-1.5.4.ebuild
deleted file mode 100644
index 3cc2a20fbcf2..000000000000
--- a/dev-ros/pcl_ros/pcl_ros-1.5.4.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-ROS_REPO_URI="https://github.com/ros-perception/perception_pcl"
-KEYWORDS="~amd64 ~arm"
-PYTHON_COMPAT=( python2_7 )
-ROS_SUBDIR=${PN}
-
-inherit ros-catkin
-
-DESCRIPTION="PCL (Point Cloud Library) ROS interface stack"
-LICENSE="BSD"
-SLOT="0"
-IUSE=""
-
-RDEPEND="
- dev-ros/roscpp
- dev-ros/rosbag
- dev-ros/rosconsole
- dev-ros/roslib
- dev-ros/dynamic_reconfigure[${PYTHON_USEDEP}]
- >=dev-cpp/eigen-3.2.5:3
- dev-ros/pluginlib
- dev-libs/console_bridge:=
- dev-ros/tf
- dev-ros/tf2
- dev-ros/tf2_ros
- dev-ros/tf2_eigen
- dev-ros/nodelet
- dev-ros/nodelet_topic_tools
- sci-libs/pcl:=[qhull]
- >=dev-ros/pcl_conversions-0.2.1-r1
- dev-libs/boost:=[threads]
- dev-ros/pcl_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-ros/sensor_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-ros/std_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
-"
-DEPEND="${RDEPEND}"
diff --git a/dev-ros/pcl_ros/pcl_ros-1.6.2.ebuild b/dev-ros/pcl_ros/pcl_ros-1.6.2.ebuild
deleted file mode 100644
index 8a6af2083788..000000000000
--- a/dev-ros/pcl_ros/pcl_ros-1.6.2.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-ROS_REPO_URI="https://github.com/ros-perception/perception_pcl"
-KEYWORDS="~amd64 ~arm"
-PYTHON_COMPAT=( python2_7 )
-ROS_SUBDIR=${PN}
-
-inherit ros-catkin
-
-DESCRIPTION="PCL (Point Cloud Library) ROS interface stack"
-LICENSE="BSD"
-SLOT="0"
-IUSE=""
-
-RDEPEND="
- dev-ros/roscpp
- dev-ros/rosbag
- dev-ros/rosconsole
- dev-ros/roslib
- dev-ros/dynamic_reconfigure[${PYTHON_USEDEP}]
- dev-ros/message_filters
- >=dev-cpp/eigen-3.2.5:3
- dev-ros/pluginlib
- dev-libs/console_bridge:=
- dev-ros/tf
- dev-ros/tf2
- dev-ros/tf2_ros
- dev-ros/tf2_eigen
- dev-ros/nodelet
- dev-ros/nodelet_topic_tools
- sci-libs/pcl:=[qhull]
- >=dev-ros/pcl_conversions-0.2.1-r1
- dev-libs/boost:=[threads]
- dev-ros/pcl_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-ros/sensor_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-ros/std_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
-"
-DEPEND="${RDEPEND}"
diff --git a/dev-ros/pcl_ros/pcl_ros-1.7.0.ebuild b/dev-ros/pcl_ros/pcl_ros-1.7.0.ebuild
deleted file mode 100644
index 14ce04f55152..000000000000
--- a/dev-ros/pcl_ros/pcl_ros-1.7.0.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-ROS_REPO_URI="https://github.com/ros-perception/perception_pcl"
-KEYWORDS="~amd64 ~arm"
-PYTHON_COMPAT=( python2_7 )
-ROS_SUBDIR=${PN}
-
-inherit ros-catkin
-
-DESCRIPTION="PCL (Point Cloud Library) ROS interface stack"
-LICENSE="BSD"
-SLOT="0"
-IUSE=""
-
-RDEPEND="
- dev-ros/roscpp
- dev-ros/rosbag
- dev-ros/rosconsole
- dev-ros/roslib
- dev-ros/dynamic_reconfigure[${PYTHON_USEDEP}]
- dev-ros/message_filters
- >=dev-cpp/eigen-3.2.5:3
- dev-ros/pluginlib
- dev-libs/console_bridge:=
- dev-ros/tf
- dev-ros/tf2
- dev-ros/tf2_ros
- dev-ros/tf2_eigen
- dev-ros/nodelet
- dev-ros/nodelet_topic_tools
- sci-libs/pcl:=[qhull]
- >=dev-ros/pcl_conversions-0.2.1-r1
- dev-libs/boost:=[threads]
- dev-ros/pcl_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-ros/sensor_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
- dev-ros/std_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
-"
-DEPEND="${RDEPEND}"
diff --git a/dev-ros/pcl_ros/pcl_ros-1.6.1.ebuild b/dev-ros/pcl_ros/pcl_ros-1.7.1.ebuild
index 8a6af2083788..0ffd456d66af 100644
--- a/dev-ros/pcl_ros/pcl_ros-1.6.1.ebuild
+++ b/dev-ros/pcl_ros/pcl_ros-1.7.1.ebuild
@@ -1,10 +1,9 @@
-# Copyright 1999-2018 Gentoo Foundation
+# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=5
ROS_REPO_URI="https://github.com/ros-perception/perception_pcl"
KEYWORDS="~amd64 ~arm"
-PYTHON_COMPAT=( python2_7 )
ROS_SUBDIR=${PN}
inherit ros-catkin
@@ -38,3 +37,4 @@ RDEPEND="
dev-ros/std_msgs[${CATKIN_MESSAGES_CXX_USEDEP}]
"
DEPEND="${RDEPEND}"
+PATCHES=( "${FILESDIR}/pcl111.patch" )
diff --git a/dev-ros/pcl_ros/pcl_ros-9999.ebuild b/dev-ros/pcl_ros/pcl_ros-9999.ebuild
index 8a6af2083788..2101a7b6837e 100644
--- a/dev-ros/pcl_ros/pcl_ros-9999.ebuild
+++ b/dev-ros/pcl_ros/pcl_ros-9999.ebuild
@@ -1,10 +1,9 @@
-# Copyright 1999-2018 Gentoo Foundation
+# Copyright 1999-2020 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=5
ROS_REPO_URI="https://github.com/ros-perception/perception_pcl"
KEYWORDS="~amd64 ~arm"
-PYTHON_COMPAT=( python2_7 )
ROS_SUBDIR=${PN}
inherit ros-catkin
diff --git a/eclass/ros-catkin.eclass b/eclass/ros-catkin.eclass
index ee5def361146..52fdc1df0dd3 100644
--- a/eclass/ros-catkin.eclass
+++ b/eclass/ros-catkin.eclass
@@ -158,7 +158,7 @@ ros-catkin_src_prepare() {
# Most packages require C++11 these days. Do it here, in src_prepare so that
# ebuilds can override it in src_configure.
- append-cxxflags '-std=c++11'
+ append-cxxflags '-std=c++14'
}
# @FUNCTION: ros-catkin_python_setup
diff --git a/ros-meta/perception_pcl/Manifest b/ros-meta/perception_pcl/Manifest
index 3748d2c0df52..9b90001f8c46 100644
--- a/ros-meta/perception_pcl/Manifest
+++ b/ros-meta/perception_pcl/Manifest
@@ -2,3 +2,4 @@ DIST perception_pcl-1.5.4.tar.gz 73829 BLAKE2B cfc6e964691da42717d134e0b639ef4af
DIST perception_pcl-1.6.1.tar.gz 82552 BLAKE2B a442c9df193e38b6aca9e45ec3a469d6603bc2c909fc8c33ad612b2b6448956863555608cb0a0102593e2e71aa7f54ae88b677c2bfbde7df23b114ff4ca83c8f SHA512 c0b63833dd12f3eee5f5ec1e5d8f8bd9c001f1f1787572717a0845fa9a18862bb49a134638f9f0bde5587ac26ab8fd9e6534fcd5ed6b69842780a6fd3762fb5c
DIST perception_pcl-1.6.2.tar.gz 82896 BLAKE2B dc5d4e25b1841ffde720f7f0231570fcca687d32158da0bb9510f37b7cefbd71dd774bae31a0aa8fdfe7330c98721a7d0df7236bbc9452f9f82c09cd42236695 SHA512 c7c0524a8095fd42b8e12bf2f4453a07d758822ba5a345353df8790e4c22faf250e400fa88a90aea828e80ef4a9992ead04635a5898a45b47245235fec7700ed
DIST perception_pcl-1.7.0.tar.gz 84987 BLAKE2B de309d013b24f3fb3ad2c1a5531cdee9860c4173cd885d7f294a30153ed1cb1613cd26035ec161879cb3804d75670a6d58096251f867cffaf9fd6eb74741ef40 SHA512 01eee6b2fec2b0be0737adaf8a1347922631edee8466c28815e1b183e9365c632f66544c8f85231a5c81262bcab3e24a3d6bff986262b1cb64dc2e3b27adef67
+DIST perception_pcl-1.7.1.tar.gz 80899 BLAKE2B 2898d88efa1b27a27eea06fb949254127cf92eb2c788ae914a40f0000fa8204202c4823c69ab5fa9bd83c2426289a4897a56fab9ec3df61e3ab0a184fc068c41 SHA512 97e9240c660adde84976860ed9c94cf8c127615526641dbcdb729ffbda4cda4dfb9f351cc2d471988732ad61e6508bfa5906c8b4503c31172e7f4e4dfc31260e
diff --git a/ros-meta/perception_pcl/perception_pcl-1.7.1.ebuild b/ros-meta/perception_pcl/perception_pcl-1.7.1.ebuild
new file mode 100644
index 000000000000..10a4ee828f25
--- /dev/null
+++ b/ros-meta/perception_pcl/perception_pcl-1.7.1.ebuild
@@ -0,0 +1,20 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+ROS_REPO_URI="https://github.com/ros-perception/perception_pcl"
+KEYWORDS="~amd64 ~arm"
+ROS_SUBDIR=${PN}
+
+inherit ros-catkin
+
+DESCRIPTION="PCL (Point Cloud Library) ROS interface stack"
+LICENSE="BSD"
+SLOT="0"
+IUSE=""
+
+RDEPEND="
+ dev-ros/pcl_conversions
+ dev-ros/pcl_ros
+"
+DEPEND="${RDEPEND}"
diff --git a/sci-libs/rtabmap/Manifest b/sci-libs/rtabmap/Manifest
index 58164b23bff5..e9ed362ac601 100644
--- a/sci-libs/rtabmap/Manifest
+++ b/sci-libs/rtabmap/Manifest
@@ -1 +1,2 @@
DIST rtabmap-0.19.3.tar.gz 19818629 BLAKE2B f732a02db6ef8434b1457234211a128e3050236590e0f6a1e08e36bbb5899b9d3de9409d7d7329f346d29874d440bd86835c1501fb638e3802e2663907e7b04d SHA512 bda72596911b1c35d757322c7e5acd7e43ec1f4e984bfb0599cfb39597bee79e470d1bc11b492f244f39c35812ae570d023848cdcbd011eeb78e347727045509
+DIST rtabmap-0.19.7.tar.gz 19936131 BLAKE2B ec640bb8dddb2acac9eb70e828edc88e76d90b287dc5be0c99f0943dac3df448b0a06bde79b1288e0b84a1b2a022e5713346f87e68f11a6f25be486e3122b62a SHA512 d02fec1db427092867b32d464e4b2450a729923260088b75dd0a813fc6d3e2539b3694035cddffc33b8fcd5a56a2a5c3dedb7c7a998b72f2094e1916f2a99084
diff --git a/sci-libs/rtabmap/files/boost173.patch b/sci-libs/rtabmap/files/boost173.patch
new file mode 100644
index 000000000000..4549e9bc8426
--- /dev/null
+++ b/sci-libs/rtabmap/files/boost173.patch
@@ -0,0 +1,13 @@
+Index: rtabmap-0.19.7/corelib/src/camera/CameraOpenni.cpp
+===================================================================
+--- rtabmap-0.19.7.orig/corelib/src/camera/CameraOpenni.cpp
++++ rtabmap-0.19.7/corelib/src/camera/CameraOpenni.cpp
+@@ -126,7 +126,7 @@ bool CameraOpenni::init(const std::strin
+ boost::function<void (
+ const boost::shared_ptr<openni_wrapper::Image>&,
+ const boost::shared_ptr<openni_wrapper::DepthImage>&,
+- float)> f = boost::bind (&CameraOpenni::image_cb, this, _1, _2, _3);
++ float)> f = boost::bind (&CameraOpenni::image_cb, this, boost::placeholders::_1, boost::placeholders::_2, boost::placeholders::_3);
+ connection_ = interface_->registerCallback (f);
+
+ interface_->start ();
diff --git a/sci-libs/rtabmap/files/ocv.patch b/sci-libs/rtabmap/files/ocv.patch
new file mode 100644
index 000000000000..0802b7899a26
--- /dev/null
+++ b/sci-libs/rtabmap/files/ocv.patch
@@ -0,0 +1,24 @@
+From 7041d5fd34fb34851ad3287891aa5c383d73b5c2 Mon Sep 17 00:00:00 2001
+From: matlabbe <matlabbe@gmail.com>
+Date: Sun, 3 May 2020 22:59:35 -0400
+Subject: [PATCH] Fixed #541
+
+---
+ corelib/include/rtabmap/core/stereo/stereoRectifyFisheye.h | 3 ---
+ 1 file changed, 3 deletions(-)
+
+Index: rtabmap-0.19.7/corelib/include/rtabmap/core/stereo/stereoRectifyFisheye.h
+===================================================================
+--- rtabmap-0.19.7.orig/corelib/include/rtabmap/core/stereo/stereoRectifyFisheye.h
++++ rtabmap-0.19.7/corelib/include/rtabmap/core/stereo/stereoRectifyFisheye.h
+@@ -37,10 +37,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
+ #include <opencv2/calib3d/calib3d_c.h>
+
+ #if CV_MAJOR_VERSION >= 4
+-
+-#if CV_MINOR_VERSION >= 3
+ #include <opencv2/core/core_c.h>
+-#endif
+
+ // Opencv4 doesn't expose those functions below anymore, we should recopy all of them!
+ int cvRodrigues2( const CvMat* src, CvMat* dst, CvMat* jacobian CV_DEFAULT(0))
diff --git a/sci-libs/rtabmap/files/pcl111.patch b/sci-libs/rtabmap/files/pcl111.patch
new file mode 100644
index 000000000000..3ff5d6be452d
--- /dev/null
+++ b/sci-libs/rtabmap/files/pcl111.patch
@@ -0,0 +1,49 @@
+Index: rtabmap-0.19.7/corelib/src/Graph.cpp
+===================================================================
+--- rtabmap-0.19.7.orig/corelib/src/Graph.cpp
++++ rtabmap-0.19.7/corelib/src/Graph.cpp
+@@ -39,6 +39,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
+ #include <pcl/search/kdtree.h>
+ #include <pcl/common/eigen.h>
+ #include <pcl/common/common.h>
++#include <pcl/common/point_tests.h>
+ #include <set>
+ #include <queue>
+ #include <fstream>
+Index: rtabmap-0.19.7/corelib/src/clams/frame_projector.cpp
+===================================================================
+--- rtabmap-0.19.7.orig/corelib/src/clams/frame_projector.cpp
++++ rtabmap-0.19.7/corelib/src/clams/frame_projector.cpp
+@@ -33,6 +33,7 @@ RTAB-Map integration: Mathieu Labbe
+ #include <rtabmap/core/util3d.h>
+ #include <opencv2/highgui/highgui.hpp>
+ #include <opencv2/imgproc/imgproc.hpp>
++#include <pcl/common/point_tests.h>
+
+ using namespace std;
+ using namespace Eigen;
+Index: rtabmap-0.19.7/corelib/src/util3d_correspondences.cpp
+===================================================================
+--- rtabmap-0.19.7.orig/corelib/src/util3d_correspondences.cpp
++++ rtabmap-0.19.7/corelib/src/util3d_correspondences.cpp
+@@ -32,6 +32,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
+ #include <rtabmap/core/EpipolarGeometry.h>
+ #include <opencv2/calib3d/calib3d.hpp>
+ #include <pcl/search/kdtree.h>
++#include <pcl/common/point_tests.h>
+
+ namespace rtabmap
+ {
+Index: rtabmap-0.19.7/corelib/src/util3d_features.cpp
+===================================================================
+--- rtabmap-0.19.7.orig/corelib/src/util3d_features.cpp
++++ rtabmap-0.19.7/corelib/src/util3d_features.cpp
+@@ -42,6 +42,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBI
+
+ #include <opencv2/video/tracking.hpp>
+
++#include <pcl/common/point_tests.h>
++
+ namespace rtabmap
+ {
+
diff --git a/sci-libs/rtabmap/rtabmap-0.19.7.ebuild b/sci-libs/rtabmap/rtabmap-0.19.7.ebuild
new file mode 100644
index 000000000000..4640d13e9cf0
--- /dev/null
+++ b/sci-libs/rtabmap/rtabmap-0.19.7.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+SCM=""
+if [ "${PV#9999}" != "${PV}" ] ; then
+ SCM="git-r3"
+ EGIT_REPO_URI="https://github.com/introlab/rtabmap"
+fi
+
+inherit ${SCM} cmake-utils multilib
+
+if [ "${PV#9999}" != "${PV}" ] ; then
+ KEYWORDS=""
+ SRC_URI=""
+else
+ KEYWORDS="~amd64"
+ SRC_URI="https://github.com/introlab/rtabmap/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ S="${WORKDIR}/${P}"
+fi
+
+DESCRIPTION="Real-Time Appearance-Based Mapping (RGB-D Graph SLAM)"
+HOMEPAGE="http://introlab.github.io/rtabmap/"
+LICENSE="BSD"
+SLOT="0"
+IUSE="examples ieee1394 openni2 qt5"
+
+RDEPEND="
+ media-libs/opencv:=[qt5(-)?]
+ sci-libs/pcl:=[openni,vtk,qt5(-)?]
+ sci-libs/vtk:=[qt5(-)?]
+ sys-libs/zlib
+ sci-libs/octomap:=
+ dev-libs/boost:=
+ ieee1394? ( media-libs/libdc1394 )
+ openni2? ( dev-libs/OpenNI2 )
+ qt5? (
+ dev-qt/qtwidgets:5
+ dev-qt/qtcore:5
+ dev-qt/qtgui:5
+ dev-qt/qtsvg:5
+ )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+PATCHES=(
+ "${FILESDIR}/pcl111.patch"
+ "${FILESDIR}/boost173.patch"
+ "${FILESDIR}/ocv.patch"
+)
+
+src_configure() {
+ local mycmakeargs=(
+ "-DWITH_QT=$(usex qt5 ON OFF)"
+ "-DWITH_DC1394=$(usex ieee1394 ON OFF)"
+ "-DWITH_OPENNI2=$(usex openni2 ON OFF)"
+ "-DBUILD_EXAMPLES=$(usex examples ON OFF)"
+ )
+ cmake-utils_src_configure
+}
+
+src_install() {
+ cmake-utils_src_install
+ # Needed since we force ros crawling to be done only in
+ # /usr/share/ros_packages/
+ insinto /usr/share/ros_packages/${PN}
+ doins "${ED}/usr/share/${PN}/package.xml"
+}