Korean Institute of Information Technology
[ Article ]
The Journal of Korean Institute of Information Technology - Vol. 23, No. 8, pp.137-146
ISSN: 1598-8619 (Print) 2093-7571 (Online)
Print publication date 31 Aug 2025
Received 23 May 2025 Revised 10 Jul 2025 Accepted 13 Jul 2025
DOI: https://doi.org/10.14801/jkiit.2025.23.8.137

자이로 센서의 바이어스 추정을 위한 표본 취득 범위 선별 알고리즘

한철수*
*청주대학교 전자공학과 조교수
Sampling Range Selection Algorithm for Bias Estimation of a Gyro Sensor
Cheolsu Han*

Correspondence to: Cheolsu Han Dept. of Electronic Engineering, Cheongju University, 298 Daeseongro, Cheongwon-gu, Cheongju, Chungbuk, 28503, Rep. of Korea Tel.: +82-43-229-8446, Email: cheolsuhan@cju.ac.kr

초록

자이로 센서의 바이어스 추정은 센서에 움직임이 가해지지 않는 상태에서 장시간 더 많은 수의 표본을 취득하여 사용할수록 보다 정밀해진다. 그러나 실사용 환경에서 장시간 센서에 움직임이 가해지지 않도록 유지하는 것은 매우 어렵다. 이 때문에 추정 성능이 다소 떨어지더라도 단시간 적은 수의 표본을 취득해 바이어스 추정에 이용하는 경우가 많다. 본 논문에서는 자이로 센서의 바이어스 추정을 위한 표본의 취득 범위를 움직임의 발생 여부를 고려해 선별하는 방법을 제안한다. 실험 결과, 제안 방법을 이용해 표본의 수를 100개에서 1,000개로 늘렸을 때 시간이 더 걸리지만 드리프트 오차의 평균 증가율이 약 50.00% 감소했다. 본 논문의 결과는 제안 방법을 이용해 다수의 안정적인 표본을 추가로 쉽게 취득할 수 있고, 이를 통해 더 정밀한 시스템을 구축할 수 있음을 보여준다.

Abstract

The bias estimation of a gyro sensor becomes more accurate as more samples are acquired over a longer period without motion applied to the sensor. However, in real-world environments, it is challenging to keep the sensor stationary for extended periods. As a result, even though the estimation performance may be suboptimal, only a small number of samples are often collected within a short time frame for bias estimation. In this paper, we propose a method for selecting the sample acquisition range for gyro sensor bias estimation, taking into account the occurrence of motion. Experimental results demonstrate that when the number of samples was increased from 100 to 1,000 using the proposed method, although it required more time, the average rate of drift error decreased by approximately 50%. These results show that the proposed method facilitates the acquisition of additional samples for bias estimation, which can lead to a more accurate system.

Keywords:

gyro sensor, bias estimation, drift error, motion tracking, inertial measurement unit

Ⅰ. 서 론

사물의 움직임을 감지해 활용하는 기술은 여러 분야에서 널리 사용되고 있다. 예를 들어, 사람의 머리, 팔, 다리 등에 부착한 센서를 통해 각 부위의 움직임을 감지하고, 그 정보를 활용해 3D 캐릭터의 신체를 매우 사실적으로 연동하여 움직이게 하는 모션 캡처(Motion capture) 기술이 대표적이다[1]. 또한, 차량의 내비게이션 시스템과 자율 주행 시스템도 움직임을 적극적으로 활용한다.

움직이는 물체가 얼마나 회전하였는지 회전각을 측정하는 주요 방법의 하나는 자이로 센서(Gyro sensor)를 이용하는 것이다. 자이로 센서를 이용하는 방식은 카메라를 이용하는 방식에 비해 소규모로 구성할 수 있다[2]. 따라서 작고 가볍게 만들어야 할 필요가 있는 머리 부분 탑재형 디스플레이(HMD, Head Mounted Display)나 드론(Drone) 등의 시스템이 주로 이용한다[3]-[5].

자이로 센서를 이용해 추정된 회전각은 드리프트 오차(Drift error)를 포함한다[6]. 회전각을 추정할 때 단위 시간당 추정된 회전각을 누적하는데, 이때 추정 오차가 누적되어 점점 커진다. 이 때문에 자이로 센서를 이용한 회전각 추정은 단시간 동안은 매우 정확하지만, 시간이 지날수록 오차가 커진다. 따라서 드리프트 오차를 최대한 억제하고, 누적된 오차를 초기화시키는 것이 중요하다.

