基于TX1和立体相机的无人机避障系统

描述

基于TX1和立体相机的无人机避障系统
1 引言
与传统的有人遥控飞行器相比,自主式无人机具有许多优点。例如,有人遥控飞行器依赖于正确的人类命令,并且受限于人和遥控平台之间的通信系统。如果通信系统被干扰或中断,它将无法运行。或者在某些复杂环境下,只靠操控人员的技术也难以保证遥控飞行器的飞行安全。而自主式无人飞行系统可以改正这个缺点。自主式无人机使用避障技术,可实现自主无人驾驶,摆脱人类的手动操作,因此可以执行部分高风险任务。无人机是以机载高清摄像机、GPS 和导航传感器提供实时、精确定位或高分辨率图像的最佳平台之一。这些特点使无人机成为传统载人遥控飞行系统的有效补充。

虽然无人机比传统的有人遥控系统具有更多的优点,但仍存在一些潜在的问题。例如,在不同环境下信号传输的处理时间受其自身电源系统(电池或其他电源辅助系统)的限制,并且飞行条件受各种自然因素的影响,比如环境和天气。对于图像处理,光反射将影响无人机中摄像机的检测结果。2016 年 5 月发生的特斯拉自驾车辅助系统的事故受到了白色背景面反射阳光的影响。由于反射,摄像机无法检测到来自相反方向的车辆。同时由于飞行时间的限制,无人机的反应时间和数据处理时间都是需要考虑的问题。对于这些问题,研究人员需要在硬件和软件性能之间找到平衡点。特别是在无人机避障技术中,如何快速准确的对对象进行检测仍然是一个挑战,因为它需要高速的计算。

为了优化图像处理的计算速度,并使用简单的方法来检测无人机中的物体,本文提出使用图形处理单元(GPU)作为数据计算中心,使用立体相机作为无人机的视觉系统,提出了一个实时视频分析的优化算法。

2  相关工作

使用高性能平台来提高系统性能是无人机研究人员的共同解决方案。一个典型的无人机公司是大疆创新科技有限公司,他们的无人机使用 NVIDIA TK1 处理数据并连接高清摄像机进行实时录像和地理扫描。为了观察特定的目标,国外研究人员使用了尺度不变特征变换(SIFT)模型检测车辆,图像匹配模块使用 SIFT 来匹配图像中的相同区域,然后重新采样[1-6]。

无人机探测物体的另一种方法是使用立体相机。该方法采用两个 360º 摄像机来感知无人机周围的障碍,使用垂直而不是水平相机位移计算除天顶和底部之外的所有观察方向上的深度信息[7]。

以此基于高度、宽度和相对相邻点的可穿透斜率对三维空间中的点进行分类。单目摄像机也可以用来检测障碍物,使用的障碍物分割算法根据不同的颜色来检测障碍物[8]。

3  平台设置

本文采用一对摄像机来实现立体视觉。同时,考虑到无人机的载重和尺寸以及处理器的计算能力,本文采用了 ZED 立体相机和 NVIDIA TX1 GPU。 TX1 比 TK1 的视频编码快两倍,并且 TX1 的内存带宽(25.6 GB/s)大于 TK1(15 GB/s)[9]。两个摄像头水平放置以记录视频捕捉图像。

在本文中,摄像机将捕获无人机前方 120º 视角范围。此外,它可识别从最近 70 cm 到最远 20 m 的障碍物。

4  深度图估计

这两个摄像机可以支持高分辨率的视频记录和 3D 映射,并且可以提供 6 轴位置跟踪。然而,无人机探测系统只需要 2D 图像数据进行分析。本文中这两个相机的分辨率是 1 280×720 像素。

图 1 表示照相机视野范围。大方格是相机视野区域的范围,小方格是相机的远视区域。

在得到两幅图像之后,计算机需要计算视差,即从图像像素到摄像机的距离。

对于左侧图像中的每个像素,计算到右侧图像中对应像素的距离[10],见图 2。

得到立体图像后,可以计算出摄像机与目标之间的距离。此实验中计算每个像素从图像到相机的距离。我们把距离 B 表示为距离 B1 和 B2 之和[11]。

