Chapter 09

위치 찾기: 삼변 측량과 TDoA

공장 천장에 UWB 앵커를 달면 지게차와 작업자의 위치가 지도 위에 10~30 cm로 찍힌다. 휴대폰 하나와 태그 하나는 “거리와 방향”만 알지만, 위치를 아는 앵커가 여럿 있으면 “어디에”를 알 수 있다. 방법은 두 가지다. 앵커마다 거리를 재서 원의 교점을 찾는 삼변 측량, 그리고 앵커들에 도착한 시각의 차이로 쌍곡선의 교점을 찾는 TDoA다.

원 셋의 교점

앵커 A까지 3 m라면 태그는 A를 중심으로 하는 반지름 3 m 원 위 어딘가에 있다. 앵커 B까지의 거리로 원이 하나 더 생기면 후보가 두 점으로 줄고, C가 있으면 한 점이 된다(평면). 3차원이면 앵커가 넷 필요하다. 실제 거리에는 오차가 있어 원들이 한 점에서 만나지 않으므로, 모든 원에서 “가장 덜 어긋나는” 점을 찾는다. 이것이 최소 제곱 풀이다. 앵커가 많을수록, 그리고 잘 퍼져 있을수록 오차가 줄어든다.

“나는 너한테서 5 m”

운동장에 선 세 친구가 각자 “너는 나한테서 몇 m”라고 외친다. 한 친구 말만으로는 그 친구를 중심으로 한 원 위 어딘가다. 둘이면 원 두 개가 만나는 두 점, 셋이면 한 점으로 좁혀진다. 친구들이 한 줄로 서 있으면 원들이 비슷하게 겹쳐 점이 또렷하지 않다.

예측해 보기

앵커 3개를 한쪽 벽에 일직선으로 붙였다. 방 안 위치는?

직선 위의 원들은 그 직선에 대해 대칭이다.

일직선 앵커의 원은 모두 그 선에 대칭이라 선 앞뒤 두 점이 같은 거리를 준다. 벽 밖 위치는 버릴 수 있지만, 앵커 줄 가까이에서는 벽과 수직인 방향을 잡지 못해 DOP가 치솟는다. 앵커는 방을 둘러싸게 둔다. 아래에서 ‘한쪽 벽에 일렬’ 배치를 골라 보자.
SIMULATOR

삼변 측량과 DOP 지도

평면을 누르면
앵커 배치
이 자리의 DOP—
예상 위치 오차(1σ)—
이번 측정의 위치 오차—
8 m × 6 m 공간. 초록 = 앵커, 주황 = 실제 태그, 빨강 = 계산한 위치, 원 = 잰 거리. 배경 색은 DOP(밝을수록 좋음). 해볼 것: ① 네 모서리 배치에서 가운데는 DOP ≈ 1, 거리 오차 10 cm가 위치 오차 약 10 cm가 된다. ② “한쪽 벽에 일렬”로 바꾸면 방 안쪽은 생각보다 괜찮지만, 앵커 줄 가까이로 갈수록 벽과 수직인 방향을 잡지 못해 DOP가 치솟는다(줄 위에서는 무한대). 또 줄 반대편의 거울상 위치와 구별할 수 없다(벽 밖이라 버릴 수 있을 뿐이다). ④ 앵커를 하나 골라 방 가운데로 옮겨 보면 그 근처는 좋아지지만 모서리 쪽이 나빠진다. ③ 앵커 1번에 NLOS를 켜면 그 앵커 쪽으로 위치가 끌려간다. 그래서 7장의 NLOS 표시로 그런 측정의 비중을 줄인다. 계산: 가우스-뉴턴 최소 제곱, DOP = √(trace((HᵀH)⁻¹)), H = 태그 → 앵커 단위 벡터. 거리 오차는 정규 분포(고정 씨앗).

DOP: 배치가 오차를 키운다

두 원이 거의 같은 방향에서 스치듯 만나면, 반지름이 조금만 바뀌어도 교점이 크게 미끄러진다. 원들이 수직에 가깝게 만나면 교점이 단단하다. 이 기하학적 증폭을 DOP(Dilution of Precision)라 한다. 위치 오차 ≈ DOP × 거리 오차. GPS에서 위성 배치가 나쁠 때 위치가 튀는 것과 같은 원리다. 실내 측위 설계(14장)에서 앵커를 둘러싸듯 배치하라는 이유다. 앵커들로 둘러싸인 볼록한 영역 밖으로 나가거나 앵커들이 한 줄에 가까워지면 DOP가 빠르게 커진다.