드리프트 오차를 증가시키는 주된 원인 중 하나는 센서의 바이어스(bias) 추정 오차이다. 자이로 센서의 바이어스 추정은 센서에 움직임이 가해지지 않는 상태에서 장시간 더 많은 수의 표본을 취득하여 사용할수록 더 정밀해진다[7]. 그러나 실사용 환경에서 장시간 센서에 움직임이 가해지지 않도록 유지하는 것은 매우 어렵다. 이 때문에 성능이 다소 떨어지더라도 단시간 적은 수의 표본을 취득해 바이어스 추정에 이용하는 경우가 많다[5][8].

본 논문에서는 자이로 센서의 바이어스 추정을 위한 표본의 취득 범위를 움직임의 발생 여부를 고려해 선별하는 방법을 제안한다. 센서에 가해진 움직임을 고려해 표본의 취득 범위를 선별하고 표본을 추가 취득하면 다수의 안정적인 표본을 얻을 수 있다. 표본의 수가 많아지면 바이어스 추정 정밀도를 높일 수 있고, 이에 따라 회전각 추정 시스템의 드리프트 오차의 증가율을 낮출 수 있다.

본 논문의 구성은 다음과 같다. 2장에서는 관련 연구를 소개하고, 본 연구의 필요성과 중요성에 대하여 논한다. 3장에서는 제안하는 자이로 센서의 바이어스 추정을 위한 표본 취득 범위 선별 알고리즘에 관해 설명한다. 4장에서는 제안 방법의 성능을 평가하기 위한 시뮬레이션 실험에 관해 설명한다. 5장에서는 실험 결과를 설명하고 고찰한다. 6장은 결론 및 향후 과제이다.


Ⅱ. 관련 연구

자이로 센서는 다른 센서와 함께 사용하는 경우가 많다. 자이로 센서로 추정된 회전각은 짧은 시간 동안 정확하고 안정적이지만, 드리프트 오차로 인해 시간이 지날수록 오차가 점점 커지기 때문이다. 자이로 센서와 함께 이용하는 대표적인 센서로는 전자기(Electromagnetic) 센서, 카메라 센서, 나침반 센서, 가속도 센서 등이 있다[8]. 전자기 센서, 카메라 센서, 나침반 센서를 이용하면 절대 방향을 알 수 있다. 따라서 주기적으로 자이로 센서의 회전각을 초기화해 줄 수 있는 장점이 있다. 그러나 전자기 센서와 카메라 센서의 경우, 넓은 설치 공간이 필요하고 고가의 장비가 필요하다. 나침반 센서의 경우 사용하기 위한 장소적 제한이 존재한다[9].

가속도 센서는 자이로 센서와 함께 하나의 부품으로 만들어져 시판되는 경우가 많고 값이 싸기 때문에 함께 자주 사용된다. 자이로 센서의 경우 미세 진동에 강건하지만, 드리프트 오차가 발생하는 문제가 있다. 가속도 센서는 중력 가속도의 영향만을 받으면 정확한 방향각을 제공하지만, 미세 진동에 매우 민감하게 반응한다. 따라서 두 필터의 장점을 합쳐 서로 보완하는 상보 필터(Complementary filter)를 이용해 회전각을 산출한다[10]. 가속도 센서의 경우 중력 가속도를 이용하기 때문에 수평 회전은 검출할 수 없고, 수평 회전각의 경우 자이로 센서만을 이용해 추정해야 한다[5].

자이로 센서의 바이어스를 추정하는 대표적인 방법으로 칼만 필터(Kalman Filter)가 있다[11]. 칼만 필터는 잡음이 포함된 측정치를 바탕으로 선형 역학 시스템의 상태를 추정하는 재귀 필터이다. 칼만 필터를 이용하면 정확하고 빠르게 바이어스를 추정할 수 있고, 적은 메모리를 이용해 구현할 수 있다는 장점이 있다. 이 때문에 자이로 센서를 이용한 많은 연구에서 칼만 필터를 이용하고 있다[9]-[12]. 칼만 필터는 초기 변수의 설정이 필요한데, 초기 변수의 최적값을 찾기 위한 다양한 검토가 이루어지고 있다. 최근에는 온도특성을 포함해 바이어스를 추정하는 연구도 보고되었다[9]. 또한, 다수의 자이로 센서를 이용해 정밀도를 높이고자 하는 연구도 보고 되었다[12].

