国一【F题—中国石油大学(华东)海洋与空间信息学院】智能队—智能送药小车
智能送药系统由两个小车组成,数字识别部分采用K210芯片进行KPU神经网络训练,将拍摄好的1600余张数字1-8输入神经网络进行训练,提取每张图片的特征得到kmodel训练文件;系统在运行前通过神经网络对给定数字进行记忆等。
标签
电赛
jzzp
更新2021-12-09
中国石油大学(华东)
4287

一、 系统方案

本系统主要由单片机控制模块、寻迹传感器模块、电机模块、电机驱动模块、摄像头模块组成,下面分别论证这几个模块选择的可行性。

1.1 主控制模块

我们采用STM32F103C8T6单片机作为整个送药小车系统的主控系统,其采用Cortex-M3处理器,具有性能高、代码密度高、芯片面积小的特点,对此送药小车复杂系统的设计,有很好的导向性;32单片机有内建的嵌套向量中断控制器,它与内核是紧密耦合的,具有可嵌套中断支持、向量中断支持、中断可屏蔽等强大的中断功能,在小车系统设计时,能大大提高程序的流畅及高效性; 此外,32单片机还拥有强大的外围模块,如定时器、ADC、SPI、GPIO……通过这些外围模块的相互配合,能够实现两小车之间的信息交互。综上所述,将STM32单片机作为整个系统的主控模块是非常合适且正确的。

1.2 寻迹模块

 1.2.1 红外寻迹

红外线传感器是利用红外线来进行数据处理的一种传感器。红外线又称红外光,它具有反射、折射、散射、干涉、吸收等性质。任何物质,只要它本身具有一定的温度(高于绝对零度),都能辐射红外线。但此系统中红外传感器有明显的缺陷,经过我们的实地测试,发现场地红黑界线的反射强度相差不大,故在进行小车的寻迹调试时,会遇到传感器传输信息灵敏度不高等问题。

 1.2.2 灰度寻迹

灰度传感器可分为模拟传感器与数字传感器,本系统适合采用数字型传感器,其原理是不同颜色的检测面对光的反射程度不同,光敏电阻对不同检测面返回的光其阻值也不同,从而进行颜色深浅的检测。在有效的检测距离内,发光二极管发出白光,照射在检测面上,检测面反射部分光线,光敏电阻检测此光线的强度并将其转换为单片机可以识别的信号。本次场地采用的是黑红分界线,其颜色差值大,分辨率好,故灰度传感器对此有很好的识别效果。

综上所述,我们选择了八路灰度传感器作为小车传感器模块。

1.3 电机模块

 1.3.1 步进电机

步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。步进电机具有动态响应快、精度高、易于起停,易于正反转及变速的优点,可精确控制旋转角度。但它以步进式跟进,角度小于一个步距角时是系统响应盲区,且转速较慢;本系统需要的车速相比步进电机的转速相比较快,故不适合作为小车的电机模块。

 1.3.2 编码电机

编码电机是将编码器与普通电机相结合产生的一种电机。编码器是将信号或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换成电信号,按照工作原理编码器可分为增量式和绝对式两类,增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。此系统通过增量式编码器获取电机的脉冲数,再通过32单片机的程序控制车轮转的角度进行小车的转向。这种控制相比于步进电机更加灵活。

综上所述,我们选择编码电机作为小车电机模块。

1.4 电机驱动模块

 1.4.1 L298N

L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。用该芯片作为电机驱动,操作方便,稳定性好,性能优良。

 1.4.2 TB6612

TB6612电机驱动模块具有大电流MOSFET-H 桥结构,双通道电路输出,可同时驱动2个电机。相对于传统的L298N效率上提高很多,外围电路简单,只需外接电源滤波电容就可以直接驱动电机,体积上也大幅度减少,在额定范围内,芯片基本不发热。

1.5 图像视觉模块

 1.5.1 OV7725

