开发环境搭建:操作系统选择、Python环境配置、CUDA与GPU驱动安装、Open3D与PCL库编译

说实话,环境搭建这件事,看着简单,坑却不少。我见过太多人卡在这一步,一卡就是好几天。今天咱们就把这事彻底说清楚。

操作系统选择:Windows还是Linux?

我个人习惯用Linux做开发,尤其是Ubuntu 20.04或22.04 LTS。为什么?因为三维扫描相关的库,比如Open3D、PCL,在Linux上编译最省心。Windows当然也能用,但你要做好心理准备——有些库的编译过程会让你怀疑人生。

我的建议:

  • 主力开发机:Ubuntu 22.04 LTS(长期支持版)
  • 测试/演示机:Windows 10/11(方便给客户展示)
  • 千万别用:macOS(除非你只用Python,不碰CUDA)

我在项目中遇到过一件事:有个同事非要用Windows做开发,结果PCL编译时,Boost库版本冲突搞了三天。后来换了Ubuntu,半小时搞定。你想想看,时间花在刀刃上不好吗?

Python环境配置

Python版本我推荐3.8或3.10。3.8最稳,3.10新特性多。别用3.11以上,有些库还没跟上。

第一步,装Miniconda。别用Anaconda,太臃肿。Miniconda轻量,够用。

# 下载Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

# 创建虚拟环境
conda create -n scan3d python=3.10
conda activate scan3d

# 安装基础依赖
pip install numpy opencv-python matplotlib

小技巧:把conda的镜像源换成清华的,下载速度快很多。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

嗯,这里要注意:每个项目最好单独建一个虚拟环境。我曾经因为偷懒,所有项目共用一个环境,结果版本冲突搞得一团糟。从那以后,我再也不敢了。

CUDA与GPU驱动安装

三维扫描离不开GPU加速。CUDA版本要和你的显卡驱动匹配。怎么查?

# 查看显卡型号
nvidia-smi

# 查看支持的CUDA版本
nvidia-smi | grep "CUDA Version"

我建议装CUDA 11.8或12.1。这两个版本兼容性最好,主流库都支持。

显卡型号 推荐CUDA版本 备注
RTX 30系列 CUDA 11.8 最稳定
RTX 40系列 CUDA 12.1 性能最优
GTX 10系列 CUDA 11.0 老卡别追新

避坑指南:我曾经装CUDA 12.0,结果Open3D不支持,编译报错。折腾了两天才发现是版本不匹配。所以,装之前一定先查库的兼容性列表。

安装步骤:

# 下载CUDA runfile
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run

# 配置环境变量
echo 'export PATH=/usr/local/cuda-11.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

# 验证安装
nvcc --version

Open3D与PCL库编译

这两个库是三维扫描的核心。Open3D偏Python生态,PCL偏C++生态。我建议两个都装,各取所长。

Open3D编译

Open3D从源码编译,可以开启CUDA支持,性能提升明显。

# 克隆源码
git clone https://github.com/isl-org/Open3D.git
cd Open3D

# 创建构建目录
mkdir build && cd build

# CMake配置,开启CUDA
cmake .. \
    -DCMAKE_INSTALL_PREFIX=/usr/local/open3d \
    -DBUILD_CUDA_MODULE=ON \
    -DBUILD_PYTHON_MODULE=ON \
    -DPYTHON_EXECUTABLE=$(which python)

# 编译(-j后面跟CPU核心数)
make -j8

# 安装
sudo make install

# 安装Python包
pip install -U open3d

个人经验:编译时如果报错找不到CUDA,八成是环境变量没配好。检查一下CUDA_TOOLKIT_ROOT_DIR有没有设置。

PCL库编译

PCL(Point Cloud Library)是C++的库,编译起来稍微麻烦点。但别怕,按步骤来就行。

# 安装依赖
sudo apt-get install -y \
    libboost-all-dev \
    libeigen3-dev \
    libflann-dev \
    libvtk7-dev \
    libqhull-dev

# 克隆PCL
git clone https://github.com/PointCloudLibrary/pcl.git
cd pcl && mkdir build && cd build

# CMake配置
cmake .. \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INSTALL_PREFIX=/usr/local/pcl \
    -DBUILD_GPU=ON \
    -DBUILD_CUDA=ON

# 编译
make -j8
sudo make install

注意:PCL编译时间很长,大概20-40分钟。我建议你泡杯咖啡,或者看看文档。别干等着。

编译完成后,验证一下:

# Python验证Open3D
python -c "import open3d as o3d; print(o3d.__version__)"

# C++验证PCL
pcl_viewer /path/to/pointcloud.pcd

如果都能正常运行,恭喜你,环境搭建成功了。

知识体系总览

下面这张图,帮你理清整个环境搭建的脉络:

三维扫描开发环境搭建知识体系 操作系统选择 Python环境配置 CUDA与GPU驱动 Open3D编译 PCL库编译 环境验证与测试 从操作系统到库编译,每一步都影响后续开发效率

环境搭建这事,说白了就是一次性的投入。花半天时间把环境配好,后面开发就顺畅了。我刚开始做三维扫描时,环境配了整整一周,各种踩坑。现在回想起来,要是当时有人告诉我这些,能省多少时间啊。

好了,按照上面的步骤走,你应该能顺利搭建好开发环境。如果遇到问题,别慌,多半是版本不匹配或者路径没配好。检查一下,再试一次。

专注资料整理