이외에도 자이로 센서에 움직임이 가해지지 않는 상태에서 다수의 표본을 측정하고 평균치를 구해 바이어스를 추정하는 방법이 있다[5][7]. 이 방법은 충분한 수의 표본을 얻을 수 있다면 간단하면서도 정밀하게 바이어스를 추정할 수 있다. 칼만 필터에 의한 방법과 달리 이 방법으로 구해진 추정치는 향후 갱신되지 않는다. 본 논문과 선행 연구는 이 방법을 이용해 바이어스를 추정한다[7]. 바이어스 추정에 사용되는 표본에 움직임의 악영향이 포함되는 것을 우려해, 실사용 환경의 여러 응용 시스템에서 센서에 움직임이 가해지지 않는 초기 대기 시간을 충분히 길게 부여하지 않는다[5][8]. 이 경우 초기 대기 시간이 짧아 수집할 수 있는 표본의 수가 적어지고, 이 때문에 바이어스 추정 정밀도가 높지 않다는 문제에 봉착한다. 이 문제를 해결하기 위해 본 논문에서는 선행 연구와 같이 초기 대기 시간 동안 표본을 취득하고 그것에 더하여 초기 대기 시간 이후에도 표본 취득 범위를 선별해 표본을 추가 취득해 바이어스 추정 정밀도를 높일 수 있는 새로운 방법을 제안한다.

바이어스 추정을 위해 표본의 선별과 관련된 연구로는 가속도 센서를 추가로 이용한 방법이 보고되었다[9]. 이 방법은 가속도 센서의 출력값을 혼합한 기준치를 정의한 후, 가속도 센서의 출력이 기준치 미만일 때 얻어진 자이로 센서의 출력만을 칼만 필터에 이용하였다. 본 논문에서는 추가적인 센서를 이용하지 않고 자이로 센서의 값만을 이용해 표본의 취득 범위를 선별하여 표본을 취득하고 바이어스를 추정한 것이 차별점이다.


Ⅲ. 바이어스 추정을 위한 표본 취득 범위 선별 알고리즘

본 장에서는 센서에 가해지는 돌발적인 움직임을 고려해 표본의 취득 범위를 선별한 후 바이어스를 추정하는 제안 알고리즘에 대하여 설명한다. 제안 알고리즘의 순서도를 그림 1에 나타낸다.

Fig. 1.

Flowchart of the proposed algorithm

바이어스 추정을 위해 초기에 입력되는 다량의 회전 각속도 데이터의 표본들을 그림 2와 같이 연속된 데이터 블록의 열로 나타낸다. 그림 2에서 size는 블록의 크기, 즉, 블록당 표본의 수를 나타내고, Block[i-1]은 Block[i]보다 시간순으로 더 앞서 입력된 블록이다. 블록의 크기(size)와 제안 알고리즘을 통해 추가로 취득하고자 하는 블록의 수(K)를 미리 정한다.

Fig. 2.

Blocks of initially measured rotational velocity data

기준 블록(Reference block)에 대하여 먼저 처리한다. 그림 2Block[0]이 기준 블록이고, 맨 처음 측정된 표본의 블록이다. 기준 블록을 측정할 때는 센서에 움직임이 가해지지 않도록 주의해야 한다.

sum =i=0size-1  Block 0i(1) 
min_val0=minBlock0(2) 
max_val0=maxBlock0(3) 

식 (1)과 같이 기준 블록 안의 회전 각속도 데이터의 표본들을 모두 합산하여 누적된 합(sum)을 구한다. 식 (1)에서 Block[0][i]는 기준 블록 안의 i번째 데이터를 나타낸다. 또한, 식 (2), (3)과 같이 기준 블록 안에서 회전 각속도의 최솟값(min_val0)과 최댓값(max_val0)을 구한다. 이때, 표본의 취득 범위 선별에 이용하는 하한 조정 상수(M-)와 상한 조정 상수(M+)를 기준 블록의 통계치를 이용하여 정한다. 이 두 상수는 민감도를 조절하기 위한 값이다.

바이어스 추정을 위해 추가로 취득하고 싶다고 정한 블록의 수(K)만큼 적합한 블록을 찾을 때까지 기준 블록 이후의 블록들(Block[N])에 대하여 다음 과정을 반복한다. 여기에서 N]은 블록의 번호이다. 식 (4)와 같이 해당 블록의 표본만을 모두 합산하여 누적된 합(partial_sum)을 구한다. 이때 Block[N][i]는 N]번 블록 안의 i번째 데이터를 나타낸다. 또한 해당 블록의 최솟값(min_val)과 최댓값(max_val)을 식 (5), (6)과 같이 구한다.

