详解基于IMU/GPS的行人定位: IMU/GPS Based Pedestrian Localization

在这里插入图片描述
本文介绍一篇使用 IMU/GPS 数据融合的行人定位论文,这里重点是理解本文提出的 Stop DetectionGPS Correction

论文地址为:https://www.researchgate.net/publication/261452498_IMUGPS_based_pedestrian_localization


1. Introduction

低成本的 IMUGPS 结合时可以提供行人准确的位置信息。本文提出了三种计算位置的策略:IMU数据二次积分零速更新(Zero-velocity Update:ZUPT)IMU和GPS融合的扩展卡尔曼滤波(EKF)

在使用GPS进行定位时,容易受到高建筑物、山脉信号遮挡的影响,同时 GPS 的定位误差也比较大(1~10m左右)。而 IMU 则不会受到环境的影响,通过对加速度角速度进行积分便可以得到位置、速度和方向信息。然而,IMU 积分导致的累计误差会随着时间不断增加,漂移现象往往非常严重。

本文研究目的是追踪室外行人,如上图1所示,脚上安装有Xsens 的IMU,可以测量行人的加速度和角速度, GPS模块用来获取 GPS 位置信息。

下面介绍行人定位中使用到的两个坐标,如下图2所示:惯性传感器坐标 B B B (有时也称为载体坐标),世界坐标 W W W(有时也称为导航坐标)。在世界坐标中, X X X 轴指向地球表面 East 方向, Y Y Y 轴指向地球表面 North 方向,Z 轴根据右手法则向上(其实这里使用的是ENU坐标)。 R B W R^W_B RBW表示为从载体坐标到世界坐标的旋转变换(例如将载体坐标下的加速度和角速度转换为世界坐标下的加速度和角速度)。
在这里插入图片描述


2. Basic Position Calculation

下面介绍计算位置的最基础方法,由于使用的是Xsens 的IMU,传感器可以直接输出方向信息,这里用单位四元数 Q = ( q w , q 1 , q 2 , q 3 ) \mathbf{Q}=(q_w,q_1,q_2,q_3) Q=(qw,q1,q2,q3)来表示 R B W R^W_B RBW

状态向量定义为:
X k = ( P k V k O k ) T = ( x k y k z k x ˙ k y ˙ k z ˙ k ϕ k θ k ψ k ) T \begin{aligned} X_{k} &=\left(\mathbf{P}_{k} \mathbf{V}_{k} \mathbf{O}_{k}\right)^{T} \\ &=\left(\begin{array}{lllll}x_{k} & y_{k} & z_{k} & \dot{x}_{k} & \dot{y}_{k} & \dot{z}_{k} & \phi_{k} & \theta_{k} & \psi_{k}\end{array}\right)^{T} \end{aligned} Xk=(PkVkOk)T=(xkykzkx˙ky˙kz˙kϕkθkψk)T

其中 P k = ( x k , y k , z k ) T \mathbf{P}_{k} = (x_{k} ,y_{k} ,z_{k})^T Pk=(xk,yk,zk)T是行人在世界坐标的位置, V k = ( x ˙ k , y ˙ k , z ˙ k ) T \mathbf{V}_{k}=( \dot{x}_{k} ,\dot{y}_{k} , \dot{z}_{k})^T Vk=(x˙k,y˙k,z˙k)T是行人脚步运动速度, O k = ( ϕ k , θ k , ψ k ) T \mathbf{O}_{k}=(\phi_{k}, \theta_{k}, \psi_{k})^T Ok=(ϕk,θk,ψk)T是方向欧拉角。

载体加速度 a k B a^B_{k} akB到世界坐标加速度 a k W a^W_{k} akW的转换关系为:
a k W = Q k ∗ a k B ∗ Q k ′ − G a_{k}^{W}=\mathbf{Q}_{k} * a_{k}^{B} * \mathbf{Q}_{k}^{\prime}-G akW=QkakBQkG

其中, ∗ * 表示为四元数相乘 G = ( 0 , 0 , g ) T \mathbf{G}=(0,0,g)^T G=(0,0,g)T为地球重力向量。由于载体加速度包含重力加速度和运动加速度,因此这里转换到世界坐标系后要减去重力加速度。

