前言

CPU对于图形运算能力有限,使用CUDA加速可以大大提高点云处理的速度。

默认电脑有英伟达显卡并且已经配置好显卡驱动、CUDA和cudnn环境。

环境配置

系统要求

  • 系统:Ubuntu适用,Win不适用。
  • 我的系统:Ubuntu 20.04

检查CUDA版本

nvcc --version | grep "release" | awk '{print $6}' | cut -c2-

在这里插入图片描述

检查C++版本

最小版本要求:

  • GCC 7
  • Clang 6
    gcc -dumpversion
    clang --version
    
    在这里插入图片描述

安装 Eigen

最低版本要求:

  • Eigen v3.3.7+
wget -qO- https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz | tar xz
sudo apt install -y libblas-dev
cd eigen-3.3.7 && mkdir build && cd build
cmake ..
sudo make install
cd ../.. && rm -rf eigen-3.3.7/ && rm -f eigen-3.3.7.tar.gz

从源码构建PCL

如果之前安装过,不一定包含GPU算法,这里提供一个我个人摸索的完整的PCL卸载和安装方法。

卸载方法

针对三种不同的安装方法,提供各自的卸载方法,注意自己区分。


1. 从apt安装的卸载方法:

sudo apt remove libpcl
sudo rm /usr/lib/x86_64-linux-gnu/libpcl_* # 删除残留的so文件
sudo rm -r /usr/share/doc/libpcl-* # 删除pcl文档

2. 从源码安装的卸载方法:

sudo rm -r /usr/include/pcl-1.10 /usr/share/pcl /usr/bin/pcl* /usr/lib/libpcl* /usr/lib/x86_64-linux-gnu/libpcl_*
sudo rm -r /usr/share/doc/libpcl-* # 删除pcl文档

3. 从源码安装时未指定安装目录的卸载方法:

如果从源码安装时未指定安装目录,pcl可能被安装到/usr/local/下的某层文件夹,这样可能导致pcl程序编译时找不到库文件,因为一般都是安装到/usr/文件夹下。

具体来说是由于这条命令导致的:

cmake -DCMAKE_BUILD_TYPE=Release .. # 参数含义是以发布形式编译,而不是默认以Debug模式编译,但没有加安装路经参数

进入安装时的编译目录build下,有个install_manifest.txt文件,里面包含了各个文件安装的目录,执行卸载命令:

sudo make uninstall

源码安装方法

以PCL-1.12.1为例。

参考链接:Compiling PCL from source on POSIX compliant systems
下载源码:Github Releases

sudo apt-get install libusb-1.0-0-dev # 可能会缺少这个依赖
# 右键解压压缩包
cd pcl-pcl-1.12.1 && mkdir build && cd build

ccmake使用方法

ccmake .. # 进入如下命令行界面
# 按下 t 键进入高级模式
# 根据提示修改选项是ON还是OFF
# 修改各个GPU相关选项为 ON
# 修改 CMAKE_BUILD_TYPE=None,CMAKE_INSTALL_PREFIX=/usr
# 按下 c 键生成配置
# 按下 g 键生成makefiles并退出

在这里插入图片描述
在这里插入图片描述

make -j16 # 执行编译操作,我的CPU有16个线程,所以我写16以加快编译速度
sudo make install # 安装 PCL
cd lib/ # 该文件夹在build文件夹下
sudo cp -d libpcl_* /usr/lib/x86_64-linux-gnu/ # 将这些so文件复制到之前清理过的这个目录,否则编译自己的程序时找不到so文件,-d参数是保持文件之间的软链接关系

参考链接

[1] Configuring your PC to use your Nvidia GPU with PCL