partial_sum=i=0size-1  BlockNi(4) 
min_val=minBlockN(5) 
max_val=maxBlockN(6) 

이후 해당 블록이 바이어스 추정을 위한 표본 취득 범위로서 적합한지를 판정한다. 해당 블록에서 식 (7)(8)이 모두 성립할 때 그 블록을 표본 취득 범위로서 적합하다고 판정한다. 식 (7)(8)이 모두 성립한다는 것은 기준 블록과 거의 같은 범위의 표본들로 구성된 안정된 구간으로 생각할 수 있기 때문이다. 돌발적인 움직임이 발생한 순간의 표본을 포함한 블록일 경우, 움직임에 의해 회전 각속도 데이터의 크기가 순간적으로 매우 크게 변하고, 식 (7)(8) 중 적어도 하나는 성립하지 않게 될 것이다. 움직임이 발생하지 않은 적합한 취득 범위로서 판정될 경우, 식 (9)와 같이 누적된 합(sum)에 해당 블록의 누적된 합(partial_sum)을 합산한다.

min_val0-M-min_val(7) 
max_val0+M+max_val(8) 
sum=sum+partial_sum(9) 

표본 취득 범위로서 적합한 블록을 K개 찾게 되면 반복 과정을 마친다. 그 후, 식 (10)과 같이 누적된 표본의 합(sum)을 누적된 표본의 수로 나눔으로써 회전 각속도의 바이어스(bias)를 추정한다.

bias = sum  size×1+K(10) 

Ⅳ. 시뮬레이션 실험

제안 방법을 이용해 표본 취득 범위를 선별하여 표본을 추가 취득하고 바이어스를 추정했을 때, 회전각 추정 성능이 어떻게 변화하는지를 평가하기 위한 시뮬레이션 실험을 진행한다.

평가 실험을 위해 자이로 센서(MPU6050[13])에 움직임이 가해지지 않는 상태에서 약 5ms 간격으로 10,000개의 표본을 5회에 걸쳐 실측을 통해 미리 수집하였다. 표본을 수집할 때는 회전 각속도 데이터뿐만 아니라 표본의 측정 시간도 함께 기록하였다. 이때 10,000개의 표본을 미리 수집한 이유는 앞부분 2,000개를 이용해 다양한 조건에서 바이어스를 추정하고, 각 조건에서 추정된 바이어스와 뒷부분 8,000개의 데이터를 모두 이용해 각 조건에서의 회전각을 추정하고 그 성능을 비교 평가하기 위함이다.

시뮬레이션 실험에 사용하고자 미리 수집한 5회분의 실측 표본 중 일례를 그림 3에 나타낸다. 가로축은 표본의 번호를 나타내고, 세로축은 회전 각속도를 나타낸다. 회전 각속도의 단위는 deg/s이다. 그림에서 자이로 센서의 출력은 일정량의 바이어스를 포함한다. 측정에 이용한 감도 조정 계수(Sensitivity scale factor)는 131이고[9], 선행 연구와 동일한 감도 조정 계수를 이용하였다[5][7]. 그림의 회전각은 센서의 원시 데이터(Raw data)로서 참값이 131배로 확대된 것이다.

Fig. 3.

Example of measured samples

평가 실험을 위해 바이어스 추정에 사용되는 앞부분 2,000개의 표본에 가상의 움직임을 부여하였다. 이를 위해 2,000개의 표본을 100개씩 20블록으로 나누고, 첫 블록을 제외한 19개의 블록에서 총 10블록을 무작위로 선택해 해당 블록의 표본의 값을 두 배가 되도록 하였다. 그림 4에 센서를 손에 쥐고 자유롭게 좌우로 회전시켜 움직임을 가하도록 했을 때 얻어진 실측 표본의 일례를 나타낸다. 이처럼 일상적인 환경에서 센서에 작은 움직임이 가해진 경우에도 회전 각속도의 원시 데이터의 크기는 순간적으로 약 1,000 deg/s 이상이 되기 때문에, 표본의 값을 두 배를 하는 것이 과도하지 않다고 판단하였다.

Fig. 4.

Example of measured samples during rotation

바이어스 추정에 사용된 표본의 일례를 그림 5에 나타낸다. 전술한 것처럼 첫 블록을 제외한 나머지 블록 중 10개의 블록에서 표본 값이 원래의 두 배로 조정되었다.

Fig. 5.

Example of samples for bias estimation

