PCL 编译安装PCL点云库

编译安装PCL点云库
官网及文档
源码官网:https://github.com/PointCloudLibrary/pcl

安装方式
方式一:编译源码安装(最稳妥)

准备编译环境及工具

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 libpcap-dev
sudo apt-get install libflann1.9 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
sudo apt-get install vtk6 libvtk6.3 libvtk6-dev libvtk6.3-qt libvtk6-qt-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 libopenni-dev libopenni2-dev

sudo apt-get install qt-sdk openjdk-8-jdk openjdk-8-jre

编译PCL(PointCloudLibrary)
下载源码:

git clone https://gitee.com/mirrors/pcl.git

进入下载后的pcl目录,创建并进入release目录,执行编译:

cd pcl

切换到指定版本v1.9.1再编译

git checkout pcl-1.9.1

创建目录

mkdir release

进入目录

cd release

配置cmake

cmake -DCMAKE_BUILD_TYPE=None \
      -DCMAKE_INSTALL_PREFIX=/usr/local \
      -DBUILD_GPU=ON \
      -DBUILD_apps=ON \
      -DBUILD_simulation=ON \
      -DBUILD_examples=ON ..

进行编译

make -j8

安装
编译可能比较久,等他编完后,执行安装:

sudo make install

测试
测试是否成功,打开窗口看到logo点云即为成功安装

pcl_viewer ../test/pcl_logo.pcd

方式二:在线安装(100M下载,释放后1G)

sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-dev  # 或 libpcl-all

问题及处理
问题:没有pcl_viewer
解决:
说明编译的时候,cmake参数有误,或install有问题,可以检查参数后重新执行cmake make

或通过以下命令安装 bash sudo apt install pcl-tools

问题:加载pcd文件异常
描述:执行pcl::io::loadPCDFile(“./assets/xxxx.pcd”, *cloud) == -1),控制台报错

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
解决:
此时,很可能是eigen3有问题,从此处下载离线版eigen3库

http://bitbucket.org/eigen/eigen/get/3.2.0.tar.bz2
http://eigen.tuxfamily.org/index.php?title=Main_Page 在该网站中,可以下载任意版本对应的文件,本例下载了Eigen 3.2.0. tar.bz2 格式压缩文件。 文件名:eigen-eigen-ffa86ffb5570.tar.bz2

执行如下操作:

卸载原有eigen3:

sudo apt-get remove libeigen3-dev --purge

重装eigen3

解压

tar -jxvf eigen3_3.2.0.orig.tar.bz2

重命名

mv eigen-eigen-ffa86ffb5570/ eigen3

复制到/usr/local/include/

sudo cp -r eigen3 /usr/local/include/eigen3

复制到/usr/include/

sudo cp -r eigen3 /usr/include/eigen3

问题:metslib cmake 错误

no metslib found.

解决:

wget https://www.coin-or.org/download/source/metslib/metslib-0.5.3.tgz
tar xzvf metslib-0.5.3.tgz
cd metslib-0.5.3
./configure
make 
sudo make install

问题:libpq.so和libvtkIO.so错误

[ 13%] Built target pcl_pcd_convert_NaN_nan
[ 13%] Linking CXX executable …/…/bin/pcl_pcd_introduce_nan
//usr/lib/x86_64-linux-gnu/libpq.so.5: undefined reference to SSL_get_peer_certificate@OPENSSL_1.0.0' /usr/lib/libvtkIO.so.5.10.1: undefined reference to TIFFReadDirectory@LIBTIFF_4.0’
//usr/lib/x86_64-linux-gnu/libpq.so.5: undefined reference to CRYPTO_num_locks@OPENSSL_1.0.0' //usr/lib/x86_64-linux-gnu/libpq.so.5: undefined reference to SSL_get_current_compression@OPENSSL_1.0.0’
//usr/lib/x86_64-linux-gnu/libpq.so.5: undefined reference to `SSL_CTX_free@OPENSSL_1.0.0’
解决:

sudo apt-get remove libpq5
sudo apt-get install libpq-dev
问题:make时libproj.so

make[2]: *** No rule to make target ‘/usr/lib/x86_64-linux-gnu/libproj.so’, needed by ‘lib/libpcl_io.so.1.9.1.99’。 停止。CMakeFiles/Makefile2:499: recipe for target ‘io/CMakeFiles/pcl_io.dir/all’ failed
解决:
建立软连接, 终端中输入:

sudo ln -s /usr/lib/x86_64-linux-gnu/libproj.so.9 /usr/lib/x86_64-linux-gnu/libproj.so
问题:libpng16.so错误

//home/ty/anaconda3/lib/libpng16.so.16: undefined reference to `inflateValidate@ZLIB_1.2.9’
collect2: error: ld returned 1 exit status
src/CMakeFiles/pcl_test.dir/build.make:253: recipe for target ‘…/build/debug/bin/pcl_test’ failed
make[3]: *** […/build/debug/bin/pcl_test] Error 1
解决:

cd /usr/lib/x86_64-linux-gnu
sudo ln -sf ~/anaconda/lib/libpng16.so.16 libpng16.so.16
cd /usr/lib/
sudo ln -sf ~/anaconda/lib/libpng16.so.16 libpng16.so.16
sudo ldconfig

conda remove libpng
sudo apt-get install libpng16-16 --reinstall
实在不行编译安装源码:

wget https://download.sourceforge.net/libpng/libpng-1.6.37.tar.gz
tar -zxvf libpng-1.6.37.tar.gz
cd libpng-1.6.37/
./configure --prefix=/usr/local/
sudo make && make install
问题:/usr/bin/ld: cannot find -lxxx
以`/usr/bin/ld: cannot find -lvtkproj4为例
解决:
原因1:libvtkproj4.so的链接不正确或没有链接,注意规则是libxxx.so

cd /usr/lib
ll | grep -i vtkproj4

输出

lrwxrwxrwx 1 root root 21 4月 5 2016 libvtkproj4.so.5.10 -> libvtkproj4.so.5.10.1
-rw-r–r-- 1 root root 312320 4月 5 2016 libvtkproj4.so.5.10.1
说明没有libvtkproj4.so链接,则执行以下命令即可:

sudo ln -s libvtkproj4.so.5.10 libvtkproj4.so
原因2:系统缺少对应的so库,即/usr/lib下找不到类似的so

则进行搜索并安装

sudo apt-cache search libvtkproj4-dev
sudo apt-get install libvtkproj4-dev

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值