基于图像处理的自动跟随智能小车设计

2024-01-24 14:36黄琳晴赵天翔何金枝
电脑知识与技术 2023年34期
关键词:目标识别智能小车图像识别

黄琳晴 赵天翔 何金枝

摘要:文章设计了一款基于OpenMV图像处理技术的自动跟随智能小车。小车通过OpenMV摄像头采集图像并进行图像识别处理,确定跟踪目标,然后通过Arduino控制器控制小车自动跟隨目标运动。小车同时具备避障功能,可以在跟随过程中自动避开障碍物。设计主要由OpenMV图像处理模块和基于Arduino的智能小车两部分组成。OpenMV图像处理模块实现图像的采集,目标的识别和跟踪算法的生成。基于Arduino 的智能小车按照算法控制两台直流电机运转,以及通过红外传感器和超声波传感器感知障碍物实现自动避障。设计可用于帮助工作人员携带更多更重的工具或者户外活动时帮助人们携带物品等功能。

关键词:图像识别; 自动跟随; 智能小车; 目标识别; 自动避障;图像处理

中图分类号:TP391        文献标识码:A

文章编号:1009-3044(2023)34-0020-03

开放科学(资源服务)标识码(OSID)

0 引言

智能车具有自主行驶、自动巡航、自动驾驶等功能,可以广泛运用在物流、交通和军事等领域[1]。智能车系统以快速发展的汽车电子技术为背景,涵盖了电子、计算机、机械、传感技术等多个学科[2]。智能车设计中图像处理技术属于十分重要的组成部分。图像处理技术能够实现对图像的分析与处理并提取出目标物体的位置、颜色等有用信息[3]。设计时可利用图像处理技术自动追随目标物体,增强智能车自主性及智能化程度[4]。

1 硬件设计

通过自动跟随小车的研究分析,了解到自动跟随智能小车设计的必要性,自动跟随技术是智能化技术的重要应用之一,可在物流、交通和军事等行业中得到广泛应用。自动跟随小车可以自主行驶,实现对目标物体的自动跟随,提高小车的自主性和智能化程度。该设计的自动跟随智能小车,采用了开源的图像处理库OpenMV及Arduino控制器,具有良好的扩展性和可编程性。小车主体部分由Arduino控制器、电机驱动器、电源、传感器组成,使用车架用于支撑和保护小车的所有组件[5],其总体结构设计框图如图1所示。

设计中,Arduino控制器作为系统核心,实现对小车的控制、传感数据采集以及处理传输到它的图像数据;OpenMV主要用于图像采集识别并处理;超声波传感器用于实现小车避障功能;电源模块用于给小车供电;电机驱动模块直接控制两个电机;两个电机控制小车行进方向。

使用OpenMV的Color Tracking颜色追踪。OpenMV与Arduino控制器之间的通信采用串口通信,以实现自动跟随小车的功能[6]。OpenMV是一个开源的、搭载了一个强大的32位处理器的摄像头,达到了设计的技术要求水平,并且使用SD卡可以更方便地将图像流数据提取出来,是一个较为完整的开发系统[7]。

2 软件设计

设计采用OpenMV的图像传感器进行识别检测目标红色物体,识别成功后通过串口通信将坐标信息发送至Arduino控制器,控制器接收到OpenMV传来的指令后,根据接收到的指令控制小车的电机驱动模块,实现小车的运动。设计采用PWM控制进行位置跟随,电机调速通过PWM控制,占空比不同,输出模拟电压的平均值不同,由此来控制电机,实现调速。

2.1 图像处理程序设计

