2014-09-07 4 views
0

getAccelerometer에서 제공 한 값을 더 잘 이해하려고 시도하고 있습니다. 그래서 저는 X, Y, Z 축의 로그 리포트를 작성했습니다. 내 첫 번째 질문은이 값이 초기화되지 않은 이유입니다. 0? 장치가 테이블에 남아있는 경우 다음 값이 생성되기 때문에 :Android getAccelerometer 값

09-07 21:25:00.929: V/SERVICE:X, Y, Z:(22548): -0.48858398,0.6706055,,10.768008 
09-07 21:25:01.079: V/SERVICE:X, Y, Z:(22548): -0.4790039,0.68018556,,10.787168 
09-07 21:25:01.279: V/SERVICE:X, Y, Z:(22548): -0.48858398,0.6610254,,10.787168 
09-07 21:25:01.479: V/SERVICE:X, Y, Z:(22548): -0.45984375,0.6706055,,10.777588 
09-07 21:25:01.679: V/SERVICE:X, Y, Z:(22548): -0.4790039,0.6610254,,10.796748 
09-07 21:25:01.879: V/SERVICE:X, Y, Z:(22548): -0.4790039,0.6610254,,10.806328 
09-07 21:25:02.084: V/SERVICE:X, Y, Z:(22548): -0.4790039,0.6706055,,10.796748 
09-07 21:25:02.284: V/SERVICE:X, Y, Z:(22548): -0.46942383,0.68018556,,10.796748 
09-07 21:25:02.479: V/SERVICE:X, Y, Z:(22548): -0.48858398,0.6610254,,10.787168 

내 두 번째 질문은 모든 사람들이 저를 계속 얘기 왜 계산하여 장치의 몇 미터 움직임을 계산할 수 없다 A = getAccelerometer 및 T에서 = 이벤트 발생 시간. 내가 고려하지 않은 문제는 어디에 있습니까? 감사

답변

1

당신의 두 가지 질문 주소 : 나는 적어도 당신이보고있는 것입니다 중력의 가속도를 볼 수 있기 때문에 가속도계가 0을 읽을 기대하지 않을 것이다

  1. : Y는 X입니다 약 0, z는 약 9.8 (플러스 약 1 단위).
  2. 가속도에서 위치를 얻으려면 두 번 통합해야합니다. 미적분학으로 돌아가서, 당신이 통합 할 때, 당신은 알 수있는 방법이없는 통합의 상수를 얻습니다. 예를 들면 다음과 같습니다. 가속도와 시간은 내 속도가 얼마나 달라 졌는지를 나에게 알릴 수 있습니다. 예를 들어 10mph로 감속 한 경우입니다. 그것이 나에게 말할 수없는 것은 내가가는 방법입니다. 즉, 차에 타고 60mph에서 50mph로 갔는지, 아니면 비행기에 타고 580 mph에서 570 mph. 속도에서 위치로 갈 때 같은 문제가 다시 생깁니다.

편집 :

코멘트에있는 당신의 질문에 응답 :

enter image description here

당신이 설명처럼 휴대 전화, 테이블에 평평 그래서 만약 항상 행성으로 지적

1) 중력 , 나는 G가 대부분 + Z 방향에있을 것으로 기대합니다. 만약 당신이 당신 앞에서 당신의 손에 당신의 휴대 전화를 잡고 있다면 나는 G가 대부분 -Y 방향 일 것으로 기대할 것입니다.

2) 초기 속도가 0이라는 것을 알고 있다면 이론적으로 가능합니다. 당신은 다음과 같습니다 수치 적분라는 알고리즘에서 찾고 : 다음이 잘 작동합니다 가속도 상수 (또는 거의 상수)이다

Numerical_Integration() : 

vel = 0; 
prevTime = getTime(); 
while (true) { 
    currTime = getTime(); 
    vel += getAccelleration() * (currTime - prevTime); 
    prevTime = currTime; 
} 

경우,하지만 가속처럼 (신경 과민 인 경우 손이 약간 떨리는 경우)이 루프가 매우 매우 빠르게 실행되어야합니다. 보통 소프트웨어는 충분히 빠르지 않으며 특별한 하드웨어가 필요합니다. 그렇지 않으면 테이블 위에 앉아있을 때 5m 이동했다고 생각합니다. 나는 당신이하고있는 일에 대해 얼마나 많은 정확성을 필요로하는지, 또는 안드로이드 가속도계가 얼마나 좋은지, 아니면 그들 안에 특별한 하드웨어가 있는지조차 모른다.

확실히 놀아봐야합니다. 아무것도 배우지 않으면 안드로이드 가속도계 설명서를 읽고 아이디어를 얻으십시오.

희망, 도움이 행운을 빕니다!

+0

답장을 보내 주셔서 감사합니다. 그러나 1) 중력만으로 Z에 영향을주지 않습니까? 그리고 잡음의 10 %는 Z에 대해 받아 들일 수 없다. 2) 무엇을 처음 Velocity가 0인지 안다면? 그럼 뭐야? – Shervin4030