macOS 安装 pcl 1.8.0
Mac 上的 pcl 一直有问题。
找不到 pcl_viewer 查看 pcd 文件。写个程序用 pcl::visualization::CloudViewer 查看点云,遇到 Runtime Exception。
今天下午下定决心搞定 pcl 。
pcl 以前是使用 homebrew 安装的,homebrew 安装的是 1.8.0 的版本,讲道理应该没有问题。
尝试到 pcl 的官网上,按照 Mac 的安装流程安装 pcl 1.6.0,依赖项装着装着,发现 pcl 1.6.0 依赖的 OpenNI 不支持当前的系统(macOS Sierra 10.12.2)。现在距离 pcl 1.6.0 发布已经过去好多年了,QHull 的依赖版本还是 2009.1,确实对 pcl 1.6.0 没有信心。
所以在 Github 上下载了 pcl 1.8.0 的源码来自己安装。
为了方便起见,依赖项都使用 homebrew 安装了。
VTK
boost 版本是 1.6.3,VTK 版本是 7.1.0,在编译 pcl 的时候会遇到 vtkObjectBase undefined 的错误,按照这个链接 https://github.com/PointCloudLibrary/pcl/issues/1192 ,把 vtk 7.1.0 卸载了,换上 vtk 6.3.0(同样 vtk 是自己编译安装)。
在编译的过程中需要注意,有一些 redefinition 的错误,这是由于编译源码和 homebrew 各安装了一次。在 /opt/local/ 的头文件和库是编译源码安装的,在 /usr/local/ 的头文件和库是 homebrew 安装的。删除 /opt/local/ 中的那一份就可以了。
编译好 pcl 之后发现 pcl_vie[Tab][Tab]…还是没有 pcl_viewer 这个可执行文件。上网搜,发现其实 pcl 在 Mac 下将 pcl_viewer 当做了 app 安装。在 /usr/local/bin 中可以发现有三个 pcl_*.app,只需进入 app 目录,找到相应的可执行文件,拷贝出来。(其实 homebrew 安装 pcl 的选项中就有 --without-apps 的选项。)
CloudViewer NSException
运行代码想要使用 CloudViewer 现实点云,发现存在 Runtime Exception —— NSException,在 github 的 issues 中找到有人讨论过这个问题,https://github.com/PointCloudLibrary/pcl/issues/253 。无法解决,只能使用 PCLVisualizer 代替。