4. 依赖库安装(上):Eigen3、PCL、OpenCV 等基础数学与视觉库的安装与配置

好,咱们继续往下走。上一节我们把 Ubuntu 系统和 ROS 环境搞定了,现在该给 Autoware 准备「食材」了——也就是那些它依赖的基础库。

说白了,Autoware 就像一辆跑车,这些库就是它的发动机、变速箱和轮胎。没有它们,代码根本跑不起来。我个人习惯先把这些底层依赖装好,再去碰 Autoware 本体,这样后面编译时能省掉 80% 的报错。

本章核心目标: 完成 Eigen3、PCL、OpenCV 三大基础库的安装与验证。这三个库分别负责数学运算、点云处理和图像处理,是 Autoware 感知与规划模块的基石。

Autoware 依赖库体系 Eigen3 线性代数 / 矩阵运算 PCL 点云处理 / 滤波配准 OpenCV 图像处理 / 特征提取 Autoware 感知 / 定位 / 规划模块 安装顺序:Eigen3 → PCL → OpenCV(依赖递进关系)

4.1 Eigen3:轻量级数学引擎

先聊 Eigen3。这是个纯头文件的 C++ 模板库,专门做线性代数运算。你想想看,自动驾驶里那些坐标变换、旋转矩阵、卡尔曼滤波,哪个离得开矩阵运算?Eigen3 就是干这个的。

安装它其实特别简单,因为它不需要编译——嗯,这里要注意,正因为是头文件库,所以版本一定要选对。我记得 Autoware 官方推荐的是 3.3.7 或更高版本。

我的小建议: 别用 apt 装系统自带的旧版本(通常是 3.2.x),有些 API 不兼容。我习惯从源码装,一劳永逸。

# 下载 Eigen3 源码
wget https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz
tar -xzf eigen-3.3.7.tar.gz
cd eigen-3.3.7

# 创建构建目录并安装
mkdir build && cd build
cmake ..
sudo make install

# 验证安装
pkg-config --modversion eigen3

看到输出 3.3.7 就对了。我曾经在某个项目里因为版本不对,编译时死活找不到 Eigen/Dense 头文件,折腾了半小时才发现是 apt 装的旧版路径不一样。所以,听我的,源码安装最稳。

4.2 PCL:点云处理的瑞士军刀

接下来是 PCL(Point Cloud Library)。激光雷达的数据进来后,滤波、分割、配准、特征提取,全靠它。Autoware 的感知模块重度依赖 PCL,所以这一步不能省。

PCL 的依赖比较多,包括 Boost、FLANN、VTK 等。我个人习惯先装好这些底层依赖,再装 PCL 本体,这样能避免循环依赖的坑。

避坑指南: 我曾经在 Ubuntu 18.04 上直接 apt install libpcl-dev,结果装的是 1.8 版本,而 Autoware 需要 1.9+。后来被迫卸载重装,浪费时间。建议直接上 1.12 或 1.13。

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

# 下载 PCL 1.12.1 源码
wget https://github.com/PointCloudLibrary/pcl/archive/refs/tags/pcl-1.12.1.tar.gz
tar -xzf pcl-1.12.1.tar.gz
cd pcl-pcl-1.12.1

# 编译安装(-j4 根据你的 CPU 核心数调整)
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j4
sudo make install

# 验证安装
pcl_viewer --version

编译 PCL 大概需要 15-20 分钟,趁这个时间你可以去泡杯咖啡。为什么推荐 1.12?因为它在 API 稳定性和新特性之间取得了很好的平衡,Autoware 官方测试最多的就是这个版本。

4.3 OpenCV:视觉感知的眼睛

OpenCV 大家应该不陌生。摄像头图像的处理——车道线检测、交通标志识别、障碍物检测——都离不开它。Autoware 主要用到 OpenCV 的 core、imgproc、highgui 模块。

这里有个关键点:Autoware 需要 OpenCV 支持 GUI 功能(highgui),所以编译时记得把 WITH_GTK 或 WITH_QT 打开。我遇到过有人装了个不带 GUI 的 OpenCV,结果可视化节点跑不起来,排查了半天。

推荐版本: OpenCV 4.2.0 或 4.5.5。4.x 系列对 C++11/14 支持更好,而且移除了很多旧 API 的坑。别用 3.x 了,真的。

# 安装 OpenCV 依赖
sudo apt-get install -y libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

# 下载 OpenCV 4.5.5
wget -O opencv-4.5.5.zip https://github.com/opencv/opencv/archive/4.5.5.zip
unzip opencv-4.5.5.zip
cd opencv-4.5.5

# 编译安装
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_GTK=ON -DWITH_OPENGL=ON ..
make -j4
sudo make install

# 验证安装
pkg-config --modversion opencv4

看到 4.5.5 就说明装好了。你可以写个简单的小程序测试一下:

# 测试 OpenCV 是否可用
python3 -c "import cv2; print(cv2.__version__)"

如果输出 4.5.5,恭喜你,视觉库搞定了。

4.4 安装后的环境配置

库装完了,还得让系统能找到它们。说白了就是配置环境变量和 CMake 的查找路径。

库名称 CMake 查找命令 头文件路径 库文件路径
Eigen3 find_package(Eigen3 REQUIRED) /usr/local/include/eigen3 无(头文件库)
PCL find_package(PCL REQUIRED) /usr/local/include/pcl-1.12 /usr/local/lib
OpenCV find_package(OpenCV REQUIRED) /usr/local/include/opencv4 /usr/local/lib

一个小技巧: 把下面这行加到 ~/.bashrc 里,这样每次打开终端都能自动找到库路径:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

然后 source ~/.bashrc 让它生效。

4.5 常见问题与排错

装库的过程中难免遇到问题。我把自己踩过的坑整理了一下,你遇到了可以直接对照着查。

  • Eigen3 找不到头文件: 检查 /usr/local/include 下有没有 eigen3 文件夹。如果没有,重新执行 sudo make install。
  • PCL 编译报错关于 VTK: 确保 VTK 版本是 7.x 或 9.x。我遇到过 VTK 8.2 和 PCL 1.12 不兼容的情况,换成 VTK 7.1 就好了。
  • OpenCV 的 highgui 打不开窗口: 多半是 GTK 没装或者没在 cmake 里开启。运行 cmake -DWITH_GTK=ON 重新编译。
  • 多个版本冲突: 如果你之前用 apt 装过旧版本,建议先 sudo apt remove 掉,再装源码版。否则 CMake 可能会找到错误的版本。

重要提醒: 这三个库的安装顺序不要搞反。Eigen3 是 PCL 的依赖之一,所以先装 Eigen3 再装 PCL。OpenCV 相对独立,可以放在最后装。

好了,到这里 Eigen3、PCL、OpenCV 就全部就位了。这三个库装好,Autoware 的底层地基就算打牢了。下一节我们继续装其他依赖库,比如 GTSAM、Ceres Solver 这些优化相关的库。一步步来,别着急。

可可精品资料库