基于PYNQ 的神经网络自动驾驶小车设计

2022-03-03 11:28曾文壮饶梦瑶杜浩文
现代工业经济和信息化 2022年1期
关键词:调用小车摄像头

洪 坤, 郭 旻, 曾文壮, 胡 珩, 饶梦瑶, 杜浩文

(武汉纺织大学, 湖北 武汉 430073)

引言

道路交通标识引导道路使用者有秩序使用道路,以促进道路行车安全,在驾驶辅助系统中对交通标识的识别则可以不间断地为整车控制提供相应的帮助。对于交通标识的正确识别及精准应用可以为驾驶辅助系统和自动驾驶提供有力支撑。本次设计将着重介绍利用PYNQ 识别交通路标的自动驾驶系统,是对驾驶辅助系统和自动驾驶的有益探索。

1 系统总体方案设计

本系统包含PYNQ 识别模块、电源模块、STM32小车模块、通信模块、扩展板模块等。系统总体框架和结构设计如图1 所示。

本设计主要是利用PYNQ 的硬件识别算法,实现基于交通标识图片训练集。训练的BNN 神经网络,由于硬件识别算法是基于FPGA 的快速并行算法,其运算速度远大于软件算法,实时性更好。超声波不断检测前方路标的距离,当小于一定距离时,就控制PYNQ 识别模块开始拍照识别,对识别的结果进行解析,小车执行识别结果并做出相应动作,达到自动驾驶的功能。

2 系统硬件电路设计

2.1 PYNQ-Z2 开发平台

PYNQ-Z2 是一款支持PYNQ 开源框架的开发平台。为了发挥Xilinx Zynq All Programmable SoC 的所有功能。在PYNQ 的框架下,在PS 端实现的就是基于Linux 操作系统,API 层的C 语言驱动,然后通过jupyter Notebook 映射到顶层的python 语言。我们的PYNQ 的框架就是在Cortex-A9 里面去实现的,通过AXI 总线外挂之后,配合PYNQ 提供的BaseOverlay 的底层硬件实现对PYNQ 这块板子上面 的Pmods、HDMI、Arduino、LEDs、Buttons、Switches和Audio 等接口的控制。本次设计中PYNQ 负责识别功能,能够在正确的位置启动拍照,保存图像,识别图像内容,并且将识别的内容传输到控制小车的单片机,小车做出相应的动作,完成运行。

2.2 单片机系统

单片机部分需要有配合PYNQ-Z2 开发板的设计功能的架构设计。把PYNQ 部分的功能定义成一个硬件IP 核,单片机需要调用这一个IP 核,完成对应的功能。单片机通过超声波在检测距离小于120 cm 的情况下,开始调用PYNQ 的IP 核,检测PYNQ返回得到通信电平,分析通信电平数据,然后做相应的小车控制操作,如左转,右转。当距离大于120 cm 时,则不需要检测,小车直接运行。

本单片机系统主要外扩了超声波模块、电机驱动、舵机模块和陀螺仪模块等。在while 循环之前,必须先完成各模块的初始化,对小车初始化,对电机、PWM波和串口等初始化。此外,继续在循环中调用各种配置资源,同时要和PYNQ 的初始化资源同步,方便传输信息和调配资源。见下页图2。

2.3 摄像头模块

本次我们使用的摄像头模块是工业100 万像素摄像头,在PYNQ-Z2 的开发板上,有USB 的输入接口和HDMI 的输出接口,首先调用PIL 文件库,定义好拍照的文件路径,直接使用python 语言调用USB工业免驱摄像头拍照,然后保存在自定义的文件路径中。

3 BNN 神经网络识别

本次设计用到的BNN 网络,即二值化神经网络。其优点是二值化的神经网络可最大限度地减少网络占用空间和资源分配方式。资源合理分配,简化网络模型。

在循环内部调用神经网络,拍照一次就初始化一次,要不断调用神经网络。由于对图片的神经网络识别处理和根据识别结果的GPIO 处理可以互相区分开,在神经网络识别出来结果之后,重新再调用一次BaseOverlays,可以继续控制PL 端口对应的通信设置。

4 系统调试及分析

在神经网络识别之后,重新定义BaseOverlays,完成对单片机的通信输出。程序运行的最后结果达到识别速度的要求,并且可以控制PYNQ 不停地识别和拍摄识别照片。经过测试,数据和图片可以完整地被保存在指定的文件夹中,同时也可以调用Python 代码使用image 函数将其显示出来,调用神经网络对图片进行识别,可以得到所有的识别结果。在本次设计中使用的BNN 交通信号数据集,将所有的交通信号符号分为43 个类别,每一个类别对应一个特定的交通信号。

为了解决这种路标识别连续性的问题,以及综合的路线设计,规定每次转弯时,无论是左转还是右转,都转动一个标准角度。但是智能小车没有所谓的检测角度功能,小车的转向又都是利用延时函数来直接判断的,所以就必须要利用能够检测角度的陀螺仪来固定转向的角度。先检测当前的角度方向,再根据转向的方向,设置目标角度,在不断修正的过程中,不停地检测和判断误差的大小。当总的误差小于0.5°时就跳出循环,见图3。

5 结论

经测试,本系统能够通过摄像头成功识别各种交通标识,成功率高,并能根据交通标识控制智能小车实现自动驾驶功能。该系统功能实用、可靠性高,具有一定的推广价值。

猜你喜欢
调用小车摄像头
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
大车拉小车
自制小车来比赛
核电项目物项调用管理的应用研究
系统虚拟化环境下客户机系统调用信息捕获与分析①
刘老师想开小车
两轮自平衡小车的设计与实现
奔驰360°摄像头系统介绍
利用RFC技术实现SAP系统接口通信