실험 조건을 표 1에 나타낸다. 총 5회에 걸쳐 반복 실험한다. 10,000개의 표본 중 앞부분 2,000개를 이용해 3가지 조건에서 바이어스를 추정하고, 추정된 바이어스와 뒷부분 8,000개의 데이터를 모두 이용해 회전각을 추정하고 성능을 비교 평가한다. 표본의 측정 시간 간격은 약 5ms이다. 블록당 표본의 수(size)는 100개이다. 표본을 추가 취득하고자 하는 블록의 수(K)는 0, 4, 9로 3가지 조건이다. 바이어스를 추정할 때 사용하는 표본의 수는 100, 500, 1,000개로 3가지 조건이다. 이것은 기준 블록인 첫 블록의 표본 수 100개에 추가 취득하고자 하는 블록의 수(K)만큼 식 (7)(8)을 동시에 만족하는 블록을 선별하여 그 블록의 표본 수를 더한 값이다. 하한 조정 상수(M-)는 min_val0×0.3으로, 상한 조정 상수(M+)는 max_val0×0.3으로 설정하였다. 두 조정 상수는 식 (7)(8)에서 추가 블록 취득의 민감도를 조절하기 위한 값으로, 기준 블록의 최댓값과 최솟값에 조금의 여유(30%)를 두도록 정하였다.

Experimental conditions

각 조건에 대하여 3장의 제안 방법을 이용해 표본 취득 범위를 선별하고 바이어스를 추정한다. 각 조건에서 추정된 바이어스와 뒷부분 8,000개의 데이터를 모두 이용해 식 (11)과 같이 회전각을 추정한다. 여기서 t는 현 단계의 표본 측정 시간을, tprev는 전 단계의 표본 측정 시간을 나타낸다. Yaw(t)는 현 단계에서 추정한 회전각을 나타내고, 회전각의 초깃값은 0도로 설정하였다. Zcalib(t)는 센서의 바이어스를 제거해 교정한 현 단계의 회전 각속도이고, 식 (12)와 같이 산출한다. Δt는 현 단계와 직전 단계의 측정 시간의 차이이고, 식 (13)과 같이 산출한다.

Yawt=Yawtprev+ZcalibtΔt(11) 
Zcalibt=Zt- bias(12) 
Δt=t-tprev (13) 

Ⅴ. 실험 결과 및 고찰

3가지 조건에 대한 회전각의 추정 결과를 그림 6~8에 각각 나타낸다. 그림 6은 표본의 수가 100개, 그림 7은 500개, 그림 8은 1,000개인 경우의 결과이다. 그림에서 가로축은 시간을 나타내고, 세로축은 방향각을 나타낸다. 단위는 각각 초(s)와 도(deg)이다. 방향각의 크기가 양수일 때는 반시계 방향으로 회전한 것을 나타내고, 음수일 때는 시계방향으로 회전한 것을 나타낸다.

Fig. 6.

Rotation angle (Number of samples: 100)

Fig. 7.

Rotation angle (Number of samples: 500)

Fig. 8.

Rotation angle (Number of samples: 1,000)

그림 6~8의 각 그림에서 보이는 5개의 선은 총 5회의 반복 실험을 통해 얻은 각각의 회전각의 추정 결과이다. 5개의 선은 모두 0초의 0도에서 시작하여 시간이 흐르면서 0도를 벗어나고 있다. 회전각의 초깃값은 0도이고, 회전각 추정에 사용한 뒷부분 8,000개의 표본은 자이로 센서에 움직임이 가해지지 않는 상태에서 측정된 것이기 때문에, 이상적으로는 회전각의 추정치가 0도에 멈추어 있어야 한다. 그러나 단시간의 회전각을 누적하여 최종 회전각을 추정하는 원리로 인해 시간이 지남에 따라 누적된 회전각의 오차는 점점 더 커진다. 이와 같이 시간의 흐름에 따라 누적되어 커지는 오차를 드리프트 오차라 하고, 그림 6~8 모두에서 확인이 가능하다.

같은 실험 조건에서도 반복 실험마다 바이어스 추정에 이용된 표본이 다르므로 바이어스 추정 오차가 미세하게 달라진다. 따라서 시간이 흐르면서 누적되는 오차의 증가율도 달라지고, 이것이 같은 실험 조건에서도 5개의 선에 기울기의 차이가 발생하는 이유이다. 그림 6~8 모두에서 선들이 다소 흔들리는 듯한 직선의 형태를 보이는데 이러한 흔들림은 바이어스 추정 오차 외의 온도 변화, 미세 진동 등에 의해 발생한다[9].

