관성항법(INS)과 보행자추측항법(PDR) 이해하기
실내·GPS 수신 불가 환경에서의 위치 추정은 모바일 내비게이션, 스마트 웨어러블, 로봇 제어 등 다양한 분야에서 필수 요소이다.
이 글에서는 다음 사항을 다룬다.
- 관성항법(INS)의 원리와 구성
- 보행자추측항법(PDR)의 처리 흐름과 핵심 알고리즘
- 두 기법의 한계 및 보정 전략

그림 1. INS & PDR 4컷 만화
ChatGPT가 그려준 관성항법과 보행자추측항법 4컷 만화
1. 관성항법(Inertial Navigation System)
1.1 정의
관성항법(INS)은 가속도계(accelerometer)와 자이로스코프(gyroscope) 같은 관성 센서 출력값을 연속하여 적분함으로써, 외부 참조 없이 이동체의 위치·속도·자세를 추정하는 시스템이다.
1.2 구성 요소
- IMU(Inertial Measurement Unit)
- 3축 가속도계: 선형 가속도(중력 성분 제외) 측정
- 3축 자이로스코프: 각속도(angular rate) 측정
- 프로세서
- 실시간 센서 데이터 적분 및 필터링 수행
- 보조 센서(선택사항)
- 기압계(barometer): 고도 보정
- 자기계(magnetometer): 방위(yaw) 보정
- 속도계(speed sensor): 지상 속도 보정
1.3 동작 원리
- 초기화(Alignment)
- 초기 위치
p₀, 속도v₀, 자세(roll, pitch, yaw) 설정
- 초기 위치
- 센서 판독
- 매 샘플 주기 Δt마다 가속도
f_b와 각속도ω_b획득
- 매 샘플 주기 Δt마다 가속도
- 좌표 변환
- 바디 프레임 → 지구 고정 프레임(ENU 또는 NED) 변환
- 속도 적분
vₖ₊₁ = vₖ + [R_{b→e}·f_b – g]·Δt - 위치 적분
pₖ₊₁ = pₖ + vₖ₊₁·Δt - 자세 적분 (쿼터니언 활용)
qₖ₊₁ = qₖ ⊗ exp(½ · ω_b · Δt)
1.4 장·단점 및 보정 기법
- 장점: 외부 신호 없이 연속 추적 가능
- 단점: 센서 바이어스 및 노이즈가 적분을 통해 누적되면서 드리프트(Drift) 발생
- 보정 기법
- Schuler 튜닝: 지구 중력 효과 보정
- 칼만 필터: GPS, ZUPT, 마그네토미터 등 보조 센서 융합
2. 보행자추측항법(Pedestrian Dead Reckoning)
보행자추측항법(PDR)은 INS를 보행자 환경에 특화한 기법으로, “걸음 수 + 보폭 + 방향” 정보를 누적하여 실내 환경에서 위치를 추정한다.
2.1 처리 흐름
- 센서 전처리
- 중력 성분 제거, 대역 통과 필터링(BPF)
- 걸음 검출 (Step Detection)
- 임계값 피크 검출
- FFT/오토코릴레이션 기반 주기 검출
- LSTM 등 머신러닝 기반 분류
- 보폭 추정 (Stride Length Estimation)
- 경험식(Weinberg 식)
L = K · (A_peak – A_valley)^α - 회귀 분석 및 머신러닝 기반 모델
- 방향 추정 (Heading Estimation)
- 자이로 통합: Δθ = ω_z · Δt
- 마그네토미터 융합(칼만 필터)
- 쿼터니언/DCM 변환
- 위치 업데이트
x += L · cos(θ) y += L · sin(θ) - 오차 보정
- Map-matching
- Particle filter
- BLE/Wi-Fi RSSI 융합
2.2 주요 기법 비교
| 단계 | 기법 | 특징 |
|---|---|---|
| 걸음 검출 | 임계값 피크 | 간단·실시간, 임계값 조정 필요 |
| 오토코릴레이션 | 주기 검출에 강함, 연산량 ↑ | |
| 보폭 추정 | Weinberg 식 | 경험적, 사용자 보정 상수 필요 |
| 회귀/ML | 정확도 ↑, 학습 데이터 필요 | |
| 방향 추정 | 자이로 통합 | 구현 간단, 드리프트 큼 |
| 칼만 필터 융합 | 안정적, 자기장 간섭 취약 |
결론
INS는 가속도계·자이로스코프 같은 관성 센서만으로 외부 참조 없이 연속적인 위치 추적이 가능하나, 센서 바이어스와 노이즈 적분으로 인한 드리프트 현상이 크다.
PDR은 실내 환경에서 보행자의 걸음 수·보폭·방향을 이용해 위치를 추정하는 실용적인 기법이지만, 다양한 보행자 특성과 센서 오차를 고려한 보정이 반드시 필요하다.
다음 글에서는 Python 코드를 통해 PDR 파이프라인 전체(걸음 검출 → 보폭 추정 → 방향 추정 → 위치 업데이트) 를 단계별로 실습해 보며, 이론과 구현을 함께 다뤄볼 예정이다.