Robotics StackExchange | Archived questions

[build error]Converting pcl::PCLPointCloud2 to sensor_msg::PointCloud2

While extracting point cloud from stl model data to publish it using ROS topic, I need to convert pcl::PCLPointCloud2 to sensor_msg::PointCloud2. So I did like below::

#include <pcl/io/vtk_lib_io.h>
#include <pcl/PolygonMesh.h>
#include <pcl/PCLPointCloud2.h>
#include <pcl_conversions/pcl_conversions.h>
#include "sensor_msgs/PointCloud2.h"

int main(int argc, char* argv[])
{
    const std::string meshFileName = "test.stl";

    pcl::PolygonMesh testMesh;
    pcl::io::loadPolygonFile(meshFileName, testMesh);

    pcl::PCLPointCloud2 pc2;
    sensor_msgs::PointCloud2 p_msg;

    pcl_conversions::fromPCL(pc2, p_msg);
}

But I got error below. How can I fix it? Or is there another way to convert PCLPointCloud2 to ROSMsg?

Scanning dependencies of target stl2pcd
[ 50%] Built target pcdread
[100%] Building CXX object trypkg/CMakeFiles/stl2pcd.dir/src/stl2pcd.cpp.o
Linking CXX executable /home/wkentaro/semi/devel/lib/trypkg/stl2pcd
CMakeFiles/stl2pcd.dir/src/stl2pcd.cpp.o: In function `pclconversions::fromPCL(unsigned long const&, ros::Time&)':
stl2pcd.cpp:(.text.ZN15pclconversions7fromPCLERKmRN3ros4TimeE[ZN15pclconversions7fromPCLERKmRN3ros4TimeE]+0x7e): undefined reference to `ros::TimeBase::fromNSec(unsigned long)'
collect2: error: ld returned 1 exit status
make[2]: *** [/home/wkentaro/semi/devel/lib/trypkg/stl2pcd] Error 1
make[1]: *** [trypkg/CMakeFiles/stl2pcd.dir/all] Error 2
make: *** [all] Error 2
Invoking "make -j4 -l4" failed

Asked by wkentaro on 2015-03-04 13:51:35 UTC

Comments

Answers

I use pcl_ros instead of pcl_conversions. It defines a very handy fromROSMsg function:

#include <pcl_ros/transforms.h>

sensor_msgs::PointCloud2 rosCloud;
pcl::PointCloud<pcl::PointXYZRGB>::Ptr pclCloud (new pcl::PointCloud<pcl::PointXYZRGB>); // creates a shared pointer
pcl::fromROSMsg(rosCloud, *pclCloud);

It also converts back:

pcl::toROSMsg(*pclCloud, rosCloud);

Asked by Adam Allevato on 2015-05-01 10:51:29 UTC

Comments

Thanks a lot!

Asked by wkentaro on 2015-05-02 03:17:20 UTC

No problem. Please mark the answer as correct if you think it's good.

Asked by Adam Allevato on 2015-05-02 09:34:35 UTC