2017-10-05 9 views
0

私はCoreMotionを使用して、アプリケーション内のデバイス動作の測定値を取得しています。スウィフトでiOSデバイスの振動量を測定するには?

しかし、私が測定しようとしているのは、デバイスがどれくらい動いているか、つまりデバイスが大きく移動したときのしきい値を設定することです。任意の方向の量。私は、私が戻ってきた測定値が超高感度であり、すべてを正しく使用する方法がわからないことを発見しました。

注:私は揺れのジェスチャーを検出することについて知っています。それは私が求めているものではありません - 私は揺れの量を測定し、それを表示する正しい方法を求めています。

私はDeviceMotionから使っているコードのサンプル:

 if let deviceMotion = motionManager.deviceMotion { 
     let quat = deviceMotion.attitude.quaternion; 
     var qRoll = radiansToDegrees(radians: atan2(2*(quat.y*quat.w - quat.x*quat.z), 1 - 2*quat.y*quat.y - 2*quat.z*quat.z)) ; 
     var qPitch = radiansToDegrees(radians: atan2(2*(quat.x*quat.w + quat.y*quat.z), 1 - 2*quat.x*quat.x - 2*quat.z*quat.z)); 
     var qYaw = radiansToDegrees(radians: asin(2*quat.x*quat.y + 2*quat.w*quat.z)); 

     let orientation = deviceMotion.attitude 
     var roll = radiansToDegrees(radians: orientation.roll) 
     var pitch = radiansToDegrees(radians: orientation.pitch) 
     var yaw = radiansToDegrees(radians: orientation.yaw) 
} 

と加速度計を使用して:

 if motionManager.isAccelerometerAvailable { 
     motionManager.startAccelerometerUpdates(to: OperationQueue.current!, withHandler: { accelerometerData, error in 
      if let acceleration = accelerometerData?.acceleration { 
       print("ACCELEROMETER X: " + acceleration.x.description) 
       print("ACCELEROMETER Y: " + acceleration.y.description) 
       print("ACCELEROMETER Z: " + acceleration.z.description) 
     }) 
    } 

どのくらいAを測定するCoreMotionからの測定値を使用する正しい方法は何ですかデバイスが揺れている?

+0

あなたのユースケースは何ですか? – nathan

+0

CoreMotionとシェイキーネスの測定方法についてもっと知りたいのですが、ユースケースはデバイスをオブジェクトに置き、どれくらい揺れているかを測定することです。 – motionpotion

答えて

1

正確なユースケースによって異なりますが、振れの程度を判断する場合は、モーションデルタを計算します。所与の時間内のデバイスモーション属性の1つの最大値と最小値を決定し、その値を「不安定性」の近似値として使用します。

たとえば、デバイスのyawを5秒間測定できます。最小値と最大値を追跡し、それらの差を取る。より多くの揺れは、より大きな価値をもたらします。

この場合も、正確なユースケースに依存しますが、デバイスモーションアトリビュートとそのモーションデルタを組み合わせて使用​​することもできます。動作が時間の経過とともに一貫していることがわかっている場合(マシンが前後に動いているなど)、ローカルの最小値/最大値を見つけて、それらを一定期間平均化することができます。

+0

私はそれが事例を使うのに特有だとは思わない。地震計から機械の振動を測定するためのユースケースは、装置の任意の位置、すなわちその上を向いている面を上にして、上を向くように、どれだけの動きが測定されるかを計算する必要がある。返される値は非常に敏感で、電話機がまったく動かなくても値にちらつきがたくさんあることがわかります。 – motionpotion

関連する問題