ATK-OV7725是一款高性能30W像素高清摄像头模块,该模块采用OV7725传感器作为核心部件,集成有源品振和和FIFO,任意一款MCU都可控制该模块和读取图像。但是其内部未集成处理器,控制起来难度较大,处理数据较不方便,且识别的速度较慢,误差较大,我们的传感器系统对图像采集速率有较高的要求,故OV7725不适用。

 1.5.2 OpenMV4Plus

OpenMV4p采用了STM32H7高性能微控制器。功能强大的MCU让OpenMV4p可以轻松地在OpenMV4p平台上几秒内直接运行颜色跟踪、人脸识别与检测、标记跟踪、模板匹配等机器视觉应用;此外,OpenMV4p还开发了卷积神经网络,可将小车所要识别的数字训练集输入卷积神经网络进行训练,为后续识别地上的数字做铺垫,但由于其训练集的获取过于复杂且最终的识别效果不太理想,OpenMV4p的可用性不高。

 1.5.3 Maix Bit

Maix Bit开发板以K210作为核心单元,功能非常强大,芯片内置64位双核处理器,拥有8M的片上SRAM,在AI机器视觉、听觉性能方面表现突出,可以方便地实现图像识别以及视频处理。其在神经网络上的表现优于OpenMV4p,具体为,可采用KPU神经网络算法进行kmodel训练集训练,且最终图片识别效果远远优于采用Maix Bit的神经网络。

综上所述,我们采用Maix Bit开发板作为图像识别的有力工具。

二、系统理论分析与计算

2.1 自动寻迹方法的分析

 2.1.1 灰度传感器多状态分析

小车的寻迹又装载在车头的灰度传感器状态决定,其模型图如下所示:


图2-1 灰度传感器模型图

当车头发生倾斜时,设每一种的倾斜状态为SEN,其取值为-2,-1,0,1,2,目标状态为TAR=0。每次倾斜,主控程序会检测其倾斜状态,并同过PID方法使其回到状态TAR。

 2.1.2 PID控制

在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。它具有原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单等优点。PID控制算法是结合比例、积分和微分三种环节于一体的控制算法,它是连续系统中技术最为成熟、应用最为广泛的一种控制算法。在连续控制系统的理想PID控制规律是:

FqeqsAqQ_b78zGBW5TTeluOq19_m

将上文中的SEN及TAR值输入PID控制中,通过输出PWM波的形式来控制小车的运行,其主要的关系为:

Fvxg2O7XKYYWAYxYHIBzDY3_723y

2.2 数字识别方法的分析

 2.2.1 模板匹配

模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理中最基本、最常用的匹配方法。模板匹配具有自身的局限性,主要表现在它只能进行平行移动,若原图像中的匹配目标发生旋转或大小变化,该算法无效。

我们采用OpenMV4p的模板匹配进行测试,我们发现其有许多缺点,如所需的模板匹配库太大,当其导入到摄像头内存时,每次匹配识别所花时间过于长,故很难将其应用到小车图像识别中去。

 2.2.2 特征点提取

特征提取是对某一模式的组测量值进行变换,以突出该模式具有代表性特征的一种方法。特征是一个数字图像中“有趣”的部分,它是许多计算机图像分析算法的起点。因此一个算法是否成功往往由它使用和定义的特征决定。特征提取是图象处理中的一个初级运算,也就是说它是对一个图像进行的第一个运算处理。它检查每个像素来确定该像素是否代表一个特征。假如它是一个更大的算法的一部分,那么这个算法一般只检查图像的特征区域。同样,我们采用OpenMV4p自带的特征提取库对数字1-8进行特征点提取,在设置特征点时,首先应设置特征点数的阈值,在Openmv代码中体现为“threshold”的设置,最终,经过我们的重复识别与检测,此方法的精确度较低,数字特征不明显,对后续的图像识别有很大的影响。

 2.2.3 KPU神经网络

