1. 引言
由于互联网的发展,移动设备和各种个人设备的流行,基于位置的服务(Location Based Services, LBS)在导航、跟踪、监控、信息推送等服务中,用户获取定位信息变得越来越重要。GPS可方便地提供户外个人定位信息 [1] ,然而,城市中心、地下室、建筑内部等环境中的高层建筑卫星信号非常弱,难以提供准确的位置信息。因此,如何在恶劣环境中定位已成为学术界和产业界的热门研究方向。同时,调查显示,70%的移动电话和80%的数据连接来自室内 [2] ,室内定位技术已成为研究的重点。
MEMS IMU室内导航的理想设备具有自主性强、输出频率高、短时精度高、成本低、体积小等优点。基于MEMS IMU室内导航系统中最常用的结构是Foxlin提出的鞋绑式结构 [3] ;文献 [4] 将惯性传感器放在腰部,数据稳定,动态性弱,但行走过程中零速间隔不明显,积累误差的修正比较复杂。零速修正(Zero Velocity Update, ZUPT)修正零角速度(Zero Angular Rate Update, ZARU)它是惯导系统中常用的修正算法,其中最关键的是零速范围的检测。
国内外学者对零速检测算法提出了许多不同的算法。传统的零速检测算法以比力模值、比力方差和角速模值为检测量 [5] [6] [7] ,该方法对正常行走精度较高,但对跳跃、踏步、快速行走等不同步态的检测效果不理想。文献 [8] 在此基础上,设置了一个滑动时间窗口来判断行人的运动模式,以调整阈值的大小,具有一定的适应性,但步态效果仍不理想;Bebek O等人通过安装在脚底的压力传感器分析人体的行走状态,然后准确地找到行走的零速范围,然后进行零速校正 [9] ,文献 [10] 室内介绍RFID辅助定位,但这两种方法都引入了其他设备,大大提高了系统成本,限制了其推广;文献 [11] 采用假设检验算法,通过获取惯性传感器的输出数据来判断,但通过实验分析,发现该方法仍不成熟,定位精度不理想。
基于此,本文仍将采用MEMS惯性传感器与脚固联的系统结构,提出了适合多步态的零速区间检测算法。对于不同的步态,该算法可以更好地实现零速区间检测。首先,通过样机实验分析了不同运动状态MEMS IMU确定相应状态下的阈值。在实际导航中,首先通过传感器输出的信息判断载体的运动状态,然后匹配相应状态下的阈值进行零速范围检测,然后进行零速校正和零角速校正,适应抑制MEMS惯性传感器的误差积累。
2. MEMS惯性传感器室内定位系统原理
MEMS惯性传感器室内定位系统主要由导航算法、零速检测和误差修正三部分组成。
图1显示了定位系统结构的示意图,导航算法部分在导航系统的初始对准中成本较低MEMS IMU陀螺精度低,对地球自转角速度的变化不敏感。因此,通过加速度计计算俯仰角和横滚角,通过磁力计输出的磁场强度计算航向角。导航解决方案模块主要通过IMU导航定位信息,如载体的速度、姿态、位置等。
Figure 1. MEMS inertial sensors positioning
图1. MEMS惯性传感器定位系统结构图
零速检测部分主要是判断载体的运动状态,包括正常行走、快跑、上楼、下楼等状态,然后测量加速度计输出的比力模值和方差以及陀螺仪输出的角速度模值确定不同运动状态的不同阈值,然后确定零速范围。
为了消除MEMS IMU随着时间的推移,通过IMU卡尔曼滤波器的误差模型结构,通过上一步检测到的零速范围,以速度误差作为过滤和状态估计的观测量,并通过反馈校正来纠正系统误差 [12] 。
3. 适用于多步态零速区间检测算法
根据IMU输出频率设置滑动窗口在时间段内遍历所有加速信号,分别为每个窗口中的数据找到方差,然后将相应的变量与实验获得的相应单个阈值进行比较,在阈值范围内为零速范围,否则处于运动状态。这种零速检测算法在正常步态下精度较高,但对不同步态的检测效果并不理想。因此,本文采用了先判断步态再匹配相应阈值的检测方法。多步态零速检测方法分为三个步骤:确定阈值,判断运动状态,判断零速区间。详细介绍每一步:
3.1. 选择判断阈值
在零速检测之前,需要确定不同运动状态下的判断阈值。在早期阶段,通过分析加速度计和陀螺仪的噪声特性以及多次试验,确定了不同状态下的阈值。表1是慢速行走、上下楼梯和步行的阈值参数。
Table 1. Selection of threshold parameters
表1. 阈值参数选择
t
h
a
min 和
t
h
a
max 是比力模值的阈值,
t
h
σ 为比力方差的阈值,
t
h
w 加速度模值的阈值。
3.2. 判断当前的运动状态
每次收集加速度等运动信息后,需要根据获得的信息判断当前的运动状态,然后根据运动状态选择相应的判断阈值。
根据每个采样时刻
i 判断比力模值,
i 比力模值的时刻表示如下:
f
i
|
=
f
x
i
2
f
y
i
2
f
z
i
2 (1)
为了判断运动状态,本文分析了不同运动状态下加速度计的输出,图2和图3是正常行走和上下楼梯的输出结果。
Figure 2. Combined acceleration of normal state
图2. 正常行走时的合加速度
Figure 3. Combined acceleration of climbing stairs
图3. 上楼时的合加速度
通过分析不同状态下的加速度信号,可以发现不同行走状态下最大值和最小值之差不同。因此对一定的时间周期内的加速度数据进行扫描,该时间周期通常选取约等于人体的一个迈步周期。然后可以通过该周期内的差值辨识出这段时间的步速是正常行走、快速、上下楼、踏步或跳跃等状态。
具体判断范围如下:
f
max
?
f
min
<
3
g 是正常行走的范围;
3
g
<
f
max
?
f
min
<
4
g 是快速行走的范围;
4
g
<
f
max
?
f
min
<
7
g 是上下楼梯的范围;
f
max
?
f
min
>
7
g 是大踏步或跳跃的范围。
3.3. 检测零速区间
根据以上辨识出来的运动状态,选取相应的判断阈值,采用三条件结合的方法进行检测,比传统的依靠单一的元素进行检测精度更高。三个判断条件分别如下:
条件1:比力模值
f
k
|
=
f
x
2
f
y
2
f
z
2 ,假设
t
h
a
min
,
t
h
a
max 分别是信心区间的最小值和最大值。
condition
1
=
{
1
0
t
h
a
min
<
|
f
k
|
<
t
h
a
max
ese (2)
其中1表示检测为静止状态,0表示运动状态。
条件二:比力的方差。采用滑动窗口观测比力方差能够有效检测步态周期中信号的突变阶段。计算如下:
σ
f
k
2
=
1
2
m
+
1
∑
j
=
k
−
m
k
+
m
(
f
j
−
f
¯
k
)
2 (3)
其中,
f
¯
k 为比力均值;
m 为滑动窗口大小,与输出频率有关。
condition
2
=
{
1
0
σ
f
k
<
t
h
σ
else (4)
条件三:角速度模值
w
k
|
=
w
x
2
+
w
y
2
+
w
z
2 。在零速区间角速度应当趋向于零,确定相应的角速度阈值
t
h
w 来确定零速区间。
condition
3
=
{
1
0
|
w
k
|
<
t
h
w
else (5)
当条件一、条件二、条件三同时满足的时候则记录此时状态为1,为我们所需要检测到的零速区间,若为0则表示运动状态。
图4、图5为单一阈值检测方法和适应多步态检测方法的检测结果对比。可以看出该行走过程中共有7个零速区间,传统的检测方案只有四个区间可以较好地检测出来,检测准确率仅有57.14%,而本文提出的方法则检测出全部区间,检测准确率有较大提升。
Figure 4. Detection result in big strides by a single threshold method
图4. 采用单一阈值检测方法的大踏步检测结果
Figure 5. Detection result in big strides by the method suitable for multi gait
图5. 采用多步态检测方法的大踏步检测结果
4. 零速修正滤波算法
本文所选用的导航坐标系是东北天地理坐标系,将三维速度误差、三维姿态误差角和三维位置误差列为导航信息的误差,考虑到惯性器件如陀螺漂移、加表零偏引起的误差,则卡尔曼滤波的状态量为:
X
=
[
δ
φ
ε
b
δ
p
n
δ
v
n
∇
b
]
T (6)
其中,
δ
φ 表示姿态误差,包括俯仰角误差、航向角误差和横滚角误差;
ε
b 表示三个轴向的陀螺漂移;
δ
p 表示导航坐标系下导航解算的位置误差;
δ
v
n 表示导航坐标系下导航解算的速度误差;
∇
b 表示三个轴向的加速度误差。
理论上在零速区间解算的速度和陀螺仪的角速度输出为零,但由于MEMS IMU本身的噪声误差使得实际解算的速度和陀螺仪输出的角速度不为零。此时可以利用零速修正和零角速度修正,将零速区间的速度和陀螺输出的角速度作为卡尔曼滤波的观测量。
本文为了提高定位的精度,同时在零速区间采用ZUPT和ZARU,则结合两者之后的量测值可以表示为;
Z
k
=
[
δ
v
n
]
T
=
[
v
n
]
T
−
[
0
0
0
]
T (7)
卡尔曼滤波器可以表示为:
{
X
˙
(
t
)
=
F
(
t
)
X
(
t
)
+
W
(
t
)
Z
k
=
H
k
X
k
+
V
k (8)
量测矩阵为
H
k
=
[
0
3
×
3
I
3
×
3
0
3
×
3
0
3
×
3
0
3
×
3
0
3
×
3
0
3
×
3
0
3
×
3
I
3
×
3
0
3
×
3
] (9)
由于零速修正和零角速度修正的量测值:零速区间的速度和陀螺输出的角速度只有在零速时刻才能获取,因此本文的卡尔曼滤波算法在检测到零速区间时做时间更新和量测更新,在未检测到零速区间时只做时间更新。
5. 定位实验验证
5.1. 硬件介绍
采用的实验样机是MPU9250 MEMS惯导模块,由三轴加速度计、三轴陀螺仪和三轴磁力计组成,具体性能指标如表2所示:
Table 2. Hardware performance index
表2. 硬件性能指标
N表示该项没有具体指标。
模块通过蓝牙与上位机进行通讯,具体实物图如图6所示。
Figure 6. MPU9250 physical drawing
图6. MPU9250 MEMS惯导模块实物图
为了验证算法的有效性,分别进行了三组不同运动状态的实验,为一组平面行走实验、一组三维上下楼实验,平面行走为长距离多种步速交替变化的行走实验。
5.2. 平面行走实验
针对平行长距离行走实验给出了传统单一阈值检测算法得到的位置曲线和本文提出的多步态检测算法得到的位置曲线,实验结果如图7,图8所示。
表3为平面行走实验中,两种算法的结果对比,其中误差用起点与终点之间的距离表示。
单一阈值法用正常平面行走的阈值在一定程度上抑制了误差的发散,但在行走过程中的拐弯或者掉头时会产生较大的加速度差值,传统的算法在这种情况下不可避免的会产生累积误差。由实验结果可以看出,针对多种步速变化交替的行走过程,采用多步态零速检测可以明显提高定位精度,误差减小了接近一倍。
Figure 7. Position curve of plane walking corrected by single threshold and ZUPT
图7. 单一阈值 + ZUPT算法修正的平面行走位置曲线
Figure 8. Position curve of plane walking corrected by the multi gait algorithm
图8. 多步态算法修正的平面行走位置曲线
Table 3. Contradistinction of plane walking result in two ways
表3. 两种算法平面行走结果对比
5.3. 三维上下楼实验
三维上下楼行走实验是从二楼沿右侧楼梯到达四楼穿过一段走廊在从左侧楼梯下来回到起点。同样给出了传统单一阈值检测算法得到的位置曲线和本文提出的多步态检测算法得到的位置曲线,实验结果如图9,图10所示。
Figure 9. Position curve of stair walking corrected by single threshold and ZUPT
图9. 单一阈值 + ZUPT算法修正的上下楼梯位置曲线
Figure 10. Position curve of stair walking corrected by the multi gait algorithm
图10. 多步态算法修正的上下楼梯位置曲线
表4为上下楼实验中,两种算法的结果对比,其中误差用起点与终点之间的距离表示。
Table 4. Contradistinction of stair walking result in two ways
表4. 两种算法上下楼梯结果对比
通过对比上下楼的结果可以发现,本文提出的基于多步态零速检测的方法大大提高了定位的精度。在上下楼过程中会出现多种运动状态如楼梯与楼梯之间的平面行走和上下台阶时的变加速度运动,用传统的单一阈值 + ZUPT算法进行检测零速区间,容易出现阈值不匹配的问题,造成累积误差。而多步态零速检测算法根据足部状态调整阈值可以有效地减少了误差积累。
6. 结论
本文基于低成本、低精度的惯性传感器进行研究室内定位技术,利用脚步的运动规律对行走过程中的累积的误差进行了校正。针对传统单一阈值零速检测算法无法处理多种步态的情况,提出一种多步态零速检测算法,先辨识脚步运动状态再检测零速区间,该算法具有很强的自适应性。实验结果表明该算法不但对普通的二维平面行走具有较高的定位精度,对于复杂的上下楼梯运动状态依然可以保证较高的定位精度,且定位精度可以保证在总行程的3%左右。后期还可以通过对MEMS器件进行标定,改进滤波算法和自适应算法使导航精度得到进一步的提高。同时在低成本MEMS室内导航研究过程中,单独的依靠MEMS IMU以及零速修正还不能实现远距离高精度导航,为研究出更高精度的导航系统可以考虑地图约束、无线信号辅助等定位辅助定位方式。同时也可以和GPS组合形成室内外无缝导航。