三维点云出来、SLAM、机器人视觉等领域,PCL都是一项必不可少的开源库。不少国内开发人员会在Ubuntu 18.04系统上安装PCL,可能出现下载速度慢、依赖缺失、版本冲突等问题。那么,在中国大陆网络环境中如何顺利安装PCL?
为什么选择在Ubuntu 18.04上安装PCL
虽然Ubuntu 20.04和22.04已经是主流,但大量服务器、嵌入式平台(如NVIDIA Jetson系列)和工业相机驱动仍以Ubuntu 18.04为最佳兼容环境。Ubuntu 18.04对PCL 1.8.x版本支持成熟,并且与ROS Melodic、OpenCV 3/4等库的兼容性好。
国内安装PCL的常见难点
在国内安装PCL会面临apt源下载速度慢。默认源在国内速度较慢,容易导致依赖安装失败。还有编译依赖缺失,PCL依赖Boost、VTK、Eigen等多个库,缺失会直接报错。另外就是CMake版本过低,官方推荐CMake ≥ 3.10,而Ubuntu 18.04自带的版本恰好3.10.2,但部分模块可能需要更新。VTK版本冲突方面,apt安装VTK可能与PCL源码编译版本不匹配,导致链接错误。
环境准备与加速
更新APT源为国内镜像:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's|archive.ubuntu.com/ubuntu/|mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list
sudo apt update
安装编译工具与依赖
sudo apt install -y build-essential cmake pkg-config git
sudo apt install -y libboost-all-dev libeigen3-dev libflann-dev
sudo apt install -y libvtk7-dev libqhull-dev libusb-1.0-0-dev
Boost 是PCL的核心依赖之一,Eigen 用于矩阵运算,FLANN 用于快速最近邻搜索,VTK 用于点云可视化。安装方式选择中,在国内安装PCL主要有两种方式,APT快速安装(简单,但版本固定且功能较少)和源码编译安装(可定制功能,适合生产环境)。
APT快速安装PCL:
sudo apt install -y libpcl-dev
安装完成后验证:
pkg-config --modversion pcl_common
如果输出 1.8.x,说明安装成功。优点在于快速省事,但是无法开启全部模块,版本不可控。
源码编译安装PCL(推荐),官方GitHub仓库在国内访问较慢,可用Gitee镜像:
git clone https://gitee.com/mirrors/pointcloudlibrary.git pcl
cd pcl
git checkout pcl-1.8.1
建议选择 1.8.1 版本,Ubuntu 18.04 + ROS Melodic 兼容最佳。
创建编译目录
mkdir build && cd build
配置CMake
cmake .. -DCMAKE_BUILD_TYPE=Release \
-DBUILD_GPU=ON \
-DBUILD_apps=ON \
-DBUILD_examples=ON
说明:
BUILD_GPU=ON 可开启CUDA加速(需NVIDIA GPU环境)
BUILD_apps=ON 构建PCL自带应用工具
BUILD_examples=ON 编译示例代码方便测试
编译与安装
make -j$(nproc)
sudo make install
环境变量配置上,安装完成后,需要让系统找到PCL的头文件与库文件:
echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH" >> ~/.bashrc
source ~/.bashrc
测试安装结果,创建 test_pcl.cpp 测试程序:
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
#include <iostream>
int main() {
pcl::PointCloud<pcl::PointXYZ> cloud;
cloud.width = 5;
cloud.height = 1;
cloud.is_dense = false;
cloud.points.resize(cloud.width * cloud.height);
for (auto& point : cloud.points) {
point.x = 1024 * rand() / (RAND_MAX + 1.0f);
point.y = 1024 * rand() / (RAND_MAX + 1.0f);
point.z = 1024 * rand() / (RAND_MAX + 1.0f);
}
pcl::io::savePCDFileASCII("test_pcd.pcd", cloud);
std::cout << "Saved " << cloud.points.size() << " data points to test_pcd.pcd." << std::endl;
return 0;
}
编译运行:
g++ test_pcl.cpp -o test_pcl $(pkg-config --cflags --libs pcl_io pcl_common)
./test_pcl
如果生成 test_pcd.pcd 文件并无错误,说明PCL安装成功。
优化与注意事项
国内加速建议使用 axel 或 aria2 多线程下载依赖,配置Git代理或镜像仓库。服务器环境优化可以通过禁用编译过程中多余的GUI模块(服务器无需可视化),使用 make -j$(nproc) 充分利用多核CPU。
版本匹配
ROS Melodic → PCL 1.8.x
ROS Noetic → PCL 1.10.x
在Ubuntu 18.04系统下国内安装PCL,如果只是测试或快速部署,可以直接通过APT安装;而在生产环境、科研项目中,建议使用源码编译方式,这样可以定制模块、开启GPU加速,并避免版本冲突。结合国内镜像源与编译优化策略,不仅能大幅提高安装速度,还能让PCL在服务器环境中稳定运行。