使用PCL和2D激光扫描仪

时间:2014-03-18 23:29:33

标签: point-cloud-library ros point-clouds

我现在正在研究从激光扫描创建点云的一段时间,但我遇到了一些问题:

首先,PCL并不支持hokuyo激光器,因此我计划使用hokuyoaist库。

我遇到的主要问题是如何将2D激光数据转换为点云(pointcloud2),以便我可以使用PCL库。我知道ROS中的一些软件包可以做到这一点,但我真的不想接近ROS这样做。

提前致谢,

马尔

1 个答案:

答案 0 :(得分:2)

你可以使用类似的(未经测试,但应该让你去):

#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <vector>

// Get Hokuyo data
int numberOfDataPoints = 0; // you need to fill this
std::vector<double> hokuyoDataX,hokuyoDataY;
for(int i=0;i<numberOfDataPoints;i++)
{
    hokuyoDataX.push_back(...); // you need to fill this for the x of point i
    hokuyoDataY.push_back(...); // you need to fill this for the y of point i
}

// Define new cloud object
pcl::PointCloud<pcl::PointXY>::Ptr cloud (new pcl::PointCloud<pcl::PointXY>);
cloud->is_dense = true; // no NaN and INF expected. 
cloud->width = hokuyoDataX.size();
cloud->height = 1;
cloud->points.resize(hokuyoDataX.size());
// Now fill the pointcloud
for(int i=0; i<hokuyoDataX.size(); i++)
{
    cloud->points[i].x = hokuyoDataX[i];
    cloud->points[i].y = hokuyoDataY[i];
}