APP下载

基于STM32 的简易护理机器人设计

2023-09-11赵玲

电子制作 2023年15期
关键词:循迹图像识别识别率

赵玲

(四川中医药高等专科学校,四川绵阳,261000)

0 引言

随着社会经济的发展,人们对于医学护理方面的需求也日趋提升。现在的护理工作主要靠医护人员来开展。就存在工作强度较高以及一定的感染风险等问题。因此,设计一种护理机器人,实现无人化的护理作业,可以有效解决上述问题,具有良好的应用价值。

就目前而言,国内许多机构在护理机器人领域开展了研究。2020 年,电子科技大学成都学院陈虹宇以人机工程学为基础,设计了一种穿戴式下肢复健辅助行走装置,用于脑卒中偏瘫患者的康复护理[1];2021 年,江南大学姜智文通过构建人机力学模型,研究了仿人背抱机器人的主要设计因素[2];2022 年,安徽理工大学毕亮亮团队采用TRIZ 发明原理,研发了一种多功能的辅助护理机器人[3]。从上述设计来看,对护理机器人的研发均达到了良好的效果,且解决了一定的问题。通过分析上述文献的研究方式可知,均是以提出问题-目标-功能研发为流程进行开展。由此可以说明,该研究方式对于护理机器人的结构、性能研发是比较有效的。因此,本文也以上述研究方式为依据,以STM32 为主控芯片,开发一种结构合理、系统稳定且具有简易护理功能的机器人。

1 系统的整体布局

本课题对于简易护理机器人的设计中,将到被护理人的常规需求作为设计的主要目标。因此,该护理机器人需要实现的目标有:喂餐、辅助翻身、中医推拿、人机交互等。要实现上述功能,系统完成各项功能所需要具备的模块如表1所示。

表1 功能与实现模块

由表1 所示的功能与模块对应图,护理机器人在运行时,主要通过信号采集、信号传输、发送指令信号指示各模块动作等流程来实现各项功能。因此,需要确定系统的主控芯片从而实现结构的完整性。因此,本文以STM32 为主控核心[4],构建整个系统。系统的整体布局情况,如图1 所示。

图1 系统整体布局

2 系统的硬件设计

系统的整体布局完成之后,下一步就是对系统的硬件进行设计。具体操作为:(1)模块分析。对系统的各模块应用场景、要求等情况进行分析,为后续硬件的类型选择提供参考依据;(2)对系统的各部分确定合理的硬件类型(如:型号、参数、功能);(3)设计各模块的硬件电路,即根据各模块的情况,搭建能够使其正常运行的电路。

■2.1 主控芯片的确定

护理机器人在运行中,需要具有以下几个性能:(1)系统的运行速度较快且稳定性要求较高;(2)在给被护理人喂饭、翻身、推拿等操作中,需要各种信号和指令即时、稳定传输才能确保一切工作有条不紊地进行,故主控芯片需要支持大量且高速的数据传输;(3)对于机器人在护理工作中,系统面对各种复杂的指令,具有良好的可靠性;(4)系统的功耗较低。根据上述性能,本文选择的主控芯片为STM32F407。该控制器兼具上述优点,同时还具有多样化的接口,可以满足护理机器人在不同场景下的使用需求,其丰富的外设,也能够使其应用在多种场合下[5]。STM32F407 的主要参数,如表2 所示。

表2 STM32F407部分主要参数

STM32F407 主控芯片的电路如图2 所示。

图2 STM32 主控芯片

■2.2 驱动模块的确定

就本课题而言,护理机器人由于需要满足一定的功能需求,故其机器人本体,设计为手臂式结构。考虑到机器人在不同场景的开展护理工作时,能够根据具体的情况来动作。且工作场景通常是在病房或室内,其地面较为平整,故行走机构设计为轮式。因此,该护理机器人的驱动模块主要体现在几个方面:(1)驱动机器人行走机构的驱动;(2)机械手臂的驱动。机器人的手臂包括大臂、小臂、关节、手腕,为实现翻身、喂饭、按摩等功能,需要对关节和手腕进行驱动。

