ubuntu16.04安装pcl1.8.1
1、首先为大家讲述的是不要直接通过git clone下载pcl库,因为git clone会为你下载最新的pcl版本即pcl1.11,这就会导致安装错误进而让大家不知所措,所以需要登录到官网下载对应的pcl1.8.1版本,链接如下:https://github.com/PointCloudLibrary/pcl/releases
进入链接往下滑动就可看到对应的pcl版本。
2、安装依赖的库
sudo apt-get update
sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common
sudo apt-get install libflann1.8 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev
sudo apt-get install libqhull* libgtest-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev
sudo apt-get install mono-complete
sudo apt-get install qt-sdk openjdk-8-jdk openjdk-8-jre
3、需要PCLVisualizer 安装OpenNI、OpenNI2
sudo apt-get install libopenni-dev
sudo apt-get install libopenni2-dev
4、 编译并安装
cd pcl(你的pcl文件夹名称)或者直接进入pcl文件夹中
mkdir release(创建release文件夹)
cd release
cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr \
-DBUILD_GPU=ON -DBUILD_apps=ON -DBUILD_examples=ON \
-DCMAKE_INSTALL_PREFIX=/usr ..
make
sudo make install
5、测试
main.cpp
#include <pcl/io/pcd_io.h>
#include <pcl/filters/voxel_grid.h>
int
main(int argc, char** argv)
{
// Objects for storing the point clouds.
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ>::Ptr filteredCloud(new pcl::PointCloud<pcl::PointXYZ>);
// Read a PCD file from disk.
if (pcl::io::loadPCDFile<pcl::PointXYZ>(argv[1], *cloud) != 0)
{
return -1;
}
// Filter object.
pcl::VoxelGrid<pcl::PointXYZ> filter;
filter.setInputCloud(cloud);
// We set the size of every voxel to be 1x1x1cm
// (only one point per every cubic centimeter will survive).
filter.setLeafSize(0.01f, 0.01f, 0.01f);
filter.filter(*filteredCloud);
pcl::io::savePCDFile("test1.pcd", *filteredCloud);
}
CMakeLists.txt文件如下:
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
# rgb_depth_saver为工程的名字
project(main) # PCL
find_package(PCL 1.8 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS}) # 运行主程序
add_executable(main main.cpp) # 链接库
target_link_libraries(main ${PCL_LIBRARIES})
mkdir build
cd build
cmake ..
make
./main test.pcd (我的博客里有test.pcd,也可以选择用自己的pcd测试,test.pcd放在build下)
6、如果使用不了,需要卸载libvtk5.10-qt4 libvtk5.10 libvtk5-dev,然后安装VTK7.1.1版本链接如下:https://vtk.org/download/
下滑找到对应版本:
然后进入VTK7.1.1文件夹下,进行如下操作:
mkdir build(创建build文件夹)
cd build
cmake ..
make
sudo make install
如果已经安装了ros,再安装pcl1.8.1,那么就不进行sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev这一步的依赖安装,因为和ros冲突,安装完依赖之后就直接安装VTK 7.1.1,再安装pcl。
关于pcl/io/openni2_grabber.h: No such file or directory,或者显示未定义pcl/io/openni2_grabber.h。 是需要先安装openni2再安装pcl,这个问题在只装pcl没有装ros下按照上述操作不会存在这个问题,如果安装了ros,再安装pcl出现这个问题,先
sudo apt-get install openni2-utils
再重新安装pcl,先删除pcl中的安装release文件,再安装,如下:
cd pcl-pcl-1.8.1 && mkdir release && cd release
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j2
sudo make -j2 install
关于kinect2没有设备连接,请看我的另一篇博客关于Ubuntu kinect2 no device connect 的解决办法