linux安装PCL库

一、安装依赖库
必须: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 的时候,你会发现kdevelop找不到pcl包含文件,原因是在/usr/include中pcl文件夹的名称是pcl1.9,我们可以把pcl1.9中的pcl文件夹移动到/usr/include中,然后删掉pcl1.9,这样就可以了。

四、常见问题:

问题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等。

你可能感兴趣的:(C/C++,Linux系统)