一种基于手机平台的导盲犬方法与流程

文档序号:11689901阅读:384来源:国知局
本发明涉及一种基于手机平台的导盲犬方法。
背景技术
::近年来,随着智能手机的普及与应用,gps定位与导航技术得到了非常广泛的应用。在lbs应用和交通导航领域与智能手机相结合,为人们的生活和出行提供了更多的便利。与此同时,导航技术在服务人们安全出行方面的研究也越来越受到关注,出现了许多帮助视力障碍和其他残障人士出行的应用。但目前面向这部分用户研发的产品普遍为专用设备,涉及到的硬件技术较为复杂,难以形成统一的标准,用户需要购买专门设备,价格较高,可替代性和兼容性较差,所以目前尚不能普及。技术实现要素:本发明方法针对现有技术的不足,提供了一种基于手机平台的导盲犬方法。包括如下步骤:步骤1,创建一个百度lbs(locationbasedservice,基于移动位置服务)云中的位置数据表,该位置数据表用于存储和读取路障点位置信息,路障点位置信息即表单中所存的位置数据点;步骤2,当用户开启手机导航软件进行路径规划时,从手机中的位置数据表中读取路障点位置信息,或者从手机本地内存中读取预先从网络位置数据库中下载的路障点位置信息,并将当前用户位置n1米(n1一般取值为500)范围内的10个路障点显示在导航软件界面上;步骤3,当用户距离路障点的距离小于n2米时(n2一般取值为10~20),开启手机震动提醒,并对用户进行pdr(pedestriandeadreckoning,步行者航位推算)航迹推演,根据推演出的路径,提供围绕路障点为圆心,半径n3米以内(n3一般取值为5~10)的语音导航。步骤1中所述位置数据点包括以下字段:geotable_id,表示主键,是该位置数据表的唯一标识,数据类型为int;title为名称,该字段设定为添加路障点的时间,作为该路障点的唯一标识,格式为xxxx/x/xx:x:x,数据类型为string;tags为标签,该字段存储路障点类型,数据类型为string;address为地址,该字段存储路障点经纬度对应的省市区信息,数据类型为string;longitude为经度,该字段存储路障点的经度,精确度为1×10-6,数据类型为double;latitude为纬度,该字段存储路障点的纬度,精确度为1×10-6,数据类型为double。sound_url为语音路径,即语音导航文件在lbs服务器中的存放路径。本发明步骤3中,所述对用户进行pdr航迹推演包括如下步骤:步骤3-1,代入初始位置:将手机开启震动提醒时用户所处位置的gps绝对坐标转换为平面上的相对坐标,即转换为平面直角坐标系中的横坐标和纵坐标;步骤3-2,设置步频检测参数:将用户前进一步的过程中所有采样时刻的加速度数据通过高通滤波器滤除重力加速度分量,将输出的结果通过低通滤波器平滑输出波形,根据输出波形的周期规律以及人在行走过程中双腿运动的周期规律性,获得步行时加速度数据的周期规律,设定时间差值的阈值t1和加速度差值的阈值t2;滤波与阈值的设定是根据现有技术实现。首先,高通滤波器滤除重力加速度分量的公式为:acclavg=accl×0.1+acclavg×0.9acclhfilter=accl-acclavg其中,acalavg是pdr导航开始后基于采样频率x1得到的加速度值的平均值,采样频率x1可根据具情况设定为15-30之间。accl为每个采样点采样时的加速度值。acclhfilter为通过高通滤波器后的加速度值。为了平滑波形,将高通滤波后的加速度信号通过低通滤波器,低通滤波器采用滑动窗口实现,公式如下:其中,accllfilter为加速度信号通过低通滤波器后的输出值,i为步数,m为滑动窗口值,本发明取m=3。人行走的步态具有一定的周期规律性:人在行走中每一步可以分为四个阶段,脚离地面、下半身摆动、脚后跟着地、站立。采集到的用户加速度变化状态能够体现步态的周期规律特征,因此用户行走一步时的加速度波形也具有周期规律特征,根据该规律特征设定时间差值的阈值t1(一般为0.8秒)和加速度差值的阈值t2(一般为1.5m/s2)。步骤3-3,采用峰值探测法获得步频以及检测用户是否处于步行状态,如果是,执行步骤3-4,否则返回步骤3-2;峰值探测法:即根据经过信号处理后的加速度值在一段周期内的最大值与最小值的差值和时间差值是否超过阈值来判断用户是否行走了一步,若检测到的加速度差值与时间差值都超过设定的阈值,则检测到用户行走了一步。加速度信号的周期根据行人自然步行的频率设定,行人的自然步频为1-3hz,加速度的一个信号周期中最大与最小值的时间差值的阈值为为0.8s。加速度值最大值与最小值的差值阈值为1.5m/s2步骤3-4,方向检测:根据原点处的初始航向角,将手机陀螺仪测得的旋转加速度进行积分,得到当前所处位置与原点之间这段距离的相对航向角,即用户行走的方向变化信息,计算用户的位置信息:ek-1与nk-1表示用户在行走第k-1步前的横坐标值和纵坐标值,e与n分别代表改点的横纵坐标值。sk-1是用户第k-1步的步长,运动方向与x轴的夹角为α;本系统中用户的步长是根据用户在使用前输入自己的身高数据计算得到,身高与步长的公式引用已有的研究结果,令身高为h,步长为s,则成年人的步长为:s=0.45h步骤3-5,位置估算:根据原点到路障点间的距离得到pdr航迹推演的路径长度,代入用户的步长计算出期望移动的步数g1:g1=l/s,其中,l表示原点到路障点间的距离,s表示用户的步长。原点到路障点间的物理距离根据地球上已知两点经纬度和地球半径计算两点间距离的公式计算得出。本发明步骤3-1中,所述平面直角坐标系中,将x轴即横轴定义为一条沿纬线方向的线,y轴即纵轴定义为一条沿经线方向的线,经纬线相互垂直,各经、纬线之间相互平行,以手机开启震动提醒时用户的位置点为平面直角坐标系的坐标原点。附图说明下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。图1为系统未开启状态图图2为系统开启状态。图3为添加障碍成功示意图。图4为显示路障状态示意图。图5为提醒开启状态示意图。图6为系统运行流程图。图7为行人航迹推演pdr的原理流程图。具体实施方式下面结合附图及实施例对本发明做进一步说明。本发明运行的两种工作模式:模式一:路障信息的录入与导入模式。“录入”指该系统采集记录全新的路障信息;“导入”指用户初次使用该应用时,从网络上下载其他用户已上传并存储的路障信息到该系统中。模式二:实时助盲导航模式。用户外出步行前,启动该手机应用,该应用中预装的百度导航软件会规划好步行导航路线。同时,系统中加载的路障信息会与规划的导航路线自动匹配。用户步行时,系统根据定位导航中获取的用户实时位置信息检索一定范围内数据库已存的路障位置信息,在用户与路障接近到一定距离时不断发出语音或震动提示,提醒用户避障,以确保用户的步行安全。围绕模式一的主要技术有:1、路障信息数据库:本系统存储路障相关信息的数据库为百度lbs云数据库。所存信息包括:时间、经纬度、路障类型、省市区信息、对应路障的语音提示信息。2、路障信息录入/导入模块。运行在手机上的该软件在采集路障信息时,能自动采集路障所在地区的名称、路障信息的经纬度、全部路障类型清单;启动系统时,能自动连接网络上的路障信息数据库,自动更新手机数据库信息;也可以手动编辑、删除路障数据库中的信息等。围绕模式二的关键技术有:1、导航前规划路径时,自动选择显示沿线路障,并将这些路障信息自动融入导航软件界面。2、导航时,系统不断检测10米半径范围内的路障点,检测到路障点时,提醒用户避障。3、用户进入障碍提示区域内后,系统发出提醒并启动pdr行人航迹导航,对用户进行更精准的定位。在用户不断逼近障碍物的过程中,提供围绕障碍物为圆心,半径10米以内的语音导航。三、关键技术的实现1、路障数据库录入/导入模块:路障信息的录入即向lbs添加数据。(1)创建android异步通信客户端asynchttpclient,与lbs服务器建立连接。调用asynchttpclient类,该类在android应用程序中创建异步.post请求,请求参数通过requestparams实例创建。(2)创建数据接口,向lbs服务器发送.post请求,建立与服务器的连接。请求url:http://api.map.baidu.com/geodata/v3/geotable/createpoi存储的.post请求参数格式如表1表1本发明中请求参数各字段分别为:title:str_time,即添加数据的时间;geotype:省,市,区;tags:路障类型;latitude:纬度,精确度为1×10-6;longitude:经度,精确度为1×10-6;sound_url:语音路径,存放poi所对应音频文件在服务器中的存放路径;coord_type:3;geotable_id:160337;ak:g4c5iy3i5t3tqxkboweoe4mevoeu5t77,即申请服务器所生成的密钥。poi存储操作中系统获取的服务器响应参数格式如表2表2(3)定义函数mcreatetabledata(doublelatitude,doublelongitude),将定位到的此刻该路障点的信息字段存入lbs服务器数据库中。添加成功后,手机震动250ms提示用户添加成功。2、在android手机平台上可以对位置数据点进行批量删除操作,方法如下:(1)创建android异步通信客户端asynchttpclient,与lbs服务器建立连接。调用asynchttpclient类,该类在android应用程序中创建异步.post请求,请求参数通过requestparams实例创建。(2)创建表接口,向lbs服务器发送.post请求,建立与服务器的连接。请求url:http://api.map.baidu.com/geodata/v3/poi/deletepoi批量删除操作的.post请求参数格式如表3表3本系统执行批量删除时请求参数的各字段值为:ids:见备注;geotable_id:160337;ak:g4c5iy3i5t3tqxkboweoe4mevoeu5t77;is_total_del:1。poi批量删除操作中系统获取的服务器响应参数格式如表4:表4(3)定义函数mdeletedata(stringids,booleandelall),执行批量删除操作。手机震动250ms提示删除成功。3、路障提醒功能的实现:系统的路障提醒是基于百度云检索中poi周边检索功能,周边检索是指以一点为中心(中心点通过location参数指定),搜索中心点附近指定距离范围(搜索半径通过radius参数指定)内的poi点。实现步骤如下:(1)创建android异步通信客户端asynchttpclient,与lbs服务器建立连接。调用asynchttpclient类,该类在android应用程序中创建异步.get请求,请求参数通过requestparams实例创建。(2)创建表接口,向lbs服务器发送.get请求,建立与服务器的连接。请求url:http://api.map.baidu.com/geosearch/v3/nearbypoi位置点云检索的.get请求参数格式如表5表5本系统进行poi周边检索的请求参数值为:ak:g4c5iy3i5t3tqxkboweoe4mevoeu5t77;geotable_id:160337;location:118.968209,32.11665coord_type:3radius:10poi位置点云检索中系统获取服务器响应参数的格式如表6:表6(3)定义函数mgettabledata(doublelatitude,doublelongitude,intradius,finalbooleanisdisplay),以当前位置定位点为圆心,以radius=10米为半径搜索附近的已存poi路障信息点。检索到符合要求的路障信息点时手机震动提醒用户,直到所存路障信息点与当前位置间的距离大于radius时,震动结束。其中,检索的频次为系统每定位一次进行一次检索,每秒定位一次。4、如图7所示,行人航迹推演pdr的实现包括:系统在发出避障震动提醒后,用户实际距离障碍物有约10-20米的路程,以发出提醒时的经纬度坐标为航迹导航的初始值,通过智能手机中的加速度传感器获得用户步行时的实时加速度,通过陀螺仪获得用户步行时方向角度的变化信息,联合计算,推测出用户的实时位置。(1)初始位置的代入:首先需要将用户所处位置的gps绝对坐标转换为平面上的相对坐标,即平面直角坐标系中的x、y坐标。考虑到本系统中需要pdr导航相对gps导航的距离范围较小,平均在50米以内,因此采用简化计算模型。规定x轴是一条沿纬线方向的线,y轴为一条沿经线方向的线,经纬线相互垂直,各经、纬线之间相互平行。在建立的x-y坐标系中表示用户所处的各个点,此时,以发出提醒时位置点为直角坐标系的坐标原点,根据用户接下来的运动数据建立方程组。(2)设置步频参数:系统将用户前进一步中所有时刻的加速度数据通过高通滤波器滤除重力加速度分量,将输出的结果通过低通滤波器平滑输出波形。根据人在行走过程中双腿运动的周期规律性,获得步行时加速度数据的周期规律,设定合适的加速度阈值,采用峰值探测法获得步频以及检测用户是否迈步。(3)方向检测:根据原点处的初始航向角,将陀螺仪测得的旋转加速度进行积分,可以得到一段距离内的相对航向角,即用户行走的方向变化信息,结合步长数据计算出行人的位置信息。这种方法的运行响应速度较快,适用于手机平台的运行,但长期运行器件会产生较大的漂移误差,由于该系统的导航距离较短,所以采用这种方法比较适合。计算用户位置的公式如式1-1。式1-1ek-1与nk-1表示用户在行走第k-1步前的位置坐标信息,sk-1是用户第k-1步的步长,运动方向与x轴的夹角为α。假定用户行走这一步的方向不发生变化,则该方法可行。(4)步数计算:根据原点到路障点间的距离得到pdr导航的路径长度,代入用户的步长计算出期望移动的步数。系统语音提示用户距离路障的步数,同时根据用户不断前进时测得的实时位置与步频,不断提醒用户的前进状态,帮助用户更准确的避开障碍物。本系统中用户的步长是根据用户在使用前输入自己的身高数据计算得到。实现上述工作的程序方法:(1)监听手机传感器数据:监听加速度计与陀螺仪传来的数据并得到其返回值,对传感器的数据进行封装并发送给数据预处理模块进行初步处理,得到可以进行定位的传感器数据。(2)数据预处理模块接收传来的未经处理的原始传感器数据,对加速度数据进行滤波和线性处理。将处理后的数据封装发送给pdr定位模块进行处理。(3)pdr定位模块使用接收到的数据进行步态检测和方向检测等操作,得到实时的定位结果,并显示在地图上。模块间的通信通过异步消息处理handler实现,数据的封装通过bundle函数实现。四、实现上述关键技术的算法和处理流程图1、本系统是在java环境下开发的android程序,jdk版本1.8。数据库:百度lbs云数据库,用户自定义创建一个百度lbs云中的位置数据表(geotable)作为本系统中存储和读取路障位置所用的表单。路障信息点即表单中所存的位置数据点。本系统中位置数据点包括以下字段:geotable_id:主键。标志该位置数据表的唯一标识,数据类型为int。title:名称。该系统将这个字段设定为添加路障点的时间,作为该点的唯一标识id,格式为xxxx/x/xx:x:x,数据类型为string。tags:标签。该字段存储路障类型。数据类型为string。address:地址。该字段存储路障点经纬度对应的省市区信息。数据类型为string。longitude:经度。该字段存储数据位置点的经度。精确度为1×10-6,数据类型为double。latitude:纬度。该字段存储数据位置点的纬度。精确度为1×10-6,数据类型为double。sound_url:语音路径,存放poi所对应音频文件在服务器中的存放路径。每个路障点,即位置数据点的基本信息由以上6个字段构成。2、系统界面设计及功能实现系统操作界面分为三个模块:系统启动/关闭模块,路障添加模块,显示与提醒模块,如图1~图6所示,是操作时系统界面的显示情况与工作流程。3、程序运行过程:主程序mainactivity:(一)导入类和定义基本功能定义用于主界面各种操作的按钮变量;定义震动变量;创建障碍点信息文件,进行障碍点数据管理;定义定位操作,内容包括是否首次定位,当前的精度,最新一次刷新的经纬度,定位客户端,监听函数,定位标志点;定义地图变量;定义方向传感器的相关变量。(二)页面设置1、初始化地图:包括定义界面所有按钮变量并导入它们的xml布局文件,加载控件,根据r文件中的id值查询到相应的view并返回;2、定义所有按钮点击事件,设定按钮处在何种状态对应何种操作。(三)页面各模块功能启动:1、定位功能的实现:开启定位图层,定位初始化,打开gps,设置坐标类型;2、提醒功能的实现:定位sdk监听函数,获取lbs云数据;2、显示障碍点功能的实现:读取lbs数据库表并显示10个附近值;4、添加障碍功能的实现:向lbs添加数据;5、清空功能的实现:删除lbs云数据。content文件:定义lbs数据库的字段和属性。obstacle文件:定义障碍数据点的属性。constant文件:百度lbs云权限的获取注册。五、全部应用软件的编程平台:android平台程序。工具软件:程序使用androidstudio编写。调用的数据库:服务器数据库为百度lbs云数据库。源代码清单:见附录六、运行和测试系统软件实际运行时对主要参数的测试结果及其分析:1、数据录入:选取电子学院到快递点的路段,沿路径步行,随机存储了8个位置数据点,点之间间隔为50-100m不等。2、路障显示:位置数据点显示的个数上限为50,在实际测试中,由于地图的缩放,路障点间隔小于100m时,在地图上会出现重叠,难以分辨,且每个点的提醒范围会出现重叠干扰,所以建议路障点存储不要过密集。3、路障提醒:沿路障存储的原路径步行返回,开启提醒模式,经过已存路障点附近时的提醒情况如下:提醒震动启动点距离实际存储点的距离最小为7m,最大为50m,平均距离为20m,其中有1个点没有成功触发提醒。实验结果如表7表74、实验结果显示,在正常的网络状态下,该系统可以实现位置基本的路障提醒功能,受网络状态和gps信号强弱的影响,平均误差为10m。为了提供更精确的避障指导,在gps定位的同时,结合行人航迹导航算法,以获得米级别的精确提示。本发明提供了一种基于手机平台的导盲犬方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1