2017-10-05 10 views
0

저는 CoreMotion을 사용하여 앱에서 장치 모션 측정을 수집하고 있습니다.신속하게 iOS 장치에서 흔들림 양을 측정하는 방법?

하지만 내가 측정하려고하는 것은 흔들리는 것입니다. 예를 들어 기기가 얼마나 움직이고 있는지, 기기가 대형을 움직였을 때의 임계 값을 설정하는 것입니다. 양방향. 나는 돌아 오는 측정 값이 매우 민감하다는 것을 알았고 모든 것을 정확하게 사용하는 방법을 모른다.

참고 : 나는 흔들기 제스처를 감지하는 것에 대해 알고 있으며, 내가 묻는 것은 아닙니다. 나는 흔들림의 양을 측정하고 표시하는 올바른 방법을 요구하고 있습니다.

 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) 
} 

그리고 가속도계 사용 : 측정 할 CoreMotion에서 측정을 사용하는 올바른 방법은 무엇

 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) 
     }) 
    } 

을 얼마나을 내가 DeviceMotion에서 사용하고 코드의

샘플 장치가 흔들리고 있습니까?

+0

사용 사례는 무엇입니까? – nathan

+0

CoreMotion과 shakeyness를 측정하는 방법에 대해 좀 더 자세히 알아보고 싶지만 사용 사례는 장치를 오브젝트에 올려 놓고 흔들리는 정도를 측정하는 것입니다. – motionpotion

답변

1

정확한 사용 사례에 따라 다르지만 흔들림 양을 확인하려면 동작 델타를 계산하십시오. 주어진 시간주기 내에서 장치 동작 속성 중 하나의 최대 및 최소값을 결정하고 그 값을 "흔들림"의 근사치로 사용하십시오.

예를 들어, 장치의 yaw을 5 초 동안 측정 할 수 있습니다. 최소값과 최대 값을 추적하여 차이를 가져옵니다. 더 많이 흔들면 더 큰 가치가 생깁니다.

다시 정확한 사용 사례에 따라 다르지만 장치 동작 속성과 동작 델타를 조합하여 사용할 수도 있습니다. 동작이 시간 경과에 따라 일정하다는 것을 알고 있다면 (기계가 앞뒤로 흔들리는 것과 같이), 지역 최소/최대 값을 찾아 일정 기간 동안 평균을 시도 할 수 있습니다.

+0

사례를 사용하는 것이 구체적이지 않다고 생각합니다. 지진 계측에서 기계의 진동 측정까지 모든 유스 케이스는 장치의 모든 위치에 대해 측정되는 움직임의 양을 계산해야합니다. 즉, 아래쪽을 향하게하고, 위로 향하게하고, 아래쪽으로 향하게합니다. 반환 된 값이 매우 민감하고 전화가 전혀 이동하지 않은 경우에도 값에 깜박임이 많이 표시됩니다. – motionpotion