문제

GPS를 사용하여 추적 응용 프로그램 작업. 모두 괜찮지 만 때로는 닫힌 지역이나 악천후로 인해 부정확 한 지점을 얻습니다. 당신이 그것들을 음모 할 때, 그것은 단지 많은 홉/점프로 옳지 않은 것처럼 보이지 않습니다.

잘못된 신호를 필터링하려면 어떤 알고리즘을 실행해야합니까?

도움이 되었습니까?

해결책

몇 가지 옵션이 있습니다.

  1. 특이 치를 버리십시오
  2. 필터
  3. 더 나은 GPS를 사용하십시오
  4. 외부 데이터 소스 사용 (Snap to Road)
  5. 위의 조합

필터를 사용하고 싶습니다 - Kalman 필터는 일반적인 (그리고 종종 최상의) 솔루션입니다. 저렴한 IIR (무한 임펄스 응답) 필터보다 더 나은 예측 평균화량을 사용합니다.

FiltersValue = FiltersValue * 0.75 + NewValue * 0.25

초당 4-5 개의 수정을 제공하는 GPS 모듈을 얻을 수 있으므로 합리적인 응답 시간이있는 위의 '저렴한'필터를 사용할 수 있습니다.

시끄럽지 않고 더 나은 실내 수신 (가능한 경우)을 가진 더 나은 GP (SIRF III 이상)를 얻을 수 있습니다.

소비자 GPS 장치 "Snap to Road"가능하면 소비자가 도로에서 오류를 보지 못하고 다른 기술 중 일부는 보이지 않습니다.

Kalman은 구현하기 쉽지 않지만 외부 데이터 세트 나 센서 (예 : 도로 속도)가 없으면 최상의 옵션입니다. 체크 아웃 http://www.google.com/search?q=open%20Source%20Kalman%20Filter 코드 및 튜토리얼 용.

-아담

다른 팁

Re : "Pop"노이즈가있을 때 필터링-

내가 찾은 가장 쉬운 방법 중 하나는 다음과 같습니다.

delta = newValue - filteredValue;
delta = delta > LARGEST_SANE_DELTA ? LARGEST_SANE_DELTA
     : (delta < -LARGEST_SANE_DELTA ? -LARGEST_SANE_DELTA : delta);
filteredValue += alpha*delta;

여기서 alpha = 1/tau와 tau는 위의 코드의 반복 사이에 시간의 배수로 표현 된 문제의 저역 통과 필터의 시간 상수입니다. 가치 LARGEST_SANE_DELTA 가능한 큰 변화를 나타냅니다 newValue 그리고 입력의 과도하게 큰 변화. 이 유형의 소음을 거부하는 더 나은 방법이있을 수 있지만 더 복잡하며 내가 언급 한 것은 매우 간단합니다.

사용 칼만 필터.

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