四元数和欧拉角的转换关系:
O k = ( ϕ k θ k ψ k ) = ( atan ⁡ 2 ( 2 ( q w q 1 + q 2 q 3 ) , 1 − 2 ( q 1 2 + q 2 2 ) ) arcsin ⁡ ( 2 ( q w q 2 − q 3 q 1 ) ) atan ⁡ 2 ( 2 ( q w q 3 + q 1 q 2 ) , 1 − 2 ( q 2 2 + q 3 2 ) ) ) \begin{aligned} \mathbf{O}_{k}&=\left(\begin{array}{c}\phi_{k} \\ \theta_{k} \\ \psi_{k}\end{array}\right) =\left(\begin{array}{c}\operatorname{atan} 2\left(2\left(q_{w} q_{1}+q_{2} q_{3}\right), 1-2\left(q_{1}^{2}+q_{2}^{2}\right)\right) \\ \arcsin \left(2\left(q_{w} q_{2}-q_{3} q_{1}\right)\right) \\ \operatorname{atan} 2\left(2\left(q_{w} q_{3}+q_{1} q_{2}\right), 1-2\left(q_{2}^{2}+q_{3}^{2}\right)\right)\end{array}\right) \end{aligned} Ok=ϕkθkψk=atan2(2(qwq1+q2q3),12(q12+q22))arcsin(2(qwq2q3q1))atan2(2(qwq3+q1q2),12(q22+q32))

根据二次积分,可以获得位置和速度信息,计算方程如下:
X k ( 1 : 6 ) = ( P k V k ) = ( I I ∗ T S 0 I ) X k − 1 ( 1 : 6 ) + ( T S 2 / 2 ∗ I T S ∗ I ) a k − 1 W \begin{aligned} X_{k}(1: 6)=\left(\begin{array}{l}\mathbf{P}_{k} \\ \mathbf{V}_{k}\end{array}\right) &=\left(\begin{array}{cc}\mathbf{I} & \mathbf{I} * T_{S} \\ \mathbf{0} & \mathbf{I}\end{array}\right) X_{k-1}(1: 6) +\left(\begin{array}{c}T_{S}^{2} / 2 * \mathbf{I} \\ T_{S} * \mathbf{I}\end{array}\right) a_{k-1}^{W} \end{aligned} Xk(1:6)=(PkVk)=(I0ITSI)Xk1(1:6)+(TS2/2ITSI)ak1W

其中, T s T_s Ts是IMU采样时间间隔, I \mathbf{I} I 3 × 3 3\times3 3×3的单位阵,根据上述方程,就能得到行人在不同时刻的位置。然而,由于IMU本身固有的漂移现象,并不能得到可靠的位置信息。图3是数据采集时行人走过的真实运动轨迹,图4是计算轨迹,可以看到计算后的轨迹漂移现象非常严重。

在这里插入图片描述


3. Error Correction By Stop Detection

为了解决漂移现象,本文提出了 Stop Detection 方法。行走时,脚部其实是经历了一个静态阶段运动阶段相互变换的过程,静态阶段速度应为0,因此当检测到静态阶段时应将速度设为0,这样就可以部分修正漂移现象,这种修正方法也被称为 zero-velocity updates (ZUPTs)

作者使用了一个多条件的静态检测算法,具体如下:

在这里插入图片描述在这里插入图片描述在这里插入图片描述

其中, ∥ a k ∥ = [ a k b ( 1 ) 2 + a k b ( 2 ) 2 + a k b ( 3 ) 2 ] 0.5 \left\|\mathbf{a}_{k}\right\|=\left[a_{k}^{b}(1)^{2}+a_{k}^{b}(2)^{2}+a_{k}^{b}(3)^{2}\right]^{0.5} ak=[akb(1)2+akb(2)2+akb(3)2]0.5是加速度模, σ a k b 2 = 1 2 s + 1 ∑ j = k − s k + s ( a k b − a k b ‾ 2 ) \sigma_{a_{k}^{b}}^{2}=\frac{1}{2 s+1} \sum_{j=k-s}^{k+s}\left(a_{k}^{b}-\overline{a_{k}^{b}}^{2}\right) σakb2=2s+11j=ksk+s(akbakb2)是加速度局部方差, ∥ w k ∥ = [ w k b ( 1 ) 2 + w k b ( 2 ) 2 + w k b ( 3 ) 2 ] 0.5 \left\|{w}_{k}\right\|=\left[w_{k}^{b}(1)^{2}+w_{k}^{b}(2)^{2}+w_{k}^{b}(3)^{2}\right]^{0.5} wk=[wkb(1)2+wkb(2)2+wkb(3)2]0.5是角速度模。

