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);
}