基于手机传感器的行人室内定位算法
2019-12-27吴金凯蔡成林甘才军
吴金凯, 蔡成林, 甘才军, 孙 凯
(桂林电子科技大学 信息与通信学院,广西 桂林 541004)
随着全球卫星定位系统(global navigation satellite system,简称GNSS)的不断发展与完善,其已成为室外定位的主要选择,但在卫星信号被遮挡的情况下,GNSS存在定位效果差甚至直接不可用的问题[1],而人们大部分时间都在室内度过。针对此问题,室内定位技术应运而生,因其广泛的应用场景,室内定位技术已成为导航定位领域的研究热点。
目前室内定位主要实现途径有无线局域网WLAN[2]、射频识别RFID[3]、蓝牙Bluetooth[4]、超宽带UWB[5]、地磁匹配和计算机视觉[6]。其中无线局域网、射频识别、蓝牙和超宽带均需要额外布置信标节点,提高了定位成本和实现复杂度;地磁定位需要提前采集离线地磁信息,并且地磁信息需要经常更新,不适合大规模使用;计算机视觉定位技术定位精度较低,且算法实现难度较大。Foxlin等[7]提出基于惯性测量单元(IMU)的传统导航方法,加速度二次积分得到行走距离,陀螺仪积分得到航向变化值,得到的定位结果较差,不适用于行人的定位与导航。宋镖等[8]设计了地磁辅助惯导的手机室内定位系统,用地磁指纹匹配校正惯导的累积误差,并达到了1 m的定位精度,但是地磁指纹地图建立过程繁琐,且地磁信息不稳定,不适合长时间大范围的室内环境。为此,提出一种基于行人航迹推算(PDR)的行人室内定位算法,该PDR定位算法具有精度高、成本低和易实现的优点,是当前消费级室内定位的最佳选择。
1 PDR原理概述
行人航迹推算(pedestrian dead reckoning,简称PDR)定位原理是已知行人的初始位置P(t0)的坐标为E(t0)、N(t0)),利用加速度计、陀螺仪和磁力计数据解算出下一步的航向角γ和步长d,从而推算出从初始位置到当前位置的轨迹[9]:
(1)
其中:E(tn)和N(tn)分别为行人第n步的正东方向E和正北方向N的坐标;di为第i步的步长;γi为第i步的航向角,通常认为行人在单步内的航向角不变。PDR定位算法包括步频检测、步长检测和航向检测,其定位原理和数据解算系统框图如1、2所示。
图1 PDR定位原理示意图
图2 PDR定位系统框图
2 步频步长检测算法
利用人行走时加速度信号的周期性来解算行人的步频和步长。为了避免手机具体朝向带来的影响,对加速度数据进行归一化处理。
(2)
图3 归一化后加速度波形
为了消除手机加速度传感器精度较低和行人使用手机习惯不同带来的噪声影响,对原始加速度数据进行滑动窗口平滑滤波预处理。图4为平滑滤波后的加速度波形,可以更加直观地看到加速度变化趋势。
图4 平滑滤波后加速度波形
2.1 步频检测
步频检测采用阈值交叉和极值检测相结合的方法。设定上下阈值,当加速度高于上阈值时,检测局部极大值,然后追踪数据;当加速度低于下阈值时,检测局部极小值,记为单步完成。依次重复,直到检测出所有有效跨步为止。
图5 步频检测示意图
2.2 步长检测
步长检测方法主要分为2类[10]:1)固定步长,在单步跨步内的步长是固定的,这种方法简单方便,但行人的每一次跨步步长显然不是固定不变的;2)动态步长,行人步长与步频、加速度等的变化有关。采用动态步长检测模型估计行人步长,
(3)
其中:amax为第k步单步内的最大加速度;amin为单步内的最小加速度;λ为比例系数,在定位前用最小二乘法线性拟合加速度数据训练得到。该模型参数较少,容易实现,经实验验证,模型精度符合定位要求。
3 航向检测算法
航向检测是定位解算的关键步骤,较小的航向偏差经过长时间的累积也能造成较大的定位误差,尤其针对消费级定位系统,传感器精度较低,对航向检测算法有更高的要求。航向检测算法主要是使用磁力计直接解算航向[11],结构简单,易于实现,但是磁力计易受到系统本身和外界环境的磁干扰,尤其是在室内地磁复杂多变的情况下,会大幅度降低磁力计的解算精度。为此,使用四元数解算三轴陀螺仪数据,采用扩展卡尔曼滤波(extended Kalman filter,简称EKF)融合三轴加速度计、三轴陀螺仪和三轴磁力计数据解算行人航向角。陀螺仪可在短时间内提供较高的航向角,但航向误差会随时间累积,而加速度计和磁力计可提供绝对的航向角,但精度较低,融合三者数据,可以得到长时间稳定的高精度航向角。
四元数的刚体运动方程[12]和其矩阵形式为:
(4)
(5)
(6)
其中:gx、gy、gz为经过数据融合后的三轴角速度;Δt为手机传感器采样周期。最后,解算行人姿态角(横滚角γ、俯仰角θ和航向角ψ):
(7)
扩展卡尔曼滤波用于估计离散时间序列的状态变量。首先根据前一时刻的后验估计值来估计当前时刻的状态,然后使用当前时刻的观测值修正当前的状态,得到当前时刻的后验估计值[14]。其状态方程和观测方程为:
Qk+1=FQk+wk;
(8)
(9)
图6 航向角测试
4 实验结果及分析
设计手机端APP采集手机内置加速度计、陀螺仪和磁力计传感器数据,数据存储在手机中,然后上传至笔记本电脑,用Matlab平台实现PDR定位算法的仿真。实验测试手机为华为荣耀9,内置加速度和陀螺仪传感器为LSM6DS3,地磁传感器为AKM09911,设置算法的采样频率为50 Hz。测试之前,实验者以不同速度行走,利用最小二乘法训练步长比例系数λ,并完成磁力计的校准。
4.1 步频步长实验
步频步长测试场地为标准400 m跑道,选取不同的人分别沿直线行走50 m和100 m进行步频步长测试。步频检测准确率接近100%。步长测试实验结果如表1所示。从表1可看出,步长检测误差小于1%。
表1 步长测试实验结果
4.2 室内定位结果分析
图7 室内定位效果
图8 室内定位误差
室内定位测试场地为图书馆内回字形走廊,其长宽分别为34 m和18 m,行走总长度约为100 m。已知行人初始位置,实验者沿走廊走一圈回到起点位置,室内定位效果和误差如图7、8所示。从图8可看出,该PDR定位算法最大定位误差为1.72 m,平均定位误差0.86 m,误差小于1 m的为58.22%,误差小于1.5 m的为95.89%。经多次实验验证,综合定位误差小于行走总路程的1.8%。定位精度较高,符合室内定位的要求。
5 结束语
针对当前室内定位的实际需求,提出了基于PDR的行人室内定位算法。利用加速度特性检测行人步频步长,采用非线性步长检测模型,提高了步长检测的准确率,基于四元数和扩展卡尔曼滤波(EKF)的航向解算算法,融合三轴加速度计、三轴陀螺仪和三轴磁力计解算行人航向角,大大提高了航向角解算精度,使得手机定位误差在总行程的1.8%以内。在定位前无需布置任何信标节点,解决了消费级室内定位难以实现的问题。该方法定位精度较高,实用性强,应用范围广。