APP下载

基于OV7725摄像头智能车系统的设计与实现

2020-06-30叶梦君黄仰来雷改惠

关键词:舵机曲率小车

叶梦君,黄仰来,雷改惠

(湖北师范大学 机电与控制工程学院,湖北 黄石 435002)

0 引言

自动循迹智能车相当于无人驾驶智能车。无人驾驶技术难点在于路径信息的采集、处理和判断,其中路径信息的采集、处理直接影响着智能车判断的准确性。OV7725摄像头传感器相当于智能车的眼睛,小车通过传感器获取路径信息,对采集的图像信息进行滤波、路径识别,根据不同赛道的曲率值确定赛道类型;单片机采集到赛道图像左右跳变沿位置的加权平均偏差,对加权平均偏差选择合适的P、D参数进行PD算法控制舵机转向;将采集赛道图像二值化数据中心位置与左右跳变点位置的加权偏差进行函数拟合,调节参数得到合适的速度控制电机,最终实现小车的自主寻迹功能。

1 摄像头智能车系统硬件整体结构

摄像头智能车系统硬件分为6大模块:主控制器模块、电源模块、赛道信息采集模块和图像调试显示模块、方向控制模块、速度控制电路模块,摄像头智能车系统硬件整体设计框图如图1所示。

主控制器模块采用飞思卡尔公司推出的K60系列的32位微控制器MK60DN512ZVLQ10作为智能车嵌入式系统的核心控制单元,是整个摄像头智能车的“大脑”,完成各项任务的分配与协调。电源模块负责提供各子模块所需的电压,其中MK60DN512ZVLQ10需要3.3V电压,获取赛道信息的OV7725摄像头供电电压为3.3V,方向控制模块中的SD5伺服舵机是6V供电,速度控制模块中的74HC244芯片供电电压为5V,测速编码器欧姆龙E6A2-CW3C标准电压为5V.赛道信息采集模块采用摄像头,通过摄像头采样以及硬件二值化,滤波处理,将得到的数据储存在二维数组中,通过路径识别算法提取偏差。方向控制模块使用的是SD5数字舵机,该舵机转向灵活、反应速度快且力矩较大,通过赛道中心线部位与小车位置的偏差,由相应控制算法控制舵机灵活转弯。通过PID算法以及灵活调整PID参数,由给定中断的时间间接获取小车速度。停车由摄像头采集图像内的黑白跳变沿个数来决定。

图1 摄像头智能车系统硬件整体设计框图

1.1 主控制器模块

采用飞思卡尔公司推出的K60系列的32位微控制器MK60DN512ZVLQ10作为智能车嵌入式系统的核心控制单元。MK60DN512ZVLQ10具有高达512KB片内Flash程序存储器,128KB SRAM,运行频率高达100MHz,16路通道的通用DMA控制器。片上集成有电压调节、在线调试、时钟产生定时器、A/D转换、D/A转换和PWM输出等模块,满足智能车系统的需要[1]。

1.2 电源模块

电源是保证智能车正常工作的基础,使用7.2V镍镉充电电池作为控制电源。由于系统各个部分所需额定电压不同,主电源(7.2V)经过升压电路(MC34063)转换为12V给速度控制电路模块电机供电;主电源(7.2V)经过降压电路(TPS7350)转换为5V给方向控制模块舵机供电;主电源(7.2V)经过降压电路(AMS1117)转换为3.3V给主控制器模块、赛道信息采集模块OV7725、图像调试显示模块TFT小液晶供电[2]。

1.3 赛道信息采集模块

赛道信息获取是智能车稳定快速运行的根本保障。赛道信息通过0V7725摄像头进行采集,0V7725摄像头采集速率可达每秒150帧,具有强大的去噪点和抗干扰功能,直接采用硬件二值化,将采集的数据直接二值化处理,无需软件二值化,减少CPU占用,提高智能车的速度[3]。

1.4 方向控制模块

摄像头智能车能够围绕着赛道中心线稳定运行依靠舵机转向功能。方向控制模块采用的是SD5数字舵机,该舵机具体低成本、高扭矩、响应速度快的优点。舵机有三根接线,红色线接6V电源、黑色线接GND、白色线为舵机信号控制线,接PWM输出端。本智能车舵机信号线接单片机的PTA8引脚,通过单片机的控制信号来调节舵机的脉冲占空比来实现舵机的转向功能[4]。

1.5 速度控制电路模块

