모든 프로젝트

과학, 다중 표적 추적, 레이더 시뮬레이션

Radar Track Lab

  • 공개 ADS-B 정답
  • 조건당 Monte Carlo 20회

가상 공항 감시 레이더를 위한 다중 표적 추적기를 실제 항공기 궤적으로 평가했습니다. 암스테르담 스히폴 공항 부근의 붐비는 30분 동안의 공개 ADS-B 기록을 정답으로 두고, 가상의 회전 레이더가 이를 잡음·누락·클러터가 섞인 탐지점으로 바꿉니다. 확장 칼만 필터와 헝가리안 할당으로 만든 추적기를, 똑같은 탐지점을 받는 최근접 이웃 베이스라인과 비교했습니다.

GitHub 코드: hyh4867/radar-track-lab ↗

12:57:06 UTC, 151번째 scan의 가상 레이더 스코프(PPI): 100 km까지의 거리 고리, 흐려지는 탐지점을 남기는 스윕, 익명 번호·속도(노트)·속도 벡터·예측 경로가 붙은 확정 항적.
기준 조건(Pd 0.9, scan당 클러터 5개, σθ 0.15°)의 데모 레이더 스코프 · 익명 항적 번호 · 실제 ADS-B 궤적 위에 시뮬레이션한 탐지점.
클러터 0, 5, 20개와 방위 잡음 0.15°, 0.30° 조합별 여섯 패널. 베이스라인은 Pd 0.7의 약 830–900회에서 Pd 0.97의 200–320회로 줄고, 추적기는 내내 25–60회 부근에 머뭅니다.
잡음 스윕: 탐지 확률에 따른 30분당 ID 전환 · 점마다 20회, 띠 = 평균의 95% t-구간.
A(Pd 1, 클러터 없음)와 B(Pd 0.9, 클러터 5) 두 경우의 갱신 단계별 평균 NEES와 95% χ² 구간 띠. 대부분 띠 안에 있고, A는 37–38단계 부근에서 튀며 B는 첫 단계가 축 밖으로 나갑니다.
합성 정답에서의 필터 일관성 · 갱신 단계별 평균 NEES와 95% χ² 구간 · 50회 × 표적 10개.

질문

표적이 붐비는 공항 접근 구역의 실제 항공기일 때, 필터와 할당을 갖춘 추적기는 각 탐지점을 가장 가까운 이전 점에 잇기만 하는 방식보다 얼마나 나을까요? 그리고 어디에서 여전히 틀릴까요?

설정

센서: 스히폴 공항 기준점에 둔 가상의 2차원 회전 공항 감시 레이더로, 반경 100 km를 봅니다. 값은 교과서 수준입니다. 4.8초에 한 바퀴(12.5 rpm), 거리 잡음 σr 50 m, 방위 잡음 σθ 0.15°, 탐지 확률 Pd 0.9, scan당 평균 클러터 5개. 실제 군 체계 사양이 아닌 공개 교과서 수준의 일반 값입니다.

정답: 2026년 11월 6일 12:45–13:15 UTC(30분, 375 scan)의 adsb.lol ADS-B 기록으로, 그날 가장 붐빈 시간대입니다. 비행 중인 ADS-B 위치 가운데 위치 정확도 등급(NACp)이 8 이상인 점만 남기자, 이 구간에 항공기 149대가 나타났고 scan당 약 50대(평균 50.4대, 최대 58대)였습니다.

탐지 시각은 빔이 표적의 방위를 지나는 순간이고, 그 순간의 실제 위치는 앞뒤 ADS-B 점에서 보간합니다. 점을 하나씩 빼고 보간해 본 결과 보간 오차는 RMS 약 6–7 m로, 레이더 잡음보다 한 자릿수 작습니다.

군용·LADD·PIA로 표시된 항공기는 첫 단계에서 버리고, 등록번호·편명·ICAO 주소는 남기지 않습니다. 항공기에는 일련번호만 붙입니다. 위협 평가나 식별 기능은 전혀 없습니다.

만든 것

