sensor_msgs::LaserScan转PointCloud
void LaserScanToPointCloud(sensor_msgs::LaserScan::ConstPtr _laser_scan, pcl::PointCloud<pcl::PointXYZI>& _pointcloud)
{
_pointcloud.clear();
pcl::PointXYZI newPoint;
newPoint.z = 0.0;
double newPointAngle;
int beamNum = _laser_scan->ranges.size();
for (int i = 0; i < beamNum; i++)
{
newPointAngle = _laser_scan->angle_min + _laser_scan->angle_increment * i;
newPoint.x = _laser_scan->ranges[i] * cos(newPointAngle);
newPoint.y = _laser_scan->ranges[i] * sin(newPointAngle);
newPoint.intensity = _laser_scan->intensities[i];
_pointcloud.push_back(newPoint);
}
}
PointCloud转sensor_msgs::LaserScan
sensor_msgs::LaserScan PointCloudToLaserscan(pcl::PointCloud<pcl::PointXYZI>& _pointcloud)
{
float angle_min, angle_max, ra