基于 FPGA 的加速:3D LiDAR 里程计中球面投影与距离图像特征提取算法的应用
摘要
随着自动驾驶技术的快速发展,LiDAR(光检测与测距)逐渐成为车辆定位与导航的主流工具。LiDAR 里程计依赖于对 3D 点云数据的处理和特征提取,以实现高精度的环境感知和路径规划。传统计算方法在处理这些数据时面临显著瓶颈,尤其在实时处理和硬件加速方面。为解决这一问题,本文提出了一种基于 FPGA 的 3D LiDAR 里程计硬件实现方案,重点针对球面投影和基于距离图像的特征提取算法。首先,我们设计并实现了一种多核并行 FPGA 硬件架构,包括多核并行球面投影硬件模块和法向量特征提取模块。通过优化硬件架构并利用 FPGA 的并行处理能力,我们加速了计算过程,显著提升了数据处理速度。实验结果表明,与传统 CPU 处理方法相比,基于 FPGA 的加速方案在球面投影和特征提取两方面均实现了显著加速,处理时间大幅降低。通过比较不同平台的处理时间,我们验证了 FPGA 在高效处理 LiDAR 数据方面的潜力,为 3D LiDAR 数据处理中的硬件加速提供了有效解决方案。本文的研究成果为未来自动驾驶系统中基于 FPGA 的硬件加速实现提供了参考路径,并为相关领域的硬件优化与应用开启了新方向。
作者
Yu Hu 电气与计算机工程系,AMSV 澳门大学,澳门,中国
Sio Hang Pun 电气与计算机工程系,AMSV 澳门大学,澳门,中国
Albert Li Lingyange Semiconductor Inc, 中国珠海
Mang I Vai Faculty of Science and Technology, University of Macau, 澳门, 中国
Jianke Zhu College of Computer Science, Zhejiang University, 杭州, 中国
Peng Un Mak Faculty of Science and Technology, University of Macau, 澳门, 中国
出版信息
期刊: 2025 6th International Conference on Electrical, Electronic Information and Communication Engineering (EEICE) 年份: 2025 页码: 453-457 DOI: 10.1109/EEICE65049.2025.11033697 文章编号: 11033697
指标
总下载量: 49
资金
- 技术开发
关键词
IEEE 关键词: 激光雷达, 三维显示, 计算机体系结构, 特征提取, 数据处理, 实时系统, 里程计, 硬件加速, 现场可编程门阵列, 自动驾驶车辆
Index Terms: 光检测与测距, 自动驾驶车辆, 投影图像, 里程计, 项目特性, 投影算法, 特征提取算法, 大圆距离, 球面投影, 球面特征, 基于FPGA的加速器, 法向量, 点云, 路径规划, 光检测, 三维点, 硬件实现, 三维点云, 点云数据, 硬件架构, 同步定位与地图构建, 矩阵特征值分解, 核计算, 并行化, MATLAB平台, 单核, 矩阵分解, 协方差矩阵, 特征提取部分, 单项目
作者关键词: LiDAR, Odometry, FPGA Acceleration, Spherical Projection, Feature Extraction
未定义
SECTION I. 引言
近年來,自動駕駛受到越來越多關注,促使相關技術快速進步 1。 測程(Odometry)在自動駕駛系統中扮演關鍵角色,其主要功能是測量並估算車輛的位置和運動狀態,為定位與導航提供關鍵資料 2。 目前,自動駕駛系統中的測程主要依賴相機和LiDAR(光探測與測距) 3 4。 與相機相比,LiDAR測程具有對光照條件的強免疫力、精確的深度資訊、低環境依賴性以及較大的測量範圍等優勢,成為研究焦點。 尤其在LiDAR測程算法中,準備前端特徵資料是核心模組之一,通常依賴特徵提取演算法從點雲中獲取結構特徵;在測程或SLAM(同步定位與地圖構建)系統中,將3D點雲資料投影至2D距離圖像的方法已在近年廣泛研究 5。 正如 6 所示,此方法的引入標誌著一種新方法與進展,許多研究者持續優化以提升系統精度與速度 7。 此方法保留了3D點雲的空間鄰近關係,且高度適合並行運算,性能優秀。 此外,也有研究聚焦於LOAM算法以及其相關改進算法的硬體加速 8 9 10。 然而,基於 11 的硬體加速研究幾乎不存在,且目前僅有研究嘗試通過CPU和GPU的聯合加速來提升演算法,但迄今為止尚無研究在FPGA上實作此方法。 因此,本文旨在探索FPGA基礎加速,聚焦於球面投影與距離圖像特徵提取演算法。 目標是為基於球面投影與特徵提取的測程演算法硬體加速提供基礎實作路徑,並為本領域的硬體實作研究提供參考。
基于此目标,我们提出了一个多核并行FPGA硬件架构,主要包括以下两个组件:
多核并行球面投影硬件实现:由于球面投影中的点彼此独立,可以进行并行计算。我们为每个点单独设计了投影单元,并通过多核并行架构实现了加速。
用于法向量特征提取的多点并行双RAM访问硬件实现:在法向量特征提取过程中,我们采用垂直多点并行水平扫描策略,以提高处理效率并降低计算时间。
第二节:前端系统概述
本节介绍前端系统的总体实现架构和基本原理。首先,来自车辆LiDAR的原始3D点云数据通过双缓冲机制(工作缓冲区与非工作缓冲区)持续馈入四个并行球面投影模块。球面投影模块处理后,将3D点云投影生成二维距离图像,并存入双口RAM。随后,特征提取模块从双口RAM读取距离图像数据,计算距离图像中的特征点,最终生成顶点图和法向量图。整个系统的硬件架构如图1所示。
图 1. 整个前端系统的硬件架构.
A. 多核并行球面投影的硬件实现方法
球面投影部分是数据预处理的第一阶段,每个3D点的投影计算相互独立,使其非常适合并行计算。我们为单个点的球面投影设计了一个计算核,该计算核可以在更高层级系统中多次调用以实现多核并行。出于资源考虑,我们实现了四核并行计算。为确保计算核持续运作,我们设计了双缓冲机制,活跃缓冲区持续向计算核传输数据,非活跃缓冲区准备下一批待计算数据。计算完成后,缓冲区交换以保持连续的数据传输。此外,为确保数据持续无中断地传输到RAM,数据首先写入缓冲区后再发送到RAM。球面投影部分实现流程的流程图如图2所示。
图2. 球面投影部分的流程图显示,虚线框内的过程是同步进行的。
以下描述了单个球面投影核的计算。3D点云可以通过球面投影映射到有组织的二维距离图像中,给定3D点的具体映射函数定义如下 12:
\begin{equation*}\left[ {\begin{array}{l} r \\ \theta \\ \varphi \end{array}} \right] = \left[ {\begin{array}{c} {\sqrt {{x^2} + {y^2} + {z^2}} } \\ {\arctan \left( {\frac{y}{x}} \right)} \\ {\arcsin \left( {\frac{z}{{\sqrt {{x^2} + {y^2} + {z^2}} }}} \right)} \end{array}} \right]\tag{1}\end{equation*}
在基本球面投影之后,投影图像需要进行归一化处理。获取最终点的具体函数定义如下 13:
\begin{equation*}\left[ {\begin{array}{l} u \\ v \end{array}} \right] = \prod\nolimits_s {(x,y,z)} = \left[ {\begin{array}{c} {\frac{1}{2}\left( {1 - \frac{\theta }{\pi }} \right){\omega _s}} \\ {\left[ {1 - \left( {\varphi + {f_{up}}} \right){f^{ - 1}}} \right]{h_s}} \end{array}} \right]\tag{2}\end{equation*}
图3. 单个球面投影计算核的内部框架。
在我们设计的单个球面投影计算核中;我们实现了上述两个公式的运算。具体内部结构如图3所示。涉及的若干三角函数的计算使用CORDIC IP实现。单个球面投影核内部的流程如图4所示。
图4. 单核球面投影内部流程图。
B. 多点并行双RAM访问实现方式用于法向量特征
为准备后续的点对点配准,我们需要获得表面法向量。在14(文献中),使用叉乘方法来计算法向量,而在本工作中,我们使用来自15的方法来计算法向量。
图 5. 四核并行扫描计算距离图像的过程.
我们使用固定窗口构建邻域点集并选择最近邻点。对于满足要求的点子集,构造误差函数并进行最小二乘拟合,得到局部表面最佳法向量,误差方程给出在公式(3)中。点云子集可以使用协方差矩阵建模,并通过分解该协方差矩阵得到法向量。协方差矩阵的构造如公式(4)所示。特征方向根据最小特征值进行选择,并根据曲率排除不合适的点。
\begin{align*} & {\text{e}} = \sum\nolimits_{{\text{i}} = 1}^{\text{k}} {{{\left( {{\text{p}}_{\text{i}}^{\text{T}}{\text{n}} - {\text{d}}} \right)}^2}} \quad {\text{ subject to }}|n| = 1\tag{3} \\ & \sum = \frac{1}{{\text{k}}}\sum\nolimits_{{\text{i}} = 1}^{\text{k}} {\left( {{{\text{p}}_{\text{i}}} - \overline {\text{p}} } \right)} {\left( {{{\text{p}}_{\text{i}}} - \overline {\text{p}} } \right)^{\text{T}}},\overline {\text{p}} = \frac{1}{{\text{k}}}\sum\nolimits_{{\text{i}} = 1}^{\text{k}} {{{\text{p}}_{\text{i}}}} \tag{4}\end{align*}
图 6. 单核计算的内部结构,还包括一个用于特征值分解的模块.
在硬件实现中,我们为点设计了一个特征提取核心。由于每个点的计算是独立的,可并行处理。我们实现了四个特征提取核心并行运行。距离图像的扫描序列和并行计算方法如图所示。我们选择四行进行并行处理,水平向右扫描并将四个点同时送入特征提取核心进行计算。计算完成后,过程继续扫描右侧的下一个点。当一行的800个点计算完成后,扫描以三点的步长向下移动,完成整个距离图像的计算。四核在地图中并行扫描的具体顺序和方式如图5所示。
图 7. 单个特征提取核心的内部流程图.
单个特征提取核心的结构如图6所示,单个特征提取核心的内部流程如图7所示。对于除法计算,我们使用了除法IP。除此之外,还设计了协方差矩阵的特征值分解的重要模块。我们将协方差矩阵的特征值分解单独设计为一个独立模块,可在外围模块中反复实例化和调用。对于矩阵的特征值分解,我们使用了传统的Jacobi迭代方法。状态机作为迭代的主框架,如果迭代超过某一数据阈值,则会跳出。
第三节. 实验与评估
为了评估我们的设计,我们选择了Kitty数据集作为测试数据。由于我们的重点是加速前端数据准备,并且我们仍在使用现有算法进行加速而未做任何算法改进,因此不评估整体系统质量。相反,我们侧重于比较LiDAR捕获的点云数据。我们仅进行功能的简单比较以及实现的时间改进。
图8. 原始图像.
图9. MATLAB的两张结果图像,以及FPGA的两张结果图像.
我们展示了使用 MATLAB 平台的算法进行球面投影和特征提取后得到的两幅地图,以及在 FPGA 上实现该算法后得到的两幅地图,用以直观展示我们的结果。图 8 显示未处理的原始点云图像,而图 9 则展示了在 MATLAB 平台和硬件实现上处理后得到的顶点地图和法向量地图的对比,从中可以看出特征点映射表明提取的边缘点与法向量的正交性如预期所示。为评估我们的设计,我们选择了 Kitty 数据集作为测试数据。由于我们的重点是加速前端数据准备,并且我们仍在使用现有算法进行加速,未对算法做任何改进,因此不对系统整体质量进行评估。相反,我们侧重于比较 LiDAR 收集的点云数据。我们仅对实现的功能和时间提升进行简单比较。我们主要比较了在两种不同平台上实现的球面投影和特征提取算法的执行时间。首先,在 PC 端,我们使用 Intel Core i7‑12700 CPU,频率 2100 MHz,并在 MATLAB R2023a 上进行测试。FPGA 端的结果是使用 Xilinx Vivado 2022.2 软件和 Verilog 语言设计的,FPGA 板为 Xilinx Virtex UltraScale VCU129,频率 250 MHz。
我们评估了两种平台的时间性能,并详细列出了各阶段的时间,如表 I 和表 II 所示。可以看到,在 FPGA 上整体前端数据准备的加速比约为 2.57 倍,球面投影部分的加速比约为 3.55 倍,而特征提取部分的加速比约为 2.26 倍。特征提取部分的加速比相对较低,主要是由于特征分解的计算复杂度较高,一些迭代过程耗时更长,导致整体执行时间延长。此外,使用 Jacobi 迭代算法在速度方面可能不是最优方案。我们计划在未来研究中进一步探讨,看看是否存在更快的特征分解计算方法。
表 I.
表 II.
第四节:结论
在我们的工作中,我们已实现了球面投影和特征提取的硬件加速。球面投影部分主要通过双缓冲多核并行结构实现加速,而特征提取同样通过多核并行双端口 RAM 传输实现加速。根据我们的结果,硬件加速相较于基于 PC 的实现取得了 2.57 倍的加速。然而,与实时要求以及现有 GPU-CPU 混合架构相比,仍有显著提升速度的空间。目前,还没有针对球面投影和特征提取算法的 FPGA 硬件加速实现,虽然我们的加速效果可能不算显著,但仍为未来相关研究提供了基础和参考价值。此外,我们的研究存在一些局限,例如未聚焦低功耗实现,而低功耗也是自动驾驶中的关键问题。未来,我们还将探索更快的特征分解硬件实现方法以及更高效的加速硬件结构。