그림 6의 결과는 초기 100개의 표본만을 사용해 얻어진 결과이다. 반면에 그림 7그림 8의 결과는 제안 방법을 이용해 초기 표본 100개에 더해서 움직임이지 않았다고 판단되는 범위의 표본을 각각 400개, 900개를 더 취득해 회전각을 산출한 것이다. 3가지 조건 모두 40초간 1도의 각도도 벗어나지 않는 결과를 보인다.

더욱 구체적인 평가를 위해 그림 6~8의 회전각에 절댓값을 취해 드리프트 오차로 변환한다. 0도로 수렴해야 할 값이 0도에서 벗어난 것이기 때문에, 절댓값을 취하면 드리프트 오차로서 간주할 수 있다[7]. 변환한 후, 드리프트 오차의 증가율을 선형 최소 제곱 회귀(Linear Least Squares Regression)를 이용해 추정하였다[14].

3가지 조건에서 회귀 분석한 결과를 표 2~4에 각각 나타낸다. 표 2는 표본의 수가 100개, 표 3은 500개, 표 4는 1,000개인 경우의 결과이다. 표에서 추정된 드리프트 오차의 기울기는 Slope이고, y절편은 Intercept이다. Coefficient of determination은 결정 계수(R2)이다[14]. 결정 계수는 회귀 분석의 결과가 분석 데이터를 얼마나 잘 설명하는지를 나타내는 값으로, 1에 가까울수록 회귀 분석이 잘 이루어진 것이다. 총 5회분의 반복 실험에 대한 기울기, y절편, 결정 계수를 산출하였다. 표에서 5회분의 결과에 대한 평균값은 Average이고, 표준오차는 Standard error이다.

Regression coefficients of the drift errors(Number of samples: 100)

Regression coefficients of the drift errors(Number of samples: 500)

Regression coefficients of the drift errors(Number of samples: 1,000)

표 2~4로부터 제안 방법을 이용해 표본의 수를 추가로 더 많이 취득했을 때 드리프트 오차의 평균 기울기, 즉, 드리프트 오차의 평균 증가율이 각각 0.0086, 0.0059, 0.0043으로 점점 감소하고 있음을 알 수 있다. 오차의 증가율이 더 작다는 것은 같은 시간에 추정된 방향각이 더 정확하다는 것을 뜻한다. 따라서 제안 방법을 이용해 초기의 표본에 더해서 움직이지 않았다고 판단되는 범위의 표본을 더 취득해 회전각을 산출하는 것으로 더 정밀하게 방향각을 산출할 수 있음을 보여준다.

표본의 수에 따른 드리프트 오차의 평균 증가율을 그림 9에 나타낸다. 가로축은 표본의 수를, 세로축은 드리프트 오차의 평균 증가율을 나타낸다. 평균 증가율의 단위는 deg/s이다. 오차 범위는 표준오차이다. 그림에서 제안 방법을 이용해 표본의 수를 추가 취득하였을 때 드리프트 오차의 평균 증가율이 감소한다. 초기 100개의 표본만을 이용한 경우보다 추가로 400개, 900개의 표본을 수집하여 바이어스를 추정했을 때, 드리프트 오차의 평균 증가율은 각각 31.40%, 50.00% 작아졌다.

Fig. 9.

Average increase rate of the drift errors

표본의 수에 따른 드리프트 오차의 최대 증가율을 그림 10에 나타낸다. 그림에서 제안 방법을 이용해 표본의 수를 추가 취득하였을 때 드리프트 오차의 최대 증가율도 감소한다. 초기 100개의 표본만을 이용한 경우보다 추가로 400개, 900개의 표본을 수집하여 바이어스를 추정했을 때, 드리프트 오차의 최대 증가율은 각각 31.17%, 34.42% 작아졌다.

Fig. 10.

Maximum increase rate of the drift errors

이상의 결과로부터 제안 방법을 이용해 표본 취득 범위를 선별하여 표본을 추가 취득하고 바이어스를 추정했을 때, 회전각 추정 성능이 향상하는 것을 확인했다. 바이어스를 추정할 때 돌발적으로 발생할 수 있는 움직임의 영향을 피하고자 추정 정밀도가 다소 떨어지더라도 단시간 적은 수의 표본을 취득해 이용하는 경우가 적지 않았다. 이러한 상황에서 제안 방법을 이용하면 간단하면서도 더 정밀하게 회전각을 추정할 수 있을 것이다.


Ⅵ. 결론 및 향후 과제

