很多Jetson用户在自动化解决方案中选择激光雷达进行定位和感知。激光雷达使用3D点云描绘周围的空间环境。点云可以高精度长距离采样物体表面信息以便于上层应用的障碍感知、绘图、定位和路径规划算法。
使用CUDA-PCL处理点云
CUDA PCL 1.0是基于CUDA开发的点云处理库,在本文中,我们将介绍目前所有的三个库:ICP,segmentation 和 filter。请参考相应的章节获取更多信息。
Jetson | Xavier AGX 8GB |
OS | Jetpack 4.4.1 |
CUDA | 10.2 |
PCL | 1.8 |
Eigen | 3 |
Table 1. 测试平台
CUDA-ICP
迭代最近点算法(Iterative Closest Point,ICP) 用于计算两帧点云数据之间的坐标变换矩阵,从而能够使不同的坐标下的点云数据合并到同一个坐标系统中。ICP算法 通过计算两帧点云的距离误差从而修正变换矩阵(平移和旋转)以便最小化距离误差,通常两帧点云之间的距离误差是通过匹配点的距离计算得来。ICP算法应用广泛,能够获得很高的匹配结果且有很高的鲁棒性,同时会耗费大量的计算资源。为了改进ICP算法在Jetson上的性能,我们推荐使用基于CUDA加速的CUDA-ICP。
GPU并行加速
Nvidia 的CUDA工具箱中提高了免费的GPU加速的快速傅里叶变换(FFT)、基本线性代数子程序(BLAST)、图像与视频处理库(NPP)。用户只要把源代码中CPU版本的快速傅里叶变换、快速傅里叶变换和图像与视频处理库替换成相应的GPU版,即可得到性能加速。除了Nvidia提供的函数库以外,第三方的GPU函数库有:
- <a href="http://alice.loria.fr/index.php/publications.html?redirect=1&Paper=CNC<a href=" https:="" github.com="" 2008"="" title="@2008" class="at-link">@2008">雅可比预处理共轭梯度(JCG)
- CUDA / GPU中的libSVM
- cuSVM:支持矢量分类与衰减的CUDA使用方法目前v-slam算法的主要是依赖CUDA开发加速的,为此,我们在GPU加速部分仅仅对CUDA进行举例介绍,等后面作者涉及到其他的加速后,再来扩充。我们在使用CPU并行计算的同时可以使用GPU加速,从而来耗费一定的GPU计算资源来提升视觉前端处理的能力。