侯英婷,白贵垚,袁海鑫,尚禹
中北大学 信息与通信工程学院,山西 太原 030051
盲人出行问题一直是社会关注的重要问题,且现代城镇的道路日渐复杂,如何辅助盲人安全出行成为社会各界关注的焦点[1-2]。目前市面上存在的智能导盲杖和机械导盲犬大多基于牵引、语音播报和震动等方式实现导盲[3-5],其传递信息的方式不直接、不迅速,同时,大多数产品的避障方式均基于红外检测、超声波传感等技术实现,该导盲方式的测量精度低且安全性差。
触觉是人类最敏感、最直接、最真实的感觉方式。生物电信号传递的速度远大于声音传播速度,因此触觉导盲优于听觉导盲,其传导效率更高、人机交互性更强[6-8]。目前国内外基于虚拟触觉交互和人工智能技术的研究正在不断发展,该技术的目标是通过模拟触觉感受,使用户能够与虚拟环境或机器人进行更自然、更直观的交互[9-10]。其中一项重要研究是使用力反馈装置或震动反馈装置来模拟触觉感受,使用户能够感受到虚拟物体的质地、形状和重量[11-12]。视觉识别技术主要采用深度学习方法。深度学习是一种基于人工神经网络的模型,通过训练大量的图像数据,可自动学习和提取图像特征。深度学习在视觉识别中取得了很大的成功,尤其是在图像分类、目标检测、人脸识别等任务中表现出色,对障碍物的识别与躲避更加精准[13-17]。将视觉技术利用到导盲中,可更好地弥补传统传感器避障的不足。
为了更好地解决视障人群的出行问题,本文提出并设计了一种基于虚拟触觉交互和人工智能等技术的导盲手套,通过手套对手指的限位作用实现虚拟触觉,再结合实际路况和导航构建一个看不见但摸得着的虚拟栏杆,用触觉代替视觉为盲人群体提供导盲服务,将视觉识别和飞行时间(Time of Flight,TOF)技术相结合,实现避障和测距功能,为盲人出行保驾护航。
本文设计开发的基于虚拟触觉的导盲手套由尼龙手套、手指连接件、STM32F103C8T6、五路sg90 舵机、舵机控制板、TOF 相机、PyAI-V831 模块、北斗4G 导航模块、LD3320A 语音识别模块、7.4 V 供电电源以及电源控制板构成。其中,STM32F103C8T6 作为主控单元,PyAI-V831 作为视觉单元,用来检测道路上的行人和障碍物,TOF 相机用来测量障碍物距离;北斗4G 导航模块作为导航单元,将手套的实时坐标路线发送给STM32F103C8T6 单片机,同时结合视觉识别情况躲避障碍物,规划最优路线;五路舵机作为触觉单元,由视觉部分将采集到的信息发送给STM32,STM32 处理后将命令传递给舵机控制板以控制舵机拉动细绳,并通过其对手指进行限位达成触觉的模拟。
系统硬件设计主要包括主控单元、视觉单元、导航单元、触觉单元和供电单元。视觉单元和导航单元负责规划路线、得出信息并传递给主控单元;主控单元负责利用综合得到的信息规划出最优路径,并将指令发送给触觉单元;触觉单元负责实现触觉导盲。整体系统单元框图如图1 所示。
图1 整体系统单元框图
主控单元作为整体系统的信息处理模块,负责障碍物识别信息的处理、障碍物的距离计算处理和对触觉单元的控制。因此,主控芯片需要具有高集成度、低功耗、高运算能力等特点。STM32F103C8T6 单片机是基于ARM-Cortex-M3 处理器内核的32 位闪存微控制器,其性能较好、易于开发且成本较低,是本设计的首选主控。
视觉单元承担测距和障碍物识别两个功能,其中测距功能由深圳矽速科技的MaixSense-TOF 相机实现,障碍物识别功能由深圳01 Studio 公司的Linux 开发版PyAI-V831 实现。本设计将TOF 相机和PyAI-V831 做成了头带部分,固定在用户的头部,方便识别物体和测距,并通过无线串口模块与主控STM32 进行通信。同时,盲人用户可自主选择识别任一方向上的物体并进行距离测量,让用户对障碍物进行精准躲避。
2.2.1 测距单元
系统需要对盲人可能遇到的障碍物进行探测,以便及时改变路线。TOF 相机利用飞行时间进行距离成像,是一种新兴的3D 检测和成像技术。首先,相机对目标点连续发射激光脉冲信号,之后传感器接收由物体反射回的光,并根据激光脉冲信号的往返时间计算得出传感器与目标物之间的距离。目前,TOF 相机被广泛应用于虚拟现实、三维重建和扫描、自动驾驶、工业自动化、医疗影像等领域,其测量范围为0.2~3.4 m,测量误差≤1 cm。深度计算不受物体表面灰度和特征影响,具有成本低、精度高、功耗小、可靠性好等优点,可满足对障碍距离检测的要求[18-19]。
2.2.2 障碍物识别单元
对于障碍物的检测,本文采用PyAI-V831 开发板,对障碍物、公交站牌、红绿灯等进行识别,通过运行YOLO-v2[20],实现对物体的目标检测。YOLO-v2是一种目标检测算法,不同于传统的目标检测算法,YOLO-v2 采用单个神经网络模型直接预测图像中所有物体的位置和类别。将输入的图像分成S×S 个网络,每个网络分别检测该区域中是否存在目标,如果图像中某一物体的中心恰好落在任一网格中,该网格就需要对这个物体进行检测。每个候选边框需要进行5 个值的预测:中心点横纵坐标x和y、宽度w和高度h以及置信度C。其中,x和y为候选边框的中心点位置;w和h为候选边框的宽度和高度;置信度C用于评估该候选边框是否包含目标物体,其值取决于预测为目标物体的概率,同时还需乘以一个固定的缩放因子。该方法可降低重复率,提高目标检测的准确性。根据这一原理,本文建立了20 余种物体的近2000 张照片的数据库。使用V831 并通过Python 进行编程,利用在线模型训练平台Maixhub,通过对不同照片中特定物体的框选以及验证集的验证获取训练好的模型,并将模型及识别程序下载到PyAI-V831 中。通过上述方法可实现20 余种的物体检测,能够完美承担对障碍物识别的任务。
2.3.1 定位获取
基于4G 的北斗导航定位模块,具有延迟低,精度高等优点。采用北斗卫星定位技术进行的定位服务,结合工业级4G 模块,其鲁棒性高[21]。导盲手套在导盲的同时也要兼顾导航,对数据传输速率有所要求,同时还要实现定位的远程发送。因此,选择通过4G 网络实现消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)通信可将用户的实时定位传输至阿里云端。
2.3.2 定位纠偏
导盲手套的用户使用场景大多在室外,在做室外出行轨迹记录时,往往因为基站切换等因素,导致定位点偏差过大,因此进行定位纠偏很有必要。在定位获取中手套已经将用户的实时定位上传到了阿里云端,在收集到定位信息后可与百度地图应用程序编程接口(Application Programming Interface,API)连接进行定位纠偏。目前常用的纠偏方法有3 种,分别是使用控件、百度地图接口和本地数据库。其中,控件由于权限因素不能使用,百度地图接口虽然方便,但由于受网速、百度服务器等影响,在处理大量数据方面存在明显不足。相比之下,考虑到盲人用户群体的出行范围较小,在保证安全的前提下可对特定地区进行本地纠偏库的构建。针对导盲手套的同一地区纠偏,可将全国按全球定位系统(Global Positioning System,GPS)坐标分成很多小块,查出需要小块的偏移量,并将数据保存到数据库中。待需要纠偏时,根据GPS 坐标取出的对应区域偏移量,反算出地图坐标。
2.3.3 路线规划
通过定位纠偏,获取较为精确的用户定位,此时需要开始规划盲人用户的行走路线。实现路线规划需要4个步骤,分别是地图导入、起始点和终止点的输入、出行方式的选择和最近路线的选择。其中地图导入可以选择调用百度地图的数据库;起始点是用户的起始定位地点;终止点则需要在识别盲人用户的语音命令后获取存储;导盲手套的出行方式主要为步行,而最近路线的规划则是通过对所有可行路线的行程距离进行比较,选出一个最近的路线进行导航。
2.4.1 机械结构设计
考虑到手套的安全性和触觉模拟的有效性,应提供给手指大小适宜的拉力,既不能拉伤手指,也要让手指感觉到有拉力的拉动。为了满足上述条件,选用sg90舵机,sg90 舵机的体积较小、拉力适中、功耗低且供电电压较低。此外,拉动手指需要拉力方向与手指运动方向在同一水平线上,即需要将sg90 舵机在圆周切线方向上的力转变为直线方向上的拉力,因此选用易形变材料如细尼龙线作为拉力的传导材料。
2.4.2 手套安装
在手套的安装过程中,要用到连接件和固定件,其结构图如图2 所示。连接件1、2 用于与尼龙线连接以保证尼龙线的直线运动。连接件3、4、5 和尼龙线连接组成了力传导模块,见图3。力传导模块可以将圆周切线方向上的力转变为直线方向上的拉力,并将尼龙线的直线运动与电位器的电压变化联系起来,有助于直观观察虚拟触觉的模拟效果。固定件1、2、3 用于将舵机和舵机控制板固定在手套上。安装完毕后,可用多级控制板进行简单调试,触觉单元结构图如图4 所示。
图2 连接件、固定件结构图
图3 力传导模块结构图
图4 触觉单元结构图
各种模块对于电压的要求各不相同,若分开供电,则会造成很大的不便性,因此需要设计一个电源管理电路,以同时满足各种模块的供电需求。其中,总电源由7.4 V 锂电池供电,通过降压稳压模块将7.4 V 降为5 V和3.3 V;舵机控制板由7.4 V 电压直接供电;语言识别和V831 由5 V 电压供电;主控STM32 单片机由3.3 V电压供电。
盲人用户需要将目的地告知语音识别模块,语音识别模块接受语音后传输至主控单元,使导航单元获取盲人用户的当前位置和目的地,再通过MQTT 通信协议将其发送到阿里云端,云端调取百度地图API 并选取最优步行导航路线,再将路线信息发送给主控单元开始导航。前进过程中TOF 相机和V831 视觉模块进行障碍物识别并测距。如果识别到障碍物,且距离d≤0.6 m,则提醒盲人躲避障碍物,并帮其规划出最佳路线,反之继续保持原路线,并根据得出的路线信息控制舵机生成虚拟栏杆。导盲过程中,导航单元会将盲人位置与目的地位置相比较,如果相同则视为到达目的地。到达目的地则提醒盲人停止前行,未到达目的地则会重新进行上述步骤,系统软件工作流程如图5 所示。
图5 软件工作流程
系统集成展示如图6 所示,模块A 为视觉单元,模块B 为触觉单元,模块C 为供电单元,模块D 为主控单元及导航单元。
图6 系统集成展示
各模块所需供电电压经测试为+3.3~7.4 V,供电正常。主控单元、视觉单元、导航单元、触觉单元和供电单元输出、引脚连接均导通,实现预期功能,系统可正常工作。视觉单元功能展示如图7~8 所示。
图7 物体识别展示
图8 TOF测距展示
为获取实验数据,选择城市的盲道作为场地进行导盲效果测试,并选择电位器电压、舵机旋转角度、测量距离和障碍物识别结果作为目标数据。采用STM32 的ADC 进行多通道采集,获取手套上5 个电位器的电压值同时舵机控制板发送给上位机舵机旋转角度数据。导盲准确率方面,选取10 种行人步行途中经常会遇到的物体进行测试,保存对不同距离下的不同障碍物的测量距离和障碍物识别结果。
为验证设计的性能,分析电位器电压和舵机旋转角度的关系,根据舵机旋转角和旋转速度计算出运行时间。舵机由180°旋转到23°,速度为36 °/s,由此可得出手指运动一次的时间为4.36 s,本实验进行了4 次手指伸缩运动,共计34.88 s。根据上述数据绘制手指弯曲度——时间相关函数曲线,见图9,手指张开时电压值线性匀速上升,手指收缩时电压值线性匀速下降,曲线平滑,表明手套触觉导盲功能运行稳定。
图9 手指弯曲度相关曲线
不同障碍物的识别结果与平均帧率如表1 所示,可以看出视觉单元对不同物体的平均识别率均大于89%,帧率大于14.5 fps,说明系统具有较强的可靠性。
表1 不同障碍物识别结果
在不同距离下,使用TOF 相机对不同障碍物的距离进行多次测量,得出的平均值数据如表2 所示。TOF对不同物体的测距误差均小于5 cm,且保证盲人与障碍物距离在0.6 m 以上。
表2 不同障碍物测量距离结果(m)
测距准确率由对真实距离的测量数据与获取的测量数据进行误差分析得出,3 类障碍物的测距误差均小于1.5%(墙体的测距误差为1.29%,垃圾桶的测距误差为1.17%,人的测距误差为0.69%),在可控范围之内。
国内外对导盲设备的研究都在加大投入,目前市面上主要的导盲设备为导盲杖。于琳等[22]提出一种以STM32 为控制核心,利用超声波模块进行障碍物检测,利用GPS 定位模块实现对盲人定位的多功能导盲杖,方便家属和医护人员快速确定盲人位置,该设备具有一定的应用场景,但仅能防止盲人走失以及摔倒报警,未将盲人出行的目的地考虑进去,无法实现路线规划与导航;方艳红等[23]提出一种基于改进VE 的算法来检测障碍物并利用透视投影变换计算深度信息,同时将算法整合至树莓派开发板上完成设计,对比本文研究设计的导盲系统,该设计在计算深度信息方面误差较大,易受外界因素影响。本设计的创新点在于提出一种新的设计思路,将TOF 相机与PyAI-V831 结合,实现对障碍物的识别与测距,并利用触觉提示信息构建一个看不见但摸得着的虚拟栏杆以辅助盲人出行,与传统导盲相比,检测精度更高,检测方式新颖且直接,体积轻巧,穿戴方便。
本设计通过北斗卫星信号进行路线规划和路径纠偏,并结合TOF 相机的测距和人工智能技术实现路况的障碍识别,最后通过舵机实现手指限位产生虚拟触觉,从而构建虚拟扶手进行导盲。
实际评测表明,该导盲手套系统在障碍物识别和测距精度方面均满足设计要求,对道路上的各类障碍物可进行精确识别并测距。各个模块的协调工作能够把障碍物距离信息转换成触感提示,使盲人根据触觉模拟的虚拟栏杆的走向来判断有无障碍物以及障碍物的距离,从而实现虚拟触觉和路线导引的功能,满足盲人的正常出行需求。