TDoA: 거리 대신 거리의 차이

TWR은 태그와 앵커 하나하나가 핑퐁을 해야 한다. 앵커가 넷이면 프레임이 여덟 개 이상이다. 태그가 많은 창고에서는 공중 시간과 태그 배터리가 감당이 안 된다. TDoA(Time Difference of Arrival)는 앵커들의 시계를 서로 맞춰 두고 한 번의 송신만 쓴다.

앵커 i와 j에 도착한 시각 차이 × c = 두 앵커까지 거리의 차이. 거리 차이가 일정한 점들은 쌍곡선을 이룬다. 앵커 쌍 둘(앵커 셋)이면 평면에서 쌍곡선 둘의 교점으로 위치가 나온다. 대신 앵커 시계를 1 ns만 틀리게 맞춰도 30 cm 오차라, 앵커 동기(유선 시계 분배나 UWB 동기 메시지)가 TDoA 시스템의 핵심 비용이다.

SIMULATOR

쌍곡선의 교점

태그가 보낸 프레임—
같은 위치를 TWR로(앵커 4)—
위치 오차—
곡선 = 앵커 1번을 기준으로 한 거리 차이의 쌍곡선(2·3·4번과의 쌍). 평면을 누르면 태그가 옮겨진다. 해볼 것: ① 동기 오차 0.3 ns(9 cm)면 위치 오차는 대개 수 cm~20 cm대다(“다시 측정”으로 여러 번). 거리 차이를 쓰는 TDoA는 같은 시간 오차에도 삼변 측량보다 DOP가 커지기 쉽다. ② 1 ns를 넘기면 쌍곡선이 어긋나 오차가 수십 cm로 커진다. ③ 태그는 UL-TDoA에서 프레임 하나만 보낸다. TWR(SS)이라면 앵커마다 두 개씩, 여덟 개다. 계산: 기준 앵커 1번에 대한 거리 차이 셋으로 가우스-뉴턴 최소 제곱.

측정 방식 이름: Android FiraParams.java의 RANGING_ROUND_USAGE_UL_TDOA = 0, RANGING_ROUND_USAGE_DL_TDOA = 5, RANGING_DEVICE_ROLE_ADVERTISER·_OBSERVER · 앵커 동기형 역방향 TDoA 구현: Decawave uwb-core의 lib/rtdoa, apps/tdoa_sync_tag

핵심 정리

  1. 삼변 측량: 앵커별 거리 → 원의 교점. 평면 3개, 공간 4개 이상. 오차가 있으므로 최소 제곱으로 푼다.
  2. 위치 오차 ≈ DOP × 거리 오차. 앵커로 둘러싼 안쪽은 DOP ≈ 1, 바깥·일렬 배치는 크다.
  3. NLOS 측정 하나가 위치를 끌어당긴다. 측정 품질 표시로 비중을 줄인다.
  4. TDoA: 동기된 앵커들의 도착 시각 차이 → 쌍곡선. UL(태그가 보내기만, 저전력), DL(태그가 듣기만, 프라이버시·무제한).
  5. TDoA의 대가는 앵커 시계 동기. 1 ns 틀리면 30 cm.

확인 퀴즈

평면에서 거리만으로 위치를 하나로 정하려면 앵커가 최소 몇 개?

원 둘은 교점이 두 개, 셋이어야 하나. 3차원은 넷.

DOP가 3인 곳에서 거리 오차가 10 cm면 위치 오차는 대략?

위치 오차 ≈ DOP × 거리 오차.

휴대폰이 앵커 신호를 듣기만 하고 자기 위치를 스스로 계산하는 방식은?

태그가 아무것도 보내지 않으므로 위치가 밖으로 드러나지 않는다.

TDoA 시스템에서 가장 중요한 기반은?

시각 차이를 쓰므로 앵커 시계가 서로 맞아야 한다. 태그 시계는 상관없다.