2014-12-16 14 views
0

나는 안드로이드에서 가속도계, 자이로 스코프 및 자기장을 이용한 센서 융합 작업을하고 있습니다. SensorsManager 덕분에이 센서의 새로운 가치에 대해 각별한주의를 기울였습니다.Accelero, Gyro 및 Magneto를 동시에 Android로 받으십시오.

사실 Nexus 5 (다른 기기는 안드로이드 기기인지 잘 모르겠다), 가속도, 회전 속도 및 자기장이 동시에 샘플링됩니다. event.timestamp를 사용하여이를 확인할 수 있습니다.

다른 시스템 (예 : iOS, xSens ...)에서 Sensor SDK는이 세 벡터를 동시에 통보합니다.

물론 가속도 (t)를 받으면 rotateRate (t) 및 magneticField (t)를 대기 할 배열이있는 코드 줄을 작성할 수 있습니다. 그러나 이러한 3 가지 벡터에 직접 액세스 할 수있는 방법이 있다면 매우 흥미로울 수 있습니다!

센서 데이터와 관련된 다른 질문 : Android 팀에서 기기 생성자에게 데이터를 시간 순서대로 제공하라는 조언이 있습니까?

티보 감사

답변

1

짧은 대답, 아니, 안드로이드가 그들을 읽는 모든 센서 판독 값을 얻을 수있는 방법을 제공하지 않습니다.

또한 SensorManager에서 관찰 한 동작, 즉 서로 다른 센서의 판독 값이 함께 읽음을 나타내는 동일한 타임 스탬프를 사용하는 경우 - 의존해서는 안됩니다. 이 동작을 보장하는 문서가 없습니다 (테스트 및 업데이트 구성의 변종 가능성이 높습니다). 따라서 향후 업데이트에서 여러분을 물릴 수 있습니다. 내가 아래에서 개략적으로 설명하는 접근 방식보다 옳거나 빠르기가 어렵습니다.)

일반적으로 모든 센서가 같은 결과를 생성하지 않는 한, 모든 센서를 "동시에"가져올 수 없습니다. 또한, 모든 센서에 대해 잡음이 많이 발생하므로 최대한 빨리 읽을 수 있으면 이미 부드럽게해야합니다.

따라서 샘플을 매우 빠르게 샘플링 한 다음 특정 간격으로 모든 센서의 최신 샘플을보고하거나 샘플 시간과보고 시간 사이의 델타를 나타내는 일부 평활 값을보고하십시오. 이는 특히 잡음이 많은 센서 데이터를 이미 부드럽게하고있는 경우에 사소한 양의 코드입니다.

+0

답장을 보내 주셔서 감사합니다.하지만 한 번 더 샘플을 보내지는 않겠지 만 SensorManager를 잘 사용하십시오. 실제로 모든 것을 하나로 모으는 것은 불가능하지만 SensorManager가 이전에 병합 한 것처럼 보입니다 (event.timestamp가 모든 3 개의 센서에서 동일하기 때문에) (onSensorChanged() 패턴으로 인해) 독립적으로 브로드 캐스팅합니다. 나는 그들을 분리하기 전에이 트리오를 검색 할 수있는 방법을 찾고있다. –

+0

죄송합니다. 현재 Android에서 원하는 작업을 수행 할 수있는 방법이 없다는 것을 반영하여 답변을 업데이트하겠습니다. 대신, 내가 설명한 것을 수행하기 위해 아주 적은 양의 코드를 작성해야합니다. – iheanyi