Chapter 08

방향 찾기: PDoA와 AoA

정밀 찾기 화면의 화살표는 거리만이 아니라 방향을 알려 준다. 거리는 6장의 왕복 시간으로 재지만, 방향은 다른 방법을 쓴다. 휴대폰 안의 UWB 안테나 두세 개에 신호가 도착한 위상의 차이를 재는 것이다. 이 장에서는 위상 차이에서 각도를 구하는 식, 안테나 간격이 반 파장이어야 하는 이유, 각도가 정확한 곳과 흔들리는 곳을 본다.

경로 차이 → 위상 차이 → 각도

멀리서 온 신호는 거의 평면파로 도착한다. 안테나 둘이 d만큼 떨어져 있고 신호가 정면에서 θ만큼 비스듬히 오면, 한 안테나에 도착하는 길이 다른 쪽보다 d·sin θ만큼 길다. 이 길이 차이를 시간으로 재기엔 너무 짧다(2 cm면 67 ps). 대신 반송파의 위상으로 잰다. 파장 λ만큼의 길이 차이가 위상 2π(360°)이므로

PDoA = 2π · d · sin θ ÷ λ  ⇒  θ = arcsin(PDoA · λ ÷ (2π · d))
λ = c ÷ f. 9번 채널(7,987.2 MHz)에서 λ = 3.75 cm, 5번(6,489.6 MHz)에서 4.62 cm. 출처: Decawave uwb-core uwb.c의 uwb_calc_aoa(pdoa, channel, antenna_separation) — 채널별 주파수로 파장을 구하고 asin(pdoa ÷ 2π × λ ÷ 간격)을 돌려준다.
두 귀로 듣는 방향

오른쪽에서 소리가 나면 오른쪽 귀에 아주 조금 먼저 닿는다. 뇌는 그 작은 시간 차이로 방향을 안다. 귀 사이가 좁으면 차이가 작아 둔하고, 너무 넓으면 높은 소리에서 어느 쪽 파도의 마루인지 헷갈린다. UWB는 두 안테나에 닿는 위상 차이로 같은 일을 한다.

SIMULATOR

평면파와 두 안테나

채널
경로 차이—
잰 위상 차이(−180°~180°)—
계산한 각도—
그림: 비스듬히 오는 파면(평행선, 파장 간격)과 두 안테나. 해볼 것: ① 9번 채널, 간격 1.85 cm(약 반 파장)면 −85°~85° 어디서 와도 계산한 각도가 실제와 같다. ② 간격을 3.75 cm(한 파장)로 넓히고 각도를 30° 넘게 돌리면 위상이 한 바퀴 넘어 돌아가 엉뚱한 각도가 나온다(모호성, 아래 절). ③ 같은 간격에서 5번 채널로 바꾸면 파장이 길어 위상 차이가 작아진다. 잰 위상은 −180°~180°로 접은 값이고, 각도 계산은 uwb_calc_aoa()와 같은 식이다.

반 파장의 이유: 모호성

위상은 360°마다 같은 값으로 돌아온다. 경로 차이가 λ를 넘을 수 있으면, 위상 30°는 경로 차이 λ/12일 수도, λ + λ/12일 수도 있다. 경로 차이는 최대 d(θ = ±90°)이므로, d ≤ λ/2면 위상 차이가 −180°~180° 안에서 각도와 일대일로 대응한다. 그래서 UWB 안테나는 반 파장 간격, 9번 채널이면 약 1.9 cm 간격으로 놓는다. 휴대폰 뒷면에 들어갈 만큼 작은 이유이기도 하다.

예측해 보기

안테나 간격을 λ/2에서 λ로 넓혔다. 같은 위상 차이에 해당하는 각도 후보는?

위상은 360°마다 같은 값으로 돌아온다.

간격이 λ/2보다 넓으면 위상이 한 바퀴 넘게 돌 수 있어, 같은 위상 차이가 서로 다른 두 각도에서 나온다. 간격을 넓히면 정밀해지지만 모호해진다. 아래에서 간격을 바꿔 후보 수를 보자.
SIMULATOR

같은 위상, 여러 각도

