李加定,缪文南
(广州城市理工学院电子信息工程学院,广东广州 510800)
在全球疫情严峻和社会老龄化的背景下,为方便病人并提高医护人员工作效率及医院智能化服务水平,在药房和病房之间智能高效配送药品一直都是备受关注的问题。近年来,我国研究人员在这方面开展了大量的研究工作,如PLC 控制的轨道送药小车[1],其具有触屏控制、人机交互、端口多样、自动化水平高的特点。当下,人工智能技术正渗入智慧药房的建设中,赋予智慧药房新视角[2],随着智能化水平的提升,出现了多种类型的智能送药小车,但在机器识别物体的准确度和效率与工程应用存在差距,有待提高[3-5]。故设计了一款基于OpenMV 摄像头的智能送药小车,通过机器深度学习、图像分类识别等人工智能常见技术来实现识别目标病房、摆脱轨道限制、自动规划路线、智能循迹、自主避障、路口转弯、双车交互、识别停靠等智能化功能,深度学习训练出来的模式识别图像中的目标数字准确率达到92.4%,图像识别平均时间低于0.5 s,为人工智能背景下的智慧药房建设提供新的思路和方式。
智能送药小车的初始位置为智慧药房,利用红外+重力感应检测到药品正确装载后,当医护人员展示含有目标病房的数字图片时,系统使用OpenMV图像识别模块确认目标,开始发车送药。途中启用OpenMV-plus 识别路径中的红线,循迹而行,识别十字路口地面标示的数字而转向。到达终点后,识别地面黑点的位置而停靠,中间辅以双车通信,协作送药等功能。待确认药品在病房被获取之后,智能送药小车返回药房,完成送药任务,小车运行示意图如图1 所示。
图1 智慧药房送药小车运行示意图
智能小车以STM32F103 微处理器为主控系统[7],由OpenMV 红线循迹、OpenMV-plus 图像识别、药品感应、电机驱动、双车蓝牙交互、显示与报警(含OLED 屏、LED 指示灯、蜂鸣器)、电源管理六个模块组成,如图2 所示。
图2 系统整体功能示意图
系统的核心部件OpenMV 摄像头是一款小巧、开源、低功耗、低成本的机器视觉传感器。对于抓拍的图像,经过预处理后,利用机器深度学习训练出来的模式,能分析并识别出图像中的信息(如数字和简单几何形状),输出结果包含物品类型及坐标信息[8-10],其工作流程如图3 所示。
图3 系统图像识别工作流程图
系统采用广角OpenMV 摄像头可保障路口抓拍的图像中包括多个数字,而后对图像进行腐蚀、膨胀、滤波、灰度化、二值化、单字符分割、寻找数字的边框轮廓等相关图像处理,最后利用模板匹配NCC算法和Hausdorff 距离算法提高识别精度[11-12]。
为了识别拍摄到的路径标识和数字信息,前期需要进行神经网络深度学习来创建预测模型[13],先针对路径中的红线和数字在不同位置和不同角度拍摄多张图片,并配上标签,构成训练集合和模板,然后利用OpenMV 的神经网络TensorFlow lite 模式进行训练。图像识别的核心是模板匹配算法NCC,并辅以Hausdorff 距离算法用于提高精度。
将OpenMV 摄像头抓拍图像转化后的数组与模板数组进行对比,检验两者是否存在交叉相关性,使用到的模板匹配算法NCC 是一种基于图像灰度信息的匹配方法。
设待检测图像为I(尺寸为M×M),模板图像为T(N×N),其中M>>N,两者均为像素。模板T在图像I上平移,搜索窗口所覆盖的子图记作T(i,j)。(i,j)为子图的左上角顶点在检测图像I中的坐标,通过相关函数计算子图与实时图的灰度相关值NCC:
其中,T=T(i,j)为模板T在待检I对应点位置(x,y)偏移(i,j)后的像素灰度值。为模板图像在匹配窗口内像素灰度均值。I=为待检测图像(x+i,y+j)的像素灰度值。为待检测图像匹配窗口内灰度值均值。NCC范围为[-1,1],取值越大,表示相关性越高。
为了提高匹配精度,引入Hausdorff 距离算法,待识别数字的图像I中提取若干特征向量集合A,与模板T对应的特征向量集合B进行比较,设A集合为[a1,a2…aP],B集合为[b1,b2…bP],假 设B中 的bj特征点到A集合最近,然后算出A中所有点到bj中的距离,取最大值为h(A,B),h(B,A)为A中的最近点aj到B中各点的最大值,双向H(A,B)距离为前两者的最大值,描述如下:
模板T在待匹配图像I中移动,双向H(A,B)距离最小处即为匹配程度最高点。这种方式虽增加了特征向量个数,但相对于NCC 算法减少了计算量,提高了匹配速度。
3.1.1 电机控制电路
电机控制电路包括A4950ELJTR-T 构成PWM电机驱动电路、直流电机MG513P30、L298N 双H 桥驱动板。其中,A4950 的IN1 和WNA 引脚与单片机I/O 口相连,OUT1 和OUT2 与电机两端相连。单片机I/O 口输出PWM 信号到L298N,通过调节PWM 信号的占空比来控制转速及前进与后退,同时单片机控制A4950 的两个引脚输出信号,实现小车的启动和停止,其中,电机1 控制电路如图4 所示。
图4 电机1控制电路图
3.1.2 药物感应电路
药物感应电路采用红外感应+重力检测双模式[14]。先使用可调电阻调出合适的红外感应灵敏度,当接收管收到反射光后,前后输出的电平信号经过电压比较器LM339 后返回给MCU,从而判断药物是否被取走。质量检测通过TTP223触摸电容并结合压敏电容实现,通过积分方式算出放入的药品质量,并将信息传给MCU,其中,红外传感与重力传感电路见图5。
图5 红外传感与重力传感电路图
3.1.3 蓝牙通信电路
采用CH573F 蓝牙系统在两个运动中的小车之间建立通信[6,15](如图6 所示),CH573F 集成了BLE 无线通信的32 位RISC-V 内核微控制器和低功耗蓝牙BLE通信模块。两个小车的蓝牙设备基于SPP协议创建串口、传输数据,从而实现等待、避让等协作任务。
图6 CH573F蓝牙通信电路图
软件设计主要实现MCU 根据OpenMV 的图像识别结果,调节PWM 信号的占空比,控制小车启动、加速、匀速、减速、停止、转弯等动作,进而实现识别目标病房、规划线路、循迹前进、路口转向、终点停靠、检测药物取出后返程等功能,主程序流程如图7 所示。
图7 主程序流程图
制作了两台智能送药小车进行测试,每个小车安装两个摄像头,一个OpenMV4 摄像头辨别地面上数字,另一个OpenMV-Plus 识别地面红线。先测试小车硬件,再测试OpenMV 识别图像中的数字效果,而后让小车在药房和病房之间进行实地模拟测试。设OpenMV 摄像头识别图像中的数字时长为Δt,小车完成一次近端病房送药任务的时间T1,双车协调送药到中段病房时间T2,到远端病房T3,其中Δt<0.5 s;T1<20 s;T2<35 s;T3<50 s,达到预期目标。
硬件测试了药品感应、电机驱动、转向控制、循迹线路等环节,均正常工作,满足后续测试要求。
先对0-9 数字模板采样,将10 个数字打包为20 个标签,每个标签采集300 张不同角度的图片,共6 000 张图片构成数据集,利用OpenMV 的神经网络TensorFlow lite 训练模式进行为期50 次的深度学习,训练出准确率为92.4%的模型,具体如表1 所示。
OpenMV 识别数字的时间与准确度影响小车运行时间,故数字识别的训练集非常关键。训练集进行多轮机器深度学习训练,从最初成功识别图片中数字的耗时3.3 s 降低到0.4 s,为后续智能小车从药房到病房的送药过程提供了效率保障。
布置模拟医院场景(如图8 所示),包括墙体黑线、循迹红线、一个药房和八个病房,其中药房坐标0(0,0),病房1 坐标(-55,75)。前期将各节点坐标录入到单片机存储器,小车通过编码器累计里程,计算距离和方位。
图8 模拟药房与医院场景地图
测试时,将小车置于药房(0,0),车头与摄像头面向走廊,检测到约200 g 药品装上小车后,LED 红色指示灯亮,表示已载物。然后手持数字标号纸张让小车识别病房号,小车启动,沿走廊中央实线行进,到达路口,减速识别后转向,到达病房,待药品取后自主返程,LED 绿灯亮,可载物。小车从药房出发到近、中、远三个病房,往返时间见表2,均达到预计值。
表2 单个小车往返目标房号的时间
协作1:两车协同运送药品到中段4 号病房;协作2:两车协同到8 号病房,其中小车1 送药,小车2取药。分别进行五轮有效测试,平均完成时间为29.01 s 和48.35 s,达到预期目标。
基于OpenMV 的智能送药小车在数字图像和循迹识别中改进了算法,通过深度学习训练的模式提高了效率。小车送药到近、中、远端病房的时间分别为14 s、21 s、27 s,达到了预计效果,双车协作实现了交替送药与取药任务。相对于传统的轨道自动送药小车,在机器人工智能程度和人机交互友善程度得到了提高,为人工智能背景下新型智慧药房建设提供了新的设计思路。