PDR (Pedestrian Dead Reckoning)行人航位推算基本原理及实现

简介: PDR (Pedestrian Dead Reckoning)行人航位推算基本原理及实现

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.代码实现

参考链接如下,写的有些乱,没有细致的整理,大家有需要的可以参考一下。

https://download.csdn.net/download/wxc_1998/87152903

目录
相关文章
|
2月前
|
人工智能 编解码 测试技术
ViTPose:最小只有100M的身体姿态估计模型,精确识别人体关节、手、脚等关键点
ViTPose 是基于 Transformer 架构的人体姿态估计模型,能够精准定位人体关键点,支持多种规模版本,适用于运动分析、虚拟现实等场景。
80 8
ViTPose:最小只有100M的身体姿态估计模型,精确识别人体关节、手、脚等关键点
|
5月前
|
机器学习/深度学习 数据挖掘 大数据
心跳信号分类预测Task1 赛题理解
心跳信号分类预测Task1 赛题理解
89 0
|
机器学习/深度学习 传感器 算法
【滤波跟踪】基于延迟卡尔曼滤波器实现无人机的状态估计附Matlab代码
【滤波跟踪】基于延迟卡尔曼滤波器实现无人机的状态估计附Matlab代码
|
数据采集 监控 算法
【分布鲁棒、状态估计】分布式鲁棒优化电力系统状态估计研究[几种算法进行比较](Matlab代码实现)
【分布鲁棒、状态估计】分布式鲁棒优化电力系统状态估计研究[几种算法进行比较](Matlab代码实现)
122 0
|
算法 5G
一种用于环境声源的被动到达角(AoA)提取算法(Matlab代码实现)
一种用于环境声源的被动到达角(AoA)提取算法(Matlab代码实现)
137 0
|
机器学习/深度学习 传感器 算法
基于模糊控制算法的水位控制研究(Matlab代码实现)
基于模糊控制算法的水位控制研究(Matlab代码实现)
149 0
|
运维 算法
【信号变化检测】使用新颖的短时间条件局部峰值速率特征进行信号变化/事件/异常检测(Matlab代码实现)
【信号变化检测】使用新颖的短时间条件局部峰值速率特征进行信号变化/事件/异常检测(Matlab代码实现)
109 0
使用高斯混合模型检测和计数视频序列中的汽车
使用高斯混合模型检测和计数视频序列中的汽车。
115 0
|
运维 监控 算法
【状态估计】用于描述符 LTI 和 LPV 系统的分析、状态估计和故障检测的算法(Matlab代码实现)
【状态估计】用于描述符 LTI 和 LPV 系统的分析、状态估计和故障检测的算法(Matlab代码实现)
150 0
|
机器学习/深度学习 传感器 数据采集
基于AIC,MDL,HQ,EDC算法实现阵列信号的信源数目估计附MATLAB代码
基于AIC,MDL,HQ,EDC算法实现阵列信号的信源数目估计附MATLAB代码