2010-01-19 4 views
4

사용자가 iPhone 장치를 돌릴 때 응용 프로그램을 생성하여 회전 수를 감지 할 수 있습니다. 현재 Compass API를 사용하여 각도를 얻고 스핀을 감지하는 여러 가지 방법을 시도합니다. 다음은 시도한 솔루션 목록입니다. 1/나침반에서 얻은 각도가 전달되었는지 여부를 감지하기 위해 전체 라운드에서 2 각도 트랩 (전체 라운드에 조각)을 만듭니다. 2/(updateHeading 함수에서) 나침반이 업데이트 된 시간 사이의 모든 각도 거리의 합계입니다. 합계 각도를 360으로 나눠 봅시다.> 회전 수를 얻을 수 있습니다.iPhone 회전 회전 감지?

문제는 다음과 같습니다. 전화가 너무 빠르게 회전하면 나침반이 전화 속도를 따라 잡지 못하고 우리에게 돌아옵니다. 최신 시간과의 각도 (실제 회전과 같이 연속적이지 않음).

우리는 또한 회전 속도계를 감지하기 위해 가속도계를 사용하려고합니다. 그러나 평평한 평면에서 전화기를 회전해도이 방법은 작동하지 않습니다.

이 문제에 대한 해결책이나 경험이있는 경우 도와주세요.

고마워요.

답변

0

가속 속도를 사용하여 전화가 얼마나 빨리 돌아가고 있는지 확인하고 전화가 멈출 때까지 빈칸을 채우는 데 사용할 수 있습니다.이 시점에서 나침반을 다시 쿼리 할 수 ​​있습니다.

3

iPhone4에는 MEMS 자이로 컴 파일이 포함되어있어 가장 직접적인 경로입니다.

눈치 채 셨던 것처럼 자력계는 반응이 느립니다. 이것은 현재의 방향이 실제로 무엇인지에 대해 숙련 된 추측을하기 위해 느린 것을 사용하는 예상 알고리즘을 사용함으로써 줄일 수 있습니다.

먼저 센서의 실제 성능을 결정해야합니다. 이렇게하려면 여러 회전 속도마다 정확한 속도로 회전하고 나침반 동작을 기록해야합니다. 회전 플랫폼에는 순간 위치를 읽을 수있는 방법이 있어야합니다.

느린 속도에서는 다양한 정도의 고정 지연이 표시됩니다. 속도가 증가함에 따라, 지연은 180도에이를 때까지 커지며,이 시점에서 나침반이 갑자기 뒤집습니다. 빠른 속도에서는 플립이 동일한 값으로 반복 될 때 플립되지 않는 것처럼 보일 수 있지만 뒤집기가 모두 보입니다. 이러한 고속 중 일부에서는 나침반이 회전 방향과 반대 방향으로 뒤쪽으로 회전하는 것처럼 보일 수 있습니다.

회전 테이블을 얻는 것은 번거로운 일이 될 수 있으며 로컬 자기장에 영향을 미치지 않도록 보장 (나침반을 쓸모 없게 만드는 것)하는 것은 어려운 일입니다. 이상적인 테이블은 알루미늄으로 만들어지며 강철 테이블을 사용해야하는 경우 (가장 보편적 인 경우) 강철에서 최대한 멀리 가져 오기 위해 비자 성 플랫폼에 휴대폰을 장착해야합니다.

CNC 기계는 필요한 작업을 쉽게 수행 할 수있는 좋은 출발점이 될 것입니다.

일단 나침반 성능 데이터를 얻으면 관측 된 판독 값과 실제 방향 및 회전 속도의 모델을 만들어야합니다. 모델을 거꾸로 뒤집어 실제 값을 추측 할 수 있습니다.

간단한 알고리즘 구현은 판독 값의 기록을 유지하고 순차 판독 값의 차이 목록을 유지하는 것입니다. 차이 값이 0이 아닌 나침반 지연이 있음을 알기 때문에 현재 값이 지연으로 인해 어느 정도 부정확하다는 것을 알 수 있습니다.

다음 단계는 이전 실제 값의 지체가 마지막 값에 추가 된 업데이트 된 값을 생성하는 데 사용되는 업데이트 된 값을 생성하는 데 사용되는 '수정 된'판독 값의 목록을 만드는 것입니다. 'corrected'목록에 저장되고 최신 값으로 저장됩니다.

누적 보정 (실제 및 수정 된 목록의 최신 값 간의 차이가 360도를 초과하면 기본적으로 나침반이 가리키는 위치를 알 수 없음을 의미합니다. 바라기를, 그 시점에는 도달하지 않기를 바랍니다. 대부분의 회전 동작은 일반적으로 상당히 짧은 시간 동안 수행해야합니다.

그러나 회전 수를 계산하는 것이므로 누적 된 오류가 상당히 높은 값에 도달 할 때까지 전체 회전 수만큼 벗어납니다. 실제 나침반 지연과 실제 회전 속도에 따라 다르므로이 값이 무엇인지는 확실치 않습니다. 그러나 회전 수가 너무 적 으면 (5 정도) 사용 가능한 결과를 얻을 수 있어야합니다.

+0

나는 포괄적 인 대답을 위해 하나 이상의 upvote를 줄 수 있으면 좋겠다. –

0

iPhone 4를 사용하는 경우 문제가 해결되어 Core Motion을 사용하여 회전 데이터를 얻을 수 있습니다.

이전 장치의 경우 매우 미세한보고 간격에서 UIAccelerometer을 사용하여 장치가 회전하면서 흔들림을 감지하려고 시도하는 것이 흥미로운 방법이라고 생각합니다. 회전 평면에 직각으로 모션에서 감지 된 합리적인 패턴을 얻을 수 있습니다.