추적기는 거의 등속 모델과 극좌표(거리, 방위) 관측을 쓰는 확장 칼만 필터입니다. 항적–탐지 쌍마다 그 탐지 시각으로 예측한 뒤 χ² 검정으로 gating하고, 헝가리안 알고리즘(전역 최근접 이웃)으로 할당합니다. 처음 4 scan 안에 3번 탐지되면 항적을 확정하고, 5 scan 연속으로 놓치면 삭제합니다.

과정 잡음 크기(q = 25 m²/s³)는 평가 구간과 겹치지 않는 15분 조정 구간(10:00–10:15 UTC)에서만 후보 10개 중에 골랐습니다.

베이스라인에는 필터가 없습니다. 항적 위치가 곧 마지막 탐지점이고, 2 km 안에서 가장 가까운 탐지점을 차례로 잇습니다. 항적 관리는 추적기와 같게 두어, 차이가 필터·예측·gating에서만 나오게 했습니다.

추적기 대 베이스라인

Pd 0.9, scan당 클러터 5개, σr 50 m, σθ 0.15°, 4.8초에 한 바퀴. 30분 동안 항공기 149대. Monte Carlo 20회 평균 ± 평균의 95% t-구간이며, 처음 60초는 뺐습니다. GOSPA는 전 표적 합산 지표입니다. scan마다 모든 표적의 위치 오차, 놓친 표적, 가짜 항적을 한 숫자로 더한 값(차단 거리 2 km)이라, 여기서는 세 성분과 함께 요약으로만 보여 줍니다.
지표EKF + 헝가리안 추적기최근접 이웃 베이스라인
위치 RMSE, 평가 시각174.7 ± 1.2 m528.1 ± 1.4 m
위치 RMSE, 갱신 직후125.8 ± 0.5 m172.8 ± 0.6 m
ID 전환(30분)24.9 ± 2.1459.2 ± 7.8
항적 끊김(30분)3.6 ± 0.7414.2 ± 7.9
scan당 놓친 표적0.82 ± 0.024.02 ± 0.07
scan당 가짜 항적1.08 ± 0.014.91 ± 0.07
항적 시작 지연, 평균13.8 ± 0.2 s14.1 ± 0.3 s
평균 GOSPA(전 표적 합산 지표)2,236 ± 10 m5,508 ± 24 m
GOSPA 위치 성분1,229 ± 9 m3,592 ± 8 m
GOSPA 놓친 표적 성분1,282 ± 12 m2,833 ± 23 m
GOSPA 가짜 항적 성분1,468 ± 7 m3,134 ± 21 m

고밀도 클러터

Pd 0.9, σθ 0.15°, 행마다 20회, 평균 ± 95% t-구간. 클러터는 거리와 방위에 균일하게 뿌리므로 레이더에서 멀수록 밀도가 낮습니다. 감시 면적 31,413 km² 전체로 평균하면 scan당 km²당 1.6×10⁻⁴(scan당 5개), 6.4×10⁻³(200개), 3.2×10⁻²(1,000개)입니다.
scan당 클러터, 방식위치 RMSEID 전환(30분)scan당 가짜 항적scan당 놓친 표적
5개, 추적기174.7 ± 1.2 m24.9 ± 2.11.08 ± 0.010.82 ± 0.02
5개, 베이스라인528.1 ± 1.4 m459.2 ± 7.84.91 ± 0.074.02 ± 0.07
200개, 추적기184.6 ± 1.8 m43.2 ± 3.012.23 ± 0.200.93 ± 0.02
200개, 베이스라인545.2 ± 1.3 m692.8 ± 10.362.36 ± 0.524.35 ± 0.07
1,000개, 추적기230.1 ± 2.9 m344.6 ± 17.0555.22 ± 2.310.91 ± 0.03
1,000개, 베이스라인576.5 ± 1.6 m2,156.4 ± 15.11,016.35 ± 2.113.43 ± 0.04

필터 일관성(NEES)

모델 가정대로 움직이는 합성 정답(거의 등속, q = 25): 50회 × 표적 10개 × 50 scan. ANEES는 4차원 상태에 대한 정규화 추정 오차 제곱의 평균이며, 일관된 필터라면 평균이 4입니다.
경우샘플ANEES그 샘플 수의 95% 구간95% 구간 안에 든 갱신 단계
A: Pd 1, 클러터 없음24,2694.16[3.96, 4.04]93.9% (46 / 49)
B: Pd 0.9, scan당 클러터 5개21,7224.19[3.96, 4.04]91.5%