首先,使用OpenMV板的摄像头捕捉图像,并将其存储在内存中。然后对图像进行处理以减少噪声,提高图像质量。再从图像中提取目标特征,设计中选择提取红色的颜色特征,以便进行后续的目标检测或跟踪。在图像中使用目标检测算法检测目标物体,以便后续跟踪或控制。在图像中使用目标跟踪算法跟随目标的位置和运动轨迹,以便后续控制或决策[8]。根据目标的位置和运动轨迹,生成相应的控制指令,如速度、方向等,以便控制小车的移动。使用串口通信将图像处理结果发送给Arduino控制器,控制器接收指令实现自动跟随小车的功能。

过程可以描述为:初始化摄像头传感器;设置像素格式和帧大小;跳过前10帧以使新设置生效;关闭自动白平衡;定义一个计时器以跟踪FPS;定义一个函数来查找最大的斑点;定义一个PID函数,用于计算偏差并返回控制量;在主循环中获取摄像头图像,查找红色斑点,计算偏差并发送控制量到串口。同时,在图像上绘制矩形和十字线以指示检测到的斑点。使用循环语句不断执行以下操作:

1) 从摄像头获取一张图像,进行校正。

2) 识别红色物体,找到最大的一个色块。

3) 如果最大的色块像素数大于100,则计算物体在图像中的位置,并根据位置输出控制信号。

4) 输出控制信号后,LED灯亮起50毫秒。

5) 最终将位置信息转化为字符串,通过串口输出给Arduino控制器。

2.2 小车控制程序设计

Arduino控制器接收到串口发送的信号后根据信号指令控制小车运动,在调节参数(PID参数、速度等)后,自动启动小车。小车运动的主程序流程图如图2所示。

首先,在OpenMV获取到跟随目标物体的中心横坐标和距离后,进行条件判断,Arduino控制器接收到通过串口发送的信息后,控制器根据获取的中心横坐标运用PID算法计算并控制舵机转向,与此同时,Arduino控制器会将从串口获取的距离与程序中设定的最大跟随距离比较,如果距离过大无法获取图像信息,则小车原地转圈寻找目标物体。

PID算法如公式(1):

PID输出值=Kp×e(t) + Ki×∫e(t)dt + Kd×de(t)/dt  (1)

其中,e(t)表示误差,即目标值和测量值的差值;∫e(t)dt表示误差的积分,即误差随时间的累积;de(t)/dt表示误差随时间的变化速率。Kp、Ki和Kd分别表示比例、积分和微分系数。

设计首先根据偏差值计算出左右轮的PWM输出,然后进行一些限制处理,确保PWM输出在合理的范围内。最后,通过将PWM输出写入左右轮的控制引脚中,控制小车的运动。原理如下:

假設B为后轮两轮的轮距,L为前后轮的间距,假如最优路径为左前方与车正前方夹角为a的直线(a有正有负),拐弯半径在左边和后轮齐平,转弯半径为R,那么后两个轮子的角速度相等[9]。也就是:

v_left/R_in = v_right/R_out = v/R        (2)

其中,v_left为左轮速度,v_right为右轮速度,R_in为内圈转弯半径,R_out为外圈转弯半径,假设轮子的中间速度为v(即速度设定值),而且满足:

R = L/tan a                 (3)

R_in = R - B/2                (4)

R_out = R + B/2              (5)

可以推出:

v_left = v-v*B*tan a /2L           (6)

v_right = v+v*B*tan a /2L         (7)

2.3 超声波避障程序设计

设计超声波避障程序的第一步是对超声波模块和Arduino控制器的引脚进行初始化,包括设置超声波发送和接收引脚的模式和状态。通过超声波发送引脚向外发送超声波信号,等待一段时间后关闭发送引脚,通过超声波接收引脚接收回波信号,计算回波信号的时间差,进而计算出距离。根据距离判断小车前方是否存在障碍物,如果距离小于设定值,则认为有障碍物,否则认为没有障碍物并通过串口向Arduino控制器发送相应串口信息,根据距离判断结果,控制输出信号,通过Arduino的数字输出口控制电机驱动模块。最后循环执行以上步骤,实现实时检测和避障。

3 测试及分析

