APP下载

基于OpenMV视觉模块和MPU6050角度传感器的智慧寻路小车

2022-02-17沈中坤徐劲节

电子制作 2022年3期
关键词:巡线灰度平均值

沈中坤,徐劲节

(南京信息工程大学 电子与信息工程学院,江苏南京,210000)

0 引言

传统的智能小车巡线通常采用光电传感器一类的解决方案,但近年来机器视觉技术的飞速发展,传统的模拟图像处理方式升级为嵌入式视觉处理模块,本课题受此启发,设计了以OpenMV视觉模块为主,以MPU6050角度传感器为辅的小车系统。

1 OpenMV视觉模块对于复杂道路信息的处理

1.1 基于灰度平均值的十字路口识别方法

1.1.1 灰度平均值识别十字路口的原理

利用OpenMV进行颜色识别与图像二值化,可以提取图像中目标颜色并输出图像中的灰度平均值。本课题根据此算法识别十字路口。

(1)首先对道路颜色进行识别,道路颜色识别的关键在于阈值(THRESHOLD)的选取,其中THRESHOLD=(min L,maxL,minA,minB,maxB),元组里面的数值分别是LAB(L代表明度,A代表从绿色到红色的分量,B代表从蓝色到黄色的分量)的最大值和最小值。根据阈值即可确定需识别的颜色。例如在图1中,图1(a)为拍摄的RGB图像,设定阈值THRESHOLD为(26, 60, 12, 72, -21, 53),该值为红色阈值,对图像进行二值化处理,得到黑白效果图。二值化后的图像如图1(b)所示,原图像中红色被提取出来。同理,分别设置THRESHOLD为绿色阈值或蓝色阈值,对应颜色均可被提取出来。

图1 道路颜色识别示例

(2)随后计算图像的灰度平均值,根据灰度平均值的大小判断十字路口是否出现在OpenMV拍摄的画面中。若灰度平均值达到目标值,即对十字路口识别成功,同时根据灰度平均值的大小判断小车前端到十字路口的距离。灰度平均值的大小与车前端到十字路口的距离关系如图2所示。当十字路口开始出现在OpenMV拍摄的图像中时,图像的灰度平均值会随着小车前端到十字路口距离的减小逐渐增大,当距离减小到12.5cm时,灰度平均值将达到最大。之后十字路口会在图像中逐渐消失,同时灰度平均值也逐渐减小至初始值。

图2 经过十字路口时灰度平均值变化图

1.1.2 算法设计

设定目标颜色的阈值,提取目标颜色,调用sensou.snapshot().binary()函数,将图像二值化,调用img.get_statistics()函数返回二值化图像的灰度平均值。得到灰度平均值后,判断该值是否在目标范围内。若在,说明十字路口已出现在图像中,则可向单片机发送指令。同时,根据灰度平均值的大小判断小车距离目标十字路口的距离。

1.2 基于泰尔森线性回归的巡线方法

1.2.1 泰尔森线性回归巡线方法基本原理

在使用泰尔森线性回归之前,需先设置目标道路的颜色阈值,将图像二值化,利用最小二乘法对图像中所有阈值像素进行线性回归计算,以达到识别直线的目的。当识别到直线时,使用泰尔森线性回归算法计算图像中所有阈值像素的斜率的中位数。之后返回一个直线对象(image.line),由霍夫变换得到该直线的两个参数,分别为角度值(line.theta)和偏离值(line.rho),将该直线与垂直在画面中央直线对比,得到角度误差(theta.error)与偏离误差(rho.error)。图3为小车左偏时OpenMV拍摄的道路偏置情况,此时角度误差为21°,偏离误差为37mm。

图3 小车左偏

1.2.2 算法设计

设置目标道路阈值(THRESHOLD),将图像二值化,调用泰尔森线性回归函数image.get_regression(),得到目标道路的角度值(line.theta)和偏离值(line.rho),计算角度误差与偏离误差。

1.3 基于模板匹配的路标识别方法

1.3.1 模板匹配识别路标的基本原理

模板匹配采用的是归一化互相关(NCC)算法,该算法将在图像中找到与目标模板匹配的图像并返回其位置的边界框元组(x,y,w,h)。x、y、w、h分别为其位置的左上角的x坐标、左上角的y坐标、宽度和高度。使用模板匹配法可识别与模板图片大小和摆放角度基本一致的图案。在本课题中,OpenMV可以识别左转,右转和直行的路标,图4中识别到的是直行路标,直行路标被黑色框框出。式(1)为NCC算法的计算公式,其中I为目标图像,T为模板图像,模板大小为m*n。

图4 路标识别

1.3.2 算法设计

导入左转、右转和直行的图片模板,将OpenMV拍摄的图像转为灰度图,调用ing.find_template()函数,判断图像中是否存在与导入模板相匹配的图像,若存在,判断是左转、右转还是直行。识别成功后传达指令给MSP430单片机。

2 小车系统

2.1 硬件设计

小车实物图如图5所示。小车以MSP430为控制芯片,控制芯片根据OpenMV视觉模块的指令,执行前进、后退、转向、停止指令;利用MPU6050角度传感器控制每次转向的角度。小车硬件设计示意图如图6所示。

