PCL 1.8.1 在使用 Eigen 3.3.90 时给出了与 Eigen 类型转换相关的编译错误 类
PCL 1.8.1 gives compilation errors related with typecast of Eigen classes when using Eigen 3.3.90
对于我正在进行的项目,我需要使用点云库,我正在重复使用的一些代码的作者建议使用 PCL 1.8.1 和最新的 b 运行Eigen3 通道。我下载了所有依赖项并成功构建了它们。我通过确保在我的 usr/local/include 目录中看到它们以及每个库(VTK、Boost、Eigen)的 运行 简单示例来检查它们是否有效。一切都很好,直到那里。
然后我从 GitHub 下载了 PCL 源代码并且我能够配置它。但是当我尝试编译它时,我看到了这个错误:
Downloads/pcl-pcl-1.8.1/surface/include/pcl/surface/impl/bilateral_upsampling.hpp:112:88: 错误:无法转换 'Eigen::internal::enable_if, float, float> >::type {aka Eigen::IndexedView, float, float>}' 初始化时'float'
float val_exp_depth = val_exp_depth_matrix(dx+window_size_, dy+window_size_);
我正在使用以下内容:
- Ubuntu 16.04,PCL 1.8.1,VTK 8.1.1,FLANN 1.8.4,Eigen 3.3.90(默认 b运行ch),Boost 1.68.0 .
- 可能不相关:CUDA 9.1、Ceres 1.14、gtest、ROS-kinetic(我确实在这个过程中破坏了我的 ROS 安装,但我不介意稍后重新安装它。如果有机会,我会提出这个问题它有一些我不知道的相关性)。
我对其中的大部分都是新手,所以如果我无法很好地解释或没有分享足够的信息来帮助我,我提前道歉。请让我知道,我会尽我所能。任何帮助深表感谢。谢谢!
问题是矩阵 val_exp_depth_matrix
是使用浮点值(dx
和 dy
)索引的。它们必须转换为整数类型,例如 int
或 long
.
此问题已在 PCL 存储库中修复。
对于我正在进行的项目,我需要使用点云库,我正在重复使用的一些代码的作者建议使用 PCL 1.8.1 和最新的 b 运行Eigen3 通道。我下载了所有依赖项并成功构建了它们。我通过确保在我的 usr/local/include 目录中看到它们以及每个库(VTK、Boost、Eigen)的 运行 简单示例来检查它们是否有效。一切都很好,直到那里。
然后我从 GitHub 下载了 PCL 源代码并且我能够配置它。但是当我尝试编译它时,我看到了这个错误: Downloads/pcl-pcl-1.8.1/surface/include/pcl/surface/impl/bilateral_upsampling.hpp:112:88: 错误:无法转换 'Eigen::internal::enable_if, float, float> >::type {aka Eigen::IndexedView, float, float>}' 初始化时'float' float val_exp_depth = val_exp_depth_matrix(dx+window_size_, dy+window_size_);
我正在使用以下内容:
- Ubuntu 16.04,PCL 1.8.1,VTK 8.1.1,FLANN 1.8.4,Eigen 3.3.90(默认 b运行ch),Boost 1.68.0 .
- 可能不相关:CUDA 9.1、Ceres 1.14、gtest、ROS-kinetic(我确实在这个过程中破坏了我的 ROS 安装,但我不介意稍后重新安装它。如果有机会,我会提出这个问题它有一些我不知道的相关性)。
我对其中的大部分都是新手,所以如果我无法很好地解释或没有分享足够的信息来帮助我,我提前道歉。请让我知道,我会尽我所能。任何帮助深表感谢。谢谢!
问题是矩阵 val_exp_depth_matrix
是使用浮点值(dx
和 dy
)索引的。它们必须转换为整数类型,例如 int
或 long
.
此问题已在 PCL 存储库中修复。