2012-05-08 2 views
6

Kinect 및 iPhone 기반 응용 프로그램을 구축하려고합니다.iPhone에서 가속도계 판독 값을 해석하는 방법

kinect에서 반환 한 탄도에 따라 X 축과 Z 축 각각에서 시간 경과에 따른 손의 가속도를 계산하려고합니다. 기본적으로 0.5 초 또는 15 프레임 (dt)의 표준 시간 간격과 3 포인트 (x0, x1x2)를 0.5 초 간격으로 선택합니다. 먼저 3 점의 위치는 미터로 언급해야합니다. 이 두 점을 사용하여 두 가지 속도 (v0 = (x1 - x0)/dtv1 = (x2 - x1)/dt)를 계산합니다. 마지막으로 이러한 속도를 사용하여 x1x2 사이의 가속도를 acc = (v1 - v0)/dt으로 계산합니다.

각 프레임에서 이러한 계산을 반복하고 가속도 배열을 얻습니다.

내가 말했듯이, 나는 iPhone도 가지고 있는데, 어느 핸드에 왼손잡이인지 오른손인지를보고 싶습니다. 나는 내 손의 가속도를 올바른 위치에 고정 된 iPhone의 가속도와 일치 시켜서 같은 축 시스템을 갖기를 원한다.

유일한 문제는 내 가속도와 휴대 전화의 가속도간에 큰 차이가 있다는 것입니다.

각 축마다 -2와 2 사이의 거리에있는 반면, 광산은 -10에서 10 사이입니다. 아이폰 가속도를 미터/초 단위로 측정하려면 어떻게해야합니까?

+0

기본적으로 주어진 간격 동안 iPhone의 수치와 Kinect 가속도 사이의 Sum Squared Error를 계산했습니다. 그러나 값의 다른 스케일이 주어지면 얻은 결과는 그다지 신뢰할 수 없습니다. – Simon

+0

그래 맞네. –

답변

2

iPhone의 가속도계 데이터는 힘의 단위로 제공됩니다. x 축은 휴대 전화 화면의 상단 가장자리에 맞추어지고, y 축은 왼쪽 가장자리에 맞추어 져 있으며, z 축은 사용자가 보는 경우 화면 밖으로 똑바로 나옵니다. 따라서 휴대 전화를 테이블 위에 올려 놓으면 x 축, y 축, z 축 각각에 대해 (0, 0, -1) 값을 가져야합니다. 자유 낙하 상태에서 휴대 전화를 떨어 뜨리면 (0, 0, 0)을 얻어야합니다.

당신이 두 번째 제곱 당 미터의 3 차원 가속을 얻기 위해, 그것을 주변에 이동이처럼 정렬 전화를 계속 가정 : 당신이 순서대로 지구 중력의 영향을 빼야한다

- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration 
{ 
    float g = 9.80665f; 
    float x = acceleration.x * g; 
    float y = acceleration.y * g; 
    float z = (acceleration.z + 1.0f) * g; 
    // x, y, and z now hold the absolute acceleration in ms^-2 
} 

공지 사항 4-Dimensional Space-Time에 비해 상대적으로 당신의 거실에 상대적으로 가속도를 얻을 수 있습니다.

또한 iPhone 가속도계는 매우 시끄럽고 휴대 전화가 정적 인 경우에도 이러한 값이 주변에서 지터를 발생 시키므로 일부 평탄화를 적용해야합니다. 그러나 비슷한 기술을 위치 데이터로 수행하는 것처럼 보이면 마지막 0.5 초 동안 롤링 평균을 얻기 위해 값을 각 프레임의 배열에 배치하면 이미 데이터가 원활 해집니다.

또 하나주의해야 할 점은 iPhone 가속도계는 약 2.3g으로 피크를 내고 있다는 것입니다. 이 힘은 달성하기 어렵지 않습니다 (예를 들어 손을 서로 박수 치는 경우). 따라서 데이터를 초과 할 수 있으며 데이터를 축적하는 기술은 그리 신뢰할 만하지 않습니다.

관련 문제