IMU 센서를 사용한 실내 필드 내비게이션은 로봇 공학, 가상 현실 및 인간 동작 분석과 같은 다양한 응용 분야에 사용되는 다목적 기술이다.
실내에서 IMU 센서를 이용한 네비게이션 계산의 첫 번째 단계에는 적절한 소프트웨어를 사용하여 원시 데이터를 캡처하는 작업이 포함된다. 그런 다음 데이터에 대한 통찰력을 얻기 위해 원시 데이터를 플로팅한다. 다음으로, 데이터를 수정하기 위해 칼만 필터(Kalman Filter), 확장 칼만 필터(Extended Kalman Filter), 무향 칼만 필터(Unscented Kalman Filter)의 세 가지 칼만 필터를 구현한다. 또한 시스템 성능을 최적화하기 위해 Q 노이즈 공분산 또는 R 측정 오류 공분산을 변경하여 필터의 매개변수를 조정한다.
IMU 센서는 아두이노 보드에 연결되며, 원시 데이터는 MS 엑셀 플러그인(데이터 스트리머)을 사용하여 CSV 형식으로 저장된다. 이 플러그인을 사용하면 IMU 센서가 COM 포트를 통해 컴퓨터에서 데이터를 보내거나 받을 수 있으므로 처리 속도가 빨라지고 Micro SD 카드와 같은 외부 저장소가 필요하지 않다.
센서 융합은 정확도를 향상시키기 위해 여러 센서의 여러 데이터를 융합하거나 결합하는 프로세스이다. 자이로스코프는 방향 변화를 제공하는 각속도 측정을 제공하고 가속도계는 예상 속도의 변화를 제공하는 선형 가속도를 제공한다. 정확도를 높이기 위해 이 두 데이터를 결합하는 것을 KF, EKF 및 UKF를 구현하여 센서 융합이라고 한다.
- 칼만 필터(KF): 칼만 필터에는 예측 단계와 업데이트 단계의 두 가지 주요 단계가 있다. 예측 단계에서 필터는 시스템의 이전 상태를 추정하고 공분산 행렬을 사용하여 상태 추정값과 시스템 동특성의 불확실성을 설명하기 위해 동적 시스템을 모델링한다. 업데이트 단계에서 필터는 센서 측정값을 통합하여 상태 추정값을 수정하고 그에 따라 공분산 행렬을 업데이트한다. 칼만 필터는 재귀 과정이며 마지막 단계에 도달할 때까지 계속 반복된다.
- 확장 칼만 필터(EKF): EKF(Extended Kalman Filter)는 비선형 시스템에 사용되는 Kalman 필터의 확장이다. 칼만 필터에서는 시스템이 선형화되어 있다고 가정한다. 대조적으로, EKF는 예측 단계에서 시스템 상태의 선형화 된 추정치와 업데이트 단계에서 비선형 모델을 사용하여 최종 상태에 도달 할 때까지 재귀 적으로 수정하고 업데이트한다.
- 무향 칼만 필터(UKF): 무향 칼만 필터(UKF)는 EKF와 유사하지만 일련의 시그마 포인트를 사용하여 근사치를 위해 결정론적 샘플링 기술을 사용한다. 이러한 시그마 포인트에 대해 비선형 변환을 구현하고 가우스 분포를 다시 계산한다. UKF는 Κ, α 및 λ의 세 가지 매개변수를 사용하여 평균에서 시그마 점의 산포를 제어한다. 이러한 모수의 값이 높을수록 시그마 점이 평균에서 더 많이 퍼진다.
GY-521 모듈을 이용하여 IMU 기반의 실내 측지화 시스템을 개발하고, Kalman Filter, Extended Kalman Filter, Unscented Kalman Filter의 세 가지 필터를 구현하여 현지화 정확도를 높이는 것을 목표로 하였다. 데이터에 대한 통찰력을 얻기 위해 원시 데이터를 캡처하고 플로팅한다. 더 나은 결과를 얻기 위해 노이즈 공분산 및 측정 오류 공분산을 변경하여 구현 및 조정되었다. 결과는 EKF가 Q에 매우 민감하며 약간 부정확한 선형화 된 모델은 공분산 행렬을 변경하여 모델에 상당한 영향을 미칠 수 있음을 보여준다.
레퍼런스
- Navigating the Uncharted: Exploring Indoor Localization with IMU-based Systems using Kalman Filters (KF, EKF, UKF) with Code | by Talha Ejaz | Medium
- Indoor-Localization-Using-6-axis-IMU-sensor-Python/Indoor_Localization_KF,EKF,UKF.ipynb at main · talhaejazh/Indoor-Localization-Using-6-axis-IMU-sensor-Python (github.com)
- sparkfun/SparkFun_u-blox_GNSS_Arduino_Library: An Arduino library which allows you to communicate seamlessly with the full range of u-blox GNSS modules (github.com)
- rfbr/PDR_with_Deep_Learning (github.com)
- yyccR/Location: Smartphone navigation positionning, fusion GPS and IMU sensors. (github.com)
- mohammed-elkomy/vanilla-dead-reckoning: outdoor deadreckoning mobile computing task (github.com)
- PeDistNet: AI-based Indoor Navigation for Pedestrians | by Dr Barak Or | MetaOr Artificial Intelligence | Dec, 2023 | Medium
- Sensors | Free Full-Text | A LiDAR and IMU Integrated Indoor Navigation System for UAVs and Its Application in Real-Time Pipeline Classification (mdpi.com)
- ARKit Indoor Navigation (Beacon/Marker Based) Tutorial | by Bryan Ung | Medium
- neXenio/BLE-Indoor-Positioning: Multilateration using bluetooth beacons (github.com)
- sorianog/indoor-nav-arcore: Indoor Navigation with ARCore (From: 2018) (github.com)
- hungyunliao/Indoor-accelerometer-localization: Localization app using accelero and gyro meters in iPhones. This is a project at Focus Universal- iOS APP, swift (Intern, May - July 2016) (github.com)
- ws2131/indoor-location: iOS app that can determine the indoor vertical location using sensors in the device (github.com)
- priyankark/SensorStreamServer: Companion servers for Sensor Stream App. Stream sensor data, audio and images from your phone to an open source server running on your PC/Raspberry Pi in real-time over your local network. (github.com)
- Pi4IoT/Node-RED: Node-RED (github.com)
댓글 없음:
댓글 쓰기