一、安装依赖库
必须:Boost、Eigen、FLANN、vtk
可选择:Qhull、OpenNI、CUDA
以下是所有依赖包的安装,不确定就全部安装一遍。
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
其中vtk以及qt这两个库,建议大家还是从源码编译安装比较好。
vtk8.2.0安装方法:
首先下载VTK-8.2.0.tar.gz和VTKData-8.2.0.tar.gz, 下载地址:https://vtk.org/download/
解压vtk,然后将vtkdata解压至vtk文件夹下,执行如下命令:
mkdir build
cd build
cmake ../ -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=ON -DCMAKE_BUILD_TYPE=Release -DVTK_WRAP_PYTHON=ON
make -j8
sudo make install
还可参考这个网址:http://www.cb.uu.se/~johan/vtk/installing_vtk_on_rhel6.txt
二、使用apt安装
sudo apt-get install libpcl-dev
安装后的编译过程可能会出现库文件vtkproj4.so丢失的问题。为解决该问题可以直接软链接解决。代码如下:
sudo ln -s /usr/lib/libvtkproj4.so.5.10 /usr/lib/libvtkproj4.so
注意:使用这个命令安装的是pcl1.7,它需要的是Boost v1.58,如果你的boost库的版本在这之上,就会发生冲突,可以降低boost库的版本或者安装pcl1.7以上的版本。
三、从源码安装pcl1.9.1:
1.下载源码:https://github.com/PointCloudLibrary/pcl/releases
2.解压文件
3.安装,依次执行下列命令:
cd pcl-pcl-1.9.1 && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j2
sudo make -j2 install
4.执行完上面的步骤之后,如果你在IDE(比如Kdevelop)中#include
四、常见问题:
问题1. /data/anaconda3/lib/libcurl.so.4: no version information available (required by curl)
解决方法:
第一步:查看路經
locate libcurl4.so.4
结果是:
/data/anaconda3/lib/libcurl.so.4
/data/anaconda3/lib/libcurl.so.4.5.0
/data/anaconda3/pkgs/libcurl-7.63.0-h20c2e04_1000/lib/libcurl.so.4
/data/anaconda3/pkgs/libcurl-7.63.0-h20c2e04_1000/lib/libcurl.so.4.5.0
/usr/lib/x86_64-linux-gnu/libcurl.so.4
/usr/lib/x86_64-linux-gnu/libcurl.so.4.4.0
第二步:查找 libcurl.so.4的连接
ls -l /data/anaconda3/lib/libcurl.so.4
结果是:
/data/anaconda3/lib/libcurl.so.4 -> libcurl.so.4.5.0
第三步:删除它并重新连接到/usr/lib/x86_64-linux-gnu/libcurl.so.4
sudo rm /data/anaconda3/lib/libcurl.so.4
sudo ln -s /usr/lib/x86_64-linux-gnu/libcurl.so.4 /data/anaconda3/lib/libcurl.so.4
第四步:检查
ls -l /data/anaconda3/lib/libcurl.so.4
结果如下
lrwxrwxrwx 1 root root 38 6月 19 13:31 /data/anaconda3/lib/libcurl.so.4 -> /usr/lib/x86_64-linux-gnu/libcurl.so.4
大功告成!
然而,修改了以后curl命令无法运行,待编译成功后还需要把软连接改回去!
问题2:编译过程出现一系列类似/usr/lib/libvtkIO.so.5.10.1: undefined reference to `TIFFReadDirectory@LIBTIFF_4.0'的错误
如果你之前安装过OpenCV,那么一般情况下,你已经安装了libtiff5这个库,这个库的版本与vtk需要调用的tiff库的版本不一致,因此出现了上面这个错误,建议解决方法是,先卸载libtiff5,然后重新安装tiff4.0.4:
sudo apt-get remove libtiff5-dev
下载tiff4.0.4:http://download.osgeo.org/libtiff/
解压、进入tiff-4.0.4目录,执行如下命令:
./configure
make
sudo make install
然后重新编译pcl。
五、测试程序
1.以ti下代码功能是:将点云数据.las文件转换为.pcd文件。文件名称:las2pcd.cpp
#include
#include
#include
#include
#include
#include
using namespace std;
int main (int argc, char *argv[])
{
string filePath;
filePath=argv[1];
std::cerr << "INFO : Loading : " << filePath << std::endl;
// 实例化一个新的PCL pointcloud对象
pcl::PointCloud cloud;
// 打开las文件
std::ifstream ifs(filePath.c_str(), std::ios::in | std::ios::binary);
// 防止打开失败
if(ifs.fail())
{
std::cerr << "ERROR : Impossible to open the file : " << filePath <(&rgb);
i++;
}
// 存储文件
pcl::io::savePCDFileASCII (argv[2], cloud);
std::cerr << "Saved " << cloud.points.size () << " data points to pointcloud.pcd." << std::endl;
return (0);
}
2.制作CMakeList文件
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(las2pcd)
find_package(PCL REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
include_directories(/usr/include)
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(las2pcd las2pcd.cpp)
target_link_libraries(las2pcd
${PCL_COMMON_LIBRARIES}
${PCL_IO_LIBRARIES}
/usr/lib/liblas.so
/usr/lib/liblas_c.so
)
3.测试
mkdir build
cd build
cmake ..
make -j2
./las2pcd las文件路經 pcd文件输出路經
4.会遇到的问题,假如你在代码中使用了#include
fatal error: pcl/visualization/cloud_viewer.h: No such file or directory,
其原因是在编译pcl库的时候并没有生成visualization相关的文件,这可能是由于cmake的版本较低造成的,建议重新安装新版本的cmake,比如3.15.2等。