4. 依赖库安装(上):Eigen3、PCL、OpenCV 等基础数学与视觉库的安装与配置
好,咱们继续往下走。上一节我们把 Ubuntu 系统和 ROS 环境搞定了,现在该给 Autoware 准备「食材」了——也就是那些它依赖的基础库。
说白了,Autoware 就像一辆跑车,这些库就是它的发动机、变速箱和轮胎。没有它们,代码根本跑不起来。我个人习惯先把这些底层依赖装好,再去碰 Autoware 本体,这样后面编译时能省掉 80% 的报错。
本章核心目标: 完成 Eigen3、PCL、OpenCV 三大基础库的安装与验证。这三个库分别负责数学运算、点云处理和图像处理,是 Autoware 感知与规划模块的基石。
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 这些优化相关的库。一步步来,别着急。
可可精品资料库