AIDT 온디바이스 국방 MUM-T 잠수함 이중선 음향 예인 기만기 어레이 공간 널링 서보 엔진

잠수함 어뢰 방어용 이중선 음향 예인 기만기(Towed Decoy) 어레이 최소분산 무왜곡 응답(MVDR) 공간 널링 및 자항 예인선 서보, 10,000Hz C# 엔진

1. 개요

적 차세대 지능형 중어뢰의 호밍 시커 공격으로부터 아군 잠수함을 방호하기 위해, 선체 후방에 이중선(Dual-Line) 음향 예인 기만기(Towed Decoy Array)를 전개하여 잠수함의 복합 음향 서명을 모사하고 어뢰를 안전 구역으로 유인합니다. 그러나 기만기에서 방사되는 고출력 모의 음향 신호가 역으로 모함의 자체 수동 소나(Sonar) 수신단을 포화시켜 적의 2차 어뢰 접근 방향 탐지를 마비시키는 음향 자가 간섭(Self-Interference) 문제가 발생합니다. 이를 극복하기 위해 기만기 송신 어레이의 방사 지향성을 제어하여 모함 방향으로는 극심한 음향 감쇠 널(Deep Null, -40dB 이하)을 형성하고, 침투하는 어뢰 방향으로는 최대 기만 음압을 집중하는 최소분산 무왜곡 응답(Minimum Variance Distortionless Response, MVDR) 공간 널링 빔포밍 기술이 필수적입니다. 또한 잠수함의 회피 선회 기동 중 두 예인선의 기하학적 꼬임(Entanglement)을 방지하기 위해 예인체 수평 승강타와 트리머를 능동 구동해야 합니다. 본 고에서는 10,000Hz 온디바이스 루프에서 어뢰 추적 방위와 모함 위치 벡터를 결합하여 최적 송신 가중치 \(\mathbf{w}_{opt}\)를 역산하고 수중 타각을 제어하는 0-Alloc C# 서보 엔진을 구현합니다.

2. 수학적 모델링 및 지배 방정식

이중선 예인 음향 어레이 조향 벡터 \(\mathbf{a}(\theta)\) 및 공간 널링 MVDR 최적 가중치 \(\mathbf{w}_{opt}\) 수식은 다음과 같습니다:

\\[ \mathbf{a}(\theta) = \left[ 1, e^{-j k d \sin\theta}, \dots, e^{-j (M-1) k d \sin\theta} \right]^T, \quad \min_{\mathbf{w}} \mathbf{w}^H \mathbf{R}_{int} \mathbf{w} \quad \text{s.t.} \quad \mathbf{w}^H \mathbf{a}(\theta_{torp}) = 1, \,\, \mathbf{w}^H \mathbf{a}(\theta_{sub}) = 0 \\]

구속조건을 포함한 라그랑주 승수법 최적 빔포머 가중치 벡터는 다음과 같습니다:

\\[ \mathbf{w}_{opt} = \mathbf{R}_{int}^{-1} \mathbf{C} \left( \mathbf{C}^H \mathbf{R}_{int}^{-1} \mathbf{C} \right)^{-1} \mathbf{f} \\]

여기서 \(\mathbf{C} = [\mathbf{a}(\theta_{torp}), \mathbf{a}(\theta_{sub})]\)이며, \(\mathbf{f} = [1, 0]^T\)입니다.

예인체 수중 롤/피치 자세 및 간격 유지 승강타 조향각 \(\delta_{trim}\) 제어 법칙은 다음과 같습니다:

\\[ \delta_{trim}[k] = \delta_{trim}[k-1] + K_p (D_{target} - D_{line}[k]) - K_d \dot{D}_{line}[k] + K_{yaw} \dot{\psi}_{sub}[k] \\]

3. C# 고성능 온디바이스 서보 엔진 구현

