自动云药房系统中进药系统的设计

2018-08-09 10:02汪丽平张弛郑长坤李星辉胡敏达汪丰
中国医疗设备 2018年8期
关键词:控制板条形码药房

汪丽平,张弛,郑长坤,李星辉,胡敏达,汪丰

东南大学 a.生物科学与医学工程学院;b.生物医学工程实验教学中心,江苏 南京 210096

引言

传统的药房具有经营时间有限、占地面积很大、耗费人力资源等局限性。随着电子商务[1]、自助服务系统的飞速发展,传统的药房已不能满足人们的所有期望,自动药房系统[2-4]的概念应用而生。自动药房系统的优势不仅仅在于降低成本,更在于其安全性,便捷性,可获得性和管理的精准方便。

目前正在研发的自动云药房系统是以互联网为媒介,可实现线上线下购药、线下自动取药以及在线咨询医师的一个系统项目。此系统的线下药房现已配备专用直角坐标机器人可实现自助发药的功能,但是进药是通过人工一盒盒扫描药品条形码,再将药品放置于药房仓储的进药传送带上,然后直角坐标机器人完成后面的进药操作。本文主要是为线下药房设计并实现了一套可以批量的全自动进药的系统,替代手动扫描进药的过程。系统的工作过程为:封装好的大型进药箱子里装了药品,将其放置于规定的进药区域,控制摄像头从正上方拍摄到箱子中药品的图像之后利用图像处理相关技术计算并返回某一盒药品三维坐标,然后控制机械臂运动到该药品的坐标位置,控制吸盘吸取药品,接着控制机械手臂将药品移动到条形码扫描模块,在此模块控制三个摄像头同步拍摄图片,并对图片进行预处理、识别条形码号等操作,将识别出的条形码号作为结果返回给已有的自动云药房系统的控制单元,最后将药品放置于传送带的指定位置上,循环往复。本系统采用机电控制系统和软件控制系统相结合的方式,为自动药房的全自动进药提供了有效的解决方案。

1 系统硬件设计

系统硬件主要划分为4个模块(图1):药品定位模块、条形码识别模块、机械手臂及其运动控制模块、计算机。

图1 自动进药系统硬件模块

药品定位模块有一个长40 cm、宽30 cm、高30 cm的装了药品的纸箱子,一个1200万像素的USB摄像头,光源以及支架。为了便于药品识别,箱子底部采用黑色不反光的材质。摄像头位于药品箱子的正上方,使拍摄范围正好覆盖药品箱子底面的范围。摄像头通过USB连接到计算机。

条形码识别模块有3个1200万像素的USB摄像头、支架、光源以及正下方一个防护网。三个摄像头分别固定于上面、侧面、底面,用于从多个面同步识别药品的条形码,并且都通过USB连接到计算机上。这里侧面一个摄像头无法识别药品4个侧面,所以在本模块执行时,药品会在水平面内缓慢转动,使得侧面尽可能多地被拍摄到。当超时未识别出条形码号时,断开电磁阀,将药品置于防护网上。

机械臂及其运动控制模块主要包括:运动控制板、X、Y、Z三轴的电机、电机驱动板、供电电源、电磁阀、真空泵、吸盘、直线滑台、旋转电机、支架等。其中直线滑台、旋转电机和吸盘组合形成机械臂。运动控制板通过USB转DB9转接线连接至计算机,它控制电机的运动、电磁阀的通断;X、Y、Z三轴的电机转动,从而带动直线滑台上这3个方向的滑块运动相应的距离,其中Z轴电机配有断电刹车。根据系统的实际需求,设计的直线滑台的运动范围为:X轴70 cm、Y轴70 cm、Z轴35 cm,组合方式,见图2。直线滑台搭建好之后放于支架上,机械手臂是通过与直线滑台Z轴滑块相连接的一段金属结构将旋转电机和吸盘组合在一起。吸取与放开药品是通过真空泵、电磁阀、吸盘组合实现的。真空泵通电之后产生负压,通过气管连接至电磁阀,电磁阀通过运动控制板上的电路控制通断。当电磁阀连通时,负压通过电磁阀,吸盘吸取药品;电磁阀关闭时,吸盘放开药品。吸盘配有压力传感装置,当接触到药盒表面产生压力时,停止进一步向下运动,以免将药盒压变形。

图2 直线滑台组合方式

