基于手机传感器的计步算法

2023-10-14 12:59
文章标签 算法 手机 传感器 计步

本文主要是介绍基于手机传感器的计步算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        由于建筑物的阻挡屏蔽等因素,导致GPS信号在室内环境下无法实现满足要求的定位精度。随着智能手机的快速发展,现在手机一般都内置各种传感器模块,航位推测法是一种可行的技术方案,计步器、运动方向判断和步长检测是航位推测的三大关键部件,本文结合智能手机内置各种传感器模块,提出一种基于手机加速度传感器的计步算法。

一、计步器算法原理

        通过提取人行走过程中的加速度数据进行分析是一种简单可行的步态检测方法,人在行走过程中有3个加速度分量,前向加速度、侧向加速度和垂直方向加速度,如图1所示。

        智能手机上的加速度传感器是三轴加速度计,其坐标系统如图2所示,当人在行走过程中将手机平放,前端指向人行走的正前方时,人体加速度正前方时,人体加速度分量和手机加速度坐标系统的对应关系为:前向轴对应手机Y,侧向轴对应手机X,垂直轴对应手机Z轴。三轴加速度传感器内部装有惯性检测模块,当物体发生变速运动时,惯性检测模块产生弹性形变,这种形变在一定的范围之内与加速度成正比例关系,然后经过数模转换分解出三个方向的正交的加速度值。经过测试,当手机平放在水平面上时,XYZ三个轴方向的加速度大小应该分别为00-1,其中合成加速度是XYZ三个方向加速的模。

        如图所示,为三轴加速度的合成波形变化示意图,在0~2s时间内,人处于静止状态,加速度波形小幅波动,2s~10s之间,人处于慢跑状态,可以看出,每个迈步周期的波形都有许多小波峰,这是由人在跑步过程中的抖动引起的,此时波形已比较平滑,合成加速度信号值可以用来进行计步。

二、计步算法分析

        目前,常用的计步算法主要有峰值检测法、零点穿越法和自相关检测法。峰值检测法利用人体行走时加速度信号出现的峰值计步。加速度在人行走时会呈现周期性变化,并且在提腿到最高处时达到峰值。现有的基于峰值的计步方法会设立一个阈值,若加速度值大于该阈值,则认为走了一步。阈值的设定直接影响步态检测的准确性,但是由于人的行走状态不同,不同的人行走的布幅大小不同,此外手机放置位置的随意性导致所设阈值没有普适性,不同情况下很难有一个统一可靠的阈值。零点穿越法的基本原理与峰值法类似。若探测到提腿至落地过程中加速度经过某一阈值,则完成了一步。该方法的仍然存在与峰值检测相同的缺点。自相关分析法是利用行人连续运动产生的加速度序列之间的相似性来进行步数的计算。微信小程序“跑步运动助手”通过自相关分析法进行测试,准确率达到95%

这篇关于基于手机传感器的计步算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/210664

相关文章

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时