基于图像处理的自动跟随智能小车是由图像识别处理和小车驱动控制模块两大模块组成的。主要对由OpenMV进行的图像识别追踪、OpenMV与Arduino控制器的串口通信、小车自动跟随、超声波避障4个部分进行测试及分析。

首先,测试OpenMV对图像能否正确识别并将数据通过串口通信发送给Arduino控制器,由于设计只需要单片机接收视觉模块和超声波模块的数据,所以采用串行单工传输[10]。通过查看串口监视器,检查Arduino是否能够成功接收到从OpenMV发送的数据信息,测试能够接收到后,继续测试下一步。将小车安装并下载好程序后,将小车放置于光线较好位置,将目标物体放置在小车前方,检测OpenMV是否成功捕捉图像识别色块,即观察OpenMV的绿色LED灯是否点亮,检查识别成功后,测试小车是否能成功接收控制信号前进。移动目标物体,检查小车是否根据目标物体的移动而移动跟随,向左向右移动目标物体检测小车是否能根据目标物体的移动改变左右轮转速以实现转弯跟随。由测试结果显示,小车能够自动跟随目标物体移动。最后测试超声波避障模块,将目标物体静止放置小车前方距离50 cm,令小车识别并前进,测试结果显示,当小车与目标物体距离接近30 cm时,小车能够停止运动,避免碰撞。

4 结束语

基于图像处理的自动跟随智能小车设计具有自动跟随、实时反馈等特点,可以广泛应用于各种需要自动跟随的场景,如物流、仓储、医疗、安防等领域。设计过程主要完成了整体框架设计、实物调试、对OpenMV软件部分代码的设计编写、Arduino控制程序设计、串口通信程序、PID控制算法、电机配置PWM脉冲程序、超声波避障程序、对该智能小车硬件部分的搭建组装以及系统测试分析和调优。尽管设计要求已实现,但仍存在不足,设计需要有较好光线的环境以供摄像头捕捉识别目标物体。

参考文献:

[1] 欧冰,杨晶晶.数字图像处理技术现状与展望[J].中国新通信,2023,25(1):76-78.

[2] GUO Y,YIN J,WANG Y,et al.Research and implementation of an OpenMV-based target edge detection and tracking system[J].Journal of Physics:Conference Series,2022,2173(1):012083.

[3] 陈维刚,朱天航,吝毅.基于Arduino的智能小车控制系统设计[J].南方农机,2022,53(16):145-148.

[4] 仝梦豪,丁学文,普靖雯,等.基于Arduino的智能小车远程监控系统设计[J].计算机与网络,2020,46(20):59-62.

[5] 吕开旺,王明睿,刘振国,等.视觉引导机器人协作AGV上下料系统研究[J].制造业自动化,2022,44(1):123-126.

[6] 金清嵩,丁一,张勇,等.一种基于OpenMV的自动跟随小车设计[J].电子制作,2020(13):16-18,55.

[7] 唐孟雪,邢晓燕.基于Open MV的人脸识别智能门锁设计[J].电脑知识与技术,2020,16(25):5-8,18.

[8] 储泽楠,王伟,蔡胜宇.基于OpenMV的视觉识别系统在六足机器人中的应用[J].河南科技,2019(34):26-29.

[9] 张敏杰,卢倩,崔治.转弯差速在智能车上的运用[J].企业技术开发,2011,30(19):32-33,59.

[10] 田渠,罗淦,尹海涛.基于OpenMV的智能跟踪小车设计[J].计算机测量与控制,2019,27(8):167-170,176.

【通联编辑:唐一东】

猜你喜欢
目标识别智能小车图像识别
基于Resnet-50的猫狗图像识别
高速公路图像识别技术应用探讨
图像识别在物联网上的应用
图像识别在水质检测中的应用
基于HC—SR04超声波传感器的智能避障小车设计
智能安全防盗探测小车
移动机器人图像目标识别