1. 개요
전장 상공에서 작전하는 MUM-T 유인 지휘기와 정찰 무인기 편대는 적 대공 레이다망 및 지대공 미사일 포대의 사격통제 레이더 전파를 신속히 탐지·식별하고 그 발신 위치를 초정밀 삼각측량해야 합니다. 전자지원책(Electronic Support Measures, ESM)의 핵심 기술인 위상간섭계 방향탐지(Phase Interferometer Direction Finding, PIDF)는 기체 날개 및 동체에 배치된 3개 이상의 안테나 소자에 도달하는 전파의 미세한 위상차(\(\Delta \phi\))를 측정하여 적 전파원의 입사각(Angle-of-Arrival, AOA)을 계산합니다. 그러나 파장(\(\lambda\))보다 긴 기선(Baseline \(d > \lambda/2\))을 사용할 경우 고정밀 각도 분해능을 얻는 대신 \(2\pi\) 위상 래핑에 따른 다중 모호성(Ambiguity)이 발생합니다. 본 고에서는 단기선과 장기선을 복합 결합하여 위상 모호성을 0.05밀리초 내에 완전 해소하고 서브-0.5도 방향탐지 정확도를 달성하는 0-Alloc C# 엔진을 구현합니다.
2. 수학적 모델링 및 지배 방정식
기선 거리 \(d_i\) 및 전파 도달각 \(\theta\)에 따른 안테나 소자 간 측정 위상차 \(\phi_{meas, i}\) 방정식은 다음과 같습니다:
다중 기선 비율(비공통 인자 비선형 기선 \(d_1, d_2\))에 기초한 중국인의 나머지 정리(Chinese Remainder Theorem) 위상 모호성 해소 수식은 다음과 같습니다:
크라메르-라오 하한(Cramer-Rao Lower Bound, CRLB)에 따른 도달각 추정 분산 \(\sigma_\theta^2\) 한계식은 다음과 같습니다:
편대 다중 기체 간 삼각측량 교차 표적 위치 벡터 \(\vec{P}_{emitter}\) 최소제곱식은 다음과 같습니다:
3. 실시간 C# 서보 제어기 구현
다음은 다중 기선 위상차 데이터를 10,000Hz 주기로 연산하여 모호성을 풀고 방위각을 확정하는 0-Alloc C# 엔진 구현체입니다:
using System;
using System.Runtime.CompilerServices;
namespace ZeliDesk.Defense.ESM
{
public readonly ref struct EsmRfPhaseFrame
{
public readonly double ShortBaselinePhaseDiffDeg;
public readonly double LongBaselinePhaseDiffDeg;
public readonly double SignalFrequencyGhz;
public readonly double SnrDb;
public readonly double ShortBaselineMeters;
public readonly double LongBaselineMeters;
public EsmRfPhaseFrame(
double shortBaselinePhaseDiffDeg,
double longBaselinePhaseDiffDeg,
double signalFrequencyGhz,
double snrDb,
double shortBaselineMeters,
double longBaselineMeters)
{
ShortBaselinePhaseDiffDeg = shortBaselinePhaseDiffDeg;
LongBaselinePhaseDiffDeg = longBaselinePhaseDiffDeg;
SignalFrequencyGhz = signalFrequencyGhz;
SnrDb = snrDb;
ShortBaselineMeters = shortBaselineMeters;
LongBaselineMeters = longBaselineMeters;
}
}
public ref struct EsmDirectionFindingCommand
{
public double EstimatedAoaDeg;
public double AmbiguityIntegerK;
public double AngularUncertaintyDeg;
public bool IsAmbiguityResolved;
public bool IsPrecisionTrackingValid;
}
public ref struct InterferometerDirectionFindingServoEngine
{
private const double SpeedOfLight = 299792458.0;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void ComputeDirectionFinding(in EsmRfPhaseFrame frame, out EsmDirectionFindingCommand cmd)
{
cmd = default;
double lambda = SpeedOfLight / (frame.SignalFrequencyGhz * 1e9);
// Coarse AOA from short baseline (d_short <= lambda / 2)
double phiShortRad = frame.ShortBaselinePhaseDiffDeg * (Math.PI / 180.0);
double sinThetaCoarse = (lambda * phiShortRad) / (2.0 * Math.PI * frame.ShortBaselineMeters);
sinThetaCoarse = Math.Clamp(sinThetaCoarse, -1.0, 1.0);
// Long baseline ambiguity resolution
double phiLongRad = frame.LongBaselinePhaseDiffDeg * (Math.PI / 180.0);
double expectedPhaseTotal = (2.0 * Math.PI * frame.LongBaselineMeters / lambda) * sinThetaCoarse;
// Find integer k that minimizes error
double kExact = (expectedPhaseTotal - phiLongRad) / (2.0 * Math.PI);
int kBest = (int)Math.Round(kExact);
double unwrappedLongPhase = phiLongRad + (2.0 * Math.PI * kBest);
double sinThetaFine = (lambda * unwrappedLongPhase) / (2.0 * Math.PI * frame.LongBaselineMeters);
sinThetaFine = Math.Clamp(sinThetaFine, -1.0, 1.0);
double aoaFineDeg = Math.Asin(sinThetaFine) * (180.0 / Math.PI);
// CRLB angular uncertainty estimate
double snrLinear = Math.Pow(10.0, frame.SnrDb / 10.0);
double sigmaAoaDeg = (lambda / (2.0 * Math.PI * frame.LongBaselineMeters * Math.Max(0.1, Math.Cos(aoaFineDeg * Math.PI / 180.0)) * Math.Sqrt(2.0 * snrLinear))) * (180.0 / Math.PI);
cmd.EstimatedAoaDeg = aoaFineDeg;
cmd.AmbiguityIntegerK = kBest;
cmd.AngularUncertaintyDeg = sigmaAoaDeg;
cmd.IsAmbiguityResolved = Math.Abs(kExact - kBest) < 0.25;
cmd.IsPrecisionTrackingValid = sigmaAoaDeg <= 0.5;
}
}
}
4. 교육 및 실무 적용 방안
- 국방부 AI 교과서 및 정보사령부: 전자지원책(ESM), 전파 위상간섭계 원리 및 대공 위협 레이다 삼각측량 교육.
- KF-21 및 무인 정찰기 통합 전자전(EW) 수트: 적 방공망 위협 신호를 마이크로초 단위로 포착하는 온디바이스 방향탐지 프로세서 채택.