2 系统软件设计

系统软件架构主要分成业务逻辑层、接口层和底层(图 3)。

图3 系统软件架构

2.1 业务逻辑层

业务逻辑层根据系统的功能需求和流程图(图4)对各个部分进行逻辑控制,实现各个模块合理调配。系统工作流程为:首先系统上电,当工作人员将药品箱子放置于指定的位置时,点击启动系统;然后系统自动完成后面的操作,系统初始化,执行机械手臂复位、摄像头开启等;接着,药品定位模块获取某盒药品的三维坐标;接下来机械手臂运动到此药品的坐标位置,并通过吸盘吸取药品;然后运动到条形码识别模块进行条形码识别,一旦识别出条形码,停止继续拍摄图片,旋转电机停止运动,将识别出的条形码作为结果反馈给移动云药房系统的控制单元。然后系统恢复初始状态,继续新一轮的操作,直至箱子中的药品已经全部取完,结束系统操作。当出现各种异常发出警报,如吸取药品失败等。

2.2 接口层

接口层实现各个模块的功能。药品定位模块,驱动摄像头获取箱子中药品的图片,然后利用图像处理的方法识别出某盒药品的三维坐标。首先,我们需要得到图片中药品的二维坐标,设计算法思路需要考虑的因素有:① 项目中的药品盒子均为长方体,可以通过矩形特征进行识别,相关研究介绍了几种常见的矩形识别的方法[5-8];② 药品颜色鲜艳且边界清晰,颜色各异,可以加入颜色特征;③ 重复识别的情况,即当多个药品拼成一个大的矩形,此大矩形会被错误当做一盒药品;④ 同一盒药品会因为有多种颜色被识别成多盒药品;⑤ 光照不均产生的阴影;⑥ 药品放置无序、有序等。当箱子为空时,设置超时判断。根据以上几点因素,设计出的药品识别的算法流程,见图5。首先进行轮廓检测[9],输入为灰度图像;接着进行多边形逼近;然后进行矩形约束,约束条件有:凸四边形、面积、每个内角度数(接近直角);接下来去除重复的矩形;最后计算出面积最大的矩形并返回其中心点坐标位置。计算出图片中药品的二维坐标后,我们需要经过对应比例的换算关系实际系统中的药品的X、Y轴坐标。最后,设定Z轴坐标。由于已知箱子尺寸以及它在系统的坐标位置,并且机械手臂上的吸盘装有压力传感装置,触及到药品表面时,停止Z轴的运动,所以这里将药品的Z轴坐标设定为0。

图4 系统功能流程图

图5 药品定位算法流程

条形码识别模块控制3个摄像头从上面、侧面和底面进行同步拍摄图片并识别条形码。拍摄到的图片条形码会存在模糊、倾斜、光照不均、面积小等问题。所以需要通过图像预处理的方法对图像进行去燥、条形码定位和校正。然后识别图片中的条形码号。设计出的算法流程,见图6。首先,进行图像灰度化处理;然后利用中值滤波去除噪声[10];对于光照不均采用直方图均衡化[11]进行处理;去模糊采用的是黄认真[12]提出的一种QR码识别图像模糊预处理算法;定位与校正采用刘松等[13]提出了一种基于形态学的条形码定位算法以及计算量较小、但效果较好的条形码校正算法。最后利用开源的ZXing库识别条形码号[14]。

图6 条形码识别算法流程

机械臂运动控制模块实现机械臂对药品的抓取、放置、旋转、移动到指定位置等操作。它是相对于运动控制板的上位机程序,根据制定好的通讯协议,与下位机进行通讯,主要实现的功能有7个:系统初始化、运动到指定坐标位置、电磁阀通电、电磁阀断电、旋转电机转动、旋转电机停止转动、复位。

2.3 底层

这里指的是硬件中机械臂及其控制模块的运动控制板中单片机的下位机程序,与上位机进行通讯,接收指令,反馈执行结果。

3 实现方法及结果

3.1 实现方法

机械臂及其运动控制模块的运动控制板使用的单片机是STM32F103C8T6,留有供电电源接口、DB9接口、X、Y、Z三个轴电机接口、旋转电机接口、电磁阀通断控制接口等。各个模块对应的分布,见图7。电路板实物图,见图8。

图7 运动控制板各接口分布图

图8 运动控制板实物图

