在编译legoloam时,出现
/usr/include/pcl-1.10/pcl/filters/voxel_grid.h: In member function ‘std::vector<int> pcl::VoxelGrid<pcl::PCLPointCloud2>::getNeighborCentroidIndices(float, float, float, const MatrixXi&) const’:
/usr/include/pcl-1.10/pcl/filters/voxel_grid.h:669:21: error: ‘Index’ is not a member of ‘Eigen’
669 | for (Eigen::Index ni = 0; ni < relative_coordinates.cols (); ni++)
| ^~~~~
/usr/include/pcl-1.10/pcl/filters/voxel_grid.h: In member function ‘std::vector<int> pcl::VoxelGrid<pcl::PCLPointCloud2>::getNeighborCentroidIndices(float, float, float, const MatrixXi&) const’:
/usr/include/pcl-1.10/pcl/filters/voxel_grid.h:669:21: error: ‘Index’ is not a member of ‘Eigen’
669 | for (Eigen::Index ni = 0; ni < relative_coordinates.cols (); ni++)
| ^~~~~
/usr/include/pcl-1.10/pcl/filters/voxel_grid.h:669:35: error: ‘ni’ was not declared in this scope
669 | for (Eigen::Index ni = 0; ni < relative_coordinates.cols (); ni++)
| ^~
/usr/include/pcl-1.10/pcl/filters/voxel_grid.h:669:35: error: ‘ni’ was not declared in this scope
669 | for (Eigen::Index ni = 0; ni < relative_coordinates.cols (); ni++)
原因:pcl库与eigen版本不一致出现问题
解决方案:直接修改pcl库的代码将Eigen::Index修改为int
由于pcl底层库直接打开没有修改权限,故
sudo gedit /usr/include/pcl-1.10/pcl/filters/voxel_grid.h
修改即可