본문 바로가기

카테고리 없음

HSR: 가속도 센서의 스케일 펙터 조절 알고리즘

가속도 센서(accelerometer)는 가속도를 출력합니다. 보통 이 가속도에는 중력이 포함되어 있기 때문에 중력을 제거한 후 적분하여 속도와 위치를 계산하는데, 이때 미소한 scale factor의 변화로 인해 중력 성분이 제대로 제거되지 않고 적분으로 누적되면 결국 큰 오차가 발생합니다. 다음 첨부 문서에서는 이러한 scale factor를 조절하기 위한 HSR 알고리즘의 사용에 대하여 소개합니다.

HSR.pdf
0.09MB

 

이 알고리즘은 이전에 소개한 HDR 알고리즘()을 응용해서 제가 간단히 만들어 본 것입니다. 실제로 다른 좋은 가속도 센서의 scale factor를 측정하는 좋은 알고리즘들이 많이 있을 것으로 생각합니다.

 

HSR 알고리즘을 C++코드로 다음과 같이 간단하게 구현할 수 있습니다.

void Filter::HSR (double v[3], double threshold, double ic)
{
	v[0] *= _HSR_I;
    v[1] *= _HSR_I;
    v[2] *= _HSR_I;

    double a = sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]) - 1.;
    //const double ic = 1.0001;
    //const double threshold = 0.01;

	if (-threshold < a && a < threshold) {
   		if (a > 0.)      _HSR_I /= ic;
       	else if (a < 0.) _HSR_I *= ic;
	}
}

 

Filter.cpp
0.00MB
Filter.h
0.00MB