Trying to compile perception_pcl 1.2.2 for fuerte
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
Just to see if it makes a difference, I tried copying in the missing pcl/ header files, and that doesn't build either.
What PCL 1.5 source URL are you building from?
On Ubuntu, the ros-fuerte-pcl package provides those five headers (and many more).
http://dev.pointclouds.org/attachments/download/771/PCL-1.5.1-Source.tar.bz2
When I compare the Fedora PCL package to the ros-fuerte-pcl ubuntu dpkg, the dpkg is missing several files, specifically: ./std_msgs/Header.h, all of the openni files, and the sensor_msgs/. In addition, there seems to be extensive patching to pcl/ModelCoefficients.h
Unfortunately, I haven't managed to find out where the source for that ros-fuerte-pcl dpkg came from yet. :/
That is the main question. Unfortunately, I do not know the answer.
The other missing headers make sense, because other ROS packages provide them (common_msgs, openni_camera, etc.).