【问题标题】:if condtions for acceleomter x,y,z and gyroscope x,y,z give me a very quick result, more that i think its true如果加速度计 x,y,z 和陀螺仪 x,y,z 的条件给我一个非常快速的结果,我认为它是真的
【发布时间】:2013-08-29 19:17:26
【问题描述】:

我正在使用推送方法收集加速度计和陀螺仪数据(startDeviceMotionUpdatesToQueue:withHandler: 和 startGyroUpdatesToQueue:[NSOperationQueue mainQueue] 我将这些原始数据与某些阈值进行比较,如果它满足阈值,我确实将标签计数器增加一,我的问题是当我开始检测即读取方法并将其与阈值进行比较时,计数器增加得如此之快,我已经阅读在 (Simple iPhone motion detect) 中说“如果条件对于每个动作都会变为真两次”,所以如果这是发生在我身上的事情,我该如何解决这个问题,我的代码很简单

检查数据{

if ( (  acc_2 >= 0.03885) &&  (gyro_3  >= 0.0003)  && (gyro_3 <= 0.00838))
{
    i=i+1;
    //then Label data
    _Counter.text=[NSString stringWithFormat:@"%d",i];

}

else if (( acc_2>= 0.01103) && ( gyro_3 >= 0.00851))
{
    /

    //update the counter
    i=i+1;
    _Counter.text=[NSString stringWithFormat:@"%d",i];

}

...... same other conditions

}

然后我在 startDeviceMotionUpdatesToQueue:withHandler: 块中调用此方法。

[自检数据];

我可以做些什么来解决这个问题,你能指导我吗? }

【问题讨论】:

    标签: ios objective-c accelerometer gyroscope threshold


    【解决方案1】:

    我不能 100% 确定这是否是您所要求的,但如果您希望更改从硬件接收更新的速率 a,这会降低标签更新的速率 (并节省电池),您可以使用CMMotionManager的setGyroUpdateInterval:setDeviceMotionUpdateInterval:来调整刷新率。值 1 每秒更新一次。

    [_myMotionManager setDeviceMotionUpdateInterval:1];
    [_myMotionManager setGyroUpdateInterval:1];
    

    【讨论】:

    • 我有两个 updateIntervalset 为 1/30,我需要经常阅读,但这是否导致我的标签从 0 跳到 6 然后 18 然后 28 我觉得标签的更新是如此高,问题中提到的注释(关于 if)让我想知道,这是否是导致柜台这种跳跃的原因。
    猜你喜欢
    • 2018-04-26
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 2019-05-02
    相关资源
    最近更新 更多