RoboticsUpdated 2026-06-01
UWB 실내 측위 상세 가이드
Ultra-Wideband 기반 RTLS — DW3000 × ESP32-S3 × CtrlPlus 가이드
ESP32-S3PlatformIOFreeRTOS
1. 개념 (Concept)
1.1 UWB란?
UWB(Ultra-Wideband)는 500MHz 이상의 극광대역 주파수를 사용하는 무선 통신 기술로, 비행시간(ToF) 측정으로 ±10cm 수준의 정밀 실내 측위가 가능하다.
GPS : 실외 전용, 수 미터 오차
WiFi/BLE : 실내 가능, 1~3m 오차 (RSSI 기반)
UWB : 실내 정밀, 10~30cm 오차 (ToF 기반) ← 핵심 우위
1.2 UWB vs 타 측위 기술 비교
| 기술 | 정확도 | 실내 적용 | 갱신 주기 | 전력 | 비용 |
|---|---|---|---|---|---|
| UWB | 10~30cm | 최적 | 10~100Hz | 중간 | 높음 |
| BLE 5.1 AoA | 0.5~1m | 가능 | 1~10Hz | 낮음 | 중간 |
| WiFi RTT | 1~3m | 가능 | 1~5Hz | 높음 | 낮음 |
| RFID | 0.5~3m | 가능 | 1Hz | 매우낮음 | 낮음 |
| LiDAR SLAM | 5~10cm | 최적 | 10Hz | 매우높음 | 매우높음 |
| GPS | 3~5m | 불가 | 1Hz | 중간 | 낮음 |
1.3 핵심 용어
- 앵커(Anchor): 고정 위치의 UWB 기준 노드 — 위치 좌표 사전 등록
- 태그(Tag): 측위 대상(사람, 자산, 로봇)에 부착하는 이동 노드
- ToF (Time of Flight): 전파 비행시간 → 거리 환산 (거리 = 시간 × 광속)
- TWR (Two-Way Ranging): 앵커-태그 간 왕복 시간 측정 — 클록 동기화 불필요
- TDoA (Time Difference of Arrival): 복수 앵커 도달 시간 차 — 태그 저전력
- 삼변측량 (Trilateration): 3개 이상 앵커 거리로 2D/3D 좌표 계산
- NLOS (Non Line of Sight): 비가시선 — 벽/장애물로 전파 경로 굴절 → 오차 원인
- CIR (Channel Impulse Response): 채널 임펄스 응답 — NLOS 판별에 활용
2. 상세 내용 (Details)
2.1 TWR (Two-Way Ranging) 측거 원리
클록 동기화 없이 왕복 시간으로 거리 계산 — ESP32-S3 + DW3000 기본 방식.
2.2 TDoA (Time Difference of Arrival) 원리
태그가 1회 전송만 — 배터리 수명 극대화. 앵커 간 클록 동기화 필수.
2.3 삼변측량 (Trilateration) 계산
2.4 NLOS 감지 및 보정
2.5 DW3000 vs DW1000 비교
| 항목 | DW1000 | DW3000 |
|---|---|---|
| UWB 채널 | CH1~7 (3.5/6.5GHz) | CH5/9 (6.5/8GHz) |
| 데이터 레이트 | 6.8Mbps | 27Mbps |
| 측거 정확도 | ±10cm | ±5cm |
| 전력 소비 | 약 145mA Tx | 약 67mA Tx |
| IEEE 표준 | 802.15.4-2011 | 802.15.4z (HRP) |
| AoA 지원 | 없음 | 지원 (Pdoa) |
| SPI 속도 | 20MHz | 38MHz |
| 인터페이스 | SPI | SPI + SPI2 |
2.6 앵커 배치 최적화 기하학
3. 구조 설명 (Architecture)
3.1 CtrlPlus UWB RTLS 전체 아키텍처
3.2 ESP32-S3 + DW3000 하드웨어 결선
3.3 FreeRTOS 태스크 구조 (태그 펌웨어)
3.4 TWR 측거 상태 머신
3.5 Spring Boot 위치 서버 내부 구조
3.6 MQTT 토픽 네임스페이스 (UWB)
3.7 PostgreSQL 스키마
3.8 칼만 필터 위치 추정
4. 응용 (Applications)
4.1 CtrlPlus 생태계 UWB 적용 맵
4.2 시나리오별 모드 선택
4.3 XYFlow UWB 파이프라인 노드 구성
4.4 Next.js 실시간 맵 대시보드 구조
4.5 구역(Zone) 이탈 감지 플로우
4.6 로봇 + UWB 융합 측위
4.7 배포 구조 (CtrlPlus VPS)
4.8 트러블슈팅 플로우
부록. 빠른 참조
주요 수식 요약
TWR 비행시간:
ToF = ((Rx_resp - Tx_poll) - (Tx_resp - Rx_poll)) / 2
거리 = ToF × 299,702,547 m/s (공기 중 광속)
삼변측량 (선형화):
2(x₂-x₁)x + 2(y₂-y₁)y = d₁² - d₂² - x₁² + x₂² - y₁² + y₂²
→ Ax = b → 최소자승 x = (AᵀA)⁻¹ Aᵀb
GDOP 근사:
GDOP ≈ √(trace((AᵀA)⁻¹))
목표: GDOP < 3 (우수), < 5 (허용)
ESP32-S3 + DW3000 핀 배정
SPI2 버스:
SCK → GPIO 12 MOSI → GPIO 11
MISO → GPIO 13 CS → GPIO 10
제어:
RST → GPIO 9 IRQ → GPIO 8
WAKEUP → GPIO 7
전원:
VCC → 3.3V (100nF + 10µF 디커플링)
CtrlPlus UWB 프리셋 복합키
| 프리셋 | 복합키 | 용도 |
|---|---|---|
| 기본 RTLS | positioning::manager::monitoring::map | 4앵커 자산 추적 |
| 로봇 측위 | positioning::manager::control::robot-nav | AMR 내비게이션 |
| 안전 구역 | positioning::manager::monitoring::zone | 위험 구역 감시 |
| 멀티태그 | positioning::manager::monitoring::multi-tag | 100태그 이상 TDoA |
앵커 배치 권장 사양
최소 구성 : 앵커 3개 (2D, GDOP 높음)
권장 구성 : 앵커 4개 (2D, 사각형 배치)
정밀 구성 : 앵커 6~8개 (2D 복잡 공간 / 3D)
설치 높이 : 2.5~3.0m (바닥 다중경로 최소화)
앵커 간격 : 측위 공간 대각선의 60~80%
시야각 : 앵커 간 LOS 확보 권장 (직접 경로)