평가 방법

각 scan이 끝나는 순간에 채점합니다. 확정 항적을 그 시각으로 예측하고(베이스라인은 마지막 탐지점 그대로) 같은 시각의 ADS-B 정답과 비교합니다. 처음 60초는 뺍니다.

위치 RMSE는 2 km보다 가까운 항적–항공기 쌍으로 잽니다. 갱신 직후 RMSE는 탐지로 갱신된 직후의 항적을 쓰므로 scan 사이의 예측 구간이 빠집니다. ID 전환은 같은 항공기에 붙은 항적 번호가 바뀐 횟수이고, 항적 끊김은 항공기가 정답에 남아 있는데 짝을 잃은 횟수입니다.

조건마다 seed를 고정해 20회 돌립니다. 정답은 그대로 두고 잡음·누락·클러터만 바뀌며, 추적기와 베이스라인은 같은 탐지점을 받습니다. ±는 평균의 95% t-구간입니다.

잡음 스윕: 탐지 확률 0.7, 0.8, 0.9, 0.97 × scan당 클러터 0, 5, 20 × 방위 잡음 0.15°, 0.30°의 24개 조건을 조건마다 20회씩, 두 방식 모두 돌렸습니다. 추가 실험으로 Pd 0.9, σθ 0.15°에서 클러터를 scan당 200개와 1,000개로 올렸습니다.

필터 일관성은 모델을 정확히 따르는 합성 정답에서 NEES로 확인합니다. 실제 궤적은 등속 모델을 따르지 않으므로, ADS-B 정답에서 잰 NEES는 보고만 하고 일관성 검사로 쓰지 않았습니다.

주요 결과

같은 탐지점에서 추적기는 위치 RMSE를 528 m에서 175 m로, ID 전환을 30분에 459회에서 약 25회로 줄였습니다. 항적 끊김은 414회에서 3.6회로 줄었습니다.

베이스라인의 528 m는 대부분 scan 사이에 마지막 탐지점에 멈춰 있는 데서 나옵니다. 갱신 직후로 보면 차이는 173 m 대 126 m로 작아집니다(27% 감소).

잡음 스윕에서 추적기의 ID 전환은 Pd 0.9 이상에서 30분에 22–26회를 유지했고, Pd 0.8에서 30–34회, 0.7에서 59–64회로 늘었습니다. 베이스라인은 같은 조건에서 197–903회였습니다.

클러터가 성긴 경우(scan당 오경보 200개까지, km²당 6.4×10⁻³)에는 추적기가 버팁니다. 위치 RMSE는 10 m 늘어나는 데 그칩니다. scan당 1,000개(km²당 3.2×10⁻²)에서는 무너져 scan당 가짜 항적 555개를 확정하는데, 클러터 점들이 넓은 항적 시작 gate를 채우기 때문입니다.

모델 그대로 움직이는 정답에서 평균 NEES는 4.16(Pd 1)과 4.19(클러터가 있는 Pd 0.9)로, 95% 구간 [3.96, 4.04]보다 조금 높았습니다. 갱신 단계 49개 중 46개는 각자의 구간 안에 들었습니다. 가장 큰 값은 레이더에서 1.0 km, 1.4 km 떨어진 두 샘플에서 나왔는데, 극좌표 관측의 선형화가 무너지는 거리입니다. 5 km 밖만 보면 평균은 4.07이었습니다.

실제 ADS-B 정답에서는 평균 NEES가 2.85(중앙값 2.00)였습니다. 선회를 따라가도록 q를 맞췄기 때문에, 직선 구간에서는 필터가 필요 이상으로 조심스럽습니다.

오류 원인

