I am trying to build perception_pcl 1.2.2 (from source) for fuerte on Fedora 16. Fedora has a packaged version of PCL (1.5.1), but when I try to build perception_pcl, I get all sorts of conflicts leading to a failure to build, most of them seeming to arise from the fact that std_msgs::Header is defined in both codebases but is not compatible.
EDIT: It looks like only a very specific modified version of PCL will work, the one that is packaged up in the ubuntu ros-fuerte-pcl deb file (http://packages.ros.org/ros/ubuntu/pool/main/r/ros-fuerte-pcl/), but since I cannot use that deb, I need a pointer to the source files used to make that deb file. I think once I have that, I can move forward.
== OLD NOTES ==
I rebuilt PCL with "USE_ROS=ON", and that resulted in a successful PCL build, but the following header files were not installed:
/usr/include/pcl-1.5/pcl/ModelCoefficients.h /usr/include/pcl-1.5/pcl/PointIndices.h /usr/include/pcl-1.5/pcl/PolygonMesh.h /usr/include/pcl-1.5/pcl/TextureMesh.h /usr/include/pcl-1.5/pcl/Vertices.h /usr/include/pcl-1.5/sensor_msgs/Image.h /usr/include/pcl-1.5/sensor_msgs/PointCloud2.h /usr/include/pcl-1.5/sensor_msgs/PointField.h /usr/include/pcl-1.5/std_msgs/Header.h
The sensor_msgs and std_msgs headers make sense to be absent, those are provided by common_msgs and std_msgs in ROS, but the five header files under pcl/ are missing, and the rest of PCL's headers #include them, which causes perception_pcl to fail to compile.
Can someone tell me how to successfully compile perception_pcl from source?
EDIT: I realized it may be useful to actually show bits from the log showing the first failures at compiletime:
PCL 1.5.1 (USE_ROS=NO), trying to build perception_pcl 1.2.2:
/usr/include/ros/message_traits.h:42:3: error: conflicting declaration ‘typedef struct std_msgs::Header_<std::allocator<void> > std_msgs::Header’ In file included from /usr/include/pcl-1.5/sensor_msgs/PointCloud2.h:8:0, from /home/spot/ros/perception_pcl/pcl_ros/src/pcl_ros/transforms.cpp:37: /usr/include/pcl-1.5/std_msgs/Header.h:11:10: error: ‘struct std_msgs::Header’ has a previous declaration as ‘struct std_msgs::Header’ In file included from /home/spot/ros/geometry/tf/include/tf/transform_datatypes.h:38:0, from /home/spot/ros/perception_pcl/pcl_ros/include/pcl_ros/transforms.h:42, from /home/spot/ros/perception_pcl/pcl_ros/src/pcl_ros/transforms.cpp:40: /usr/include/geometry_msgs/QuaternionStamped.h: In instantiation of ‘struct geometry_msgs::QuaternionStamped_<std::allocator<void> >’: /home/spot/ros/geometry/tf/include/tf/transform_datatypes.h:202:23: required from here /usr/include/geometry_msgs/QuaternionStamped.h:73:16: error: ‘geometry_msgs::QuaternionStamped_<ContainerAllocator>::header’ has incomplete type
Asked: 2012-05-23 14:54:56 -0500
Seen: 741 times
Last updated: May 30 '12