[ros-users] Problem with Reading Point Cloud data from BAG f…

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
+ bag_read.cpp (text/x-c++src)
Delete this message
Reply to this message
Author: #TAN ZHI PING#
Date:  
To: ros-users@code.ros.org
Subject: [ros-users] Problem with Reading Point Cloud data from BAG files
Hi all,

I try to run bag_read.cpp from this website:

http://www.ros.org/wiki/pcl/Tutorials/Reading%20Point%20Cloud%20data%20from%20BAG%20files

But when i compile. these are the error messages produced:
---------------------------------------------------------------------------------------------------------------------Debug----------------------------------------------------------------------------------------------------
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp: In function ‘int main(int, char**)’:
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:10: error: ‘sensor_msgs’ has not been declared
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:10: error: expected ‘;’ before ‘cloud_blob’
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:11: error: ‘PointCloud’ is not a member of ‘pcl’
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:11: error: expected primary-expression before ‘>’ token
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:11: error: ‘cloud’ was not declared in this scope
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:13: error: ‘pcl_ros’ has not been declared
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:13: error: expected ‘;’ before ‘reader’
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:14: error: ‘reader’ was not declared in this scope
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:16: error: ‘ROS_ERROR’ was not declared in this scope
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:23: error: ‘cloud_blob_prev’ was not declared in this scope
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:23: error: ‘cloud_blob’ was not declared in this scope
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:24: error: ‘reader’ was not declared in this scope
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:27: error: ‘point_cloud’ has not been declared
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:28: error: ‘ROS_INFO’ was not declared in this scope
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:32: error: ‘cloud_blob’ was not declared in this scope
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:32: error: ‘cloud_blob_prev’ was not declared in this scope
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:34: error: ‘ROS_INFO’ was not declared in this scope
---------------------------------------------------------------------------------------------------------------------End Debug----------------------------------------------------------------------------------------------------
i tried to solve these problems by adding more headers to the file namely

#include "pcl_ros/io/bag_io.h"
#include "pcl/point_types.h"
#include "pcl/point_cloud.h"                                            //<--Just Added
#include "sensor_msgs/point_cloud_conversion.h"        //<--Just Added


---------------------------------------------------------------------------------------------------------------------Debug----------------------------------------------------------------------------------------------------
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp: In function ‘int main(int, char**)’:
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:13: error: ‘pcl_ros’ has not been declared
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:13: error: expected ‘;’ before ‘reader’
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:14: error: ‘reader’ was not declared in this scope
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:24: error: ‘reader’ was not declared in this scope
/home/snoopy/robot/ros-pkg/stacks/point_cloud_perception/trunk/pcl/src/examples/bag_read.cpp:27: error: ‘point_cloud’ has not been declared
---------------------------------------------------------------------------------------------------------------------End Debug----------------------------------------------------------------------------------------------------

How do i solve the remaining problems ?

With thanks,
Zhiping




#include "pcl_ros/io/bag_io.h"
#include "pcl/point_types.h"
#include "pcl/point_cloud.h"                           //<--Just Added
#include "sensor_msgs/point_cloud_conversion.h"        //<--Just Added



/* ---[ */
int main (int argc, char** argv)
{
sensor_msgs::PointCloud2ConstPtr cloud_blob, cloud_blob_prev;
pcl::PointCloud<pcl::PointXYZ> cloud;

  pcl_ros::BAGReader reader;
  if (!reader.open ("./test_io_bag.bag", "/narrow_stereo_textured/points2"))
  {
    ROS_ERROR ("Couldn't read file test_io_bag.bag. Try doing a 'make tests' in pcl, or download the file manually from http://pr.willowgarage.com/data/pcl/test_io_bag.bag");
    return (-1);
  }


  int cnt = 0;
  do
  {
    cloud_blob_prev = cloud_blob;
    cloud_blob = reader.getNextCloud ();
    if (cloud_blob_prev != cloud_blob)
    {
      point_cloud::fromMsg (*cloud_blob, cloud);
      ROS_INFO ("PointCloud with %d data points and frame %s (%f) received.", (int)cloud.points.size (), cloud.header.frame_id.c_str (), cloud.header.stamp.toSec ()); 
      cnt++;
    }
  }
  while (cloud_blob != cloud_blob_prev);


ROS_INFO ("Total number of PointCloud messages processed: %d", cnt);

return (0);
}