刘杰 蒋沁宏
采用arduino模块和openMV模块采集通过红色滤光片后的颜色,找到红色信标灯并采用PID算法对赛车行进的方向、速度进行控制,使赛车能快、稳、准的通过车身的磁铁切割信标灯圆盘底座上的线圈将信标灯灭掉。同时采用红外传感器避障,避免赛车在行驶过程中撞灯或撞墙。测试结果表明,摄像头openMV能实时准确的给核心板传输数据,使赛车能准确的熄灭信标灯。
【关键词】Arduino openMV摄像头 红外避障L298N驱动 PID控制 滤光片
随着现代科技的进步和人工智能的飞速发展,自动控制的应用已经越来越广泛,竞赛车在现目前是比较热门的话题,也出现了很多智能赛车的竞赛,竞赛为智能赛车领域培养了大量的人才,为大学生提供了充分展示创造力和想象力的舞台,也吸引着越来越多来自不同专业的大学生参与其中。智能“寻的”赛车是多种赛车的一类,其目的是在12个红色信标灯被随机点亮某一个后,赛车能准确找到点亮的信标灯并将其熄灭。本设计系统涉及车模机械结构、主控电路、红外传感器电路、摄像头图像处理、电机驱动控制以及PID算法实现智能“寻的”和灭灯功能。
1 硬件设计
本设计系统主要由摄像頭图像采集模块、主控电路模块、红外避障模块、电机驱动模块、电源模块以及车模组成,硬件电路如图1所示。摄像头图像采集模块采用OpenMV摄像头模块,它是一个开源,低成本,功能强大的CMOS图像采集模块。以STM32F427CPU为核心,集成OV7725摄像头芯片,用C语言高效地实现了核心算法,提供Python编程接口,高效率,低功耗。主控电路模块采用Ardumo,它是一款便捷灵活、以C语言为编程环境,方便上手的开源电子原型平台。红外避障模块采用E18-D80NK红外对管,检测距离远,稳定性高。驱动电机模块采用L298N驱动,它是一种双H桥电机驱动,可以方便的驱动两个直流电机和接受单片机控制;电源模块采用12V输出的航模电池供电;在找到信标灯后,通过赛车的本身速度带动车身上磁铁切割信标灯圆盘底座的线圈将信标灯熄灭。
2 软件设计
程序设计主要分为三个模块,对图像采集输出的数据处理,对障碍物的检测,PID算法对赛车的速度方向的控制。具体软件设计原理图如图2所示。
(1)采用python设计语言进行算法设计,在赛车行进过程中对透过红色滤光片的摄像头中的颜色进行数据采集,并与预先采集好的标准红色信标灯的颜色数据进行对比,如果采集数据和预置值相同,返回给主控板当前数据值,如果采集数据和预置值不同,返回给主控板零值,同时计算采集到的信标灯图像面积值并返回给主控板,采用620nm红色滤光片是为避免其他光的干扰;
(2)采用C语言进行程序设计,读取红外避障模块的输出值,当检测到障碍物时,对应红外模块输出值为1,若没有检测到障碍物,对应模块输出值为0,在赛车行进过程中,如果检测到障碍物,控制赛车减速后退并右转后继续寻找信标灯;
(3)系统采用闭环控制,编码器采集实际速度值进行反馈控制,以增量式PID进行速度调节,最终实现赛车按照规划路径稳、准、快的到达目的地。主控板arduino对摄像头采集的数据进行处理,如果接收的数据值在标准红色信标灯阈值范围内,控制赛车加速直行,并判断摄像头图像采集返回的面积值,当面积值达到一定值后,说明赛车靠近信标灯,此时控制赛车减速直行;如果接收到零值,控制赛车原地旋转半圈后直行1s,再次判断摄像头返回值,直到红色信标灯出现在摄像头视野范围内。在找到信标灯后,通过赛车的本身速度带动车身上磁铁切割信标灯圆盘底座的线圈将信标灯熄灭。
3 测试结果
半个羽毛球场地中,12个信标灯随机点亮,赛车从中心位置出发,能准确快速的找到被点亮的信标灯,并将其熄灭,同时能有效避开行进过程中遇到的障碍物。
4 结论
本文所设计的基于openMV摄像头和arduino的智能“寻的”赛车的系统方案,摄像头采集通过620nm红色滤光片后的图像,通过返回信标灯位置参数以及信标灯当前面积值,能够成功实现信标灯的快速寻找以及障碍物的避让。该方案仍存在一些不足的地方,但赛车寻找信标灯的准确率更高,速度也更快,同时能很好的避开障碍物。
参考文献
[1]胡寿松,自动控制原理[M],北京:科学出版社,2009.
[2]张宏建,自动检测技术与装置[M].北京:化学工业出版社,2004.
[3]崔才豪,张玉华,杨树财.利用Arduino控制板的光引导运动小车设计[J].自动化仪表,2001,32 (09):5-7.