LocationX는 다수의 AoA 로케이터가 BLE 태그의 신호 도래각(방위각·고도각)을 측정하고, 포지션 서버가 이를 융합해 태그의 실시간 좌표를 계산하는 실내 위치추적 시스템입니다. 모든 데이터는 MQTT로 흐르기 때문에 기존 시스템·클라우드와의 연동이 쉽습니다.
4×4 URA 안테나 어레이가 태그 신호의 방위각(azimuth)과 고도각(elevation)을 측정합니다. 여러 로케이터의 각도를 교차해 2D/3D 위치를 계산합니다.
로케이터는 PoE로 전원과 네트워크를 랜선 하나로 해결합니다. 전원 공사 없이 천장 설치가 가능하고, 연결 즉시 서버에 자동 접속합니다.
각도·위치 데이터가 표준 MQTT 토픽으로 발행됩니다. MQTT Explorer로 바로 확인하고, 외부망 중계(cloud agent)로 원격 모니터링도 가능합니다.
Windows 설정 도구에서 바닥 도면 위에 로케이터를 드래그해 배치하면 좌표·자세 설정이 서버에 자동 반영됩니다.
로케이터·서버 카드의 상태를 git으로 선언 관리합니다. 새 SD 카드는 굽기 → 더블클릭 → 번호 선택만으로 동일하게 재현됩니다.
위치와 함께 심박·모션 등 센서 데이터를 전송하는 태그 라인업으로, 인원 안전관리·행동 분석 등 응용으로 확장됩니다.
태그 → 로케이터 → MQTT 브로커 → 포지션 엔진 → 응용 소프트웨어로 이어지는 단순한 파이프라인입니다. 모든 장비는 같은 네트워크(PoE 스위칭 허브 + 공유기)에 연결됩니다.
silabs/aoa/angle · 위치 토픽 silabs/aoa/position ·
외부망 중계 locationx/<siteId>/…
천장 설치형 PoE 로케이터, 용도별 BLE 태그 2종, 그리고 위치 계산을 담당하는 MQTT 로컬 서버로 구성됩니다.
BLE 태그의 신호 도래각을 측정하는 천장 설치형 로케이터. PoE 급전으로 랜선 하나로 설치가 끝납니다.
| 안테나 | 4×4 URA 어레이 |
| 측정 방식 | Bluetooth AoA/AoD (CTE) |
| 전원/통신 | PoE (IEEE 802.3af) |
| 출력 데이터 | azimuth · elevation (MQTT) |
| 관리 기능 | UDP 자동 검색 · LED 식별 · 상태 웹(:8080) |
위치와 함께 심박 등 생체 신호를 전송하는 웨어러블형 태그. 인원 위치 + 상태 모니터링 응용에 적합합니다.
| 측위 | BLE AoA CTE 송신 |
| 센서 | 심박 센서 |
| 착용 형태 | - |
| 배터리 | - |
모션(IMU) 센서를 내장해 움직임·자세 데이터를 함께 전송하는 태그. 자산 추적과 행동 분석 응용에 적합합니다.
| 측위 | BLE AoA CTE 송신 |
| 센서 | 모션(IMU) |
| 부착 형태 | - |
| 배터리 | - |
MQTT 브로커와 위치 계산 엔진을 담은 로컬 서버. 로케이터들의 각도 데이터를 융합해 태그 좌표를 실시간 계산합니다.
| 플랫폼 | Raspberry Pi 4 |
| MQTT 브로커 | mosquitto (포트 1883) |
| 위치 엔진 | 다중 로케이터 각도 융합 (2D/3D) |
| 설정 API | 설정 도구 연동 (:8080) |
| 부가 기능 | 외부망 중계(cloud agent) · UDP 자동 검색 |
세 개의 공개 저장소로 로케이터·서버·설정 도구를 관리합니다. 장비 상태를 git으로 선언해 두는 IaC 방식이라, 카드가 고장 나도 새 SD 카드를 구워 스크립트 한 번으로 동일한 장비를 재현할 수 있습니다.
wshan1977/locationx-locator_config
로케이터 카드(라즈베리파이)의 전체 상태 선언. 안테나 보드 UART 수신 → MQTT 각도 발행, 자동 검색·LED 식별·상태 웹 에이전트를 systemd 유닛으로 구동합니다. 굽기 → deploy_locator 더블클릭 → 번호 선택이면 새 카드 구축 완료.
wshan1977/locationx-mqtt_server_config
MQTT 브로커(mosquitto) + 위치 계산 엔진 + 설정 API 서버 + 외부망 중계(cloud agent)를
담은 서버 카드 구성. 여러 로케이터의 각도를 융합해 silabs/aoa/position으로
위치를 발행합니다.
wshan1977/locationx_position_setting_tool
바닥 도면을 불러와 스케일 보정 후, LAN에서 검색된 로케이터를 도면 위로 드래그해 배치하는 Flutter 데스크톱 앱. [서버로 전송] 한 번으로 서버의 positioning 설정이 갱신되고 엔진이 재시작됩니다.
Position Visualization GUI (Python)
MQTT 위치 데이터를 구독해 Top view와 3D 공간에서 태그 위치를 실시간으로 보여주는 Python GUI. 데모·검증 단계에서 측위 품질을 눈으로 확인할 수 있습니다.
도면 위 드래그앤드롭 배치 · 스케일 보정 · 원점 설정 · 서버 전송
Top view와 3D 뷰에서 태그 이동 궤적을 실시간 확인
공유기와 PoE 스위칭 허브만 준비되면, 나머지는 대부분 자동입니다.
모든 측정값은 MQTT 토픽으로 발행됩니다. 구독만 하면 어떤 시스템에서도 LocationX의 위치 데이터를 활용할 수 있습니다.
# 로케이터 → 브로커 : 태그 신호의 도래각 silabs/aoa/angle/<locator_id>/<tag_id> { "azimuth": 42.1, "azimuth_stdev": 1.3, "elevation": -35.6, "elevation_stdev": 2.0 } # 포지션 엔진 → 브로커 : 계산된 태그 좌표 (미터 단위) silabs/aoa/position/<tag_id> { "x": 2.41, "y": -1.02, "z": 1.20 } # 외부망 중계 (cloud agent) : 위치·장비 상태를 외부 브로커로 locationx/<siteId>/silabs/aoa/position/… # 위치 중계 locationx/<siteId>/status/<deviceId> # 장비 상태 (retained)
로케이터(안테나 어레이) 기준 태그 신호의 방위각·고도각과 각각의 표준편차를 제공합니다.
고정밀 2D 모드 등 추정 모드를 선택할 수 있고, 필터링 가중치로 안정성과 반응성을 조절합니다.
내부에서 계산을 끝내고 결과만 외부 브로커로 중계 — 원격지에서도 위치·장비 상태를 봅니다.