基于Kinetis60的智能循迹小车设计
摘要:智能循迹小车可以根据前端摄像头的输入图像识别出道路状况,通过优化智能车的软硬件设计,能够确保其在不同环境下行驶的快速性和准确性,本文以Kinetis60为核心处理器,完成了智能车路径检测、速度检测、数据传输模块、电机舵机驱动模块的设计与实现,并在此基础上提出了一种利用摄像头实时图像进行智能车循迹判断的方法,能够提取出精确的路径特征信息,实践证明该方法具有可行性。
随着智能交通系统的广泛应用,智能车的系统控制也逐步成为一项新兴技术,该领域涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科。本方案采用摄像头作为信号采集的传感器,根据摄像头采集的图像进行精密计算,确定速度参考和舵机转向参考。摄像头组的智能车对于道路信息预测能力强,而且摄像头对道路的探测精细,视角范围大,因此受到众多智能车设计者的欢迎。但摄像头图像受周围光线的影响大;算法运算量大,算法复杂,需要占用较多的NCU资源,因此其中图像识别算法的设计成为系统设计的关键步骤。
1 系统设计
智能车系统由核心处理器KINETIS60、路径检测模块、起跑线检测模块、车速检测模块、电源模块,无线数据传输模块、电机驱动模块、舵机驱动模块组成。其中摄像头组的路径检测模块由OV7620摄像头实现。
车速检测模块由编码器构成,实现速度的实时采集。电机驱动模块由八片IRF3205构成H桥来实现。电源模块由三块LM2940组成。舵机使用S-D5连接至PWM引脚,起跑线检测模块由两个TCRT5000以及一个LM339组成。无线数据传输通过NRF24L01进行数据传输。
智能车由路径传感器采集得到前方道路的图像,从中提取出有用信息,判断所处的跑道类型(直道,大弯道,S弯道),确定小车的舵机转向及车速。从而通过电机和舵机驱动小车流畅地在跑道上行进。系统框图如图1所示。
2 软件算法总体设计
本方案中,以IAR为开发工具,系统软件设计包括以下几个方面:系统初始化、视频图像信号采集、小车的方向(舵机)控制和速度(电机)控制。系统软件流程罔如图2所示。
3 图像采集
OV7620是CMOS彩色/黑白图像传感器。它支持连续和隔行两种扫描方式,VGA与QVGA两种图像格式;最高像素为664×492;数据格式包括YUV、YCrCb、RGB3种,能够满足一般图像采集系统的要求。
由于芯片处理能力不足以达到PC的运算能力,因此本方案采用了黑白摄像头,由于受片内总线频率的限制,每行能够采集到的点数有限而且图像质量很差,并且会占用CPU大部分的时间,所以我们采用了K60自带的DMA进行数据采集,实践证明,DMA能够采集到绝大多数的点,并且图像质量很好。
为了更好的检测黑线中心位置,要保证单行上有足够的点,为了提高处理速度,可适当降低采样行数,综合了以上条件,最终决定采用100行信息进行方向判断,每幅图像大小限定为180×100。
4 图像识别
摄像头智能车系统是否能辨识正确的方向的关键就是其中的图像识别算法的设计,在本算法中根据采集来的图像,首先进行图像二值化,然后再对二值化后的图像进行去噪处理,得到只含有赛道黑线的图像,再对图像进行图像识别,根据设定的阈值进行方向识别,得到的结果送至舵机控制模块进行舵机的方向控制。基于图像识别算法的路径识别流程图如图3所示。
4.1 黑线提取
二值化是一种广泛使用的图像分割技术,它利用了图像中要提取的目标物与其背景在灰度特性上的差异,把原图像变为仅用两个灰度值表示的图像目标物和背景的二值图像,考虑到所采集的图像目标物(黑色中心线)与背景(白色跑道)的灰度值差异比较明显,采用固定阈值法进行图像的二值化。二值化的实现是由下面的公式来实现:
式中g(x,y)为二值化结果;T为阈值,f(x,y)为原图像的灰度值。
本方案采用固定的阈值进行图像二值化,因为单片机没有足够的时间进行动态阈值计算。因此要确定一个合理的算法来确定一个固定阈值,小车在不同光照条件下的图像阈值不同,因此小车每一次启动时计算一次固定阈值,如图4所示。
4.2 舵机及电机控制算法
提取出图像的中心线以后,需要根据中心线的位置,来判断赛道的类型,区分直道、S型弯道和左转弯和右转弯。利用摄像头识别道路在识别性能方面具有优势,相对于光电和电磁传感器,可以有较远的前瞻距离,赛道信息不是根据单行数据来判断,而是根据每幅图像的多行信息来判断。根据前述,每幅图像采用80行的信息进行判断。
根据二值化图像的结果,以图像重心为界,分别计算边界左右侧白点数目和(式2、式31,然后对左右侧白点数和left