추적기의 ID 전환 24.9회(실행 1회당) 중 7.0회는 20초가 넘는 ADS-B 공백 뒤에 났습니다. 이때 항공기는 정답과 시뮬레이션에서 함께 사라집니다. 4.6회는 3 km 안에 다른 항공기가 있을 때로, 고도가 다른 교차 항공기가 2차원에서는 겹쳐 보이는 경우입니다. 13.3회는 항공기가 계속 있는데 항적을 잃은 경우입니다. 마지막 묶음은 선회 중 등속 모델이 뒤처지는 경우로 보이지만, 하나씩 확인하지는 않았습니다.

scan당 가짜 항적 1.08개 중 1.00개는 항공기가 정답에서 사라진 뒤(착륙, 범위 이탈, ADS-B 공백) 항적이 최대 5 scan 동안 이어진 경우입니다. 이 조건에서 클러터로 확정된 항적은 없었습니다.

scan당 놓친 표적 0.82개 중 0.75개는 막 나타나 3/4 규칙으로 아직 확정되지 않은 항공기입니다. 확정까지 약 3 scan(14초)이 걸립니다. 추적하다 잃은 경우는 0.08개뿐입니다.

제 역할과 에이전트 활용

범위와 규칙을 정했습니다. 민간 공항 레이더만, 공개 데이터만 쓰고, 위협 평가는 넣지 않으며, 베이스라인은 같은 탐지점을 받고, 조정은 별도 구간에서 하고, 모든 수치는 결과 파일에서 가져옵니다.

AI 에이전트가 제 지시에 따라 시뮬레이터, 추적기, 평가, 데모를 범위가 정해진 단계로 구현했습니다. 결과물을 검토했고 이 페이지의 주장은 제가 책임집니다.

한계

2차원 평면: 고도와 경사 거리를 무시하므로, 고도가 다른 항공기가 평면에서 교차하면 구분하지 못합니다. 머리 위 무탐지 원뿔, 수직 커버리지, 지구 곡률에 따른 저고도 음영도 없습니다.

정답에는 ADS-B를 보내는 항공기만 들어갑니다. 이 구간에 다변측정(MLAT)으로만 보인 54대(주로 소형기로 추정)와 지상 항공기는 시뮬레이션에서도 빠집니다.

ADS-B 보간 오차(RMS 약 6–7 m)와 ADS-B 위치 자체의 오차가 정답에 남아 있습니다. 20초보다 긴 공백에서는 항공기가 사라졌다 다시 나타나고, 이것이 ID 전환과 가짜 항적 일부를 만듭니다.

레이더 값은 특정 장비가 아닌 교과서·표준 수준의 일반 값입니다. Pd는 상수이고, 클러터는 균일하게 뿌리며, 잡음은 가우시안이고, 편향, 가까운 표적의 병합, 다중 경로는 없습니다.

등속 모델 하나만 쓰므로 선회에서 뒤처집니다. IMM(상호작용 다중 모델)은 시도하지 않았습니다.

클러터가 조밀하면 항적 시작 단계가 무너집니다. 확률적 연관(JPDA/MHT)이나 클러터 지도가 다음 단계이지만, 이 프로젝트에서는 시도하지 않았습니다.

한 공항, 30분 한 구간입니다. 과정 잡음은 같은 날의 다른 15분 구간에서 맞췄습니다.

근거와 재현성

이 페이지의 모든 수치는 프로젝트의 결과 파일(results/RESULTS.md)에서 가져왔습니다. 이 파일은 스크립트가 실행 결과 파일에서 생성하며, 24개 스윕 조건 전체와 정답 필터링 단계도 담고 있습니다. 그림도 같은 실행 결과로 프로젝트의 그림 스크립트가 만들었습니다.

데이터: adsb.lol globe_history_2026, 2026년 11월 6일 기록. Contains information from adsb.lol, made available under the ODbL 1.0. 궤적에서 파생한 파일도 ODbL 1.0을 따릅니다. 레이더 값은 ASR-11의 회전 속도와, ICAO 문서가 전하는 EUROCONTROL 감시 요구치를 근거로 했습니다.

adsb.lol globe_history_2026 (ODbL 1.0) ↗

ICAO APAC SURICG/6 IP/04 (2021), Practical approach to assess the performance of the surveillance systems ↗

ASR-11 (Wikipedia): 12.5 rpm antenna rotation ↗

모든 프로젝트로 돌아가기