실사용 환경에서 적은 수의 표본을 취득해 바이어스를 추정하면 돌발적으로 발생할 수 있는 움직임의 악영향을 피할 가능성은 커지지만, 표본의 수를 충분히 취득하지 못해 바이어스 추정 성능이 떨어진다. 제안 방법에서는 표본의 취득 범위를 움직임의 발생 여부를 고려해 선별하고 표본을 추가로 취득한다. 이를 통해 다수의 안정적인 표본을 얻을 수 있고, 기존 방법에 비해 바이어스 추정 정밀도를 높일 수 있다. 결과적으로 드리프트 오차의 증가율을 감소시킬 수 있다. 실험 결과, 표본을 기본 100개에서 900개를 더 취득했을 때 드리프트 오차의 평균 증가율은 약 50.00% 작아졌고, 최대 증가율은 약 34.42% 작아졌다.

한편, 기준 블록에 해당하는 표본만을 수집하여 바이어스를 추정하는 기존 방식에 비해 제안 방법은 표본을 추가 취득하고자 하는 블록의 수가 충족될 때까지 기다려야 하므로 그만큼 바이어스 추정에 시간이 더 걸리는 단점이 있다. 따라서 이점을 고려해 표본을 추가 취득하고자 하는 블록의 수를 선택해야 한다.

또한, 제안 방법에서는 바이어스 추정을 위한 표본의 첫 블록은 자이로 센서에 움직임이 가해지지 않은 상태에서 얻어진 것으로 간주하였다. 만약 첫 블록에 움직임이 포함된다면 성능은 만족스럽지 못할 것이다. 이러한 이유로 기준 블록을 선별하는 추가적인 알고리즘의 검토가 필요하다. 추가적으로 제안 방법에서 사용한 블록당 표본의 수, 추가 블록의 수, 하한 조정 상수, 상한 조정 상수를 최적화한다면 시스템 성능이 보다 향상될 것이다.

본 논문에서는 자이로 센서의 회전 각속도 표본을 미리 측정하고, 이를 이용해 시뮬레이션 실험을 진행하였다. 추후 연구에서는 제안 방법을 시뮬레이션 실험이 아닌 실시간 시스템에 적용하여 동작을 검증하는 것을 첫 번째 향후 과제로 한다. 또한, 제안 방법에서는 다수의 상수를 이용한다. 이 값들의 최적화에 대한 검토를 두 번째 향후 과제로 한다. 마지막으로 지금까지 평균을 이용해 바이어스를 추정하였는데 추후 연구에서는 칼만 필터를 도입하여 시스템을 개선하는 것을 세 번째 향후 과제로 한다.