X、Y、Z三轴的电机均采用57步进电机,其中Z轴电机配有断电刹车。对于旋转电机,因其负载较小,所以采用的是35两相步进电机。X、Y、Z三轴的电机驱动采用的是TB6600步进电机控制器,旋转电机通过电路控制。供电电源将220 V的交流电压转换成运动控制板所需要的24 V直流电压。真空泵产生的负压小于-0.082 MPa,系统中的吸盘成功吸取药品,见图9。硬件系统各模块实物图,见图10。

图9 吸盘成功吸取药盒

图10 系统硬件实物图

整个系统软件在计算机上搭建,使用的主程序语言是python 2.7、主开发环境为PyCharm(单片机控制程序通过C语言实现,开发环境是IAR)。药品定位算法和条形码识别算法实现,用到了OpenCV[15-16]的库以及其它的一些图像识别的技术。条形码识别还调用了开源的ZXing条形码识别库。

3.2 结果讨论

为了验证系统的运行效果,这里做了一些模拟实验。实验条件与步骤:① 准备100盒品种繁多的药品随机放置于药品箱子中;② 系统通电,完成10次进药操作,记录每次实验的时间和漏检的盒数;③ 人工同样进行10次进药操作并记录结果。实验结果表明(表1),由于系统需要经过药品定位、机械手臂搬运药品、条形码扫描等过程,人工操作是对准条形码扫描、放置。完成100盒药品的平均速度分别为:系统为11 s/盒;人工为5 s/盒。但是可以看出系统每次试验的时间稳定在1100 s左右,人工操作的每次实验时间有增多的趋势。此外,24 h内系统的运行时间为24 h、人工操作时间至多为8 h。所以,综合各项因素初步得知系统虽然每次的进药时间要比人工操作的长,但因可持续稳定工作,计算可得24 h内综合进药量比人工操作大,可替代人工进药。系统仍然会存在漏检,漏检盒数是指未定位出的药品(即每次实验结束,箱子中剩余的药品)、未识别出条形码号的药品(防护网上的药品)数量。漏检率是指每次实验漏检盒数所占的比例,为6%左右。其主要原因是条形码识别部分药品运动以及条形码位置未知,给识别带来一定的困难,仍需进一步改进算法,提高准确率。系统的成本主要是搭建系统的硬件部分的费用,系统运行过程中所需的成本极少,例如:耗电、偶尔进行维护。而传统的方法主要是人力成本,成本与进药量成正比。所以从药房长期的进药目标来看,自动进药系统的成本较低。

表1 模拟实验结果

本系统设计针对自动云药房系统的全自动进药的功能需求,具有轻量、低成本、高效的特点,并且可以替代人工扫描上药实现24 h进药,管理方便。针对药品有序、无序、单种、多种等情况均可进行识别、抓取。优化的条形码图像预处理算法以及ZXing库的使用使得条形码识别率较理想,药品旋转以及三个摄像头同步拍摄识别使得药品的各个面均可拍到。利用步进电机可以调整运动精度,三维直线滑台的设计使得运动范围可控、稳定。但是本系统仍存在需要进一步改进的地方:① 每一次只能抓取一盒药品,后面可以考虑改善系统,每次抓取多盒药品进行扫描、运送等操作;② 存在药品漏检的情况,后面继续改善算法,进一步提高效率。此外,针对不同的功能需求可以加以调整,除了自动进药,对于其他商品的进货以及快递自动分拣等也同样适用,可进一步挖掘实用价值。

4 结论

相比较传统的A字机、立式药品分拣机、斜槽式自动分拣机[17],以及德国ROWA公司的自动化药房应用的上药输送机,本系统体积小,成本低,操作简便。其中图像定位技术,可自动识别药品的坐标位置。此外,系统的条形码自动识别功能,可覆盖药品的6个面,无需预先知道条码在哪一个面。根据药品的形状体积重量特征,采用吸盘吸取药品的方式大大降低了成本。为自动药云房系统的全自动进药提供了很好的解决方案。

猜你喜欢
控制板条形码药房
创意条形码
从条形码到二维码
轨道交通AFC导向标识控制板设计
有趣的条形码
一种集成脚本控制单元的设计与实现
一种全隔离的无刷直流电机的反馈制动控制板的研究
一种机载SAR中心控制板的设计
药房托管
陈勇:我不看好这样的药房托管
药房托管 好还是不好