|
本帖最后由 ltbytyn 于 2015-1-7 01:24 编辑
前几天在论坛里面看了其他网友的计步器演示视频。视频里面,板子(含加速度芯片)接近是水平匀速移动,能算出来步数。有点想不通,按说在水平匀速移动情况下,即使能采到3轴加速度变化也是微量,这种情况下貌视很难准确记步。此时,比如手的抖动(引起3轴加速度微量变化,很难和水平匀速运动产生的加速度微量变化进行区分。干扰信号和信号大小比较接近就很难排除干扰信号影响,如果干扰信号比信号小很多,排除干扰就比较简单)都会误认为有走动而误记步。据该网友说是采用微量检测+滤波算法,我不是太了解,至少和我以前想的计算方法不同。
今天主要是说说我的想法。
加速度芯片通常会佩戴到手腕上。运动时,手臂前后摆动,加速度芯片运动轨迹近视于图片中的粗线。因为佩戴的位置等等种种原因,我们采样得到的数据串联起来是组立体方位移动轨迹。处理起来比较困难,通过大量算法也能实现,但会加重耗电,不可取。我们可以把立体轨迹平面化,就像我们工程制图里面学的三视图那样。那样数据就看起来有规律可循了,计算也比较简单。
在【TI首届低功耗设计大赛】计步器分析 里面我曾经提到过灵敏度,事实上每个人走动时,手臂摆幅不同。手臂摆幅比较大的,图中X,Y变化范围相应会变大,记步就比较好计算;手臂摆幅比较小的,图中X,Y变化范围相应会变小,记步就比较难计算,特别是手臂抖动和摆幅比较接近时,很难排除手臂抖动产生的干扰的。所谓的灵敏度其实就是我们选取的X、Y的有效范围。范围太大会漏记,范围太小很难排除干扰,产生误记。因此选择合适灵敏度很大程度上影响记步的准确性。建议取平均摆幅的2/3。
举例,如上图,数据平面化后,会得到X、Y两个坐标变换量。X的变换范围较Y明显大一些,所以取X的运动变化为判断步数依据。Y作为辅助判断依据(兼干扰排除依据,比如运动过程中,擦汗时Y轴变化较以往异常)。图中从空心圆运动到实心圆为一步;从实心圆运动到空心圆为一步。
每个人的摆幅、加速度芯片佩戴位置等等都有不同差异,因此,我认为计步器应该有自学习功能,根据分析采样数据,自行选取合适灵敏度,甚至采样频率。即能实现准确记步,也能实现降低损耗。 尽可能发挥芯片自身功能。如3轴加速度芯片ADXL345具有外部中断和FIFO,无需FR5969主动去采样数据,当ADXL345的FIFO存满采样数据时使用外部中断唤醒FR5969读取数据,读取并处理完后进入睡眠模式等待下次唤醒。这样在ADXL345处于静止状态时,FR5969也处于睡眠模式。最大化做到省电,增加待机时间。
硬件:MSP-EXP430FR5969 + SHARP96 + ADXL345
接口见(【TI首届低功耗设计大赛】三轴加速度演示):https://bbs.eeworld.com.cn/thread-451180-1-1.html
视频演示:
|
|