开发环境搭建:操作系统选择、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
如果都能正常运行,恭喜你,环境搭建成功了。
知识体系总览
下面这张图,帮你理清整个环境搭建的脉络:
环境搭建这事,说白了就是一次性的投入。花半天时间把环境配好,后面开发就顺畅了。我刚开始做三维扫描时,环境配了整整一周,各种踩坑。现在回想起来,要是当时有人告诉我这些,能省多少时间啊。
好了,按照上面的步骤走,你应该能顺利搭建好开发环境。如果遇到问题,别慌,多半是版本不匹配或者路径没配好。检查一下,再试一次。