Using Point CLoud LIbrary to store Point Clouds from Kinect
===

Using Point Cloud Library on Ubuntu, I am trying to take multiple point clouds from the Kinect and store them in memory for later use in the program. My code shown at the bottom of this post is designed to store the first Point Cloud from the Kinect and output its width and height. The program gives me a runtime error:

    /usr/include/boost/smart_ptr/shared_ptr.hpp:418: T* boost::shared_ptr<T>::operator->() const [with T = pcl::PointCloud<pcl::PointXYZ>]: Assertion `px != 0' failed.


**All help is greatly appreciated and I always accept an answer!**

The code:

     #include <pcl/io/openni_grabber.h>
     #include <pcl/visualization/cloud_viewer.h>

    class SimpleOpenNIViewer
    {
     public:
     SimpleOpenNIViewer () : viewer ("PCL OpenNI Viewer") {}

	pcl::PointCloud<pcl::PointXYZ>::Ptr prevCloud;


     void cloud_cb_ (const pcl::PointCloud<pcl::PointXYZ>::ConstPtr &cloud)
     {
		
		 
        if (!viewer.wasStopped())
           viewer.showCloud (cloud);
         
         
        //ICP start
		if(prevCloud == NULL) {
			pcl::PointCloud<pcl::PointXYZ>::Ptr prevCloud( new pcl::PointCloud<pcl::PointXYZ>());
			
			pcl::copyPointCloud<pcl::PointXYZ, pcl::PointXYZ>(*cloud, *prevCloud);
		}
		
		cout << prevCloud->width << " by " << prevCloud->height << endl; 
		//pcl::IterativeClosestPoint<pcl::PointXYZ, pcl::PointXYZ> icp;
		//icp.setInputCloud(cloud_in);
		//icp.setInputTarget(cloud_out);
		//pcl::PointCloud<pcl::PointXYZ> Final;
		//icp.align(Final);
		//ICP Finish 
         
         
         
     }

     void run ()
     {
       pcl::Grabber* interface = new pcl::OpenNIGrabber();

       boost::function<void (const pcl::PointCloud<pcl::PointXYZ>::ConstPtr&)> f =
         boost::bind (&SimpleOpenNIViewer::cloud_cb_, this, _1);
         

       interface->registerCallback (f);

       interface->start ();
       

       while (!viewer.wasStopped())
       {
         boost::this_thread::sleep (boost::posix_time::seconds (1));
       }

       interface->stop ();
     }

     pcl::visualization::CloudViewer viewer;
    };

     int main ()
    {
     SimpleOpenNIViewer v;
     v.run ();
     return 0;
    }


