1.本发明属于惯性导航系统技术领域,具体涉及一种基于深度神经网络的室内行人惯性导航方法。
背景技术:2.随着微机技术的发展,越来越多的手机、手表、手环等智能设备内嵌基于微机电系统(micro electro mechanical systems,mems)的惯性测量单元(inertial measurement unit,imu)。与高成本军用imu相比,智能设备中的imu具有成本低廉、携带方便、体积小、功耗低等优点。利用智能移动设备进行室内惯性导航具有不受外界因素的优点,具有良好的应用前景。
3.惯性导航是一种推算导航方式,主要是通过在人身上携带的imu设备测量角速度和线加速度,根据牛顿第二定理推算出行人速度、位置。由于imu存在随机漂移误差,采用直接积分算法会在积分过程中将偏移误差指数级放大,造成定位累计误差随时间增大,最终导致导航失效,因此能够有效的消除惯性导航系统的累计误差是实现高精度惯性导航系统的关键。
4.针对上述传统积分算法产生累计误差的问题。国外学者提出了零速更新(zerovelocityupdate,zupt)算法,该算法的思想是:假设在行人行走过程中,任一侧脚掌接触地面到该侧脚掌再次接触地面的过程被称为一个步态周期。每个步态周期中,脚掌接触地面时作短暂停留,停留的时间段内将脚的速度设置为零,结合扩展卡尔曼滤波更新行人的速度、位置及姿态角。随着行人的不断向前行走,不断的循环解算更新。然而该算法要求待定位者必须将imu设备放置于行人脚上,与日常使用场景不兼容。且该算法只适用于行人向前行走,不能处理复杂的自然运动。同时该算法无法彻底消除累计误差,停留在实验室阶段,精度始终无法满足商业化要求。
5.深度神经网络是一种多层的监督学习神经网络,在处理时序数据方面表现出良好的效果。然而深度神经网络存在梯度消失或梯度爆炸和网络退化等问题。
技术实现要素:6.本发明要解决的技术问题是:为了克服现有技术中之不足,本发明提供一种基于深度神经网络的室内行人惯性导航方法。通过构建深度神经网络模型处理传感器数据,消除惯性导航中的累积误差。通过多次实验下深度神经网络预测轨迹与真实轨迹进行对比,建立导航误差的等级划分规则,衡导航准确性。
7.本发明解决其技术问题所采用的技术方案为:
8.一种基于深度神经网络的室内行人惯性导航方法,包括以下步骤:
9.s1、惯性导航数据的采集、预处理;
10.s2、构建深度神经网络模型,使用步骤s1的惯性导航数据中的训练样本训练网络模型;
11.s3、对s2步骤训练完成的网络模型进行测试,并对测试结果进行误差评估,衡量模型准确性。
12.进一步地,按照如下步骤进行惯性导航数据的采集、预处理:
13.s1.1、惯性导航数据的采集:待定位者携带内置微机电系统的安卓智能手机设备进行实验,手机设备简称为imu设备。实验时待定位者可以手持imu设备,也可以放在裤兜、手提包中。imu设备采集手机内置的传感器数据,采集数据包括每个采样时刻点的加速度传感器数据、陀螺仪数据、游戏旋转矢量传感器数据、采样时刻序列,以及记录待定位者的初始位置和初始身体朝向。同时使用qualisys光学动作捕捉系统测得的待定位者的轨迹作为真值。对多名待定位者在不同环境状况下自然运动时设备记录的数据进行提取。数据保存在imu设备的内部存储空间。所述自然运动包括:跑步、快速行走、正常速度行走、站立静止、坐立。
14.s1.2、数据预处理:对imu设备采集的原始数据进行预处理,预处理包括自适应中值滤波、传感器偏差补偿以及坐标系转换。然后采用滑动窗口机制对坐标系转换后的数据进行切分,并给每个数据片段贴上光学动作捕捉系统测得的数据作为标签。将一次实验中预处理后的数据合并打包成一个惯性数据集,多组惯性数据集构建惯性导航数据库。
15.进一步地,所述步骤s2中所述神经网络模型的构建及训练过程是按如下步骤进行:
16.s2.1、网络模型的构建:网络模型包括输入层、特征提取层、残差模块层、lstm层、输出层。
17.s2.2、损失函数:损失函数能反映出模型预测值与标签值的差距。采用均方根误差函数为损失函数,利用损失函数进行反向传播更新神经网络的参数。
18.s2.3、模型训练:设定最大训练步数为2000epochs,在每个训练周期中,通过前向传播计算神经网络模型的预测输出以及对应的损失函数;通过反向传播算法与adam优化器对模型的权重进行优化;在训练过程中每经过20epochs对神经网络模型的损失函数进行比较,当损失函数收敛到预设的阈值σ以内,则代表训练完成,终止对神经网络模型的训练。
19.进一步地,所述的步骤3中具体包括:
20.s3.1、误差评估基准:定义光学动作捕捉系统数据生成真实轨迹。将惯性导航数据库中的测试集放入训练好的神经网络模型,推算出行人轨迹,定义轨迹为待评估轨迹。评估基准包括两者之间的绝对轨迹误差ate和相对轨迹误差rte。
21.s3.2、导航精准性评估:根据ate和rte的值数值大小进行导航精确性分级。若ate与rte的加权平均值小于2,则导航精准性视为优秀。ate与rte的加权平均值大于2且小于6,则导航精准性视为及格,ate与rte的加权平均值大于6则视为导航失败。
22.进一步地,数据预处理的具体步骤如下:
23.1)首先,对imu设备采集的原始数据中的加速度传感器数据、陀螺仪数据进行自适应中值滤波,滤除极端异常数据。
24.2)其次,对滤波后的数据进行传感器偏差补偿,实验前利用六位置法测量得到加速度传感器静态零偏矩阵a_bias和线性比例因子误差矩阵a_scale。利用z轴旋转法测量陀螺仪的零偏矩阵g_bias和比例因子误差矩阵g_scale。偏差补偿公式如(2-1)所示
[0025][0026]
其中,a为偏差补偿后的三轴加速度计数据,g为偏差补偿后的陀螺仪数据,为经过自适应中值滤波的三轴加速度计数据,为经过自适应中值滤波的三轴陀螺仪数据。
[0027]
3)然后,对偏差补偿后的数据进行坐标系转换,转换到导航坐标系中。获取游戏旋转矢量传感器数据,其由旋转角cos(theta/2)与三个绕旋转轴旋转数值,组成一组四元数,分别对应q0,q1,q2,q3。使用四元数法表示姿态转换矩阵。使用二阶毕卡算法不断更新姿态转换矩阵。坐标变换公式如(2-2)所示:
[0028][0029]
其中,[a,g]n代表导航坐标系下的加速度计、陀螺仪数据,代表姿态转换矩阵,[a,g]代表偏差补偿后的加速度计、陀螺仪数据。如式(2-3)所示:
[0030][0031]
4)最后,采用滑动窗口机制切分[a,g]n,给每个数据片段贴上光学动作捕捉系统测得的数据作为标签,将一次实验中预处理后的数据合并打包成一个惯性数据集,多组惯性数据集构建惯性导航数据库。
[0032]
进一步地,特征提取层包括一个7
×
7的卷积核和批归一化(batch normalization,bn)、relu激活函数、最大池化层(max pooling,mp),并在最大池化层之后加入通道注意力机制模块(channel attention module,cam)以便更好的提取特征。残差模块层由8个残差模块组成。每个残差模块包含3
×
3的卷积、批归一化、relu激活函数这3种操作。同时在每个残差模块的末端添加一个nam模块的通道注意力子模块,用以捕捉显著特征,提高模型精度。lstm层是一个双向lstm,即由两个信息传递相反的lstm循环层构成。输出层是一个输入维度为7168单元、输出维度为2单元的全连接层。以每200帧预处理步骤4后的数据序列[a,g]n作为1个窗口输入神经网络。神经网络的输出为一个2d向量所述的神经网络模型数学表达如式(2-4)所示:
[0033][0034]
其中,f
θ
表示网络的操作,[a,g]n代表当地导航坐标系下的加速度计、陀螺仪数据,i代表输入输入窗口的数据帧,代表网络的输出。
[0035]
神经网络的输出2d向量的物理意义表示导航坐标系下行人的速度,进而推算出完整的行人行走轨迹。
[0036]
定义损失函数为均方根误差函数。即表示神经网络模型预测值与标签真实值的欧氏距离之和。神经网络学习预测时,以神经网络输出得到的2d向量与动作捕捉系统测得的标签label(v
x
,vy)之间的均方根误差作为损失函数。
[0037]
进一步地,定义光学动作捕捉系统数据生成真实轨迹,第i数据帧下待定位者的位
置为pi(xi,yi)。由神经网络预测生成的轨迹为待评估轨迹,第i数据帧下待定位者的位置为绝对轨迹误差定义为真实轨迹与待评估轨迹之间的总体均方根误差。总体均方根误差由式(3-1)计算获得:
[0038][0039]
其中n为数据集总帧数。
[0040]
相对轨迹误差定义为固定时间间隔内的均方根误差,相对轨迹误差由式(3-2)计算获得:
[0041][0042]
式中m为测试集固定时间间隔的个数,trans(ei)为位置变化量之差。
[0043]
本发明的有益效果为:本发明利用光学动作捕捉系统提供的准确的行人轨迹信息作为校准信息,通过潜在损失函数训练所设计的深度神经网络,实现深度神经网络对于惯性导航系统累计误差的特征学习,从而消除惯性导航系统的累计误差。使得行人惯性导航系统的泛化性能大大提高,具备了商业使用的条件。
附图说明
[0044]
图1是本发明简要算法流程图。
[0045]
图2是本发明具体流程图。
[0046]
图3是待定位者设备佩戴示意图。
[0047]
图4是本发明的网络结构示意图。
[0048]
图5是本发明的残差模块框图。
[0049]
图6是本发明的cam机制示意图。
[0050]
图7是本发明30次实验的导航精准性评估结果。
具体实施方式
[0051]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0052]
本发明是基于智能移动设备内置的惯性器件的室内定位与导航方法的研究,主要由智能移动设备采集惯性导航数据,利用神经网络对数据进行处理得到行人的位移信息。最终显示位移轨迹并进行导航准确性评估,实现行人的室内定位与导航功能。
[0053]
本发明实施例提供了一种基于深度神经网络模型的室内行人惯性导航方法,如图1所示,包括以下步骤s1~s3:
[0054]
s1、惯性数据的采集:待定位者手持内置惯性测量单元的安卓智能手机设备进行实验,手机设备简称为imu设备。待定位者可以手持imu设备,也可以放在裤兜、手提包中。imu设备采集的数据包括每个采样时刻点的加速度传感器、陀螺仪、游戏旋转矢量传感器、
采样时刻序列,以及记录待定位者的初始位置和初始身体朝向。定义从脚指向人头顶的是z轴,指向人体行走方向的是x轴,y轴的指向遵循右手法则。同时使用光学动作捕捉系统测得的待定位者的行走轨迹作为真值。对多名待定位者在水平路面、上坡、下坡等不同测试环境状况下自然运动时设备数据进行提取。数据均保留在内部存储空间。设备佩戴方式如图3所示。
[0055]
imu设备以固定频率200hz采集数据。为采集数据,本发明设计的安卓采集软件为:imurecoder.apk。
[0056]
在本实施例中,选取5名健康年轻人作为受试者(平均年龄:24
±
8岁;身高:171
±
15cm;腿长:110
±
16cm),以1000平方米的室内仓库作为实验环境。每人按照本发明数据采集要求自然行走3-10分钟,共获取100组不同行走路线。按照7:3的比例划分训练集、测试集。
[0057]
本实施例中,行人的自然运动模式包括跑步(6m/s~9m/s)、站立静止、正常速度行走(0.4m/s~1.3m/s)、快速行走(1.3m/s~2.2m/s)。
[0058]
在本实施例中,对采集的imu设备数据进行预处理,包括自适应中值滤波、传感器偏差补偿以及坐标系转换。然后采用滑动窗口机制对预处理后的数据进行切分,并给每个数据片段贴上光学动作捕捉系统测得的数据作为标签。将一次实验中预处理后的数据合并打包成一个惯性数据集,多组惯性数据集构建惯性导航数据库。
[0059]
s2、构建神经网络模型,使用步骤s1的惯性导航数据中的训练样本训练神经网络模型;
[0060]
构建的神经网络模型由输入层、特征提取层、残差模块层、lstm层、输出层组成。网络模型示意图如图4所示。
[0061]
以每200帧预处理后的数据序列[a,g]n作为1个窗口输入输入层,输入数据序列的维度为200
×
6。特征提取层首先使用7
×
7的卷积核和最大池化层对输入的数据进行初步的特征提取和降维。得到64道50
×
1的特征序列feat1。然后经过cam模块,对特征序列feat1基于宽和高分别进行最大池化和平均池化操作,得到两个新的特征序列。将这两个序列分别送入一个2层的神经网络,得到特征向量。特征向量再经过sigmoid函数做激活操作,生成最终的权重,特征序列feat1与权重相乘得到特征序列feat2。
[0062]
残差模块层由8个残差模块(residual module)组成。残差模块结构图如图5所示。每个残差模块包含3
×
3的卷积、批归一化(batch normalization,bn)、激活函数(relu)这3种操作。同时在每个残差模块的末端添加一个nam(normalization-based attention module,nam)模块的通道注意力子模块,用以捕捉显著特征,提高模型精度。nam模块结构示意图如图6所示。每次经过nam模块,对特征序列的所有通道,使用批归一化(batch normalization,bn)中的比例因子,计算出通道之间方差,方差再经过sigmoid激活函数,生成最终的权重。权重与特征序列相乘得到新的特征序列,新旧特征序列之间尺寸不变。第i个残差模块输入与输出关系如式(1-1)所示:
[0063]
xi=f(x
i-1
)+x
i-1
ꢀꢀ
(1-1)
[0064]
式中,xi表示第i个残差模块的输出,x
i-1
表示第i个残差模块的输入同时也是上一个残差模块的输出,x0表示网络的输入feat2,f表示网络的操作,包括:3
×
3的卷积、批归一化、激活函数、nam模块操作。
[0065]
经过8个残差模块后,特征序列feat2变成512通道7
×
1的特征序列feat3。feat3的表达公式为式(1-2):
[0066][0067]
式中,feat2表示网络的输入,feat3表示网络的输出,xi表示第i个残差模块的输出,f表示网络的操作,包括:3
×
3的卷积、批归一化、激活函数、nam模块操作。
[0068]
惯性数据属于时序序列,使用双向lstm可以更好的发掘到过去和后续的有效信息。将特征序列feat3输入lstm层中。lstm层是一个双向lstm,即由两个信息传递相反的lstm循环层构成。lstm层的输入和输出维度是7,具有2个隐藏层,此时特征序列feat3变成1024通道7
×
1的特征序列feat4。惯性数据属于时序序列,使用双向lstm可以更好的发掘到过去和后续的有效信息。
[0069]
最后经过输出层,将特征序列feat4通过全连接层输出得到2d输出最后经过输出层,将特征序列feat4通过全连接层输出得到2d输出的物理意义表示导航坐标系下行人的速度,进而推算出完整的行人行走轨迹。
[0070]
均方根误差函数表示目标变量与预测值之间距离平方之和的开根,是最常用的回归损失函数。在本实施例中使用均方根误差函数作为损失函数。深度神经网络学习预测时,以每200帧(即一秒)的预处理后的[a,g]n序列为1个跨度。计算第i个跨度经过深度神经网络输出得到的2d向量与学动作捕捉系统测得的标签label(v
x
,vy)之间的均方根误差。损失函数可由式(1-3)计算获得:
[0071][0072]
训练阶段,设定最大训练步数为2000epochs。在每个训练周期中,通过前向传播计算网络模型的预测输出以及对应的损失函数;通过反向传播算法与adam优化器对模型的权重进行优化。
[0073]
在训练过程中每经过20epochs对网络模型的损失函数进行比较,当损失函数收敛到预设的阈值σ以内,则代表训练完成,终止对网络模型的训练。
[0074]
训练完毕进入网络测试阶段,将惯性导航数据库中的测试数据集输入到训练完毕后的网络模型中,输出二维平面上的行人速度,同时推算行人轨迹。并保存损失函数值,进而评估模型的性能。
[0075]
本发明提出的神经网络模型能够通过多种开源深度学习框架搭建,在本实施例使用了pytorch搭建神经网络框架。
[0076]
s3、建立导航误差评估基准的步骤包括:
[0077]
本方法中,定义光学动作捕捉系统数据生成真实轨迹,第i数据帧对应待定位者的位置为pi(xi,yi)。由神经网络预测生成的轨迹为待评估轨迹,第i数据帧对应待定位者的位置为评估基准包括绝对轨迹误差(ate)和相对轨迹误差(rte)。
[0078]
绝对轨迹误差计算预测位置和真实位置的直接差值,可以非常直观地反应待评估轨迹和真实轨迹的全局一致性。绝对轨迹误差定义为真实轨迹与待评估轨迹之间的总体均方根误差。绝对轨迹误差如式(1-4)所示:
[0079][0080]
式中n为数据集总帧数。
[0081]
相对位姿误差用于计算固定时间间隔内的均方根误差。即计算真实位置和预测位置每隔一段相同时间位置变化量,然后对该变化量做差,以获得相对位置误差。该标准适合于估计系统的漂移。相对轨迹误差如式(1-5)所示:
[0082][0083]
式中m为测试集固定时间间隔的个数,trans(ei)为位置变化量之差。
[0084]
在本实施例中。固定时间间隔定义为1分钟。对于短于1分钟的序列,将最后一帧的位置误差并按比例缩放。
[0085]
在本实施例中,根据ate和rte的值数值大小进行导航精确性分级。若ate与rte的加权平均值小于2,则导航精准性视为优秀,ate与rte的加权平均值大于2且小于6,则导航精准性视为及格,ate与rte的加权平均值大于6则视为导航失败。
[0086]
如图7所示,本发明30次实验下的导航精准性评估结果。其中25组实验的ate、rte值均在2以下。只有3组实验结果ate、rte的值过高,经后期轨迹对比分析,过高的3组实验均因为导航开始时待定位者的初始航向估计错误,导致待评估轨迹方向完全偏移真实轨迹。
[0087]
在本实施例中利用光学动作捕捉系统提供的准确的行人轨迹信息作为校准信息,通过潜在损失函数训练神经网络模型。实现神经网络对于惯性导航系统累计误差的特征学习,从而消除惯性导航系统的累计误差。使得行人惯性导航系统的泛化性能大大提高,具备了商业使用的条件。
[0088]
以上所述是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应该看作是对其他实施例的排除,而可用于其他组合、补充和修改,并能够在本发明权利要求所保护的范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不偏离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。