PDR (Pedestrian Dead Reckoning)行人航位推算算法是利用加速度计、磁力计、陀螺仪等多种传感器数据进行处理。对行人行走的步数、步长、方向进行测量和统计,推算出步行者行走轨迹,和位置等信息。
作者本身不是搞PDR (Pedestrian Dead Reckoning)行人航位推算这个方向了,最近有门课了解了一些知识,做了个小的课程作业,这里分享给大家,进行讨论。
基本思路
行人的位置可以通过下式进行推算:
1.计算步长
常数/准常数模型、线性模型、非线性模型以及AI(人工智能)模型等,均基于步长与某些加速度计统计特征之间的良好相关性来确定步长的大小。(如步长正比于步频或者行走速度)
这里采用线性模型进行计算:
式中:a,b 分别为系数,H为身高,SF为步频(后续通过加速度计算),c为常数设置为1.
1.1加速度计数据预处理
读取原始的加速度数据,如下图所示:
滤波,计算total acceleration,如下图中的红色曲线所示,去除重力的影响,如下图中蓝色曲线所示:
1.2步态检测
利用波峰探测法检测蓝色曲线中的波峰波谷,判断是否走了一步,如下图所示:
统计出步数后,通过下式计算出步频:
随后,代入前述计算步长的式中,计算步长,计算步长𝑆𝐿为0.71 m。
2.计算航向角
基于磁力计数据计算航向角,并通过加计数据进行角度补偿。
(1)当手机完全水平时,可以不用考虑垂直方向,通过下式进行计算:
(2)当手机不完全水平时,利用加速度计数据进行补偿计算:
其中:
计算出航向角之后,再回到博客开始时所介绍的推算公式,计算轨迹。
3.实验效果
4.代码实现
参考链接如下,写的有些乱,没有细致的整理,大家有需要的可以参考一下。