基于STM32的医用送药智能车设计与实现

2023-06-03 18:04王怡雯张晓辉
电脑知识与技术 2023年10期
关键词:药房病房灰度

王怡雯 张晓辉

关键词:STM32F407ZGT6;送药车;K210 摄像头;图像

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

文章编号:1009-3044(2023)10-0025-04

0 引言

送药车是医院药房药品转运的设备,适用于药房和患者之间的药品传送。现有的医用送药车大多采用手推车,容易造成药品错发、漏发的医疗纠纷,无法满足“未来医院”患者药品调剂精细化、智能化管理的需求,给大数据时代的医院工作带来各种不方便。

国外公司的送药机器人基本都是室外送药机器人,对于室内送药机器人与国内一样有许多问题,很多问题都处于研究阶段,对于室内送药机器人的商业化还有非常大的一段距离。在实际的运行过程中,发现了许多的因道路而产生的问题:①当下雨天有人在地上铺上毯子,医院或药房送药时,送药机器人对这一路段的通过能力大大降低,有失败的风险,并且行驶过程中稳定性也下降不少。②多个小车协作运行过程中的相互避障及对路线实时规划的问题,环境因素(人为或非人为)发生改变后小车的适应性问题和学习能力等,都还需要改善。尤其近年来,疫情反复无常,为了尽量减少医生、病人等人员之间的直接接触机会,设计一种送药智能车,能够根据药房、病房号进行自动识别,将药品及其他检测样本进行准确投送。

1 送药智能车的总体设计

送药智能车控制系统原理框图如图1所示,主要包括核心控制器STM32F407ZGT6、HC-05 蓝牙通信电路、K210摄像头、TB6612驱动电路、TFT显示屏、减速编码电机、灰度传感器、红外光电感应开关等。

系统工作时,利用红外光电开关检测药品的放置,使用HC-05蓝牙模块实现无线数据交换,传递送药智能车当前位置和任务信息。核心控制器STM32F407ZGT6控制TB6612电动驱动模块实现送药车减速编码电机的驱动,减速编码电机和万向轮驱动小车实现行进和转向,使送药车自动运行。利用灰度传感器获得灰度值,采用七路灰度传感器高效区分不同灰度(颜色)的寻径线,实现送药智能车的寻径功能。K210摄像头进行图像采集,并采用浮雕滤波算法进行预处理,实现图像识别、颜色、物体识别、MNIST手写数字识别等多种功能,从而实现对多个病房号码识别功能[1]。

2 送药车控制系统硬件电路设计

2.1 供电电路

供电电路采用2路LM2596S-ADJ为核心组成的DC-DC可调降压电路,LM2596S-ADJ芯片内部有开关频率150KHz的固定频率发生器,并具有频率补偿功能,转换效率达95%以上。供电电路原理图如图2 所示:

LM2596S-ADJ芯片只需要4个外接元器件就可以工作,一路将电池输出电压稳定在8V供送药智能车驱动,另一路将电池电压稳定在5V供各模块使用。

2.2 电机驱动电路

本系统送药智能车使用TB6612 驱动电路,TB6612是一种可以同时独立地控制两台直流电动机的新型驱动芯片。它的集成度非常高,且能输出比较高的电流提供足够的产能,在运行电动机的性能和能源消耗方面也具有优势。因此,它可以作为集成、小型电动机的控制系统中非常理想的电机驱动装置。驱动电路原理图如图3所示:

2.3 主控板电路

主控板采用自主设计的集成各功能的PCB电路板,包括键盘、TFT显示屏、电机接口、串口以及LED指示灯等,而且板载的1117芯片可将5V电压转降至3.3V 以供应芯片运行。主控板电路如图4 所示,按键、陀螺仪模块电路如图5所示,显示屏、串口模块电路如图6所示。

3 送药智能车的图像处理

3.1 数字识别方法

送药智能车驶向目标病房需要摄像头对病房号码的准确识别并且对号码位置的精确判断,前者可以使用目标分类达到很好的效果,但对目标数字位置识别涉及对图片内多个数字的处理,存在较大的难度。

YOLOv3采用的one stage目标检测算法具有较高的运算速度,可以同时检测多个目标,并对相应的目标值进行标注,获取目标的各种信息。能够同时测量多种数据,并对相应的目标值加以标注,从而得到项目的所有特征。可以首先利用特征提取数字的输入特征,从而获取一定尺寸的特征图形输出。将图像分为13×13的网格单元,然后假设真实框的一个对象的中心位置落在一个方格上,然后就可以根据这个方格来推测这个对象。如果一个对象中有一定数量的边界框,在YOLOv3中有三个边界框,然后通过逻辑回归可以得到用来推测的回归框[2]。

