N사에서 출시된 CSS based Ranging module은 상당히 우수하다. 빠르고, 간편하다. 기존의 Time-synchronization 기반의 TDOA, TOA등과는 달리 Two-Way Ranging을 이용하기 때문에, 부가적인 장비나 높은 레벨의 프로세서가 '비교적' 필요하지 않다. 여기서 '비교적' 이라는 말을 쓴 이유는,.. 좀 더 깊이있게 들어가보면, 빛의 속도로 움직이는 무선 신호를 정확하게 캐치(Timestamp)하기 위해서는 해당 부분에만 정밀한 프로세서가 필요하긴 하다.
여하간 이러한 TWR based ranging을 하드웨어적으로 지원해주고, upper layer 에게 거리정보를 전달해주는 하드웨어 모듈이 위에서 설명한 CSS이다. 이 CSS의 (공개된) 특징은 multi-path에 강하고, 어쩌구 저쩌구...
하지만 모든 RF에는 노이즈가 존재하고, 이러한 문제는 지금 부터 볼 거리 측정에서도 여실히 나타난다.
아래는 얼마전 부산대 자연대연구실험동에서 했던 실험 결과값이다.

하드웨어 #1로 실험한 거리 값

하드웨어 #2로 실험한 거리 값
위와 같이 튀는 현상이 발생할 수 있다. 이런 현상은 실제 3개 이상의 거리값을 가지고 trangulation하는 부분에서 문제가 발생될 수 있다. 이러한 문제를 해결하기 위해서 일정 부분을 제거하는 필터를 적용할 수 있지만, 이는 움직임 ( 내가 하고 있는 어플리케이션은 주로 단방향의 움직임이 존재한다 )이 있을 때 문제가 발생할 수 있다.
따라서 이러한 거리 값의 보정을 위해
칼만필터(Kalman filter)를 적용해보았다.
칼만필터는 Predict phase, Correct phase로 나뉜다. Predict phase에서는 오차를 포함한 이전의 상태에서 현재의 상태와 error covariance를 예측하고, Correct phase에서는 Kalman gain을 구하여 estimate 값과 Error covariance를 보정하는 과정을 반복한다.
다음은 간단히 X position 에 대하여 예측하는 칼만필터를 적용한 그래프이다.

파란색과 연두색 선은 위 두 그래프를 나타내고 중간 빨간색과 보라색이 칼만필터를 적용한 그래프
위 칼만 필터는 position x 값만 적용한 것이기 때문에 대단히 간단하다. 처리속도가 매우 빠르다는 장점이 있지만, 속도가 올라가는 시점에서는 설정된 error covariance 이상의 속도에서 딜레이가 발생할 수 있다. 이는 속도와 가속도를 추가 변이로 하면 따라갈 수 있다고 하나, 이에 대한 장단점을 분석하는 것이 필요하다.