ROS移动医疗服务机器人的定位设计实现
2021-02-02宋凯伦
宋凯伦 喻 恒
(平顶山学院信息工程学院,河南 平顶山 467000)
0 引言
随着现在经济的发展,服务机器人也逐渐出现在我们的视野中,也发展到各个场所,如医疗场所、服务场所、生活场所、维护场所等[1]。当前社会医护人员的工作繁重,工作环境存在感染风险,医疗服务机器人特别是易感染场所的服务机器人的研究可以很大程度上解决这个问题[2]。目前,我国智慧医疗服务机器人仍然处于发展阶段,移动医疗服务机器人主要针对的是机器人的移动定位避障、手臂控制、零半径转弯、语言播报、身份识别等。愈来愈多的科研机构和公司企业开始着手智慧医疗服务机器人的研究。
结合现在一些比较先进的专业技术,采用一些较为贴近生活化的设计理念,我们设计的智慧医疗服务机器人,运用ROS机器人自主导航[3]、树莓派的语音播报、二维码(条形码)的扫描、远程通信(控制)、舵机的控制、智慧医疗机器等技术。
该机器人为自主控制机器人,以树莓派作为主控,结合ROS系统机器人、智慧医疗机实现,具有模拟医生护士查房、送药、检查病人各项体征等功能。实现了模拟医生或者护士对病人进行查房、简单体征监测等,该项目可以有效缓解医护人员繁重的工作,也可降低易感染病房护理人员的工作风险。
1 ROS系统应用
ROS的系统结构设计也颇有特色,ROS运行时是由多个松耦合的进程组成,每个进程ROS称之为节点(Node),所有节点可以运行在一个处理器上,也可以分布式运行在多个处理器上。在实际使用时,这种松耦合的结构设计可以让开发者根据机器人所需功能灵活添加各个功能模块。
ROS的设计者考虑到各开发者使用的开发语言不同,因此ROS的开发语言独立。除了官方提供的功能包之外,ROS还聚合了全世界开发者实现的大量开源功能包,如思岚科技(SLAMTEC)就发布了针对其自主研发的激光雷达RPLIDAR的ROS功能包RPLIDAR_ROS。这些开源功能包与ROS一起构成了强大的开源生态环境[4-5]。
2 移动医疗服务机器人硬软件设计
移动医疗机器人的整体设计[6-7]包括导航模块、交互模块和测量模块三个部分,具体功能设计如图1所示。
2.1 硬件设计
2.1.1 导航模块
系统主要运用ROS机器人来实现自主导航[8],自主导航中自动避障是通过激光雷达来实现。激光雷达可以给附近的障碍物发出激光束,将反射回来的信号收集并通过RVIZ(ROS的3D可视化工具)显示出来,得到障碍物的大致分布,从而实现自动避障。在ROS机器人map_tools工具中来增加需要遍历的航点,ROS机器人通过激光雷达对这些航点进行自主规划路线,以此来到达指定航点。
2.1.2 交互模块
交互模块主要运用的是树莓派(微型电脑),树莓派运用的是Linux系统,通过条码扫描器扫描条码得到药物信息,以此来判断床号,通过树莓派的通信功能,给各个功能模块发送命令,从而进行语音播报,同时对应床号的舵机启动,打开药箱。病人取药后可以进行音视频交流。
2.1.3 测量模块
此模块主要运用智能医疗来进行测量,基于安卓系统,通过蓝牙通信传输测量的心率、体温、血压等数据到手机App上,从而达到测量病人体征的目的。
图1 移动医疗机器人设计框图
2.2 软件设计
2.2.1 导航模块
ROS机器人自动导航程序中,首先编写运动Node即设置运动时的速度,及自身的直径。然后进行SLAM建图,通过激光雷达对现场的状况进行扫描,会自动标注出障碍点、静态障碍物的轮廓等,可以实时建出一个可行性高的图。接下来是Navigation导航,启动RVIZ,机器人模型会出现在之前建好的图中,可以设置起始点及到达目标行点后ROS机器人的朝向。在map tools工具中添加需要遍历的航点,输入命令启动Rviz,在初始建好的图中设置航点,可以在航点后设置延时,ROS机器人会根据设置好的航点自动规划路线,到达目标航点会完成相应的指令,并和树莓派进行通信把指令发送,进而让树莓派进行其他步骤,在行走过程中会自动避障,到达最终目标行点后会自动停止。导航软件设计流程如图2所示。
2.2.2 交互模块
树莓派通过调用GPIO库,蓝牙库等对舵机、病人体征检测设备、USB摄像头进行控制。通过麦克风提前录音进行语音播报,定义语音1和语音2方便调用。在ROS机器人距离病人床头的距离小于50 cm时打开摄像头进行条码扫描。通过条码内容的比较判断为几号病床并进行相应的语音播报并打开对应药箱。然后通过蓝牙模块打开病人体征检测设备对病人进行心率血压等体征检测,同时接受ROS机器人发来的信号做出相对于的检测。交互模块程序流程设计如图3所示。
图2 导航模块软件设计流程
图3 交互模块程序流程设计
2.2.3 测量模块
当接收到树莓派通过交互模块正确识别病人后发出信号,检测设备开始工作,并将监测数据通过串口发回树莓派。检测设备分别有体温、心率、血压等基本测量模块,测量设备采用已有常用的数字测量模块,连接主控设备串口通信,程序主要使用简单的串行通信即可。
3 系统调试
在调试的过程中也分为三个模块。测量模块、导航模块、交互模块。由于每个模块需要测试标准的不同,测试要求也不一样,因此,对对应不同的功能模块设置不同的测试方法,使测试结果更具说服性和准确性。
3.1 导航模块测试
导航模块主要是测试路径是否能自主规划路线和自动避障及能否到达指定航点;每次测试结束后记录导航的准确次数和不准确次数,进行系统的计算分析实现对导航模块的测试。
导航模块的测试结果如表1所示。
表1 导航模块测试结果
测试过程中失败的原因为:设置航点时鼠标没有固定好,导致航点有误差。导航有效率大于95%,所以导航模块基本能实现。
3.2 交互模块测试
交互模块主要是测试扫描条码能否出来正确的数据并正确的语音播报打开相对应的药箱;每次测试结束后记录能否正确语音播报及打开药箱,进行系统的计算分析实现对交互模块的测试,交互模块的测试结果如表2所示。
表2 交互模块测试结果
测试结果正确识别语音并作出控制的有效率超98%,失败的原因为环境噪声干扰,这需要进一步提高硬件抗噪能力,但是考虑到医院环境的噪声一般都比较小,因此,测试结果显示系统可以有效地实现语音交互控制。
3.3 测量模块测试
测量模块主要是测试智能医疗能否准确地测量出病人的心率、体温、血压。基于智慧医疗小车的测试;每次测试结束后记录能否准确测量出病人的三项体征,进行系统的计算分析实现对测量模块的测试。测量模块的测试结果如表3所示。
表3 测量模块显示结果
测试过程中失败的原因为:室内温度不稳定,以及智慧医疗机器电压不稳定,测量有效率大于95%,所以测量模块基本能实现。
4 结语
本文根据移动医疗服务机器人的特点涉及一种基于ROS系统移动医疗服务机器人,该系统适用于医院、病诊所等室内自主导航、语音交互、体征测量等功能。系统测算简单,响应快速、移动准确。可以通过显示器实时观察出机器人的当前位置信息,可以根据规定好的下一个路径坐标进行方位姿态和移动动作调整,实现机器人自主导航。同时可实现病床识别、人机语音交互以及简单的查房体征检测,可以有效减轻医护人员的工作量,同时为感染病房的护理工作提供了一个安全有效的方案。