References

  • D. Jeong, "Latest technology trends and prospects for virtual reality", The Korea Multimedia Society Review, Vol. 20, No. 4, pp. 1-8, Dec. 2016.
  • D. Chwa, "Motion Estimation of a Moving Object in Three-Dimensional Space using a Camera", The Transactions of the Korean Institute of Electrical Engineers, Vol. 65, No. 12, pp. 2057-2060, Dec. 2016. [https://doi.org/10.5370/KIEE.2016.65.12.2057]
  • S. Jung and B. Park, "Development of Anti-Drone in Korea at the Center of Drone War", Journal of IIBC, Vol. 24, No. 3, pp. 163-169, Jun. 2024. [https://doi.org/10.7236/JIIBC.2024.24.3.163]
  • J. Ok, S. Yoo, and H. Jung, "Perception Survey for Demonstration Service using Drones", Journal of IIBC, Vol. 24, No. 1, pp. 125-132, Feb. 2024. [https://doi.org/10.7236/JIIBC.2024.24.1.125]
  • M. Seo, "Build an Arduino drone and code it yourself", Answerbook, Apr. 2016.
  • Y. Tu and C. Peng, "An ARMA-Based Digital Twin for MEMS Gyroscope Drift Dynamics Modeling and Real-Time Compensation", IEEE Sensors Journal, Vol. 21, No. 3, pp. 2712-2724, Feb. 2021. [https://doi.org/10.1109/JSEN.2020.3028140]
  • C. Han, "Effect of the Number of Samples for Bias Estimation on the Drift Error of a Gyro Sensor", Journal of KIIT, Vol. 21, No. 6, pp. 83-91, Jun. 2023. [https://doi.org/10.14801/jkiit.2023.21.6.83]
  • C. Han and H. Kim, "A Real-time Yaw Rotation Angle Measurement System for Human Heads Using a Gyro Sensor", Journal of KIIT, Vol. 15, No. 8, pp. 59-66, Aug. 2017. [https://doi.org/10.14801/jkiit.2017.15.8.59]
  • S. Byoen, H. Hong, and M. Won, "Development of a Gyro Bias Estimation Kalman Filter Algorithm Using the Bias Temperature Model with an Application to Vehicle Heading Angle Estimation Without an Absolute Angle Sensor Signal", Trans. Korean Soc. Mech. Eng. A, Vol. 42, No. 4, pp. 311-320, Apr. 2018. [https://doi.org/10.3795/KSME-A.2018.42.4.311]
  • H. Lee and S. Jung, "Gyro sensor drift compensation by Kalman filter to control a mobile inverted pendulum robot system", 2009 IEEE International Conference on Industrial Technology, Churchill, VIC, Australia, pp. 1-6, Feb. 2009. [https://doi.org/10.1109/ICIT.2009.4939502]
  • R. I. Alfian, A. Ma’arif, and S. Sunardi, "Noise Reduction in the Accelerometer and Gyroscope Sensor with the Kalman Filter Algorithm", J Robot Control, Vol. 2, No. 3, pp. 180-189, May 2021. [https://doi.org/10.18196/jrc.2375]
  • L. Xue, C. Jiang, H. Chang, Y. Yang, W. Qin, and W. Yuan, "A novel Kalman filter for combining outputs of MEMS gyroscope array", Measurement, Vol. 45, No. 4, pp. 745-754, Jan. 2012. [https://doi.org/10.1016/j.measurement.2011.12.016]
  • MPU-6050, https://invensense.tdk.com/products/motion-tracking/6-axis/mpu-6050, . [accessed: Jun. 23, 2025]
  • D. A. Freedman, "Statistical Models: Theory and Practice", Cambridge University Press, Apr. 2009. [https://doi.org/10.1017/CBO9780511815867]
저자소개
한 철 수 (Cheolsu Han)

2006년 2월 : 청주대학교 전자공학과(공학사)

2008년 2월 : 청주대학교 대학원 전자공학과(공학석사)

2013년 9월 : 일본 도호쿠대학 대학원 정보과학연구과(공학박사)

2015년 9월 ~ 현재 : 청주대학교 전자공학과 조교수

관심분야 : 신호처리, 알고리즘, 프로그래밍

Fig. 1.

Fig. 1.
Flowchart of the proposed algorithm

Fig. 2.

Fig. 2.
Blocks of initially measured rotational velocity data

Fig. 3.

Fig. 3.
Example of measured samples

Fig. 4.

Fig. 4.
Example of measured samples during rotation

Fig. 5.

Fig. 5.
Example of samples for bias estimation

Fig. 6.

Fig. 6.
Rotation angle (Number of samples: 100)

Fig. 7.

Fig. 7.
Rotation angle (Number of samples: 500)

Fig. 8.

Fig. 8.
Rotation angle (Number of samples: 1,000)

Fig. 9.

Fig. 9.
Average increase rate of the drift errors

Fig. 10.

Fig. 10.
Maximum increase rate of the drift errors

Table 1.

Experimental conditions

Number of experiment iterations 5
Sample collection interval about 5 ms
Block size (size) 100
Number of additional blocks (K) 0, 4, 9
Number of samples 100, 500, 1,000
Lower limit adjustment constant (M-) min_val0×0.3
Upper limit adjustment constant (M+) max_val0×0.3

Table 2.

Regression coefficients of the drift errors(Number of samples: 100)

Intercept Slope Coefficient of determination
Round 1 -0.0368 0.0097 0.9642
2 0.0072 0.0024 0.8873
3 -0.0212 0.0077 0.9459
4 -0.0091 0.0154 0.9911
5 -0.0029 0.0078 0.9808
Average -0.0125 0.0086 0.9539
Standard error 0.0076 0.0021 0.0183

Table 3.

Regression coefficients of the drift errors(Number of samples: 500)

Intercept Slope Coefficient of determination
Round 1 -0.0370 0.0106 0.9698
2 0.0072 0.0028 0.9097
3 -0.0212 0.0090 0.9601
4 -0.0088 0.0042 0.8924
5 0.0030 0.0028 0.8671
Average -0.0114 0.0059 0.9198
Standard error 0.0081 0.0016 0.0197

Table 4.

Regression coefficients of the drift errors(Number of samples: 1,000)

Intercept Slope Coefficient of determination
Round 1 -0.0369 0.0101 0.9667
2 0.0072 0.0050 0.9708
3 -0.0184 0.0030 0.7645
4 -0.0060 0.0019 0.6551
5 -0.0023 0.0012 0.5997
Average -0.0113 0.0043 0.7913
Standard error 0.0076 0.0016 0.0771