mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 01:20:25 +08:00
Fixed pcl:OrganizedFastMesh link error for type pcl::PointXYZRGBNormal with PCL 1.8 (issue #75)
This commit is contained in:
@@ -45,6 +45,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include <rtabmap/utilite/UMath.h>
|
#include <rtabmap/utilite/UMath.h>
|
||||||
#include <rtabmap/utilite/UConversion.h>
|
#include <rtabmap/utilite/UConversion.h>
|
||||||
|
|
||||||
|
#if PCL_VERSION_COMPARE(>=, 1, 8, 0)
|
||||||
|
#include <pcl/impl/instantiate.hpp>
|
||||||
|
#include <pcl/point_types.h>
|
||||||
|
#include <pcl/segmentation/impl/extract_clusters.hpp>
|
||||||
|
#include <pcl/segmentation/extract_labeled_clusters.h>
|
||||||
|
#include <pcl/segmentation/impl/extract_labeled_clusters.hpp>
|
||||||
|
|
||||||
|
PCL_INSTANTIATE(EuclideanClusterExtraction, (pcl::PointXYZRGBNormal))
|
||||||
|
PCL_INSTANTIATE(extractEuclideanClusters, (pcl::PointXYZRGBNormal))
|
||||||
|
PCL_INSTANTIATE(extractEuclideanClusters_indices, (pcl::PointXYZRGBNormal))
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace rtabmap
|
namespace rtabmap
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -88,7 +100,7 @@ pcl::PointCloud<pcl::PointXYZ>::Ptr downsample(
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int finalSize = cloud->size()/step;
|
int finalSize = int(cloud->size())/step;
|
||||||
output->resize(finalSize);
|
output->resize(finalSize);
|
||||||
int oi = 0;
|
int oi = 0;
|
||||||
for(unsigned int i=0; i<cloud->size()-step+1; i+=step)
|
for(unsigned int i=0; i<cloud->size()-step+1; i+=step)
|
||||||
@@ -111,7 +123,7 @@ pcl::PointCloud<pcl::PointXYZRGB>::Ptr downsample(
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int finalSize = cloud->size()/step;
|
int finalSize = int(cloud->size())/step;
|
||||||
output->resize(finalSize);
|
output->resize(finalSize);
|
||||||
int oi = 0;
|
int oi = 0;
|
||||||
for(int i=0; i<(int)cloud->size()-step+1; i+=step)
|
for(int i=0; i<(int)cloud->size()-step+1; i+=step)
|
||||||
|
|||||||
@@ -46,6 +46,16 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include "pcl18/surface/organized_fast_mesh.h"
|
#include "pcl18/surface/organized_fast_mesh.h"
|
||||||
#else
|
#else
|
||||||
#include <pcl/surface/organized_fast_mesh.h>
|
#include <pcl/surface/organized_fast_mesh.h>
|
||||||
|
#include <pcl/surface/impl/marching_cubes.hpp>
|
||||||
|
#include <pcl/surface/impl/organized_fast_mesh.hpp>
|
||||||
|
#include <pcl/impl/instantiate.hpp>
|
||||||
|
#include <pcl/point_types.h>
|
||||||
|
|
||||||
|
// Instantiations of specific point types
|
||||||
|
PCL_INSTANTIATE(OrganizedFastMesh, (pcl::PointXYZRGBNormal))
|
||||||
|
|
||||||
|
#include <pcl/features/impl/normal_3d_omp.hpp>
|
||||||
|
PCL_INSTANTIATE_PRODUCT(NormalEstimationOMP, ((pcl::PointXYZRGB))((pcl::Normal)))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace rtabmap
|
namespace rtabmap
|
||||||
@@ -177,10 +187,10 @@ void appendMesh(
|
|||||||
UDEBUG("cloudA=%d polygonsA=%d cloudB=%d polygonsB=%d", (int)cloudA.size(), (int)polygonsA.size(), (int)cloudB.size(), (int)polygonsB.size());
|
UDEBUG("cloudA=%d polygonsA=%d cloudB=%d polygonsB=%d", (int)cloudA.size(), (int)polygonsA.size(), (int)cloudB.size(), (int)polygonsB.size());
|
||||||
UASSERT(!cloudA.isOrganized() && !cloudB.isOrganized());
|
UASSERT(!cloudA.isOrganized() && !cloudB.isOrganized());
|
||||||
|
|
||||||
int sizeA = cloudA.size();
|
int sizeA = (int)cloudA.size();
|
||||||
cloudA += cloudB;
|
cloudA += cloudB;
|
||||||
|
|
||||||
int sizePolygonsA = polygonsA.size();
|
int sizePolygonsA = (int)polygonsA.size();
|
||||||
polygonsA.resize(sizePolygonsA+polygonsB.size());
|
polygonsA.resize(sizePolygonsA+polygonsB.size());
|
||||||
|
|
||||||
for(unsigned int i=0; i<polygonsB.size(); ++i)
|
for(unsigned int i=0; i<polygonsB.size(); ++i)
|
||||||
@@ -203,10 +213,10 @@ void appendMesh(
|
|||||||
UDEBUG("cloudA=%d polygonsA=%d cloudB=%d polygonsB=%d", (int)cloudA.size(), (int)polygonsA.size(), (int)cloudB.size(), (int)polygonsB.size());
|
UDEBUG("cloudA=%d polygonsA=%d cloudB=%d polygonsB=%d", (int)cloudA.size(), (int)polygonsA.size(), (int)cloudB.size(), (int)polygonsB.size());
|
||||||
UASSERT(!cloudA.isOrganized() && !cloudB.isOrganized());
|
UASSERT(!cloudA.isOrganized() && !cloudB.isOrganized());
|
||||||
|
|
||||||
int sizeA = cloudA.size();
|
int sizeA = (int)cloudA.size();
|
||||||
cloudA += cloudB;
|
cloudA += cloudB;
|
||||||
|
|
||||||
int sizePolygonsA = polygonsA.size();
|
int sizePolygonsA = (int)polygonsA.size();
|
||||||
polygonsA.resize(sizePolygonsA+polygonsB.size());
|
polygonsA.resize(sizePolygonsA+polygonsB.size());
|
||||||
|
|
||||||
for(unsigned int i=0; i<polygonsB.size(); ++i)
|
for(unsigned int i=0; i<polygonsB.size(); ++i)
|
||||||
|
|||||||
Reference in New Issue
Block a user