Ⅰ. 서론
지구의 자기장을 측정하여 지표면 상에서의 방위각을 측정하는 방법은 오래 전부터 활용되어 왔으며, 이 방법은 스마트폰에 내장된 지자기 센서로 사용자의 방위각을 측정하는 것뿐만 아니라 수중에서 잠수함의 지향 방위각을 측정하는 등의 군사적인 용도로도 매우 중요하다.
그러나 건물 내부나 지중에 설치된 금속 파이프나 광물에 의해서 지구 자기장에 외란이 생겨서 방위각을 정확하게 측정할 수 없다. 따라서 측정된 자기장 데이터를 보정하여 추정 방위각의 정확도를 높이는 연구가 오래전부터 진행되어 왔다[14].
거의 모든 사용자들이 항상 휴대하는 스마트폰에도 지자기 센서가 내장되어 있어, (x, y, z)의 3 축으로 지자기 값을 측정할 수 있다. x 축과 y 축 방향으로 측정한 지자기 값을 각각 mx와 my라고 할 때, 이때의 방위각 Ψ는 다음 식 (1)과 같다. 프로그램으로 계산할 때는 2/4 분면과 4/4 분면 및 1/4 분면과 3/4 분면을 구분하기 위해서 반드시 atan2() 함수를 사용해야 한다.
\(\begin{aligned}\Psi=-\tan ^{-1}\left(\frac{m_{y}}{m_{x}}\right)\\\end{aligned}\) (1)
지자기 외란이 없는 장소에서 제자리에서 한 바퀴 회전하며 지자기 센서를 측정하고, 이를 x-y 2차원 평면에 그리면 (0, 0)을 중심으로 하는 동심원을 그린다. 그러나 외란이 있는 장소에서 측정하면, 원의 중심도 (0, 0)이 아니며 원도 찌그러진 모양을 하게 된다. 기존의 자기장 데이터를 보정하는 방법은 찌그러진 모양을 가능한 원형으로 보정하고(soft iron 보정), 중심을 (0, 0)으로 이동시키는(hard iron 보정) 원리이다[5]. 그림 1은 이와 같은 방법으로 보정된 센서 데이터이다. 하지만 이 방법으로는 방위각 오차를 보정하는 것에 한계가 있다.
그림 1. 외란이 있는 지자기 센서 데이터와 보정 이후의 데이터
Fig. 1. Geomagnetic sensor data with distortion and after compensation
[6]에서는 제자리에서 회전하며 측정한 지자기 센서 데이터가 동심원으로부터 벗어난 횟수를 근거로 계산된 방위각이 옳을 가능성을 추정하는 연구가 수행되었다. 임의의 어떤 지점에서 지자기 센서 값을 측정하고 방위각을 계산하였으나 틀렸을 확률이 높으면, 근처의 다른 임의의 지점으로 이동하여 다시 측정하면 된다. 이렇게 계산된 방위각이 옳을 가능성이 높은 장소가 나올 때까지 이동하며 여러 번 지자기 센서 값을 측정하면 결국에는 정확한 방위각을 추정할 수 있다. 그 지점에서 가까운 지점까지는 관성 센서를 사용하면 지속적으로 방위각을 추적할 수 있으므로 항법 장치로 사용하는 것이 가능해진다.
Ⅱ. LSTM 구조
순환 신경망(Recurrent Neural Network: RNN)은 순서가 중요한 데이터 세트를 학습하기 위해 사용하는 신경망의 한 종류이다. 이때 순서가 중요한 데이터 세트란 시간의 흐름에 따라 변화하는 시계열 데이터와 같이 데이터들의 순서가 결과에 영향을 미쳐 이 순서가 달라질 경우 결과가 달라지는 데이터 세트를 말한다[7-9].
순환 신경망은 다층 퍼셉트론으로 입력층, 은닉층, 출력층의 구조를 갖는다. 여기서 은닉층이 다른 신경망과 다르게 노드 사이에서 서로 연결되어있는 형태를 가지며 이전의 출력을 입력으로 받으면서 데이터 세트의 순서가 결과 예측에 영향을 미치게 된다.
그림 2에서 Xn은 각각의 입력 변수들로 앞선 순서의 데이터를 처리한 결과가 다음 순서의 데이터를 처리할 때 함께 입력되어 처리된다. 그런데 이 순환 신경망은 훈련과정에서 긴 시퀀스를 처리할 때 앞에서 입력한 데이터를 잊는 문제가 발생한다. 이때 이 문제를 해결하기 위해서 사용하는 것이 그림 3과 같은 Long Short-Term Memory(LSTM) 모델이다[10]..
그림 2. 순환 신경망의 일반적인 구조
Fig. 2. General structure of recurrent neural network
그림 3. LSTM의 세부 구조
Fig. 3. The detailed structure of LSTM
실제로는 그림 4와 같이 다층 신경망 모델이 사용된다. 그림에서는 3개의 은닉층과 하나의 출력 노드를 보여주고 있는 간단한 모델이지만, 본 논문에서는 더 복잡한 구조가 사용되었다.
그림 4. 일반적인 다층 신경망 구조
Fig. 4. The general structure of multi-layer neural network
Ⅲ. 제안된 지자기 센서 측정값 및 LSTM 학습 방법
지자기 센서 측정값으로 신경망을 학습시키기 위해서 여러 가지 데이터의 구성 방법이 있겠지만, 본 논문에서는 특정 지점에서의 방위각을 추정하는 것이므로 해당 지점에서 한 바퀴 회전하면서 측정한 지자기 센서값을 사용한다. 그런데 보편적으로 많이 사용하는 스마트폰에 지자기 센서가 내장되어 있으므로 이것으로 지자기 센서값을 측정하는데, 사람이 손에 들고 제자리에서 회전하는 경우에 일정한 시간 간격으로 지자기 센서값을 측정하는 것이 어렵다. 특정 방위각에서 더 많은 지자기 센서값을 측정하여 신경망에 학습시키면 일종의 편향된 학습이 되므로 방위각 추정이 정확하지 못하다. 따라서 한 바퀴 회전하면서 등간격의 방위각에서 지자기 센서값을 샘플링할 필요가 있다
스마트폰에는 가속도 센서와 자이로 센서가 내장되어 있다. 이를 이용하여 스마트폰의 회전 각도를 정확하게 추정할 수 있다[11]. 식 (2)을 적용하여 pitch 각과 roll 각인 Φ와 θ를 구한 후, 식 (3)을 이용하여 회전각 ψ를 구한다. 여기서 fx, fy, fz는 x-y-z축 방향으로의 가속도 센서 값이고, p, q, r은 x-y-z축 방향으로의 자이로 센서 값이다.
\(\begin{aligned}\phi=\sin ^{-1}\left(\frac{-f_{y}}{g \cdot \cos \theta}\right), \theta=\sin ^{-1}\left(\frac{f_{x}}{g}\right)\\\end{aligned}\) (2)
\(\begin{aligned}\left[\begin{array}{c}\dot{\phi} \\ \dot{\theta} \\ \dot{\psi}\end{array}\right]=\left(\begin{array}{ccc}1 \sin (\phi) \tan (\theta) & \cos (\phi) \tan (\theta) \\ 0 & \cos (\phi) & -\sin (\phi) \\ 0 \sin (\phi) \sec (\theta) & \cos (\phi) \sec (\theta)\end{array}\right)\left(\begin{array}{l}p \\ q \\ r\end{array}\right)\\\end{aligned}\) (3)
그러나 식 (3)은 시간에 대한 미분식이고 비선형 방정식이므로, 확장 칼만 필터를 적용하여 회전각을 구한다[11].
그림 5의 (a)는 임의의 장소에서 측정한 X-Y 평면에서의 지자기 센서 값이다. 지자기 외란이 없으면 동심원이어야 하는데 외란 때문에 찌그러진 모습을 확인할 수 있다. 이런 장소에서는 지자기 센서 값으로 방위각을 계산해도 실제 방위각과의 오차가 매우 크다. (b)는 가속도 센서와 자이로 센서 값으로 회전각을 추정하고, 일정한 회전각 간격에 맞추어 샘플된 지자기 센서값에 의해 계산된 방위각을 표시한 것이다. 외란이 없으면 직선이 되지만 외란 때문에 비선형 곡선이 되었다. 회전 등간격으로 샘플링되고 정확히 초기 방향부터 360도 회전각까지만 지자기 센서 값과 방위각 데이터만을 구한 것이므로, 특정 방향으로의 데이터가 더 많지 않다. 기계 학습에서는 데이터로 훈련시킬 때 데이터를 사전 처리하여 훈련이 잘되도록 하는 것이 매우 중요하다.
그림 5. (a) 회전하며 측정된 지자기 센서 값. (b) 회전 등간격으로 샘플링된 방위각
Fig. 5. (a) Measured geomagnetic sensor data with rotation. (b) Sampled azimuthal angle with equal rotational angle
그림 6은 방위각 10도 간격으로 샘플링된 LSTM 훈련 데이터의 일부분이다. 첫 번째 줄은 실제 초기 방위각이고, 두 번째 및 세 번째 줄은 각각 x축과 y축의 지자기 센서 값인 mx와 my이며, 마지막 줄은 식 (1)로 계산한 측정 방위각이다. 이 경우에는 지자기 외란이 커서 측정 방위각 오차가 27.5도로 매우 크다. 초기 방위각이 0도인 것은 처음에 스마트폰이 지향한 방위각이 북쪽이기 때문이다. 여러 장소에서 측정을 해보면 장소에 따라서 방위각 오차의 크기가 매우 다르다. 초기 방위각을 레이블로 학습시키는 이유는 지자기 측정 데이터의 패턴으로 초기 방위각의 추정하는 것이 목표이기 때문이다. 초기 방위각만 정확히 추정하면 다른 방향은 관성센서로 추정할 수 있다.
그림 6. LSTM 신경망 학습 데이터의 일부분
Fig. 6. A part of data for training LSTM neural network
LSTM 신경망을 학습하는 데는 총 15군데의 장소에서 측정한 지자기 센서 값이 사용되었으며 테스트 하는데 20군데의 장소에서 측정한 지자기 센서값이 사용되었다. 동서남북 4가지의 실제 방위각을 초기 방위각으로 설정하여 측정하였다.
Ⅳ. 실험 및 결과
표 1은 방위각 추정에 사용한 LSTM 모델의 파라미터를 정리한 것이다. 총 4개의 은닉층을 사용하였고 출력층에서 추정 방위각이 출력되도록 설계되었다.
표 1. 방위각 추정에 사용된 LSTM의 모델 파라미터
Table 1. LSTM model paprameter for estimating azimuthal angle
그림 7은 학습 데이터로 LSTM 모델이 학습되는 과정을 확인할 수 있다. 약 100 번째의 epoch에서 거의 수렴된다. 학습 데이터의 일부를 사용하여 검증 데이터를 구성한 후에 검증을 해도 비슷한 결과를 보이고 있다. 이 때 평균 절대 오차(mean absolute error: MAE)는 훈련 데이터 및 검증 데이터에 대해서 각각 0.0042와 0.0027이다.
그림 7. 학습 데이터와 검증 데이터에 의한 학습 과정
Fig. 7. Training procedure for the training data and validation data
표 2는 동서남북 4가지 방위각에 대하여 각각 20 회씩의 방위각을 추정한 오차의 평균이다.
표 2. LSTM 모델을 이용한 방위각 추정 결과
Table 2. The result of estimating the azimuthal angle using LSTM model
표 2의 결과를 보면 4가지 방위각에 대해서 평균 추정 오차가 0.9도의 성능을 보이고 있으며, 이런 결과는 기존의 지자기 오차 보정 방법에 비해서 매우 정확한 결과이다. 또한 지자기 센서 값을 측정 시에, 실제 방위각을 1도 이하로 측정하는 것은 매우 힘들기 때문에 그 오차를 고려하면 추정 오차가 거의 없다고 볼 수 있다.
Ⅴ. 결 론
본 논문에서는 지자기 센서 데이터를 LSTM 구조의 신경망을 적용하여 방위각을 추정하는 새로운 방법을 제안하였다. 특히 신경망 학습 데이터를 생성하기 위해, 제자리에서 한 바퀴 회전하며 데이터를 취득하고, 관성 센서와 확장 칼만 필터를 이용하여 회전각을 추정하고 이를 이용하여 지자기 센서 데이터를 균등하게 샘플링하였다. 추정 결과는 매우 정확하여 추정된 방위각을 의심 없이 사용할 수 있을 정도이다. 향후에는 추정된 방위각에 대한 정확도 확률을 추정하여 신뢰도를 판정하는 연구가 필요하다.
참고문헌
- Jae Young Choi and Sung Gaun Kim, "Study on the Localization Improvement of the Dead Reckoning using the INS Calibrated by the Fusion Sensor Network Information", Journal of Institute of Control, Robotics and Systems, Vol. 18, No. 8, pp. 744-749, 2012. https://doi.org/10.5302/J.ICROS.2012.18.8.744
- Elena Bergamini, and et al., "Estimating Orientation using Magnetic and Inertial Sensors and Different Sensor Fusion Approaches: Accuracy Assessment in Manual and Locomotion Tasks", Sensors, Vol. 14, No. 10, pp. 18625-18649, 2014. https://doi.org/10.3390/s141018625
- Jung Moon Hwang and Jung Han Kim, "Development of the Calibration Algorithm of 3 Axis Vector Sensor using Ellipsoid", Journal of the Korean Society for Precision Engineering, Vol. 32, No. 7, pp. 643-651, 2015. https://doi.org/10.7736/KSPE.2015.32.7.643
- Christopher Konvalin, "Compensating for Tilt, Hard-iron, and Soft-iron Effects", Sensors Online, Dec. 2009: https://www.sensorsmag.com/components/compensating-for-tilt-hard-iron-and-soft-iron-effects.
- Dongwook Lee and Jongtaek Oh, "A Study on Magnetic Sensor Calibration for Indoor Smartphone Position Tracking", Journal of the Institute of Internet, Broadcasting, and Communication, Vol. 15, No. 2, pp. 151-156, April 2015. DOI:https://doi.org/10.7236/JIIBC.2018.18.6.229
- Jongtaek Oh and Minwoo Kim, "Method to Determine Initial Aiming Azimuth Accuracy using Acceleration, Gyroscope, and Geomagnetic Sensors", ICT Express, Vol. 6, pp. 117-120. June 2020. DOI:https://doi.org/10.1016/j.icte.2019.10.004
- https://dgkim5360.tistory.com/entry/understanding-long-short-term-memory-lstm-kr
- Fathi Salem, Recurrent Neural Networks, Springer, 2022.
- Edgar Sanchez, Discrete-Time Recurrent Neural Control, CRC Press, 2019.
- Ralf Staudemeyer and Eric Rothstein Morris, "Understanding LSTM- A Tutorial into Long Short-Term Memory Recurrent Neural Networks", arXiv preprint arXiv:1909.09586, 2019.
- Hyenyeol Do and Jongtaek Oh, "A Study on smartphone Indoor Navigation Technology using Extended Kalman Filter", Journal of the Institute of Internet, Broadcasting, and Communication, Vol. 19, No. 1, pp. 133-138, Feb. 2019. DOI:https://doi.org/10.7236/JIIBC.2019.19.1.133