速度控制模块主要由电机、电机驱动电路、编码器等组成,与主控器一起构成闭环控制系统。如果单片机输出的PWM信号直接给到电机,会造成电机转动产生过大的电流可能将单片机烧毁,故需要通过电机驱动电路来控制电机。因为电机采用的RN-540直流大电机,电流较大,驱动电路采用IRF3205与IR2104组成的H桥电路更加安全有效,主控制器输出一路PWM控制信号驱动IR2104芯片,控制H桥以及驱动电机正反转[5]。

2 摄像头智能车系统软件设计

本智能车系统以MK60DN512VLQ10微控制器为核心控制单元,0V7725摄像头传感器采集赛道信息并直接进行硬件二值化处理,单片机对摄像头采集的二值化赛道信息进行曲率计算以分辨赛道类型。利用摄像头采集的赛道信息,对每一行取中值与物理中值作差,偏差加权取平均,采用不同的P、D参数,利用偏差的PD控制算法,控制舵机转向。针对不同的曲率给定不同的速度期望,由控制器、电机驱动、编码器构成一个闭环控制系统,通过PID算法,实现速度控制,速度与舵机偏差结合,实现速度分段控制。最终实现小车在不同曲率的赛道上稳定快速的行驶。摄像头智能车软件系统主要由以下4个部分组成:图像滤波、图像类型识别、方向控制、速度控制。

2.1 图像滤波

0V7725摄像头直接对采集的赛道信息进行硬件二值化处理,为了较好地识别赛道类型,首先要对摄像头采集赛道的二值化信息进行滤波处理,采用中值滤波算法,即对每一行遍历。当发现某一点的前一个点和后一个点同为黑点或者白点,与该点不同,则将其进行平均转化为黑点或者白点。针对0V7725摄像头采集的直道、弯道、环岛道、十字道和Ω道不同位置处赛道信息的二值化图像经过滤波处理后的二值化图像,摄像头采集不同赛道二值化图像经滤波处理后图像如图2所示。

(a)摄像头采集的直道二值化图像经滤波处理后的图像

(b)摄像头采集的弯道二值化图像经滤波处理后的图像

(c)摄像头采集环岛道前后二值化图像经滤波处理后图像

(d)摄像头采集的十字道二值化图像和滤波处理后的图像

(e)摄像头采集的Ω道二值化图像经滤波处理后的图像

2.2 赛道类型的识别

在采集到滤波处理后的图像,要对图像的有用信息进行压缩处理,提取赛道中心线和判断赛道类型。为保证小车在赛道行驶过程中舵机打角连贯及时且速度快,需要对不同的赛道类型选择合适的参数,因此识别出赛道类型十分重要。一般通过赛道曲率来识别赛道类型。曲率就是指赛道的弯曲程度,故区分不同赛道类型可以转换为区分不同赛道的弯曲程度。如果能够知道不同赛道的曲率值,那么就可以区分出赛道类型。

常用的曲率算法有三点求曲率法和单点求曲率法。由于摄像头会存在图形微小畸变,故选择单点求曲率法,该曲率法在图形畸变很小的情况下可以直接使用,无需校正图像。如图3单点求斜率法显示小车在赛道上的模型。

图3 单点求斜率法显示小车在赛道上模型

小车当前在赛道A处,摄像头检测到前瞻为h处的赛道信息。假设小车在白色赛道中心线上,这时摄像头上中心探测线与赛道在小车车身处的切线垂直。根据小车硬件构架,前瞻h数据已知,而传感器又可测出小车前瞻处点B和赛道中心线的偏差l。又因为赛道AC段可看成一段圆弧,由图中图形的几何性质,易知△ABC和△ODA相似。

因此可以算出AC段曲率:

式中h为常量,与硬件自身有关,只需要知道变量l则可以计算出曲率。

即曲率k与小车前瞻处点B和赛道中心线的偏差l成正比。通过实验的反复测试,将小车在不同赛道类型上进行推动,并左右移动,通过OLED进行参数显示,确定出小车在不同赛道类型曲率值最大范围和最小范围。通过测试直道曲率范围[-0.1,0.1],小s弯道曲率范围[-0.25,-0.12]或[0.12,0.25],大s弯道曲率范围[-0.45,-0.25]或[0.25,0.45],直角弯道曲率范围[-0.65,-0.5]或[0.5,0.65],Ω弯和直角弯道与大弯道曲率均有交集,因此将Ω弯曲率范围取直角弯道曲率范围[-0.65,-0.5]或[0.5,0.65].根据曲率值的大小,确定小车所在的赛道类型,针对不同赛道类型,选取合适的参数,控制舵机灵活打角。

