700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 点云栅格化c++代码实现 出现无法打开源文件ros.h的问题

点云栅格化c++代码实现 出现无法打开源文件ros.h的问题

时间:2022-09-30 14:30:14

相关推荐

点云栅格化c++代码实现 出现无法打开源文件ros.h的问题

在网上搜到一段关于点云栅格化的代码,运行后无法打开ros/ros.h;

#include <iostream>#include <ros/ros.h>// PCL specific includes#include <sensor_msgs/PointCloud2.h>#include <pcl_conversions/pcl_conversions.h>#include <pcl/point_cloud.h>#include <pcl/point_types.h>#include <pcl/console/print.h>#include <pcl/io/pcd_io.h>#include <pcl/filters/extract_indices.h>#include <pcl/visualization/cloud_viewer.h>#include <cmath>#include <pcl/filters/statistical_outlier_removal.h>#define _USE_MATH_DEFINESclass Grid{public:bool road;float h_mean;float h_square;pcl::PointCloud<pcl::PointXYZ>::Ptr grid_cloud{ new pcl::PointCloud<pcl::PointXYZ> };};inline float abs(float &a){if (a<0){a = -a;}return a;}intmain(int argc, char** argv){ros::init(argc, argv, "resterization");ros::NodeHandle nh;pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_in(new pcl::PointCloud<pcl::PointXYZ>);if (pcl::io::loadPCDFile<pcl::PointXYZ>("F:\\pcl-code\\pointcloudimage\\testimage\\bunny_xyz.pcd", *cloud_in) == -1){PCL_ERROR("Couldn't read file bunny_xyz.pcd ^.^\n");return (-1);}int R = 150;//半径上分割数int TH = 72;//角度上的分割数float grid_size_r = 0.1;//半径上的分辨率float grid_size_th = 2 * M_PI / TH;//角度上的分辨率int j = 0;int i = 0;double threshold;ros::param::get("R", R);ros::param::param<int>("R", R, 150);ros::param::get("TH", TH);ros::param::param<int>("TH", TH, 72);grid_size_r = 50.0 / R;grid_size_th = 2 * M_PI / TH;ros::param::get("threshold", threshold);ros::param::param<double>("threshold", threshold, 0.00010);Grid grid[R][TH];pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_final(new pcl::PointCloud<pcl::PointXYZ>);float r = 0;float th;for (int m = 0; m<cloud_in->size(); m++)//这些点一个一个看{r = pow(cloud_in->points[m].x, 2) + pow(cloud_in->points[m].y, 2);//点到原点的距离r = pow(r, 0.5);th = acos(cloud_in->points[m].x / r);//点对应的向量的角度(以x轴正方向为零角度)if (cloud_in->points[m].y<0){th = 2 * M_PI - th;}for (i = 0; i<R; i++){if (((r>i*grid_size_r) && (r<(i + 1)*grid_size_r)))//如果r在某范围内{for (j = 0; j<TH; j++){if ((th>j*grid_size_th) && (th<(j + 1)*grid_size_th))//如果th在某范围内{grid[i][j].grid_cloud->points.push_back(cloud_in->points[m]);}}}}pcl::visualization::CloudViewer viewer("resterization");//可视化窗口viewer.showCloud(cloud_final);//看一下其中某个栅格while (!viewer.wasStopped()){}}

运行后在头文件这里标注出下划线,不知道是不是没有配置相关的库。

在网上搜集了关于ros的文章,发现ros是机器人操作系统,作为一个小白原谅我的无知,不知道在这里是否还是有别的含义,想知道这个问题怎么解决。本人采用win7+vs+pcl1.8.0的环境,不知到是否需要安装别的操作系统实现。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。