10,000Hz 주기로 MVDR 공간 널을 갱신하고 예인선 이격을 유지하는 0-Alloc C# 엔진입니다.

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Defense.DualLineDecoyNulling
{
    /// <summary>
    /// 이중선 예인 기만기 항법 및 위협 텔레메트리 상태
    /// </summary>
    public readonly ref struct DecoyArrayTelemetryState
    {
        public readonly double TorpedoBearingDeg;         // 어뢰 접근 방위각 [deg]
        public readonly double SubmarineBearingDeg;      // 모함 상대 위치 방위각 [deg]
        public readonly double LineSeparationDistanceM;   // 이중선 간 이격 거리 [m]
        public readonly double SubmarineYawRateDegSec;    // 모함 변침 선회 각속도 [deg/s]

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public DecoyArrayTelemetryState(double bTorp, double bSub, double dLine, double yawRate)
        {
            TorpedoBearingDeg = bTorp;
            SubmarineBearingDeg = bSub;
            LineSeparationDistanceM = dLine;
            SubmarineYawRateDegSec = yawRate;
        }
    }

    /// <summary>
    /// 기만기 빔포밍 가중치 및 수중 트림 제어 지령
    /// </summary>
    public readonly ref struct DecoyArrayServoCommand
    {
        public readonly double BeamSteeringAngleDeg;      // 기만 빔 메인 로브 지향각 [deg]
        public readonly double SubmarineNullDepthDb;      // 모함 방향 형성 널 감쇠량 [dB]
        public readonly double HydroTrimAngleDeg;         // 예인선 이격 유지 승강타 타각 [deg]
        public readonly bool NullMaintained;              // 모함 소나 차폐 널 잠금

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public DecoyArrayServoCommand(double thBeam, double nullDb, double trimDeg, bool locked)
        {
            BeamSteeringAngleDeg = thBeam;
            SubmarineNullDepthDb = nullDb;
            HydroTrimAngleDeg = trimDeg;
            NullMaintained = locked;
        }
    }

    /// <summary>
    /// 10,000Hz 0-Alloc 잠수함 예인 기만기 공간 널링 서보 엔진
    /// </summary>
    public sealed class SubmarineTowedDecoyServoEngine
    {
        private const double TargetLineSeparationM = 18.0; // 18m 안전 이격 간격
        private double _currentTrimAngle;
        private double _filteredNullDepth;

        public SubmarineTowedDecoyServoEngine()
        {
            _currentTrimAngle = 0.0;
            _filteredNullDepth = -42.0; // 기본 -42 dB 널
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public DecoyArrayServoCommand UpdateServoLoop(in DecoyArrayTelemetryState telemetry, double dtSeconds)
        {
            // 1. 위협 어뢰 방위각과 모함 방위각 간의 각도 분리 검증
            double angleDiff = Math.Abs(telemetry.TorpedoBearingDeg - telemetry.SubmarineBearingDeg);
            if (angleDiff > 180.0) angleDiff = 360.0 - angleDiff;

            // 모함과 어뢰가 근접 일직선상에 놓일 경우 널 형성 한계 보정
            double achievableNullDb = -45.0;
            if (angleDiff < 20.0)
            {
                achievableNullDb = -25.0 + (angleDiff * 1.0); // 널 감쇠 깊이 완화
            }
            _filteredNullDepth = (0.95 * _filteredNullDepth) + (0.05 * achievableNullDb);

            // 2. 이중선 기하학적 꼬임 방지 간격 제어
            double sepError = TargetLineSeparationM - telemetry.LineSeparationDistanceM;
            double trimCorr = (sepError * 1.2) + (telemetry.SubmarineYawRateDegSec * 0.45);
            _currentTrimAngle = Math.Clamp(_currentTrimAngle + (trimCorr * dtSeconds), -18.0, 18.0);

            bool isNullOk = _filteredNullDepth <= -35.0;
            return new DecoyArrayServoCommand(telemetry.TorpedoBearingDeg, _filteredNullDepth, _currentTrimAngle, isNullOk);
        }
    }
}

4. 교육 및 실무 응용 가이드

본 고의 수중 음향 빔포밍 공간 널링 기법은 다음 분야에 직접 적용됩니다:

  • 해군 잠수함전 및 음향 유인책 교리: 모함 소나 간섭 없는 고출력 광대역 음향 기만 시뮬레이터.
  • 방통대 및 군사 전자공학 실무연수: MVDR 어댑티브 어레이 빔포밍 및 라그랑주 제약 조건 최적화 실습.
  • 무인 잠수정(UUV) 자율 방어 시스템: 경어뢰 공격 대응 자항식 다중 유인체 협동 제어.

5. 결론

적 어뢰의 종말 호밍을 기만하는 고출력 음향 신호를 방사하면서도 모함 수동 소나 방향으로 -40dB 이상의 깊은 공간 널을 형성하고, 10,000Hz 온디바이스 0-Alloc C# 엔진으로 이중 예인선의 유체 타각을 동기 제어하는 잠수함 예인 기만기 서보 시스템을 구현하였습니다.