KPU是通用的神经网络处理器,实现卷积神经网络计算,时时获取被检测目标的大小、坐标和种类,一般对人脸或者物体进行检测和分类。KPU网络一般具有以下几个特点:支持主流训练框架按照特定限制规则训练出来的定点化模型;对网络层数无直接限制,支持每层卷积神经网络参数单独配置,包括输入输出通道数目、输入输 出行宽列高;支持任意形式的激活函数;实时工作时最大支持神经网络参数大小为 5.5MiB 到 5.9MiB。我们首先在Python上训练神经网络训练集,对数字1-8分别拍摄不同的200余张照片,将其输入网络训练,最终导出kmodel训练集;在MaixBit上运行神经网络相关程序,通过实测数字比对,我们发现此训练方法的精确度能达95%以上,对于特定位置的摄像头摆放,其匹配率能够达到99%。

三、电路与程序设计

3.1 电路设计

FqmCQ7k7Y8mK39xuo9ZIT8_4FtZY

FvdwfLfEkMxViBcLJV8Tc3L_4zjS

3.2 程序设计(代码见附件

 3.2.1 基于KPU的识别算法

KPU 即通用的神经网络处理器,MaixBit的K210内部SOC搭载一颗KPU,它可以在低功耗的情况下实现卷积神经网络计算,时时获取被检测目标的大小、坐标和种类,对人脸或者物体进行检测和分类。我们将提前训练好的kmodel模型导入MaixBit的SD卡中,并调用函数读取模型的内容,做好学习识别的准备。

接下来进行数字识别学习。为了提高识别数字的准确度,我们对所要识别的数字进行10次采样识别,最后对十次数据取加权平均,这样得出识别结果能有更高的准确度。

最后是小车行进间匹配识别,当在界面中匹配到数字时,对它进行框选处理,根据框选的位置来确定数字相对于小车的方向,将方向进行标识,并将此标识通过串口通信传输给STM32主控模块。

 3.2.2 寻迹模块基本设计

我们将小车的各个运动及通信模块部分独立编程,最终将初始化及主调函数嵌入至main函数。首先初始化定时器TIM1、TIM2、TIM3,后两个定时用于定时读取编码电机的编码值;配置串口通信,使其波特率设定为9600;初始化电机及电机驱动模块;初始化PID控制模块。

四、测试方案与测试结果

4.1 测试方案

 4.1.1 kmodel模型检测

对之前已经训练好的数字训练模型进行测试,测试结果如下:

 

第1次

第2次

第3次

第4次

第5次

第6次

样本数(次)

10

30

50

100

150

200

正检数(次)

10

29

49

98

149

198

正确率

100%

96.7%

98%

98%

99.3%

99%

由测试结果可知,kmodel模型对于数字识别有很高的正确度,进而能保证后续模块的正常运行。

 4.1.2 小车模块测试

电池模块:用数码管实时显示电池电压,并用电压表测量实际电压,结果为数码管显示电压与电压表测量电压几乎相差不大。

电机驱动模块:用万用表测量与电机驱动模块相连的GPIO口,测量对应的高低电平状态,最终测试结果良好。

灰度传感器模块:拿红色电工胶带在一张白纸上贴出十字,将其放置于传感器下方,若传感器显示结果与预测结果相似,则测试良好。最终测试结果良好。

4.2 测试条件与仪器

测试条件:程序逻辑、语法与硬件电路等检查多次,软件程序和硬件电路都匹配良好。

测试仪器:卷尺、万用表、红色电工胶带。

4.3 测试结果及分析

测试结果:

药房\总用时(s)

第一次

第二次

第三次

第四次

第五次

近端

10.5

9.3

9.5

10.5

11

中端

17.5

17

16

21

18.5

远端

31

29.5

32

30.5

28

 小车可以很好地完成寻迹运动,同时在十字路口完成数字识别进行相应的转弯;两小车可以较好地完成通信,然后时空有序地进行运动。

结果分析:测试结果与预期效果基本相符,寻迹转弯角度变换不理想,但已经通过算法矫正。

 

附件下载
Smart_Car_Module_V4.0.zip
本次比赛所用的PCB板
Car_A AND Car_B.zip
小车1和2代码
团队介绍
中国石油大学(华东),同学舍友
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号