当同时满足以上条件时,就判定为静止,即 C stop  = C 1 & C 2 & C 3 C_{\text {stop }}=C 1 \& C 2 \& C 3 Cstop =C1&C2&C3。此时,位置和速度更新方程如下 (这里需要提醒的时,当判定为静止时 C stop C_{\text{stop}} Cstop应为0才能保证速度初始化为0,这里与原文处理有一点不同)。
X k ( 1 : 6 ) = ( P k V k ) = ( I I ∗ T S 0 I ∗ C stop ) X k − 1 ( 1 : 6 ) + ( T S 2 / 2 ∗ I T S ∗ I ) a k − 1 W \begin{aligned} X_{k}(1: 6)=\left(\begin{array}{l}\mathbf{P}_{k} \\ \mathbf{V}_{k}\end{array}\right) &=\left(\begin{array}{cc}\mathbf{I} & \mathbf{I} * T_{S} \\ \mathbf{0} & \mathbf{I} *C_{\text{stop}}\end{array}\right) X_{k-1}(1: 6) +\left(\begin{array}{c}T_{S}^{2} / 2 * \mathbf{I} \\ T_{S} * \mathbf{I}\end{array}\right) a_{k-1}^{W} \end{aligned} Xk(1:6)=(PkVk)=(I0ITSICstop)Xk1(1:6)+(TS2/2ITSI)ak1W

下面是 stop detection 结果和计算后的轨迹,漂移现象得到了很大的改善。

在这里插入图片描述


4. Error Correction By GPS

IMU导航的主要缺陷是其误差会随着时间不断累加。相反,GPS不会出现很大漂移现象。因此常见导航系统为GPS/IMU组合导航,本文作者提出使用EKF来修正IMU定位误差。

已知系统状态转移模型为:
X ^ k = ( P ^ k V ^ k O ^ k ) = ( I I ∗ T s 0 0 I ∗ C s t o p 0 0 0 0 ) ⏟ A X k − 1 + ( T s 2 / 2 ∗ I T s ∗ I 0 ) ⏟ B a k w + ( 0 0 Q 2 Euler ⁡ ( Q k ) ) + w k \hat{\mathbf{X}}_{k}=\left(\begin{array}{c}\hat{\mathbf{P}}_{k} \\ \hat{\mathbf{V}}_{k} \\ \hat{\mathbf{O}}_{k}\end{array}\right)=\underbrace{\left(\begin{array}{ccc}\mathbf{I} & \mathbf{I} * T s & \mathbf{0} \\ \mathbf{0} & \mathbf{I} * C_{s t o p} & \mathbf{0} \\ \mathbf{0} & \mathbf{0} & \mathbf{0}\end{array}\right)}_{\mathbf{A}} \mathbf{X}_{k-1}+\underbrace{\left(\begin{array}{c}T_{s}^{2} / 2 * \mathbf{I} \\ T_{s} * \mathbf{I} \\ \mathbf{0}\end{array}\right)}_{B} \mathbf{a}_{k}^{w}+\left(\begin{array}{c}\mathbf{0} \\ \mathbf{0} \\ Q 2 \operatorname{Euler}\left(\mathbf{Q}_{k}\right)\end{array}\right)+\mathbf{w}_{k} X^k=P^kV^kO^k=A I00ITsICstop0000Xk1+B Ts2/2ITsI0akw+00Q2Euler(Qk)+wk

其中 A \mathbf{A} A 9 × 9 9\times9 9×9的状态转移矩阵, B \mathbf{B} B是控制矩阵, w k \mathbf{w}_{k} wk是过程噪声。

测量模型为:
z k = H X ^ k + n k \mathbf{z}_{k}=\mathbf{H}\hat{\mathbf{X}}_{k}+\mathbf{n}_{k} zk=HX^k+nk

其中 z k \mathbf{z}_{k} zk是预测测量, H k \mathbf{H}_{k} Hk是测量矩阵, n k \mathbf{n}_{k} nk是测量噪声。

已知GPS输出为:经度、纬度、高度、航向和速度信息。一般只使用经度、纬度和航向信息,因为GPS的高度和速度信息噪声很大。这里需要对位置信息进行坐标转换处理,转换到世界坐标,坐标转换方程为:

x g p s = cos ⁡ ( ϕ ) 1 ( sin ⁡ ( ϕ ) a ) 2 + ( cos ⁡ ( ϕ ) c ) 2 [ ( lon ⁡ 1 − lon ⁡ 0 ) ∗ π 180 ] x_{g p s} = \cos (\phi) \sqrt{\frac{1}{\left(\frac{\sin (\phi)}{a}\right)^{2}+\left(\frac{\cos (\phi)}{c}\right)^{2}}}\left[(\operatorname{lon} 1-\operatorname{lon} 0) * \frac{\pi}{180}\right] xgps=cos(ϕ)(asin(ϕ))2+(ccos(ϕ))21 [(lon1lon0)180π]