当系统运行时,驱动模块的基本运行流程为:(1)系统获得指令,指示机器人进行某项动作(如给被护理人翻身);(2)主控系统指示行走机构的驱动模块,机器人行走至给被护理人翻身的最佳位置;(3)主控系统指示关节、手腕的驱动模块动作,机械手臂开始运动,为被护理人翻身。

由于涉及的驱动模块较多,限于篇幅,本文仅以行走机构模块为例进行说明。从上述运行流程可知,机器人在工作场所中,行走的地面较为平坦,且行走距离较短,故驱动电机仅需要能够实现基本的运动需求即可。鉴于此,行走机构的驱动模块拟定为双驱动结构。驱动模块的电路设计如图3 所示。

图3 行走机构驱动模块

同理,根据关节、手腕驱动手臂的电磁转矩要求、构件的自由度、转速控制的效果等因素,实现相应驱动模块的设计。

■2.3 无线通信模块的确定

通常情况下,护理机器人的活动范围为室内,其整体的活动面积较小。因此,对于系统的无线通信模块设计中,由于蓝牙模块的有效作用范围为30 ~40 米,完全能够满足室内的使用。因此,本文的无线通信模块确定为蓝牙模块,基本类型为蓝牙5.0 Mesh 模块。部分主要参数如表3 所示。

表3 蓝牙5.0基本参数

■2.4 循迹模块的确定

对于护理机器人而言,其运动轨迹较为简单,仅在室内小范围运动。因此,在循迹模块设计中,除了为机器人规划合理的轨迹外,由于小范围活动区间存在大量的物品摆放以及人员走动,因此还要考虑的是避障问题。鉴于上述两点,本文在循迹模块的设计中,考虑到阳光和灯光对传感器的影响,采用红外传感器来实现机器人的循迹[6]。同时,采用超声波传感器对障碍物进行检测[7],继而达到良好的循迹和避障效果。红外循迹模块如图4 所示,超声波避障模块如图5所示。

图4 红外循迹模块

图5 超声避障模块

■2.5 液晶显示模块的确定

液晶显示模块,是实现人机交互的媒介。即通过液晶显示器,显示系统的运行状态,包括:计时、驱动电机转速、电量、循迹模块工作状态显示以及发送指令等。在液晶显示模块的设计中,选择类型为OLED。原因在于,该显示模块即使没有背离灯光,也能够自主发亮,而且该模块具有较快的响应速度[8]。液晶显示模块的电路设计如图6 所示。

图6 液晶显示模块

3 系统的软件设计

■3.1 算法的确定

护理机器人在执行各项指令的时候,需要对被护理人的特征进行图像识别,例如:执行喂饭操作时,需要识别被护理人的面部,执行翻身操作时,需要识别被护理人的侧方位,以便能够在最佳位置完成上述动作。因此,在系统的软件设计中,主要是图像识别模块的软件设计。在本文的图像识别模块设计中,采用的方法为最大类间方差算法(OTSU 算法)。其主要原因在于:(1)计算速度较快。由于其本质是均值方差的计算,故整个计算过程比较简单,能够快速得到计算结果;(2)受环境影响因素较小。该算法受图片的亮度以及对比度等因素的影响比较小,具有良好的数字图像处理性能[10]。从原理上来说,该方法是一种能够确定图像的二值化分割阈值,将图像采集的目标和背景都达到较高的像素区分度[9]。类间方差表达式为[10]:

式中,1ω为背景像素占比;2ω为前景像素占比;µ为累积灰度值;1µ为前景平均灰度值;2µ为背景的平均灰度值。

对公示(1)进行简化,可得简化表达式[10]:

■3.2 分割处理系统设计方案

3.2.1 系统基本运行流程

护理机器人主要对被护理人进行识别,以便准确实现对应的护理动作。该图像处理模块主要分为5 个流程:(1)图像的选取;(2)平面图像处理;(3)图像预处理;(4)图像分割;(5)选择图像。在图像识别中,当摄像头拍摄照片后,按照上述步骤系统开始对平面图像进行处理,并将处理好的图像进行展示;随后,被选取的图像将被提取滤波器中,进行均衡化、线性变换以及降噪等处理,再利用OTSU 算法计算图像的最佳值,从而准确实现护理人(人脸、后背等位置)与背景的区分。以人脸识别为例,部分实现的代码如下:

