使用单个加速度计提高计步器的性能
2023-01-31
来源:ADI
应用笔记AN-602研究了ADI加速度计的使用,以制造简单但相对精确的计步器。从那时起,引入了更新的设备,允许在对成本更敏感的应用中使用加速度计。因此,计步器等应用正在许多消费类设备(如蜂窝手机)中找到自己的应用。
鉴于这一趋势,使用单个加速度计对计步器进行了更仔细的检查。实施AN-602技术是为了复制其结果。尽管该算法表现良好,但相同的精度并未重复。特别是,人与人之间的差异比预期的要大,以及当一个人使用不同的配速和步幅时。这导致了对该算法潜在改进的调查。
测试使用带有ARM7020内核的ADuC7精密模拟微控制器和两个不同的计步器测试板完成:一个带有2轴ADXL323加速度计,另一个带有3轴ADXL330加速度计。第一种使用ADuC7020和ADXL323评估板,增加了16×2 LCD显示屏。第二个使用定制板。
AN-602 方法
AN-602中使用的技术基于以下原理:一步中的垂直“弹跳”与步幅直接相关,如图1所示。
图1 - 行走时髋关节的垂直运动
角度 α 和 θ 相等,因此步幅可以显示为最大垂直位移的倍数。给定相同的角度,对于较高或较矮的人来说,垂直位移会更大或更小,从而解释腿长的差异。
不幸的是,加速度计测量的是加速度而不是位移的变化。必须先将加速度转换为距离,然后才能使用。在AN-602设置中,有限的计算能力需要使用一个简单的公式来近似将加速度转换为距离所需的双积分。
由于ADuC7020具有充足的处理能力,本实验尝试直接计算离散积分。选择了一种简单的方法来执行此操作。确定每个步骤后,将添加该步骤中的所有加速度样本以获得一组速度样本。对每个步骤的速度样本进行归一化,使最终样本为零。然后将它们相加以得到位移的值。
最初,这种技术看起来很有希望,因为对于一个受试者多次走一条路线,测量的距离相对一致。不幸的是,人与人之间的差异加剧了,一个受试者在不同速度下的差异也加剧了。这导致了对问题是否出在模型本身的调查。
了解模型
这个模型有两个主要假设:脚实际上是一个点(或一个球),并且每只脚对地面的冲击力是完全有弹性的。然而,这些假设都不是事实。基于这些实验,可以肯定地说,这些假设与现实之间的差异解释了遇到的许多变化。
为了理解这一点,查看几个步骤的测量加速度会有所帮助,如图2所示。数据上显示了一步中“弹簧”的不同来源。
图 2 - 受试者 #1 在正常速度下的加速度图
图 2 显示了尝试将测量的加速度精确转换为距离时遇到的问题。使用峰峰值变化的方法,甚至是那些集成数据的方法,在处理此类数据时会遇到麻烦。造成这种困难的原因是,在弹簧中,不同人的步数或一个人使用不同步速的步数从一个测量值到另一个测量值的变化。
图3显示了步幅更长、更快的相同拍摄对象。峰峰值加速度差较大,各个弹簧点看起来不同。“弹簧”数据量与“真实”数据量与图 2 不同。但是该算法只能看到一组加速度测量值,并且不知道这些测量值的上下文。因此,问题是在不删除有用数据的情况下消除主体步骤中弹簧的影响。
图 3 - 受试者 #1 的快速加速图
两个图之间存在重要差异:在图3中,每一步的曲线底部比图2略窄,曲线顶部更一致,明显峰更少。与最小和最大样本值相比,这些差异导致更高的平均值。
为了进行比较,图4显示了不同个体的数据图。步幅与图2中的受试者非常相似。然而,数据本身看起来非常不同。
图 4 - 受试者 #2 在正常速度下的加速度图
与图 2 所示相比,受试者的步幅具有更多的弹簧,但两组数据表示大致相同的步行距离。因此,仅根据峰值计算距离将给出差异很大的结果。使用简单的双重积分会遇到同样的问题。
解决弹簧问题
所有使用直接计算为这个问题提出一个体面解决方案的努力都有同样的问题,导致一系列失败的尝试,以一种消除弹簧的方式规范化数据。主要原因似乎是他们需要一些数据上下文的知识,但在实际使用中,系统不知道外面发生了什么。它所拥有的只是数据点。我们的解决方案需要能够在没有上下文的情况下对数据进行操作。
在沮丧的情节中,出现了解决此问题的可能方法。如前所述,当从较慢的速度变为较快的速度时,数据会发生变化,但由于弹簧引起的明显变化随着更长、更快的步幅而发生。结果是数据最小值和最大值的平均值更高。但这能用新数据来支撑吗?
从视觉上看,考虑到图 4 所示步骤中的反弹量,很难确定这一点。但计算表明,平均值与峰值与图2非常相似。因此,确定步行距离的简单算法的候选者是:
此计算针对每个步骤完成,由不同的寻步算法确定。寻步算法使用 8 点移动平均线来平滑数据。它搜索最大峰值,然后搜索最小值。当移动平均线越过零点(即步长的总体平均值)时,将计算步长。距离算法中使用的数据考虑了移动平均线的 4 点延迟。
这个简单的解决方案适用于各种步幅的第一个受试者。它在其他科目上也做得相当好。但一些受试者产生的距离与该组的平均测量距离相差多达10%。这不在未校准测量的目标±7.5%误差范围内。需要另一种解决办法。
尽管如此,上一次测试中使用的比率似乎反映了不同受试者步骤的春季差异。尝试将我们在这里研究的两种方法结合起来是有意义的。回到使用双积分的最初想法,使用此比率作为校正因子进行计算以删除弹簧数据。生成的公式为:
其中:
d 是计算
的距离 k 是一个常数乘数
最大值是该步内测量的最大加速度 最小是该步
内测量的最小加速度 avg 是步的平均加速度值 加速度表示该步
的所有测量加速度值
该算法适用于各种科目和节奏,变化约为+6%/–4%。该算法有助于通过调整乘数 k 轻松校准特定个体和配速。该代码还可以对步幅执行平均值,以消除步进变化。这里提到的结果不包括使用这种平均。
在这个实验中,只使用了X轴和Y轴。选择3轴加速度计是为了提高灵活性,以防需要所有三个轴。发现两个轴足以完成任务,因此可以使用ADXL323代替ADXL330。由于除Z轴输出外,引脚配置相同,因此可以使用相同的布局。
该实验的重点是为计步器的距离测量取得良好的结果。对计步算法的评估仅足以确保它在步行或跑步时运行良好。在数百个步行或跑步步骤中,测量的步数落在实际数量的一两个步骤内。然而,不幸的是,这种简单的算法可能会被非步行运动所愚弄。AN-602 中描述的时间窗口功能可用于通过忽略预期时间窗口之外发生的错误步骤来最大限度地减少错误计数,同时保留在用户改变速度时进行调整的能力。
总结
本说明表示一组实验的结果,这些实验试图从使用单个加速度计的简单计步器中获得不错的性能。已经讨论了获得该性能的一些障碍。最终结果符合规定的精度目标,并增加了通过校准提高精度的可能性。虽然使用更复杂的系统(例如使用多个加速度计)可以获得更高的精度,但此处提供的算法应该是简单、低成本应用的绝佳起点。
更多信息可以来这里获取==>>电子技术应用-AET<<