基于OpenMV的无人驾驶智能小车设计*
2023-08-28刘果青吴云飞高宏峰
王 桐,刘果青,艾 彤,吴云飞,杨 志,高宏峰
(河南科技大学信息工程学院,河南 洛阳471023)
0 引言
随着近年来5G技术不断发展,人们对生活要求更加智能化。智能小车[1]作为一种集合多种功能为一体的智能移动装置,可应用于医疗、物流、农业等各领域,提高了人们生活的智能化,为人们创造出更加舒适的工作和生活环境。视觉模块作为智能小车的 “眼睛”,对于小车的运行尤为重要,其综合了图像处理、光电等相关知识,一个好的视觉模块能够使小车在复杂的环境下快速而准确地进行巡线与识别。
为了能使小车更好地检测道路信息,本文设计了一种基于OpenMV的无人驾驶智能小车。小车利用OpenMV摄像头模块进行双黑线巡线以及红绿灯识别,摄像头实时采集、更新行驶过程中的道路情况,通过OpenMV摄像头处理后将信息传递给单片机,若路径发生偏移,由单片机通过PID算法控制PWM波的占空比,进而控制电机,实现差速,使小车及时回归正常路径。小车在整个过程中,通过WiFi模块,利用互联网技术,使用户可以通过手机或电脑进行实时监控。
1 系统工作流程
本设计的系统总体框图如图1所示,系统电源打开后,首先进行初始化,初始化完成后,摄像头采集图像,WiFi模块开始传送数据,WiFi模块以热点的形式将信息传送给连接热点的电脑或手机。若想手动操控小车,则用手机或电脑通过WiFi模块对其进行手动操控;若为自动驾驶,则先进行红灯检测,如果无红灯,则运用算法拟合出中线,然后将数据反馈给单片机,根据PID算法输出PWM波,控制小车前进。
图1 系统总体框图
2 硬件设计
在本设计的系统中,主控采用的是ARM公司生产的STM32H743单片机,感光元件采用MT9M114,WiFi模块采用与OpenMV摄像头配套的WiFi扩展板,电机驱动芯片采用TB6612FNG芯片,供电采用3.7 V锂电池。
2.1 MT9M114摄像头
道路数据的采集对小车的运行至关重要。本设计摄像头采用MT9M114,MT9M114可以自动曝光控制、自动白平衡、黑电平控制、闪烁避免和缺陷校正。它专为低光性能而设计,可以产生清晰的数字图像,并且其处理640×480 8-bit灰度图和640×480 16-bit RGB565彩色图像可以达到40 FPS,保证了WiFi模块进行图像传输时视频的流畅;当分辨率低于320×240可以达到80 FPS,可以快速地处理完图像。
2.2 WiFi模块ATWINC1500
图2所示为ATWINC1500 WiFi模块电路。WiFi模块采用3.3 V电源供电。其采用了ATWINC1500 FCC认证的WiFi模组ATWINC1500-MR210PB,它可以使用高达48 Mbps的速度传输视频流。ATWINC1500专门针对低功耗loT应用进行了优化,并且完全集成了功率放大器、低噪声放大器、开关、电源管理和PCB天线于一体。凭借无缝漫游能力和先进的安全性,它可以与无线局域网中各种供应商的802.11 b/g/n接入点进行互操作。
图2 ATWINC1500 WiFi模块电路
我们可以通过RXD与TXD和单片机的TXD与RXD引脚进行连接。并且通过WiFi模块,我们可以传输JPEG压缩图像到浏览器。当WiFi模块连接到互联网时,我们可以使用MicroPython的BSD socket网络接口通过 TCP和UDP进行发送和接收数据的操作。
3 软件设计
软件算法主要包括图像导航算法、PID算法、人机交互。
3.1 图像导航算法
图像导航算法核心是OpenMV摄像头对图像的处理。OpenMV摄像头在对采集到的图像进行处理时,主要采用二值化处理[2]和膨胀腐蚀处理。OpenMV摄像头从采集到的图像中提取出准确的路径需要设定一个阈值。这个阈值就相当于一个分割线,将采集到的像素分割成两类即:大于阈值的像素和小于阈值的像素。将小于阈值的像素定义为白色,大于阈值的像素定义为黑色,这就是二值化处理。而膨胀腐蚀是二值形态学中一对最基本的运算。膨胀是一种采用向量加法使边界向外部扩张的方法,它可以将与边界线接触的全部背景点合并到边界线中,使边界向外部扩张,来填补边界线:被看作膨胀的对偶运算是腐蚀。腐蚀是一种通过向量减法消除边界点的方法,它可以使边界向内部收缩,它不仅可以用来消除无意义且小的点使得二值化图像减小,还可以消除噪点,从而减小图像处理的运算量。
本设计的图像导航算法流程图如图3所示,开始先截取一张照片,判断是否为红灯。若为红灯,则通过判断红色像素点的总面积是否达到最小值,从而判断小车是否到达合适的停车距离。若不是红色或者没有达到面积最小值,则对图片进行阈值切割,对其进行膨胀腐蚀处理和二值化处理,处理后图像如图4所示。然后运用Theil-Sen线性回归算法[3],利用最小二乘法对图像中所有阈值像素进行线性回归计算,计算出图像中阈值像素的斜率的中位数,之后由霍夫变换得到该直线的两个参数距离偏差值和角度偏差值;然后根据拟合度是否大于8,判断拟合是否标准。拟合度是指直线的模,其越大,则说明线拟合得越好。最后根据距离偏差值和角度偏差值通过PID算法计算出速度的输出值。
图3 图像导航算法流程图
图4 处理后图像
3.2 PID算法
电机驱动算法采用PID算法,框图如图5所示。PID是积分和微分比例,应用于各种需要比例控制的设备中,最常见的就是电机转动控制,这里P是比例,I是积分,D是微分,电机转动控制中主要分为位置式PID和增量式PID,我们所用的为位置式PID算法,公式如下:
图5 PID算法框图
.
(1)
由公式(1)可知比例部分只和当前的偏差ek有关,积分部分则是表示系统之前的所有偏差之和,这正是体现出了位置式PID控制算法的优点:控制器结构比较简单,执行器的动作位置与其输入信号呈一一对应的关系,参数的整定也较为明确。
PID算法是通过控制输出的PWM信号来控制直流电机运行的。当小车转弯时,由上面的图像导航算法得到距离偏差值rho_err和角度偏差值theta_err,通过上述公式计算出输出的实际偏差值控制PWM信号的占空比,然后小车左右两轮电机分别在期望值的基础上加减PWM信号,进而实现左右车轮差速转弯,从而保证小车顺利通过弯道。
3.3 人机交互
人机交互部分核心是ATWINC1500 WiFi模块[4],我们所用的WiFi模块共有两种模式:接入点模式和客户端模式。接入点模式是将WiFi模块做为一个热点,用手机或电脑连接热点,即可看到小车运行的状况并对其进行控制,因为接入点模式是一对一连接,所以这种方式具有传输速度快,传输稳定的特点;而客户端模式则是将WiFi模块和电脑或手机连接到同一个无线网中,这种方式连接十分方便,但当有多个手机与无线网连接时,WiFi模块传输数据会非常不稳定。两者相比较而言,所以我们选用了接入点模式。
本设计的人机交互流程图如图6所示,开始时先对WiFi模块进行初始化并将其调为AP模式(热点模式),即接入点模式。WiFi模块初始化后,摄像头截取一张图片,然后压缩图片,给图片增加一个Header,然后发送Header和图片,如此往复将摄像头获取的每一帧图片发送至客户端,由此实现图传,图传完毕后则是判断是否接收到手动指令即mode=0,若接收到指令,则进行CRC指令校验,然后解析指令,执行指令,若没有手动指令则直接结束,传输下一张图片。
图6 人机交互流程图
4 结束语
本文设计了一种基于OpenMV的无人驾驶智能小车。本系统中,在车体结构、图像处理算法、电机控制算法等方面提出了方案,利用OpenMV摄像头模块,快速地进行图像处理,并将数据发送给单片机,单片机将数据经过PID算法处理输出PWM信号驱动电机,实现小车的运转。通过对模拟无人驾驶智能小车的实现,为初步构建智能汽车的模型与理论基础,为无人驾驶技术提供更多的可能,对无人驾驶智能小车的制作及无人驾驶技术的模拟具有重要意义。