摘 要:本系统以Arduino单片机为主控器,利用直流减速电机提供动力,PWM控制L298N实现调速,利用Open MV摄像头识别路线完成循迹。领头小车和跟随小车装有蓝牙模块用于车间通信,跟随小车车前装有光电开关以实现避障和跟随功能。两车利用PID循迹算法实现小车沿黑线前进,采用区域色块识别算法实现停车线的判断。经测试,小车功能稳定,传感器识别准确,很好地实现了设计要求。
关键词:机器视觉;循迹;智能小车;Arduino单片机;L298N;Open MV4;光电开关;PID
中图分类号:TP274 文献标识码:A 文章编号:2095-1302(2024)03-0-02
0 引 言
无人控制自动循迹智能小车一直是行业研究的热点,轨迹的识别性能对小车的循迹能力起着关键作用。随着高性能芯片的升级换代及图像识别算法研究的不断深入,基于机器视觉的目标识别技术已在自动循迹智能小车上得到广泛应用。机器视觉是建立在计算机视觉理论工程化基础上的一门学科,涉及到光学成像、视觉信息处理、人工智能以及机电一体化等相关技术[1]。当前,基于Open MV的机器视觉摄像头应用广泛,Open MV以STM32H743 CPU为核心,集成OV5640摄像头芯片,使用 Python 进行编程,在设计上有着小巧、轻便、易于组装等特点[2]。
现要设计一种无人控制自动循迹智能小车跟随行驶系统。该系统由一辆领头小车和一辆跟随小车组成,小车都具有循迹功能。领头小车和跟随小车从起始点出发,沿着1.8 m(宽)×1.2 m(长)的圆角矩形路径行驶,完成一圈行驶后领头小车到达停车标记停车,跟随小车应及时停止且不能碰到前车。行驶场地为白色,行驶路径用1 cm宽的黑色引导线来标记。轨迹上的起始点与停车标记为同一处,用垂直贴于路径引导线的黑色标志线来标记,标志线宽2 cm、长5 cm。
本文采用Open MV机器视觉模块作为图像采集与处理平台,通过Arduino控制智能小车实现上述功能。
1 系统方案的设计与选择
1.1 系统结构与设计思路
如图1所示,本系统用摄像头进行循迹,摄像头安装在小车车体中轴线上,镜头俯视黑线。以Arduino单片机为主控器,每辆小车利用两只300转/分直流减速电机提供动力,利用L298N电机驱动模块实现电机运行,利用OPEN MV摄像头识别路线完成循迹。主车设置键盘用于选择功能,领头小车和跟随小车装有HC-05蓝牙模块用于车间通信以实现一起开车和停车功能,从车利用红外传感器使跟随小车与领头小车保持一定的距离。两车都利用摄像头和PID循迹算法实现小车沿黑线前进,采用区域色块识别算法实现停车线的判断,利用PWM调速实现对两小车速度的稳定及调节,同时设置LED灯、蜂鸣器等小型模块。为了将电源电压的变化对小车的运行状态影响降到最低,本系统采用通过14.8 V锂电池降压后的9 V稳定电压给电机驱动单元供电。
1.2 摄像头黑线位置算法设计
Open MV探测黑线并计算输出黑线的位置。摄像头设置的图像像素大小为QQVGA灰度模式,并将图像区域分为三个区域A、B、C,如图2(a)所示,黑线图像进入三个区域后会得到3个坐标值xA、xB、xC。三个区域A、B、C分别设置不同的权重kA、kB、kC。通过用不同的权重对最大色块图像中点x'坐标求平均值就可以算出相对黑线当前的位置,其中最大的权重分配给靠近图像顶部的A区,这个是由黑线左弯曲的特点决定的,可以更精确地判断出黑线走向[3-5]。
按式(1)便可计算出黑线相对于中心点的角度,该角度数据利用串口输出到单片机[6-7]。
(1)
1.3 小车运动控制算法设计
小车利用PID进行运动控制循迹。摄像头不断输出黑线相对位置角度数据y(t),PID控制的偏差量为e(t)=y(t)-90。数字PID只用到了比例和微分,如公式(2)所示[8-9]。
(2)
式中:Kp为比例系数;Kd为微分系数;e(k)和e(k-1)分别为第k和第k-1时刻所得到的系统偏差信号。
根据黑线特点和车速要求,通过不断整定可确定合适的比例系数和微分系统;通过PID计算得出执行量,若小车出现偏离,控制小车的两个电机差速旋转,并朝着偏差减小的方向动作。在PID算法的控制下,小车可实现稳定循迹[10-11]。
1.4 小车停车算法设计
在摄像头成像范围下方设置一个长100像素、宽20像素的矩形检测区域,如图3所示。在此范围内寻找宽度与停车标识相当的黑色色块,若在此区域内检测到黑色色块,则传送信号到单片机中,主控制器判定为到达停车点。
2 系统程序设计
2.1 系统总体流程设计
加电后领头小车和跟随小车要进行初始化,包括设置摄像头图像像素大小为160×120,图像格式为灰度图;初始化单片机IO口,设置UART串口的波特率。领头小车要初始键盘子程序并等待开车按键按下。当领头小车收到开车指令后,小车启动的同时会给跟随小车发送一个开车指令,实现两车同车前进。领头小车和跟随小车都具有独立循迹功能,跟随小车可利用光电开关不断探测与领头小车的距离并通过减速实现避障。领头小车探测到停车线后停车并通过蓝牙模块发送停车指令,实现同时停车。
2.2 循迹子程序
小车通过摄像头反馈的图像对前方图像进行识别。将各个区域内检测到的最大色块的中心位置坐标的加权平均值与小车的相对位置进行比较,得出黑线与小车中心位置的偏差量;单片机利用该偏差量对数据进行PID计算得到控制量,控制小车左右轮转速和转向。当黑线位于左侧时,程序控制小车左电机减速,右电机加速;当黑线位于右侧时,程序控制小车左电机加速,右电机减速。加减速的量由控制量决定,从而使小车能够始终沿着黑线方向前进,如图4所示。
2.3 停车子程序
在摄像头成像范围下方设置一个长100像素、宽20像素的矩形区域,如图3所示。在此范围内寻找宽度与停车标识相当的黑色色块,若在此区域内检测到黑色色块,则设置摄像头中P2引脚为高电平,传送信号到单片机中,主控制器判定为到达停车点。
2.4 小车间通信
领头小车通电后,向跟随小车发送行进路线设置数值以及内外道的选择数值,进行跟随小车的初始化设置。领头小车开始行进时向跟随小车发送开始行进指令,小车行进过程中保持蓝牙通信,领头小车向跟随小车发送指令,控制跟随小车在路口处选择路线以及在领头小车到达终点处时停车。
3 结 语
本文提出的基于Open MV的双车循迹跟随行驶系统,利用Open MV摄像头实现了黑线的检测。利用PID算法实现了小车运动控制,保证了小车在高速行驶中稳定循迹。利用蓝牙通信模块实现两个小车间通信,最终实现循迹和跟随功能。经过反复测试,本系统稳定,达到设计的预期效果。
参考文献
[1]朱云,凌志刚,张雨强. 机器视觉技术研究进展及展望[J].图学学报,2020,41(6):871-890.
[2]星瞳科技. Open MV中国官网[EB/OL]. [2022-11-15]. http://OpenMV.cc.
[3]钱平,顾才东,马建圆,等.基于OpenMV的水下机器人管道巡检比赛策略研究[J].无线互联科技,2021,18(1):100-101.
[4]刘杰,蒋沁宏. 基于Open MV的寻的赛车[J].电子技术与软件工程,2018,7(14):74.
[5]周诗薇,龚家元,郄磊澎,等.基于OpenMV的云台追踪系统设计[J].湖北汽车工业学院学报,2019,33(4):54-56.
[6]李成勇,谭寒钟,王莎,等.基于OpenMV的智能“寻的”小车控制系统[J].液晶与显示,2020,35(8):870-876.
[7]蒋泽鑫,侯明,陈培锡,等.基于OpenMV的智能交通装备[J].传感器世界,2021,27(2):23-26.
[8]庄琼云.基于OpenMV的智能寻迹小车设计与实现[J].黎明职业大学学报,2018,30(4):80-84.
[9]张文青,龙奕帆.基于Open MV视觉模块的智能小车巡线系统设计[J].集成电路应用,2021,10(38):231-233.
[10]顾祯婕,文哲,高宇杰. 基于OpenMv视觉识别的自主投篮机器人实现[J].无线互联科技,2020,17(9):55-56.
[11]叶思言,张永宁,李锦,等.基于UWB定位和OpenMV识别的智能跟随行李箱设计[J].成都工业学院学报,2020,23(3):29-33.