Do I need to use pcl::PointXYZRGB instead of pcl::PoinXYZRGBA to display RGB8 pointcloud2 in rviz? [closed]
Hi, I'm using hydro, pcl_conversions and pcl-1.7.
I tried to subscribe sensor_msgs::PointCloud2 and convert it to pcl::PointCloud<pcl::pointxyzrgba> through converting pcl::PCLPointCloud2. After execute some process, I want to convert some pointcloud<pcl::pointxyzrgba> and publish it to view in rviz.
But when I test below code, I couldn't set ColorTransfomer as RGB8(not displayed) in rviz.
cloud_cb is callback for sensor_msgs::PointCloud2 which is from /camera/depth_registered/points
cloud_cb (const sensor_msgs::PointCloud2 &pc)
{
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>());
pcl::PCLPointCloud2 pcl_pc;
pcl_conversions::toPCL(pc, pcl_pc);
pcl::fromPCLPointCloud2 (pcl_pc, *cloud);
/*
Actually, I want to execute some process here.
But, now, this is for test.
*/
sensor_msgs::PointCloud2 pc2;
pcl::PCLPointCloud2::Ptr pcl_pc_2(new pcl::PCLPointCloud2());
pcl::toPCLPointCloud2 (*cloud, *pcl_pc_2);
pcl_conversions::fromPCL( *pcl_pc_2, pc2 );
pub_.publish(pc2);//this is for publishing sensor_msg::PointCloud2
}
However, when I use PointXYZRGB, it works.
Is it something wrong with my code or I have to use XYZRGB(rgb(float)) for visualizing in rviz? Is there better way?