要检测出目标数字在图像中的位置,就得需要位置信息,也就是bounding box,如圖7中所示需要知道中心点的坐标,框的宽和高,也就是包含4个值:x,y,w,h,(x,y)代表box 的中心,(w,h)代表box 的宽和高。

3.2 预测框回归

预测框回归图如图8所示:

YOLOv3网络最终需要通过回归检测得到这些信息,回归思想是指先验框(anchor box)到真实框(ground truth box)之间是一种回归关系,先验框是通过预先选定的一些框,来帮助本系统最终得到真实的框,在代码中先验框信息(宽和高)是固定在代码中的,它包含了三个尺寸,有的大有的小,且横纵比有一些区别,如图通过YOLOv3网络训练后会得到一种映射关系,先验框会回归到真实框,Anchor box 到Ground truth box之间可以通过中心点的坐标的偏移,以及框的宽和高的放缩来最终得到真实框[3]。

系统采用K210采集大量原始数据,进行数据集标注,通过LabelImg工具进行数据集创建与标注,再通过Tensorflow框架训练YOLOv3模型,本系统将一千两百张不同角度、不同明暗对比度、不同焦距的图片传入框架进行训练,最终得到满意的YOLOv3模型,由图9可以看出,经过9次迭代损失率可以达到较低水平,大于9次迭代后损失率下降不再明显。

浮雕滤波器是一种常用数字滤波器,能够给图像一种3D阴影的效果。只需要用中心这一边的像素减去另一边的像素。此时,像素值的正负是不确定的,本系统将小于0当成阴影部分,将大于0当成光影部分,然后对图像的结果加上偏移。这时候,图像大部分就变成灰色了。

将训练的模型YOLOv3.tflite文件转化为YOLOv3.kmodel 文件,将其放在系统SD卡的根目录下,通过K210程序调用摄像头进行数字的实时识别。将识别的结果通过串口通信实时地发送给主控制器。

3.3 自动寻径方法

本系统采用7路灰度传感器,装在送药智能车车头下方,用于寻径和记录送药智能车所处位置。灰度传感器采用光敏二极管,在识别到颜色变化时改变输出信号。寻迹模块的7个灰度传感器检测道路,根据灰度传感器的返回的灰度值和逻辑电平信号,判断送药智能车相对道路中间所在的位置,调整送药智能车两个电机的速度从而改变运行轨迹,使送药智能车始终沿着轨道行走。根据当前传感器的返回值,确定智能送药车所在道路的位置,从而改变车辆的行驶方向的走向,让车辆一直沿着道路中间的实线运行。送药智能车的初始位置定在道路的中间,使用最中间的灰度传感器压线,送药智能车将默认以直线方式前进,在前进一段距离后,因为摩擦力和轨道曲线变化及电机的区别等问题,送药智能车将脱离轨道线而偏向另一方向,这时车辆就必须通过从灰度传感器中得到的数据进行判别,以实时的方式选择送药车辆运行路线[4-5]。

若是七路灰度传感器检测不到道路,表明送药智能车到达了门口区域,这时会自动原地转向进行药品装卸。

根据道路情况,在程序内部建立各个病房位置的绝对坐标系和相对于小车位置的相对坐标系,主控制器根据接收到灰度传感器的数据和电机编码器的值进行计算,得出送药智能车此刻位于道路的位置,通过送药智能车自身传感器配以PID算法产生中断对指令的执行进行微调,更好地完成任务。

4 送药智能车的控制系统软件设计

送药智能车控制系统软件主要包括主程序、图像处理程序、数字识别程序、自动寻径程序、双车通信程序等,限于篇幅,在此仅介绍主程序。系统程序流程图如图10所示。

5 结束语

本次设计的医用送药智能车具有自主避障、自动循跡、药房和病房的自动识别等功能,实现了药房与病房之间药品及其他检测样本的精准投送,减轻了医护人员的劳动强度,提高了工作效率。

猜你喜欢
药房病房灰度
采用改进导重法的拓扑结构灰度单元过滤技术
基于灰度拉伸的图像水位识别方法研究
更正
整建制接管改造COVID-19重症监护病房的实践与探讨
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于灰度线性建模的亚像素图像抖动量计算
药房托管
陈勇:我不看好这样的药房托管
药房托管 好还是不好
药房托管动了谁的“奶酪”