ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 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;
}