薛中浩,崔丽珍
(内蒙古科技大学 信息工程学院,内蒙古 包头 014010)
随着物联网技术发展的不断深入,人们对精确的定位服务的要求也逐渐提高[1-3].行人航位推算(Pedestrian Dead Reckoning,PDR)是对步行者行走的步数、步长、方向进行测量和统计,推算出行人行走轨迹和位置等信息,是一种广泛应用的定位算法.通过使用MEMS惯性器件设计实现的行人导航系统具有成本低、功耗低和便于人体安装与携带的特点[4-6].PDR定位系统适用于室内外卫星信号微弱、有障碍物遮挡的环境,在消防救援、矿井勘探、单兵作战等领域,能够确认人员的位置信息,对于保证人员安全,提高救援速度,增强作战能力等具有重要意义.
本文将STM32单片机、Wi-Fi,MQTT协议、SSM框架和PDR算法相结合,设计了基于鞋载惯导的PDR定位系统,能够实时远程监测行人位置.系统主要由鞋载惯导模块、MQTT服务器、上位机及定位算法等部分组成,是一个具有感知层、网络层和应用层的物联网框架系统[7,8].惯性测量单元采集到的数据通过Wi-Fi上传至公用网络[9];定位系统从公用网络获取数据;行人导航算法同定位系统数据交互,解算数据并返回位置信息[10].PDR定位系统结构设计如图1所示.
图1 PDR定位系统结构设计
鞋载惯导模块主要由核心板、惯性测量单元(Inertial Measurement Unit,IMU)、Wi-Fi模块和电源模块组成.其核心芯片选型为STM32F103,分别通过串口USART1和USART2与IMU和Wi-Fi模块连接.STM32F103原理图如图2所示.图中,CX2为STM32的电源模块,JTAG为代码烧写口.
图2 STM32原理图
IMU选型为BWT901CL,该模块集成了3轴加速度计、3轴陀螺仪、3轴磁力计和压力计,使用串口通信,最高采样频率为200 Hz.图3为BWT901CL原理图,CX1为BWT901CL的电源模块,RX和TX分别接STM32的PA2和PA3口.
图3 BWT901CL原理图
Wi-Fi模块选型为USR-WiFi-232,通过该模组,串口设备或MCU控制的设备可以很方便的接入Wi-Fi无线网络,模块内部完成协议转换,可实现串口与Wi-Fi之间数据的双向透传.图4为Wi-Fi模块原理图,CX3为Wi-Fi模块的电源模块,RX和TX分别接STM32的PA9和PA10口,当Wi-Fi未连接时LED灯常亮.
图4 Wi-Fi模块原理图
鞋载惯导模块采用交流电源和电池2种供电方式,电源电路原理图如图5所示.当接通电源时,LED灯常亮.
图5 电源电路原理图
采样频率和上传频率设置为每隔0.1 s上传1帧数据,每一帧数据有10条数据,即为100 Hz,每条数据之间以下划线分割;每一条数据为IMU测量的6项数据,每项数据之间以竖线分割,满足后续实验的数据需求.
上位机按照模块化设计,主要由数据库、后台和前端三个部分组成.上位机工作流程如图6所示.
图6 上位机工作流程图
后台使用SSM(Spring+SpringMVC+MyBatis)框架构建,具体设计流程如下:
(1)搭建MQTT客户端,向MQTT服务器订阅主题并接收数据;(2)对接收到的数据进行处理,分割数据帧并写入数据库;(3)接收前端发送的请求,调用算法;(4)将经过算法处理得出的数据以JSON字符串的形式响应至Web服务器.
前端部分使用JavaScript和HTML5开发,显示最终定位结果.使用AngularJS框架中的$http服务连接至Web服务器读取数据;使用$timeout指令,每隔5 s发送一次$http服务,更新导航定位数据.使用一个利用JS实现的开源可视化库ECharts绘制折线图,显示经过PDR算法实现的行人轨迹.
数据库使用MySQL数据库,包含一张Test表,如表1所示.
表1 Test表设计
PDR定位算法由零速检测算法和零速修正算法2部分组成,利用IMU测量的加速度和角速度判断零速区间;以零速区间为标记区间,修正非零速区间的误差.行人导航算法结构如图7所示.
图7 行人导航算法结构
行人步行期间,每一步共包含5个阶段:脚跟触地、站立、脚跟离地、脚尖离地、迈步.这5个阶段周而复始,构成行人的行走过程.行人脚跟触地时刻到脚尖离地时刻区间,行人处于站立状态,IMU的输出值相对稳定,即处于零速状态.使用IMU测量出行人步行时的加速度和角速度数据检测零速状态,其检测的准确性对零速修正算法极为重要,同时也可以计算出步数.文中共采用3种判定方法联合判断是否处于零速状态.
(1)加速度模值是否处于设定阈值
式(1)中:thamin为设定阈值下限;thamax为设定阈值上限.
(2)滑动窗口内的加速度模值的标准差是否小于设定的阈值:
(3)角速度模值是否小于设定阈值
式(3)中:thgmax为设定的阈值上限.
当同时满足上述3个条件时,即C=C1=C2=C3=1,行人处于零速状态;否则C=0,处于非零速状态.
由于惯性传感器测量值包含随机误差、零点漂移和温度漂移等误差,且考虑到实际情况,当绑定鞋载惯导模块的脚处于停步时,其实际速度应为0,因此需要对速度进行修正处理,以消除误差对最终导航定位结果的影响.
假设零速区间为(t0,ti),通过行人导航算法得出该区间的速度为(Vt0,Vt1,……,Vti-1,Vti),得出该区间的平均速度Vave,为零速区间累计误差的平均值.
假设下一个非零速区间为(ti+1,tj),零速修正前该区间速度为(Vti+1,Vti+2,……,Vtj-1,Vtj),由于速度的实际值为0,故需要将零速区间(t0,ti)的速度全部修正为0;经过零速修正后的非零速区间速度为(Vti+1-Vave,Vti+2-Vave,……,Vtj-1-Vave,Vtj-Vave),消除累计误差.
为了验证3.2节提出的零速检测算法的有效性完成了相关试验.使用Python对算法仿真.将鞋载惯导模块固定于实验人员鞋子前端,静止时IMU的X轴水平向前,Y轴水平向右,Z轴垂直向下.实验人员首先站立一定的时间,稳定IMU;迈步时先迈出未绑定鞋载惯导模块的一只脚;步行一段时间后向右转弯90°,继续步行;在后续定位过程中设定初始位置为(0,0).3条件检测和最终零速检测效果如图8所示.
当逻辑值为1时,判定为迈步,否则为静止.由图8(a),(b),(c)可以看出,3种条件单一的检测均存在不同程度的误差,需要对其进行修正,提高检测精度,减小对后续实验的影响.分析图8(d)可以得到,三条件联合的检测可以正确有效的检测出步行或静止区间,区间长度合理,且检测步数与实际步数相符,满足了后续零速修正算法的基本条件,验证了零速检测算法的准确有效性.
图8 零速检测效果图(a)3轴加速度模值检测;(b)3轴加速度模值标准差检测;(c)3轴陀螺仪模值检测;(d)零速检测效果图
为了验证文中使用的零速修正算法对速度累积误差修正的有效性完成了有关实验.有零速修正速度和无零速修正速度对比如图9所示.
分析图9并结合3.3节实际情况得出,无零速修正算法修正的速度随着时间的推移不断累积误差,致使速度计算值与实际速度不符,影响到最终导航结果的准确性,而经过上述零速修正后的速度值基本与实际速度符合.该实验证明了设计的零速修正算法对减小长时间步行的累积误差效果显著.
图9 有无零速修正对比图
登录界面如图10所示,正确登入后,连接MQTT服务器,接收数据.
图10 登陆界面
点击开始按钮,向后台发送请求,数据通过行人导航算法,返回至前端,如图11所示.
图11 定位界面
基于物联网架构的鞋载惯导PDR定位系统,通过下位机采集行人步行时IMU数据并上传,上位机接收数据并显示定位结果;研究了多条件零速检测算法和零速修正算法,实现对行人步态步数的检测和行人导航定位结果的推算,完成了同上位机的数据交互.经过实验方案测试后,能够准确检测步伐和步数并得出行人轨迹,实现相对定位;系统运行稳定.本系统具有层次分明、结构完整等特点,在实际应用中具有较高的价值.