图5 小车实物图

图6 小车硬件设计示意图

2.1.1 转向舵机

舵机又称为伺服电机,是一种带有输出轴的装置。向伺服器发送一个控制信号时,输出轴就可以转到特定的位置。只要控制信号持续不变,伺服机构就会保持轴的角度位置不改变。如果控制信号发生变化,输出轴的位置也会相应发生变化。舵机角度是由控制信号脉冲的持续时间决定的,这叫做脉冲编码调制(PCM)。舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围,总间隔为2ms。脉冲的宽度将决定马达转动的距离。例如:1.5ms的脉冲,电机将转向90度的位置(通常称为中立位置);1.0ms的脉冲,电机将转45度的位置;2.0ms的脉冲,电机将135度的位置。舵机控制信号由MSP430单片机提供,单片机输出不同的脉冲可控制舵机转角。

2.1.2 MPU6050角度传感器

MPU6050是6轴运动处理传感器,它集成了 3 轴MEMS陀螺仪,3 轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP。用它可以测得小车x、y、z轴的倾角(俯仰角Pitch、翻滚角Roll、偏航角Yaw)。单片机通过 I2C 读取到 MPU6050 的六个数据(三轴加速度 AD 值、三轴角速度 AD 值)经过姿态融合后就可以得到 Pitch、Roll、Yaw角。在此课题中,MPU6050用来控制小车每次转向的角度,因此仅需考虑偏航角。式(2)为MPU6050的偏航角(Yaw)的解算式,其中q0,q1,q2,q3是DMP输出的四元数。

2.2 算法设计

2.2.1 巡线控制算法

小车巡线的过程中采用PID控制算法。PID即:Proportiona(l比例)、Integra(l积分)、Differentia(l微分)的缩写。PID控制算法是结合比例、积分和微分三种环节于一体的控制算法,它是连续系统中技术最为成熟、应用最为广泛的一种控制算法。连续控制系统的理想PID控制规律为式(3),式中 u(t)为PID控制器的输出信号;e(t)为误差函数;KP为比例调节系数;KI为积分调节系数;KD为微分调节系数。

在本课题中,巡线时的误差有角度误差(theta.error)与偏离误差(rho.error)。因此我们利用舵机对角度误差(theta.error)进行修正,利用后轮差速的方法对偏离误差(rho.error)进行修正。算法实现如下:式(4)中的error为误差量;total_error为误差累积量,式(5)中的u为PID算法的输出。

根据PID算法输出的结果,调整舵机的转角和后轮的转速,实现巡线功能。

2.2.2 转向控制算法

小车在十字路口转向时,利用MPU6050角度传感器控制小车的转向角度。为了简化算法我们将传感器固定在车头。同样采用PID控制算法,转向时误差量error的表达式为式(7),其中Target_Angle为目标转向角度,Yaw为实时偏航角,Yaw0为转向前的偏航角。

2.2.3 整车算法

设定目标道路的颜色阈值,当OpenMV视觉模块识别到目标道路时,发送启动指令,MSP430单片机启动小车,OpenMV持续巡线,保持小车前进方向与道路方向一致。当OpenMV识别到十字路口时,启动转向程序,OpenMV开始识别路标,如需转向,MPU6050角度传感器将控制小车转向90°,转向完成后OpenMV再次识别直线道路,摆正小车姿态,以此循环直至终点。系统算法流程图如图7所示,小车行驶示意图如图8所示。

图7 系统算法流程图

图8 小车行驶至①号点的示意图

3 系统测试

小车行驶示意图如图8所示,对图中每个目标点均进行超过30次的测试,测试结果如图表1所示。

表1 不同目标点的测试结果

由表1可知,小车前往行驶路线较为简单的目标点时,成功率达到100%,前往所有目标点的成功率均可达到95%。①号点和⑥号点少次失败的原因为:较短时间内连续转弯时的系统可能会出现故障。可以通过降低速度来避免。

4 结语

本系统基于OpenMV视觉模块和MPU6050角度传感器,实现了巡线功能、十字路口识别功能、路标识别功能。小车采用了简单普遍的人工智能技术,具有硬件稳定,算法可靠的特点。在全球疫情的大背景下,智慧寻路小车在防疫工作中大有可为,这也是我们研究本课题的初衷。有点遗憾的是在本系统中没有采用道路颜色阈值自适应的办法,光线的明暗变化可能造成OpenMV视觉模块的识别偏差,阈值自适应将会是我们下一阶段的研究方向。

猜你喜欢

巡线灰度平均值
基于二值化灰度图像的大豆蛋白液喷雾相对雾化程度的研究
基于共振磁耦合供电及电磁传感定位的无人机智能巡线技术与应用
基于移动互联网的智能化巡线管理系统的建设与应用
天津港智慧工作平台灰度发布系统和流程设计
Arduino小车巡线程序的灰度阈值优化方案
无人机为仁化高山电网线路“把脉”
让机器人巡线不脱线
巧用1mol物质作标准 快速确定混合物组成
变力做功时运用F=F1+F2/2的条件
平面图形中构造调和平均值几例