문제

iOS 앱에 핵심 모션 관리자가 있습니다.

motionManager = [[CMMotionManager alloc] init];
motionManager.deviceMotionUpdateInterval = 1.0 / 60.0;
if ([motionManager isDeviceMotionAvailable]) {
    [motionManager startDeviceMotionUpdates];
}
.

및 업데이트 방법 (Cocos3d를 사용하고 있지만 중요하지 않습니다.)이 있습니다.

-(void) updateBeforeTransform:(CC3NodeUpdatingVisitor *)visitor
{
    if (motionManager.deviceMotionActive)
    {
        CMDeviceMotion *deviceMotion = motionManager.deviceMotion;
        CMAttitude *attitude = deviceMotion.attitude;

        NSLog(@"%f, %f, %f", attitude.yaw, attitude.pitch, attitude.roll);

    }
}
.

나는 테이블에 장치를 넣고, 요, 피치 및 롤 가치를보기 시작하고, 요가 끊임없이 변화하고있다!몇 분 안에 약 10도 동안 변화하고 있으며, 내 앱에서 절대적으로 intelutely입니다.그 변화의 이유는 무엇이며 어떻게 피할 수 있습니까?나는 그것이 지구 회전 때문에 그것이 일어난 것이라고 생각하기 시작했지만, 속도가 너무 많습니다 :)

미리 감사드립니다!

도움이 되었습니까?

해결책

어둠 속에서 촬영을 시도하겠습니다. iOS 5 자력계 데이터는 코어 모션 센서 융합 알고리즘의 일부입니다. 게임과 같은 많은 응용 프로그램의 경우 에너지 소비가 증가하고 사용자 가이 8을 움직이게하는 것에 대해 사용자 가이 8을 수행 할 수있는 나침반을 보정해야 할 필요가 있습니다.

CMMOTIONMANAGER의 startdevicemotionupdatesusingreferenceframe startdevicemotionupdates . cmattitudeReferenceFrameXMagnethNorthzvertical 및 표류 효과가 감소하는지 확인하십시오.

다른 팁

겪고있는 것은 드리프트라는 것이고 당신은 그것에 대해 많이 할 수는 없습니다.

기본적으로 자이로 스코프는 회전 속도를 측정하는 데 매우 우수하지만 순간적인 방향을 측정 할 수는 없습니다. 따라서, 디바이스의 전류 방향을 계산하기 위해 센서 알고리즘은 감지율을 위치로 통합해야합니다. 그러나 위치가 계산되면서 작은 오류가 시간이 지남에 따라 쌓아 올리고 계산 된 방향이 장치가 대부분 여전히 남아 있더라도 드리프트 할 수 있습니다.

장치가 자력계와 같은 순간 방향을 측정 할 수있는 센서가있는 경우 센서 융합 알고리즘은 센서 입력을 비교 / 결합하여 드리프트를 수정할 수 있으므로 Apple의 참조 프레임 옵션 : cmattudeReferenceFramexarBitraryCorrectectionSfical.

그러나 Apple의 구현은 완벽하지 않습니다. 그래서 CmattItUdeReferenceFramexarBitryCorrectedzvertical이 활성화되어있을 때 대규모 점프를 앞뒤로 올바르게 올바르게 올바르게 올바르게 올바르게 표시 할 수 있습니다. 더 나은 알고리즘은 적어도 시간이 지남에 따라 오류 수정을 부드럽게 부드럽게합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top