盲人作为社会上一类特殊群体,如何让他们能够更安全地独立行走[1],越来越受到世界各国学者的关注和重视。目前已经研制了多种盲人辅助路径诱导工具,特别是近年来越来越人性化的导盲系统的研发,使盲人可以更好地享受数字生活。盲杖作为行动辅助工具被广泛地采用,但由于行动上的诸多受限使得使用者面临很大挑战。现在导盲市场上电子导盲设备类较为常见,通过声音信号进行提示的盲人语音提示系统[2],采用超声波对障碍物、路面变化情况等进行探测。佛罗里达大学(University of Florida)Ran研制了适合室内、室外的视障者行动导盲装置[3],由该设备测量系统探测障碍物的位置后, 通过语音提示盲人达到路径诱导避障目的;日本山梨大学(University of Yamanashi)研制了一种智能手推车ROTA(Robotic Travel Aid)[4],该款小车高1 m,重60 kg,配备视觉传感器和声音传感器,能够识别路标、交通信号灯等,并能引导盲人穿过马路,遇到问题会与服务中心取得联系。但这些器具不但使用不便,而且造价也相当昂贵,不适合普通消费者使用。陈美銮等采用超声测距、语音提示的方式设计了智能盲人导行仪[5];贺菊方等将超声波转化为声波的方式设计帮助盲人行走、识别障碍物的电子装置[6]。基本上都属于语音导盲范畴,存在难以克服的弱点与不足。
随着电子计算机技术的快速发展,各种新式的、更加人性化的导盲系统逐渐涌入导盲市场,宁志刚等设计的新型盲人导行识别系统[7]利用GPS(Global Positioning System)定位、超声测距、图像识别方法进行语音提示导盲;何婧等设计的听觉引导助盲系统[8];徐珠宝等基于Windows Mobile平台下设计的盲人导航软件系统[9]等。但这类产品也都是基于声音达到路径诱导功能的目的,当环境噪嘈杂中时,语音的功效可能会大大降低甚至失去作用。AMEMIYA T [10]、YAO H Y [11]、JACOB R[12]等人基于盲人具有敏锐于常人的触觉资源研讨了震动技术,并为其对触觉资源产生的影响进行了探索。为此,本文尝试性地将震动技术结合GPS、GIS等技术运用到Android系统的智能手机平台上,开发研制了一种盲人路径诱导新模式,使其具有抗噪声干扰、反馈及时和高有效性等优点,弥补了语音导盲在特定环境下弱点和不足。在实现过程中可以与日益成熟的语音导盲集成使用,为盲人出行提供更安全、更人性化的辅助工具。
1 系统的开发平台与开发环境
1.1 Android平台简介
目前智能手机的主流操作系统主要有Symbian、iPhone和Android。Android是Google于2007年底发布的基于Linux开放性内核的手机操作系统平台,2008年9月T-Mobile正式发布了第一款Android智能手机T-Mobile G1[13]。Android与Symbian、iPhone相比具有如下显着特点[14]:(1)真正开发;(2)应用程序相互平等;(3)应用程序之间沟通无界限。
1.2 系统开发环境
Android SDK支持多种集成开发环境IDE(Integrated Development Environment),因为Eclipse与Android SDK集成最好,而且Eclipse是完全开源的,本开发采用Eclipse与Android SDK集成环境。硬件平台选择运行Android操作系统和内置GPS模块的Google Legend智能手机,软件开发语言使用Java。
2 系统的设计与实现
2.1 系统设计目标及思路
本软件系统的总体设计目标是给无法获得视觉信息的盲人用户,在行走时提供差异性震动而进行路径诱导,使其高效、及时、准确地向正确的方向行走,具体设计如图1所示。
2.2 系统基本框架
在分析通用导航系统的结构框架基础上,结合本系统软件的预期实现目标,设计并初步实现了系统的基本框架,由提取经纬度信息的GPS模块、盲人专用小区域叠加电子地图、地图匹配模块、寻径模块、差异震动提示模块和人机交互界面等模块组成。如图2所示。
2.3 系统工作原理
系统的工作原理:主程序运行后载入地图,根据用户输入的起点、终点,经查询路径后,首先在Google Map地图上显示最适路径信息,在用户行走的过程中,再根据所在的路径节点信息及读取的GPS模块提供的当前经纬度信息,实时判断是否偏离路径或到达下一路口节点,震动模块提供差异性震动进行路径诱导,如图3所示。
2.4 系统核心模块开发
在整个系统的设计与开发过程中,核心模块主要包括GPS的经纬度信息采集、在谷歌电子地图上自制叠加地图数据、寻径和差异震动提示模块。下面将对其设计与实现进行详细介绍。
2.4.1 GPS的经纬度信息采集
本系统使用的Google Legend手机内置支持步行模式的GPS模块,采用Serf star III芯片组,连接方式为RS232串口,通过手机上的GPS功能,用户可以精确地确定自己的地理位置。
Android SDK提供了GPS API,利用LocationManager类的对象提供了位置服务,随着位置的变化可以使应用程序周期性地获取设备位置数据的更新,具体方法是为LocationManager添加一个LocationListener监听器,用来判断GPS坐标的改变,一旦坐标改变则调用OnLocationChanged()方法动态且实时取得当前的Location对象,在这个对象中包含了经纬度坐标值。
2.4.2 在谷歌电子地图上自制叠加地图数据
Android系统刚刚起步时,Google就看到了其巨大应用潜力的位置服务,并将Google地图的成功经验带入Android系统中。在开发中通过申请获取Google Map API Key把Google Map服务整合到Android平台下。在基于Google Map的导航应用中,提供了驾车、公交、步行三种模式(不包含盲人导航模式),即便是最精细的步行地图模式对于小区域(如某小区或校园)的数据也是很不完善的,鉴于本模式开发利用的是小区域地图数据供系统测试,考虑到地图表达的正确性和准确性,自制地图数据叠加到Google Map上,以点、线以及实心圆等简单的图形式显示。
2.4.3 寻径模块
关于寻径问题,即最短路径问题,目前所公认的最好的求解方法是1959年由DIJKSTRA E W提出的标号法,即经典的Dijkstra算法,该算法是目前多数系统解决最短路径问题采用的理论基础[15]。
在经典Dijkstra算法的基础之上,在存储结构方面对算法作了一定的改进,使用了一些独特的数据结构,如前趋表和最短路径结构体链表,使算法的性能有了较大的提高,能更有效地求出图中一个顶点到其他顶点的所有最短路径。计算最短路径完毕后,对最短路径经过的所有路段建立单向结构体链表以表示预规划路径,如图4所示[9]。
2.4.4 差异震动提示模块
鉴于常人的触觉灵敏度是视觉的近20倍,而盲人具有敏锐于常人的触觉资源[12]以及震动形式提示具有抗噪声干扰、反馈及时和高有效性等优点,在开发过程中开创性地提出利用差异性震动作为路径诱导的主要驱动力。
Android SDK提供了震动API,首先创建Vibrator对象,通过调用vibrate方法设置震动时间的长短、震动事件的周期等来实现差异性震动。主要核心代码如下:
Vibrator = (Vibrator)getSystemService(Service.VIBRATOR_
SERVICE); //创建Vibrator对象
vibrator.vibrate(new long[]{t1,t2,t3,t4},repeat);
//调用vibrate方法设置震动(以4个参数为例)
在Vibrator构造器中有4个参数,其中t1、t3是等待多长时间启动震动, t2、t4是震动持续时间, 单位为ms(1 000 ms=1s);repeat用来设置是否重复震动,当repeat=0时,震动会一直持续,若repeat=-1时,震动只会出现一轮。
3 系统测试与讨论
为了验证本路径诱导新模式的实用性和可靠性,选用小区域地图数据供系统测试,以大学校园为测试区,并自制了校园的简单地图来进行实地路径诱导测试。
测试环境选在室外较为空旷地带,当获取的GPS定位信息满足路径诱导定位需求时,运行程序并载入地图。寻径模块根据输入的起始位置与目的地规划出一条最适路径,再根据预设的偏离路径阈值、震动持续时间和周期,在行走过程中,当不同程度的与规划路径偏离或到达路口节点时,能够以不同形式的震动提示报警,测试者能明显地感觉到震动的差异性,从而达到测试目的。
根据设置等待时间、震动持续时间以及是否重复震动的不同来控制震动的差异性。在此设定轻微偏离路径为短震动,严重偏离路径为长震动,而到达路口节点为一般震动,以此三组为例加以讨论说明。(1)短震动4个参数设置为vibrator.vibrate(new long[]{200,200,200,200},0),震动持续时间、等待时间均为200 ms;(2)一般震动4个参数设置为vibrator.vibrate(new long[]{200,500,200,500},0),震动持续时间和等待时间分别为500 ms和200 ms;(3)长震动4个参数设置为vibrator.vibrate(new long[]{200, 1 000,200,1 000},0),震动持续时间为1 000 ms,等待时间为200 ms,这三组震动主要基于震动持续时间区分,具体如图5所示。根据测试能够明显地感觉到震动的差异性,较易区别。后续工作还可以考虑震动频率大小来设计震动差异性等。
本系统实现了盲人路径诱导所必须的基本功能,能够有效地对两地点间路径进行最优规划并提供差异性震动提示,使用户高效、及时、准确地行走。对于日益成熟的语音导盲来说,当在极其嘈杂的环境中时,语音功效就会大打折扣甚至失去作用,而这种差异性震动路径诱导新模式的研制则能很好地弥补语音的不足,二者的集成使用将增强盲人路径诱导服务系统的环境适应性,增大了其市场化的潜力。
参考文献
[1] 夏岳勇,杨峻.盲人导航仪[J].医疗设备信息,2007,22(1):111-113.
[2] KUC R. Binaural sonic electronic aid provids vibrotactile cues for landmark,reflector motion and surface texture classification[J]. IEEE Trans on Biomedical Engineering,2002,49(10):1173-1180.
[3] RAN L, HELAL S, MOORE S. Drishti: An integrated indoor/outdoor blind navigation system and service[C]. Proceedings of the second IEEE Annual Conference on Pervasive Computing and Communications, Florida ,USA,2004:23-30.
[4] MORI H, KOTANI S, SANEYOSHI K, et al. The matching fund project for practical use of robotic travel aid for the visually impaired[J].Advanced Robotics,2004,18(5):453-472.
[5] 陈美銮,尹浩,黎飘,等.智能盲人导航仪的设计与实现[J].电子技术应用,2006,32(10):4-6.
[6] 贺菊方,潘国华,何俊峰.用于帮助盲人行走、识别障碍物的电子装置[P].中国专利,CN2843397.2006-12-06.
[7] 宁志刚,杨保柱,杨玲,等.一种新型盲人导行识别系统的设计[J].电子技术应用,2010, 36(6) :141-143
[8] 何婧,聂旻,罗兰,等.听觉引导助盲系统[J].生物医学工程学,2010,27(2):467-470.
[9] 徐珠宝,许勇,杨军.Windows Mobile平台下的盲人导航软件系统开发[J].计算机与现代化,2010(10):116-119.
[10] AMEMIYA T, SUGIYAMA H. Haptic handheld wayfinder with pseudo-attraction force for pedestrians with visual impairments[C]. Proceedings of the 11th International ACM SIGACCESS Conference on Computers and Accessibility, New York,USA,2009.
[11] YAO H Y, GRANT D, CRUZ M. Perceived vibration strength in mobile devices: The effect of weight and frequency[J].Haptics,IEEE Transactions on, 2010,3(1):56-62.
[12] JACOB R, MOONEY P, CORCORAN P, et al. PhD Showcase: Haptic-GIS: Exploring the Possibilities[J].SIGSPATIAL Special,2010,3(2) : 13-18
[13] Google. Android official website[EB/OL]. [2009-11-12].http://www.android.com/.
[14] 吴亚峰,索依娜.Android核心技术与实例详解[M].北京:电子工业出版社,2010.
[15] 严蔚敏,吴伟民.数据结构(第2版) [M].北京:清华大学出版社,1997.