가능한 각도 수—
후보 각도—
위상 감도—
그래프: 각도(가로)에 따른 접힌 위상 차이(세로). 수평선과 만나는 점이 후보 각도. 해볼 것: ① 0.5(반 파장)면 언제나 후보가 하나다. ② 1.0이면 대부분 둘, 2.0이면 넷까지 생긴다. ③ 간격이 넓으면 곡선이 가팔라 같은 위상 잡음에 각도가 덜 흔들린다. 그래서 정밀 측정 장비는 넓은 간격 + 다른 방법(여러 안테나, 움직임)으로 모호성을 푼다.

정면은 정확하고 옆은 흐릿하다

위상을 재는 데에도 잡음이 있다(수 도~10도). 식 θ = arcsin(…)에서 각도를 조금 바꿨을 때 위상이 얼마나 바뀌는지 보면, 정면(θ = 0)에서는 sin이 가팔라 위상이 크게 바뀌지만 옆(θ → 90°)에서는 sin이 거의 평평하다. 그래서 같은 위상 잡음이 옆쪽 각도에서 훨씬 큰 각도 오차가 된다. 오차는 대략 σθ ≈ σφ · λ ÷ (2π · d · cos θ).

SIMULATOR

각도별 각도 오차

정면(0°) 오차—
60° 오차—
±5° 안에 드는 범위—
그래프: 실제 각도(가로)에 따른 각도 오차(표준편차). 해볼 것: 위상 잡음 8°, 반 파장 간격이면 정면은 약 2.5°, 60°에서는 약 5°다. 그래서 정밀 찾기 앱은 화살표가 정면 근처로 올 때까지 몸을 돌리라고 안내한다. 모델: 작은 잡음 근사, 다중 경로·NLOS(7장)·안테나 패턴 왜곡 제외.

방위각, 앙각, 그리고 앞뒤

안테나 두 개는 그 둘을 잇는 축에 대한 각도 하나만 안다. 좌우(방위각)와 위아래(앙각)를 모두 알려면 축이 다른 쌍이 하나 더 필요해, 보통 안테나 셋을 L자로 놓는다. Android UWB의 측정 설정에도 각도 보고를 “방위각만”, “앙각만”, “번갈아” 같은 방식으로 고르는 값이 있다.

또 하나, 두 안테나는 앞에서 온 신호와 같은 각도로 뒤에서 온 신호를 구별하지 못한다. 경로 차이 d·sin θ는 θ와 180° − θ에서 같기 때문이다. 휴대폰은 안테나 배치·기판·사람 몸이 뒤쪽 신호를 다르게 만드는 성질, 그리고 사용자가 움직일 때 거리·각도가 변하는 모양(관성 센서와 함께)을 이용해 앞뒤를 가린다. 정밀 찾기를 시작하면 휴대폰을 조금 움직여 보라고 하는 것이 그 때문이다.

각도 보고 방식: Android FiraParams.java의 AOA_RESULT_REQUEST_MODE_REQ_AOA_RESULTS_AZIMUTH_ONLY, _ELEVATION_ONLY, _INTERLEAVED · 수신 진단의 PDoA: uwb-core uwb_calc_pdoa()(라디안)

핵심 정리

  1. PDoA = 2π·d·sin θ ÷ λ, θ = arcsin(PDoA·λ ÷ 2πd) (uwb_calc_aoa()). 9번 채널 λ = 3.75 cm.
  2. 간격 d ≤ λ/2면 모호성이 없다. 그래서 안테나 간격은 반 파장(9번 채널 약 1.9 cm).
  3. 각도 오차 ≈ σφ·λ ÷ (2πd·cos θ). 정면이 가장 정확하고 옆으로 갈수록 나빠진다.
  4. 방위각 + 앙각에는 안테나 셋(L자). 두 안테나는 앞뒤를 구별하지 못해 움직임·배치로 가린다.

확인 퀴즈

9번 채널에서 모호성이 없는 최대 안테나 간격은?

λ/2 = 3.75 ÷ 2 ≈ 1.88 cm.

반 파장 간격에서 잰 위상 차이가 90°면 각도는?

sin θ = (π/2 · λ) ÷ (2π · λ/2) = 0.5 → 30°.

각도 오차가 가장 작은 방향은?

cos θ가 가장 커서 위상이 각도에 가장 민감하다.

안테나 두 개로 구별할 수 없는 것은?

θ와 180° − θ의 경로 차이가 같다.