ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
I am not sure if it is the optimized way to do that, but my proved solution is:
static sensor_msgs::PointCloud2 PCacumulada;
static pcl::PCLPointCloud2 pclPCacumulada;
void chatterCallback( sensor_msgs::PointCloud2 PCmsg)
{
pcl::PCLPointCloud2 pclmsg;
pcl_conversions::toPCL(PCmsg,pclmsg);
pcl::concatenatePointCloud (pclPCacumulada, pclmsg, pclPCacumulada);
pcl_conversions::fromPCL(pclPCacumulada, PCacumulada);
}
int main (int argc, char ** argv)
{
ros::init(argc,argv,"nodeProcesador");
ros::NodeHandle ns;
ros::NodeHandle np;
ros::Subscriber subscriptor = ns.subscribe("velodyne_points",10, chatterCallback);
ros::Publisher publicador= ns.advertise<sensor_msgs::PointCloud2>("velodyne_points2",10);
ros::Rate loop_rate(10); /
ros::spinOnce();
while(ros::ok())
{
publicador.publish(PCacumulada);
ros::spinOnce();
loop_rate.sleep();
}
ROS_INFO("Fin suscriptor");
return 0;
}