本发明属于行人导航定位修正领域,具体涉及一种基于双向长短期记忆网络的定位修正方法。
背景技术:
近些年来,随着室内定位技术的不断发展,很大程度弥补了类似gps等利用卫星信号进行定位而卫星信号穿透力较差导致室内定位不精确的问题。现有的室内定位技术大部分都利用已有的信号源进行高精度定位,如wi-fi信号定位技术,uwb定位技术等。但是现有技术存在以下问题:但是,由于利用惯性元器件进行定位过程中需要使用二次积分,导致系统在长距离、长时间的定位过程中出现目标轨迹发散的现象,难以维持较高的精度。
技术实现要素:
针对现有技术中的上述不足,本发明提供的一种基于双向长短期记忆网络的定位修正方法解决了现有技术存在的问题。
为了达到上述发明目的,本发明采用的技术方案为:一种基于双向长短期记忆网络的定位修正方法,包括以下步骤:
s1、采集行人运动的原始数据,并对原始数据进行预处理,得到处理数据;
s2、构建双向长短期记忆网络,并对其进行训练;
s3、将原始数据输入训练完成的双向长短期记忆网络,获取零速判断结果;
s4、当零速判断结果为零速时,根据处理数据,利用卡尔曼滤波器对导航坐标系下的速度和位置信息进行修正。
进一步地,所述步骤s1包括以下分步骤:
s1.1、将惯性测量单元佩戴在使用者脚部,进行原始数据采集;
s1.2、根据原始数据中载体坐标系下的角速度,获取方向余弦矩阵;
s1.3、将原始数据中载体坐标系下的加速度经过固定窗口长度和步长的滑动窗口进行处理;
s1.4、将处理过后的加速度经过一次积分,得到在导航坐标系中的速度;
s1.5、将处理过后的加速度经过二次积分,得到在导航坐标系中的位置;
s1.6、将方向余弦矩阵、导航坐标系中的速度和导航坐标系中的位置作为处理数据。
进一步地,所述步骤s1.3中滑动窗口的步长为1,其窗口长度为256。
进一步地,所述双向长短期记忆网络包括依次串联的输入层、第一双向长短期记忆层、第二双向长短期记忆层、第一全连接层、第二全连接层和输出层。
进一步地,所述第一双向长短期记忆层的单元数为128,其输出为每一个方向的每一个时间步拼接在一起的结果;所述第二双向长短期记忆层的单元数为64,其输出为每一个方向的最后一个时间步拼接到一起的结果;所述的第一全连接层设置有32个神经元;所述第二全连接层设置有1个神经元,其输出为零速判断结果。
进一步地,所述步骤s2中对双向长短期记忆网络进行训练的具体方法为:
a1、根据原始数据中的加速度和角速度,采用人工标记的方式将零速时刻打上标签,得到标签数据;
a2、将原始数据和标签数据输入双向长短期记忆网络,将均方根误差作为损失值,并以损失值最小为目标对双向长短期记忆网络进行训练;
a3、采用adam算法作为网络参数优化算法,训练至损失值小于0.01时,将此时的网络参数保存为最终的网络参数,得到训练完成的双向长短期记忆网络。
进一步地,所述步骤s3具体为:将原始数据中载体坐标系下的加速度和角速度输入训练完成的双向长短期记忆网络,得到对应的零速判断结果。
进一步地,所述步骤s4包括以下分步骤:
s4.1、当零速判断结果为零速时,将此时导航坐标系中的速度、导航坐标系中的位置和速度观测量输入卡尔曼滤波器,得到速度误差向量、位置误差向量和姿态误差向量;
s4.2、根据速度误差向量、位置误差向量和姿态误差向量,对方向余弦矩阵以及导航坐标系下的速度和位置信息进行修正。
本发明的有益效果为:
(1)本发明能够精准的进行零速判断,实施的复杂度低,具有高的计算效率和拥有良好的鲁棒性。
(2)本发明成本低,通过对行人导航时进行零速检测,寻找出导航时产生的误差,最终通过位置误差进行定位修正,可以保证长时间的精准行人导航定位。
附图说明
图1为本发明提出的一种基于双向长短期记忆网络的定位修正方法流程图。
图2为本发明提出的双向长短期记忆网络结构图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
下面结合附图详细说明本发明的实施例。
如图1所示,一种基于双向长短期记忆网络的定位修正方法,包括以下步骤:
s1、采集行人运动的原始数据,并对原始数据进行预处理,得到处理数据;
s2、构建双向长短期记忆网络,并对其进行训练;
s3、将原始数据输入训练完成的双向长短期记忆网络,获取零速判断结果;
s4、当零速判断结果为零速时,根据处理数据,利用卡尔曼滤波器对导航坐标系下的速度和位置信息进行修正。
在本实施例中,原始数据包括行人运动的角速度、加速度和速度观测量。
其中,所述步骤s1包括以下分步骤:
s1.1、将惯性测量单元佩戴在使用者脚部,进行原始数据采集;
s1.2、根据原始数据中载体坐标系下的角速度,获取方向余弦矩阵;
s1.3、将原始数据中载体坐标系下的加速度经过固定窗口长度和步长的滑动窗口进行处理;
s1.4、将处理过后的加速度经过一次积分,得到在导航坐标系中的速度;
s1.5、将处理过后的加速度经过二次积分,得到在导航坐标系中的位置;
s1.6、将方向余弦矩阵、导航坐标系中的速度和导航坐标系中的位置作为处理数据。
其中,所述步骤s1.3中滑动窗口的步长为1,其窗口长度为256。
如图2所示,所述双向长短期记忆网络包括依次串联的输入层、第一双向长短期记忆层、第二双向长短期记忆层、第一全连接层、第二全连接层和输出层。
其中,所述第一双向长短期记忆层的单元数为128,其输出为每一个方向的每一个时间步拼接在一起的结果;所述第二双向长短期记忆层的单元数为64,其输出为每一个方向的最后一个时间步拼接到一起的结果;所述的第一全连接层设置有32个神经元;所述第二全连接层设置有1个神经元,其输出为零速判断结果。
在本实施例中,输入层的维度为(256,6),其中256表示窗口大小,6表示陀螺仪和加速度计的三轴数据,输出层采用softmax函数进行零速判断结果的输出,输出1表示该时间戳对应的为零速时刻,0表示该时间戳对应的不是零速时刻。
其中,所述步骤s2中对双向长短期记忆网络进行训练的具体方法为:
a1、根据原始数据中的加速度和角速度,采用人工标记的方式将零速时刻打上标签,得到标签数据;
a2、将原始数据和标签数据输入双向长短期记忆网络,将均方根误差作为损失值,并以损失值最小为目标对双向长短期记忆网络进行训练;
a3、采用adam算法作为网络参数优化算法,训练至损失值小于0.01时,将此时的网络参数保存为最终的网络参数,得到训练完成的双向长短期记忆网络。
其中,所述步骤s3具体为:将原始数据中载体坐标系下的加速度和角速度输入训练完成的双向长短期记忆网络,得到对应的零速判断结果。
其中,所述步骤s4包括以下分步骤:
s4.1、当零速判断结果为零速时,将此时导航坐标系中的速度、导航坐标系中的位置和速度观测量输入卡尔曼滤波器,得到速度误差向量、位置误差向量和姿态误差向量;
s4.2、根据速度误差向量、位置误差向量和姿态误差向量,对方向余弦矩阵以及导航坐标系下的速度和位置信息进行修正。
在本实施例中,误差向量δxt为:
其中,表示t时刻的姿态误差向量,δθt表示t时刻的翻滚角,δγt表示t时刻的俯仰角,δψt表示t时刻的航向角,δpt表示t时刻的位置误差向量,δvt表示t时刻的速度误差向量。
根据姿态误差向量对t时刻的方向余弦矩阵的修正,修正公式为:
其中,表示修正后的t时刻方向余弦矩阵,表示t-1时刻的方向余弦矩阵,i3×3表示3×3的单位矩阵,δω表示姿态误差向量构成的反对称矩阵,b表示载体坐标系,n表示导航坐标系。
所述反对称矩阵δω为:
根据速度误差向量对t时刻的速度进行修正,修正的公式为:
其中,表示t时刻的速度修正值,表示t-1时刻的速度值。
根据位置误差向量对t时刻的位置进行修正,修正的公式为:
其中,表示修正后t时刻的位置,表示t-1时刻的位置。
本发明能够精准的进行零速判断,实施的复杂度低,具有高的计算效率和拥有良好的鲁棒性。本发明成本低,通过对行人导航时进行零速检测,寻找出导航时产生的误差,最终通过位置误差进行定位修正,可以保证长时间的精准行人导航定位。