mport cv2

img = cv2.imread(” face2.png” )

faceCascade = cv2.CascadeClassifier(” haarcascade_frontalface_default.xml” )

faces = faceCascade.detectMultiScale(img,1.3)

for (x, y, w, h) in faces:

cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 5)

cv2.imshow(” img” , img)

cv2.waitKey()

cv2.destroyAllWindows()

……

3.2.2 GUI 界面设计

系统的GUI 界面,即图形用户界面。其运行的基本原理为:系统的内部会把用户的指令转换成对应的代码信息。此时,GUI 程序开始运行,并创建对应的消息队列,程序将实时对队列中的消息进行处理。

在本文中,以人脸识别为例,GUI 界面里主要有五个部分:(1)图像的选取;(2)平面图像处理;(3)图像的预处理;(4)图像分割;(5)图像选择。如图所示,第一个按钮是实现图像选择的功能。当图像输入完成后,点击平面图像转化按键,系统便开始对输入的图像进行平面化处理。再通过预处理按键,对图像进行均衡化以及降噪等操作。随后,执行图像分割处理,即开始分割实现目标和非目标要素;最后将已经分割完成的人脸图像进行选择和确定。GUI界面的基本布局,如图7 所示。

图7 GUI 界面布局

■3.3 图像识别效果测试

图像识别的效果,主要通过识别率来判别。具体的操作方式为:确定图像识别的总目标数Fz 以及人工识别总数Fr,则识别率计算表达式为[11~12]:

考虑到护理机器人需要在喂饭、翻身以及按摩三个方面的护理,选取人脸、侧体位以及后背三个对象为识别目标,在保持室内光线充足的前提下,进行图像识别比较。以人体侧面为例,部分程序为:

import cv2

img = cv2.imread(” monitoring.jpg” )

bodyCascade = cv2.CascadeClassifier(” cascades\haarcascade_fullbody.xml” )

bodys = bodyCascade.detectMultiScale(img, 1.15, 4)

for (x, y, w, h) in bodys

cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 5)

……

图像识别效果如表4 所示。

表4 测试结果

从表4 所示的数据来看,在光线充足的条件下,人脸的识别率最高,因为人的脸部具有明显的特征,系统能够较容易地区分人脸与背景的差异;而侧体位识别率略低,通常智能通过手部特征来进行识别,而后背由于明显的特征较少,识别率也进一步降低。所以,OTSU 算法在计算中,对于特征明显的对象,具有非常高的识别精度,但缺乏明显特征的对象,图像识别的准确率会低一些。该实验结果也表明,在护理机器人设计中,可以在图像识别的基础上,再增加人工后台的运维和控制功能,例如:通过UI 设计,开发基于人机远程交互的App,通过手机指令动作,指示机器人的运行,这样便可以弥补系统的不足之处。

4 结论

对于简易护理机器人的设计而言,本文结合功能与设计模块相对应的情况,完成了以STM32 为主控制系统,驱动模块、无线通信模块、循迹模块等相关联的整体布局。在此基础上,完成了系统的硬件设计。并在软件设计中,采用OTSU 算法实现机器人的图像识别功能,从识别率测试来看,对特征不明显的对象识别,会存在识别率略低的情况。因此,下一步工作,通过开发人机交互App,通过人工运维与机器人智能化功能相结合的形式,达到优化护理机器人性能的目的。

猜你喜欢

循迹图像识别识别率
基于DFT算法的电力巡检无人机循迹检测系统设计
基于类图像处理与向量化的大数据脚本攻击智能检测
基于Resnet-50的猫狗图像识别
高速公路图像识别技术应用探讨
基于真耳分析的助听器配戴者言语可懂度指数与言语识别率的关系
图像识别在物联网上的应用
基于单片机的智能循迹小车的设计
图像识别在水质检测中的应用
提升高速公路MTC二次抓拍车牌识别率方案研究
智能差分循迹小车设计