系统与设计
的意见

让汽车鸟瞰

如何利用fpga构建汽车视觉监控系统。

受欢迎程度

如果自动驾驶汽车在我们周围行驶,世界会变得更美好吗?还是会不安全,很吓人?也许有人会问这样的问题,甚至在1769年第一辆能够载人运输的蒸汽动力汽车制造出来的时候!

作为一个喜欢开车的人,我不想拥有一辆“完全”自动驾驶的汽车,但我希望得到一些帮助(从汽车),以避免事故。

先进驾驶辅助系统(ADAS)可以以多种方式帮助驾驶员,例如提供360度汽车环绕视图、鸟瞰视图、向前碰撞检测、智能后视图、驾驶员睡意检测、行人检测、盲点检测和车道偏离检测。

由于驾驶辅助系统的敏捷性是至关重要的,处理单元应该是高性能的,以提供上述功能。此外,随着电动汽车的出现,拥有低功耗但高性能的处理系统涵盖了大多数主要要求。众所周知,fpga具有低功耗和高性能,因为我们可以使用它们加速计算量大的算法。

我在另一篇题为《为什么fpga是ADAS应用程序比cpu、gpu和asic更好的选择》的博客中讨论过如何开发基于fpga的ADAS嵌入式视觉应用.此外,该博客还介绍了一个使用fpga的司机睡意检测应用程序的开发过程。在本博客中,您将了解作为ADAS子集的鸟瞰,以及如何使用fpga实现它。

什么是鸟瞰?
鸟瞰是一种用于汽车ADAS技术的视觉监控系统,可提供360度自上而下的视图。这个系统的主要好处是帮助司机安全地停车。然而,它可以用于车道偏离和障碍物检测。该系统通常包括4到6个安装在汽车周围的鱼眼摄像头,以提供汽车周围环境的左右前后视图。


图1:鸟瞰相机设置

运行这样一个系统所需的硬件和软件将在以下部分进行解释。

硬件设置
如前所述,fpga作为ADAS处理单元,在功耗和性能方面优于gpu、asic和cpu,已经显示出令人信服的结果。你可以阅读更多相关内容在这里.由于fpga的主要竞争对手是gpu,特别是在并行方面,我专门写了另一篇博客来进行比较fpga vs gpu,我强烈推荐你读一读。

Aldec设计和创造一个鸟瞰应用程序帮助ADAS设计师。方法实现此应用程序TySOM-3-ZU7EV嵌入式开发板FMC-ADAS子卡四台蓝鹰相机,每台192度广角镜头,每秒30帧。下图显示了为这个演示设置的硬件设备。


图2:鸟瞰演示设置

使用TySOM-3-ZU7EV开发板的主要优点之一是它包含Xilinx Zynq US+ MPSoC设备和实现ADAS应用程序所需的所有必要的外围设备。Zynq设备拥有ARM处理器核心和集成在单个芯片上的FPGA,这为您提供了更多的灵活性。你可以阅读更多关于Zynq设备结构的信息在这里

软件设置
用于创建此设计的主要软件工具是Xilinx SDSoC工具而且Vivado设计套件.SDSoC包括一个易于使用的Eclipse IDE和Zynq MPSoC设备的完整开发环境。该工具的主要优点是在可编程逻辑中自动化软件加速;也就是说,你可以用C/ c++编写算法,并使用这个工具将它们转换为HDL。Vivado工具用于Xilinx Zynq US+ MPSoC设备的硬件创建和比特流生成。

鸟瞰算法实现
让我们来详细介绍一下如何使用Zynq设备实现鸟瞰演示。为了使用这一实现或使用SDSoC工具定制应用程序,Aldec为我们的TySOM-ADAS工具包提供了SDSoC平台。该平台为您提供了现成的硬件,涵盖了TySOM-3-ZU7EV板上的所有外设。它还包括FMC-ADAS和相机ip的HW设置。它还包含在电路板上使用的Linux二进制文件。基本上,该平台为您提供了开始设计ADAS应用程序所需的一切。您可以在下面的图像中看到预构建硬件的概述。


图3:使用Vivado为鸟瞰设计的HW

的发展鸟瞰应用程序有六个主要步骤。为了达到30fps,我们需要将一些算法加速到FPGA中。


图4:鸟瞰实现步骤

1.帧捕获:在这一步中,我们读取了四个相机的帧,它们通过FMC-ADAS通过高速连接器连接到FPGA。

2.帧调整:捕获的图像比我们需要的大,所以调整了它们的大小。该步骤在FPGA内部加速。通过准备四个调整大小的函数,我们可以通过同时调整所有四张图像的大小来加速这一过程。

3.去除镜头畸变:如前所述,用于这个项目的汽车相机有192度宽镜头。这种广角产生了一些问题,特别是在镜头边缘显示直线时。那样的话,这条线就不会完全笔直了。为了消除这些失真,我们必须使用算法——这些算法在FPGA内部再次加速。

4.视角转换:有一个主要的透视效果的相机环绕视图。这些影响给先进的图像处理带来了困难,也给驾驶员准确测量距离带来了问题。如下图所示,原始图像应该转移到鸟瞰图。


图5:透视转换

5.创建最终图像:调整视角后,我们就有了每个视图(右、左、前、后)的图像。为了制作360度鸟瞰图像,需要将它们缝合在一起。拼接前,将图像重叠部分去除。这一步是在Zynq设备的ARM处理器内部完成的,因为它不需要加速。

6.显示结果:现在我们已经准备好了所有的图像,我们只需要在屏幕上显示它们。为此,我们使用了TySOM-3-ZU7EV板上的DisplayPort,这为我们提供了更好的性能。它还可以处理多种分辨率。提示:如果你自己做这个练习,为了测试设计是否工作良好,我们建议在HW设置下使用一个棋盘来帮助你评估失真的水平。下面的图像显示了屏幕上的输出。在屏幕左侧,您可以看到汽车的鸟瞰结果。在这个演示中,树脂玻璃汽车被模拟成一辆真正的汽车。


图6:鸟瞰演示

上述演示单元目前已在包括2018年嵌入式视觉峰会和DAC 2018在内的多个贸易展会上展出,并引起了ADAS设计师的极大兴趣。您可以观看在加利福尼亚州圣克拉拉的2018年嵌入式视觉峰会上拍摄的演示视频在这里

在这篇博客中,Aldec的鸟瞰参考设计被一步一步地解释。在以后的博客中,我们将介绍更多的算法,如ADAS的前向碰撞检测和物体检测。

参考
[1]埃克曼,埃里克(2001)。《世界汽车史》。SAE出版社。14页。ISBN 9780768008005。
[2] Appia, Vikram,等人。“TI TDAx soc上的ADAS环绕视图摄像系统。”德州仪器,2015年10月。
[3]罗林波等。基于查找表的车载摄像头鸟瞰系统硬件实现。国际数字内容技术及其应用杂志6.15(2012)。
[4]刘玉智,林凯英,陈永胜。“用于车辆周围监控的鸟瞰视觉系统。”机器人视觉国际研讨会。柏林,海德堡,2008年。
[5]罗林波等。“车载摄像头鸟瞰系统的低成本实现。”消费电子(ICCE), 2010年技术论文文摘国际会议。IEEE 2010。



Baidu