时间:2024-05-04
万瑞丰,黄景帆,彭浩奇,张元,张宏飞
(杭州电子科技大学 电子信息学院,浙江杭州,310018)
在医院病房中,大多数病人每天都需要按时服用药物,护士有时因事务繁忙而出现无法及时送药的情况,这对于行动不便且家属又不在身边的病人来说带来及时服药的困难。基于此,能够完成在医院药房与病房间药品送取作业的智能小车就具有很大的现实意义[1]。以本文采用以TC377单片机为主控制器的系统,通过OpenArt训练识别图像与OpenMV扫描标记线来判断小车行驶位置和方向使小车沿线行驶、识别停车线,加上直流电机模块和万向轮控制小车行进和转变方向,最终结合PID实现速度的闭环控制, 使系统能精确控制小车的运行,从而实现高效准确地运送药品至病人所在病房。
采用AURIXTMTC377单片机。AURIXTMTC3xx微控制器架构具有多达6个独立的处理器内核,2.3DMIPS/MHz,6级流水线,高达300MHz,且所有CPU都有32位浮点单元,符合IEEE-754的单精度,片内资源丰富且性能强。
采用深度学习中的卷积神经网络[2-4]。因为图像相当于处于一个运动的状态,采集到的图像信息较复杂,此次识别目标可以明显分为十类,即网络输出十种结果,适合以深度学习的方法去处理。
采用红外反射式光电传感器。红外反射式光电传感器还有价格低廉、应用简便等特点。
用两轮车配万向轮搭成的三轮小车。用两轮车搭配支撑材料和万向轮自制的三轮小车转弯半径小,可灵活调节机械结构。
测试电路总体设计如图1所示。
图1 测试电路
该系统中含有两个+5V、一个+3.3V稳压电源。①5V稳压电源模块设计如图2所示。两个+5V稳压电源分别是开关电源TPS5450和线性稳压器LT3045。开关电源TPS5450具有效率高,负载电流大的优点,为OpenMV及OpenArt供电。线性稳压器LT3045具有低噪声的特点,为编码器和传感类器件供电。TPS5450输出电压,取R2=10kΩ,R1= 3.3kΩ,满足设计需求。②3.3V稳压电源模块设计如图3所示。+3.3V由+5V经线性稳压电源芯片ADM7172降压得到,噪声小,负载电流比较大。
图2 5V稳压电源模块
图3 3.3V稳压电源模块
电机驱动模块设计如图4所示。采用栅极驱动器IR2104和MOS管IRLR7843构成的全桥电路,控制电机实现正反转。
图4 电机驱动电路
LED灯板设计如图5所示,通过IO控制灯的亮灭来显示小车工作状态。
图5 LED灯板
干簧管模块设计如图6所示。在小车底部放置干簧管,在放置药品时磁性容器接近干簧管使其导通,单片机检测到其状态变化开始出发。
图6 干簧管模块电路
软件总体框图设计如图7所示。主体由三部分组成:OpenMV、OpenArt和TC377单片机。
图7 总体框图
单片机工作流程如图8所示。通过接收OpenMV和OpenArt通信的数据判定所去的病房号码。若药品已装载,则出发。途中,根据两个摄像头的数据选择前进方向,最后到达病房前,并停止等待药品卸载。待药品卸载后,开始返回药房。
图8 单片机工作流程
3.2.1 采集数据
采集网络上开源的Minist数据集、随机数字生成集以及实地拍摄的光度不同的数字图片,并对图片进行各种变换,以达到良好的数据预处理目的,为后续模型的泛化性奠定基础。
3.2.2 训练模型
采用OpenArt采集并训练数据,第一种方案是通过tensorflow搭建模型并训练,再根据tflite量化原则进行模型量化,最后将tflite模型部署到OpenArt中,进行数字0~9的实时识别[5]。第二种方案是通过NNCU的模型量化工具,将tensorflow训练得到的h5模型量化为OpenArt可用的nncu模型,尽可能减少OpenArt内存的占用。根据实际情况,最终选择第二种方案来训练模型。
3.2.3 模型应用
将模型部署到OpenArt后,还需要对摄像进行一定的光度、高度、角度调整,并搜索实时拍摄照片中的数字框,对框中的内容进行模型推理,最后的输出即为识别的结果[6]。再通过串口通信传输给主控以便控制[7]。
3.2.4 环境亮度适应
不同角度导致获取的图像亮度不同,如图9和图10所示。因此导致虽然模型的训练集准确率很可观,但实际使用上却不尽人意。对此,采取增加训练集的方法,通过对相同图像进行亮度的调节,使数据集在亮度上更加丰富,以贴合实际使用的情况。从结果上来看,图像识别的效果会比原来的有所提升,对不同亮度环境的适应度更加好。
图9
图10
3.3.1 二值化区分
使用OpenMV二值化将标记路线与其他干扰元素区分[8],并对二值化后的标记路线进行线性回归拟合处理[9],得到直线的位置偏差以及角度偏差,再通过串口将偏差传输给主控单片机处理,具体是应用模糊的PID进行偏差修正[10],根据PID修正后的结果控制小车追寻路线[11]。
3.3.2 十字识别
通过OpenMV二值化后阈值的判断以及OpenArt数字识别来实现十字的左右转弯,但由于存在类似十字状元素的T字元素,如图11和图12所示,若是要将其识别,必须将OpenMV中的阈值降低,会导致十字元素提前判定,影响小车的循迹,所以必须反复去调整阈值以不断贴近理想效果。
图11
图12
3.3.3 路径规划
通过放药后小车识别数字一直到达病房的路程,可反向推导出返回药房的路线规划,即可减少返回时数字角度倾斜难以识别的问题,只需识别十字并结合推导出的返回药房的路线规划即可实现小车回到药房的返程。
字模识别测试:进行小车静态下单字模和动态下和多字模的图像识别测试,将需要识别的字模平放在行驶线上,系统连接电脑进行上位机显示所识别字模的数据。
任务测试:在特定时间要求下使小车自动行驶,测试小车在关键节点之间的运行时间,同时观察小车有无停顿,脱轨,压线等情况。
字模识别测试情况如表1所示。
表1 小车字模动态静态识别测试情况
小车时间节点测试情况如表2所示。
表2 小车时间节点测试情况
结论分析:①静态的识别率较高,但动态的识别率低了很多。可能原因是由于处于动态下,摄像头的帧率有所下降,且加上神经网络占据大量内存,致使帧率下降很多,各个图像存在延时,影响数字识别。②从任务测试的结果来看,小车的运行效果较为不错,但节点3的时间稍稍偏长。虽然尝试提高小车运行速度,但由于数字识别时小车需要减速,故只好提高返程的小车速度,这样避免了对数字识别的负面影响。
本文设计的智能送药小车系统,采用后轮驱动前轮万向轮结构,小车前端装有OpenArt进行字模识别,同时装有OpenMV通过准确扫描标记线来控制电机差速转向实现小车循迹。整车系统由各独立模块整合而成,其电源来自于动力型锂电池,具有较高的可靠性、稳定性;用干簧管来检测药品是否放下,占用空间小且操作简单;万向轮搭配后轮驱动的方案使得车可以实现原地调头,简化了控制;OpenMV和OpenArt的架设使得小车在精准寻迹的同时保持较高的字模识别精准率。但此系统也存在不足之处:采用的OpenArt镜头垂直地面的架设方法需要镜头的投影伸出底盘,车模整体边长,转弯时有压实线的概率;OpenArt对光线强度的依赖未能有效解决,会出现字模识别错误的情况。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!