2.3 方向控制

OV7725摄像头采集到的图像的二值化数据为60行80列,为减少单片机处理时间和舵机打角的准确性,将采集图像的二值化数据前6行和后6行丢掉,使用中间的48行数据,从中间第40列处每行数据往两边扫直至找到左右跳边点得到赛道左右宽度k1,k2,若找不到跳边点则默认第0列和第80列为跳变点,算出每一行偏差k3=k2-k1,如果k3>0,代表舵机需右转;若果k3<0,舵机需左转,得出每一行的偏差后,将前16行偏差之和A1乘以一个权重k4,中间16行偏差之和A2乘以一个权重k5,后16行偏差之和A3乘以一个权重k6,再进行加权平均得平均偏差A4=(A1*k4+A2*k5+A3*k6)/(k4+k5+k6);A4即为舵机位置式PID函数的输入值,平均偏差A4=0,舵机不打角;平均偏差A4>0,小车位于赛道中心线的左边,舵机需要右打角;平均偏差A4<0,小车位于赛道中心线的右边,舵机需要左打角,为保证舵机打脚连贯顺畅,可以将连续几场的A4进行权重再取平均。根据曲率值,得知不同赛道类型,选择合适的参数P、D,使智能车在不同赛道类型达到较好的流畅打脚效果。通过反复实现测试,不同赛道类型,即不同曲率对应的舵机P、D参数如下:曲率范围为[-0.1,0.1],对应直道,方向控制PD算法对应参数为kp=0.3,kd=0;曲率范围为[-0.25,-0.12]或[0.12,0.25],对应小s弯道,方向控制PD算法对应参数为kp=0.66,kd=0.1;曲率范围为[-0.45,-0.25]或[0.25,0.45],对应大s弯道,方向控制PD算法对应参数为kp=0.75,kd=0.9;曲率范围为[-0.65,-0.5]或[0.5,0.65],对应Ω弯与直角弯道,方向控制PD算法对应参数为kp=0.97,kd=1.

2.4 速度控制

对于速度控制,主要是将主控制器、电机驱动、电机、编码器构成一个闭环PID控制系统来进行速度控制。由于赛道元素复杂,为了保证小车能在连续急弯快速稳定地通过,需将小车速度与采集赛道图像二值化数据中心位置与左右跳变点的位置的加权偏差进行函数拟合,调节合适的参数,得到合适的速度,确保小车在赛道外侧通过舵机修正稳定驶过赛道,在赛道中心快速行驶。依据曲率可以得出赛道类型,每一赛道类型会有一个速度期望,通过增量式函数计算出输出速度,然后将输出速度与舵机打脚偏差abs(ddeviation-dmedian)和连续两次舵机偏差的差nerror拟合一个函数关系式,得出最后的输出速度。

ecpectedspeed=speed-k1*kp1*abs(ddeviation-dmedian)-nerror*k2;

式中speed为增量式函数计算出的输出值(即输出脉冲);ddeviation为舵机偏差,即左右跳变点位置的加权偏差;dmedian为舵机中值,即采集赛道图像二值化数据中心位置对应舵机值;nerror为两次舵机偏差之间的差;通过实验测试,k1=0.4,kp1=0.2,k2=0.5;

通过反复实验测试,不同赛道类型,即不同曲率对应的电机期望值如下:曲率范围对应直道,电机期望值djexpect=400;曲率范围对应小s弯道,电机期望值djexpect=300;曲率范围对应大s弯道,电机期望值djexpect=250;曲率范围对应Ω弯与直角弯道,电机期望值djexpect=250.

3 小结

本文介绍了摄像头智能车系统各模块的硬件设计和软件设计及实现。通过反复调试,选择合适的参数,最终实现摄像头智能车快速稳定直行及循迹转弯。

猜你喜欢

舵机曲率小车
儿童青少年散瞳前后眼压及角膜曲率的变化
面向复杂曲率变化的智能车路径跟踪控制
大车拉小车
自制小车来比赛
Shrinking solitons上Ricci曲率的非负性*
刘老师想开小车
两轮自平衡小车的设计与实现
基于dsPIC单片机的飞艇舵机控制实现
不同曲率牛顿环条纹干涉级次的选取
超音速舵机保护器