#pragma once #include #include #include #include #include #include "common/color/color.h" #include "common/pcl/pcl_types.h" namespace common { using PCLVisualizer = pcl::visualization::PCLVisualizer; #define PCLColorHandlerCustom pcl::visualization::PointCloudColorHandlerCustom #define PCLColorHandlerGenericField \ pcl::visualization::PointCloudColorHandlerGenericField template void AddPointCloud(const typename pcl::PointCloud::ConstPtr &cloud, const Color &color, const std::string &id, PCLVisualizer *const viewer, int point_size = 3) { PCLColorHandlerCustom color_handler(cloud, color.r, color.g, color.b); viewer->addPointCloud(cloud, color_handler, id); viewer->setPointCloudRenderingProperties( pcl::visualization::PCL_VISUALIZER_POINT_SIZE, point_size, id); } template void AddPointCloud(const typename pcl::PointCloud::ConstPtr &cloud, const std::string &field, const std::string &id, PCLVisualizer *const viewer, int point_size = 3) { PCLColorHandlerGenericField color_handler(cloud, field); viewer->addPointCloud(cloud, color_handler, id); viewer->setPointCloudRenderingProperties( pcl::visualization::PCL_VISUALIZER_POINT_SIZE, point_size, id); } template void AddLine(const PT &pt1, const PT &pt2, const Color &color, const std::string &id, PCLVisualizer *const viewer) { viewer->addLine(pt1, pt2, color.r, color.g, color.b, id); } template void AddSphere(const PT ¢er, double radius, const Color &color, const std::string &id, PCLVisualizer *const viewer) { viewer->addSphere(center, radius, color.r, color.g, color.b, id); } } // namespace common