y g p s = 1 ( sin ⁡ ( ϕ ) a ) 2 + ( cos ⁡ ( ϕ ) c ) 2 [ ( lat ⁡ 1 − lat ⁡ 0 ) ∗ π 180 ] y_{g p s} = \sqrt{\frac{1}{\left(\frac{\sin (\phi)}{a}\right)^{2}+\left(\frac{\cos (\phi)}{c}\right)^{2}}}\left[(\operatorname{lat} 1-\operatorname{lat} 0) * \frac{\pi}{180}\right] ygps=(asin(ϕ))2+(ccos(ϕ))21 [(lat1lat0)180π]

其中 ϕ = π 2 − lat ⁡ 0 + lat ⁡ 1 2 × π 180 \phi=\frac{\pi}{2}-\frac{\operatorname{lat} 0+\operatorname{lat} 1}{2}\times \frac{\pi}{180} ϕ=2π2lat0+lat1×180π ( lon ⁡ 0 , lat ⁡ 0 ) (\operatorname{lon} 0,\operatorname{lat} 0) (lon0,lat0)是参考点位置信息, ( lon ⁡ 1 , lat ⁡ 1 ) (\operatorname{lon} 1,\operatorname{lat} 1) (lon1,lat1)是测量点坐标, ( a , c ) (a,c) (a,c)是地球长半轴和短半轴半径。

这里实际测量值为:
m k = ( x g p s , y g p s , ψ g p s ) T \mathbf{m}_k=(x_{gps},y_{gps},\psi_{gps})^T mk=(xgps,ygps,ψgps)T

根据测量值,可以得到测量矩阵为:
H = ( 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ) \mathbf{H}=\left(\begin{array}{ccccccccc}1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1\end{array}\right) H=100010000000000000000000001

卡尔曼更新方程为:
X k = X ^ k + K k ∗ ( m k − H X ^ k ) \mathbf{X}_{k}=\hat{\mathbf{X}}_{k}+\mathbf{K}_{k} *\left(\mathbf{m}_{k}-\mathbf{H} \hat{\mathbf{X}}_{k}\right) Xk=X^k+Kk(mkHX^k)

其中,卡尔曼增益 K k \mathbf{K}_{k} Kk计算方程为:
K k = Σ ^ k H T ( H Σ ^ k H T + R k ) − 1 \mathbf{K}_{k}=\hat{\mathbf{\Sigma}}_{k} \mathbf{H}^{T}\left(\mathbf{H} \hat{\mathbf{\Sigma}}_{k} \mathbf{H}^{T}+\mathbf{R}_{k}\right)^{-1} Kk=Σ^kHT(HΣ^kHT+Rk)1

其中 Σ ^ k \hat{\mathbf{\Sigma}}_k Σ^k是状态协方差矩阵,预测时协方差矩阵计算方程为:
Σ ^ k = A Σ ^ k A T + N k \hat{\mathbf{\Sigma}}_k=\mathbf{A}\hat{\mathbf{\Sigma}}_k \mathbf{A}^T + \mathbf{N}_k Σ^k=AΣ^kAT+Nk

GPS更新时协方差矩阵计算方程为:
Σ k = ( I 9 × 9 − K k H ) Σ ^ k ( I 9 × 9 − K k H ) T + R k \boldsymbol{\Sigma}_{k} = (\mathbf{I}_{9 \times 9}- \mathbf{K}_k \mathbf{H}) \hat{\mathbf{\Sigma}}_k (\mathbf{I}_{9 \times 9}- \mathbf{K}_k \mathbf{H})^T + \mathbf{R}_k Σk=(I9×9KkH)Σ^k(I9×9KkH)T+Rk

这里介绍下方向修正,因为我们使用四元数表示方向,四元数修正方程为:
Q k = Δ Q k − 1 Q k \mathbf{Q}_k = \Delta\mathbf{Q}_{k-1} \mathbf{Q}_k Qk=ΔQk1Qk

其中 Δ Q k − 1 = Euler ⁡ 2 Q ( 0 , 0 , K k ∗ ( m k − H X ^ k ) ( 9 ) ) \Delta \mathbf{Q}_{k-1}=\operatorname{Euler} 2 Q\left(0,0, \mathbf{K}_{k} *\left(\mathbf{m}_{k}-\mathbf{H} \hat{\mathbf{X}}_{k}\right)(9)\right) ΔQk1=Euler2Q(0,0,Kk(mkHX^k)(9)),将欧拉角转换为四元数。

整个算法流程如下:
在这里插入图片描述
最后是本文提出的定位算法在两个测试场景下的效果:

在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值