(1)

距离 D 为式(2)。

(2)

图 3 为用两个相机拍摄的物体(树)。

在本文中,每个像素可以被看作这个图中的每棵树。在计算每个像素距摄像机的距离时,系统可以获得图像的深度图,如图 4。

在图 4 中,不同的颜色表示图像和相机的距离。比较图 4 以及图 1,如果像素靠近照相机,颜色是亮的,如果像素远离照相机,则颜色是暗的。

5  算法实现

该算法分为三个部分:深度计算、方形尺寸查找和中心点距离计算。输入数据集是 2D 图像阵列,表示每个像素在图像上的位置。在获得每个像素的深度之后,设一阈值将图像分成大于阈值和小于阈值两部分。前者表示无人机的“障碍物”,后者表示无人机的“安全区域”。

接下来的每一步,无人机将数据传输到内核,再从内核获取数据。这里的关键是如何优化 CPU 和 GPU 之间的负载平衡。由于本文选取的图像分辨率为 1 280×720,为了计算每个像素的距离,本文使用 2D 映射,这样可以最好地利用该系统的计算速度。

内核的线程我们设成一块 256 个像素,像素总数为 1 280×720=921 600,这样就有 3 600 个块进行并行计算。这可以保证在飞行中获得理想的计算性能。首先获取每个像素的距离并分配每个像素。例如,有三个像素。它们与相机的距离是 3.23 m、2.52  m 和 1.53 m。在阈值为 2 的情况下,它将第一和第二像素分配为 1(它表示安全区域),将第三像素分配为 0(这意味着障碍点)。

最后,该数组仅包含 0 和 1。在数组传输到 CPU之前,二维数组转换为一维数组,这样可减少 CPU 和 GPU 之间的同步传输。

下一步是找到安全区域。我们使用正方形来表示安全区域。当计算正方形大小时,线程和块的分布与第一步相同。在此步骤中,TX1 板还使用以下等式计算每个像素距图像中心点(640,360)的距离 D。

(3)

最后一步是从图像的中心得到最接近的正方形。在这个步骤,它将每个像素的距离值设置到每个线程中。这里使用的方法称为归约。它可以是阵列的最大/最小值,时间复杂度为 O(log n)。图 5 展示了并行归约的顺序寻址。

该算法的时间复杂度为 O(N/P+log n),其中 N 是数组中的总元素个数,P 是它的总块数,log n 是每个块的运行时间。

在这三个步骤之后,系统将得到最接近中心点的方形区域,以指导无人机的飞行,找到正确的路线。当确定方形区域的位置时,它可以根据区域的(x,y)坐标为无人机提供飞行指令。例如,如果正方形的中心位置是(200,150),则命令是“向左飞行然后上升”。

6  实验结果

该系统在无人机实验室环境进行了测试,图 6 显示了两个不同阈值的结果,棋盘代表了无人机能够通过的安全区域,也就是距离大于阈值的区域,如果距离小于阈值,则不做特别标记。

图 7 显示了走廊上的测试结果,当摄像机检测到障碍物时,它可以引导无人机的飞行路线,在图像上显示的黄色(浅色)文本。

该算法的时间复杂度是 O(n2),其中 n 是符合无人机大小的正方形区域的恒定大小。由于该 ZED 相机支持每秒 15 帧,所以每幅图像的处理需要 0.066 s。系统各部分测量后,结果如表 1。

从表 1 可以发现,求平方算法是整个系统中效率较低的部分之一,并且还受到如何设计平方大小的限制。因为当正方形的大小变大时,每个线程的工作量也会变大。光反射也是相机的常见问题;如果环境有强烈的光反射,相机就无法检测到任何东西。

7  结语

本文提出了一种基于立体相机和 TX1  GPU 的无人机避障方法。它使用两个摄像机来分析每个像素与摄像机的距离。然后,计算机通过比较距离和阈值来找到理想的安全区域,以便向无人机提供飞行指令。将来,无人机系统可以通过预先计算少量数据,作为输入数据重复该算法来进一步优化。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分