AIDT 온디바이스 국방 MUM-T 잠수함 대공-해상 광통신(FSOC) 빔 지향 추적(PAT) 서보 엔진

원자력 및 디젤 잠수함 MUM-T 마스트 탑재 자유공간 광통신(FSOC) 고속 조향 미러(FSM) 파랑 요동 보상 서보, 10,000Hz C# 엔진

1. 개요

현대전의 유무인 복합해양전투(MUM-T)에서 잠수함은 적의 광역 전자기 감시망(ESM)에 전파 방사를 노출시키지 않고 공중 무인기(UAV) 및 해상 수상정(USV)과 기가비트(Gbps)급 대용량 전술 데이터를 교환해야 합니다. 전파를 일절 방사하지 않는 마스트 탑재 자유공간 광통신(Free-Space Optical Communications, FSOC)은 1550nm 근적외선 협각 레이저 빔을 활용하여 은밀한 초고속 링크를 제공합니다. 그러나 거친 파도에 의한 잠수함 마스트의 6자유도 각운동(Pitch/Roll/Yaw)과 해면 대기 난류(Atmospheric Turbulence)로 인한 빔 방황(Beam Wander)은 직경 수 마이크로라디안(\(\mu\text{rad}\))에 불과한 빔을 순식간에 시야각 밖으로 이탈시킵니다. 이를 보상하기 위해 조동 짐벌(Coarse Gimbal)과 압전 구동 2축 고속 미러(Fine Steering Mirror, FSM)를 연동하는 2단 빔 획득·지향·추적(Pointing, Acquisition, Tracking, PAT) 루프가 운용됩니다. 본 고에서는 10,000Hz 온디바이스 루프에서 사분할 광다이오드(QPD) 신호를 기반으로 나노라디안 분해능으로 미러를 제어하는 0-Alloc C# 엔진을 구현합니다.

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

사분할 광다이오드(QPD) 광전류 기반 무차원 빔 중심 편차 \(\epsilon_x, \epsilon_y\) 수식은 다음과 같습니다:

\\[ \epsilon_x = \frac{(I_A + I_D) - (I_B + I_C)}{I_A + I_B + I_C + I_D}, \quad \epsilon_y = \frac{(I_A + I_B) - (I_C + I_D)}{I_A + I_B + I_C + I_D} \\]

대기 및 마스트 기계 진동 외란을 포함한 2단 FSM 피에조 미러 각변위 지령식은 다음과 같습니다:

\\[ \theta_{fsm, x}[k] = \theta_{fsm, x}[k-1] + K_p \epsilon_x[k] + K_i \sum \epsilon_x \Delta t - K_{gyro} \dot{\phi}_{mast}[k] \\]

광 결합 효율 \(\eta_{couple}\)과 수신단 비트오류율(BER) 지배식은 다음과 같습니다:

\\[ \eta_{couple} = \exp\left( -2 \left(\frac{\Delta \theta_{pat}}{w_0 / f_{lens}}\right)^2 \right) \\]

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

10,000Hz 주기로 마스트 자이로 각속도와 QPD 오차를 융합하여 FSM을 조향하는 0-Alloc C# 엔진입니다.

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Defense.SubmarineFsocPat
{
    /// <summary>
    /// FSOC QPD 광학 중심 및 자이로 텔레메트리
    /// </summary>
    public readonly ref struct FsocPatTelemetryState
    {
        public readonly double QpdPhotodiodeA;            // QPD 채널 A 전류 [uA]
        public readonly double QpdPhotodiodeB;            // QPD 채널 B 전류 [uA]
        public readonly double QpdPhotodiodeC;            // QPD 채널 C 전류 [uA]
        public readonly double QpdPhotodiodeD;            // QPD 채널 D 전류 [uA]
        public readonly double MastPitchRateRadSec;       // 마스트 피치 자이로 각속도 [rad/s]
        public readonly double MastYawRateRadSec;         // 마스트 요 자이로 각속도 [rad/s]

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public FsocPatTelemetryState(double a, double b, double c, double d, double pitchRate, double yawRate)
        {
            QpdPhotodiodeA = a;
            QpdPhotodiodeB = b;
            QpdPhotodiodeC = c;
            QpdPhotodiodeD = d;
            MastPitchRateRadSec = pitchRate;
            MastYawRateRadSec = yawRate;
        }
    }

    /// <summary>
    /// FSM 고속 조향 미러 2축 각도 지령
    /// </summary>
    public readonly ref struct FsmSteeringCommand
    {
        public readonly double ThetaXMicroRad;            // FSM X축 미세 조향 각도 [urad]
        public readonly double ThetaYMicroRad;            // FSM Y축 미세 조향 각도 [urad]
        public readonly double ReceivedOpticalPowerMicroW;// 수신 광파워 [uW]
        public readonly bool LinkTrackingLocked;          // 광추적 잠금 상태

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public FsmSteeringCommand(double thX, double thY, double pOpt, bool locked)
        {
            ThetaXMicroRad = thX;
            ThetaYMicroRad = thY;
            ReceivedOpticalPowerMicroW = pOpt;
            LinkTrackingLocked = locked;
        }
    }

    /// <summary>
    /// 10,000Hz 0-Alloc 잠수함 FSOC PAT 고속 추적 서보 엔진
    /// </summary>
    public sealed class SubmarineFsocPatServoEngine
    {
        private const double QpdSensitivity = 150.0;     // 150 urad / 정규화 편차단위
        private const double FeedforwardGyroGain = 0.98; // 자이로 피드포워드 역보상 게인
        private double _intErrX;
        private double _intErrY;
        private double _currentThX;
        private double _currentThY;

        public SubmarineFsocPatServoEngine()
        {
            _intErrX = 0.0;
            _intErrY = 0.0;
            _currentThX = 0.0;
            _currentThY = 0.0;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public FsmSteeringCommand UpdateServoLoop(in FsocPatTelemetryState telemetry, double dtSeconds)
        {
            double sumI = telemetry.QpdPhotodiodeA + telemetry.QpdPhotodiodeB +
                          telemetry.QpdPhotodiodeC + telemetry.QpdPhotodiodeD;

            if (sumI < 1.0)
            {
                // 광신호 미검출 (Beam Loss) 시 마스트 자이로 피드포워드만으로 자세 유지
                _currentThX -= (telemetry.MastYawRateRadSec * FeedforwardGyroGain * dtSeconds * 1e6);
                _currentThY -= (telemetry.MastPitchRateRadSec * FeedforwardGyroGain * dtSeconds * 1e6);
                return new FsmSteeringCommand(_currentThX, _currentThY, 0.0, false);
            }

            // 1. QPD 무차원 중심 편차 산출
            double errX = ((telemetry.QpdPhotodiodeA + telemetry.QpdPhotodiodeD) -
                           (telemetry.QpdPhotodiodeB + telemetry.QpdPhotodiodeC)) / sumI;
            double errY = ((telemetry.QpdPhotodiodeA + telemetry.QpdPhotodiodeB) -
                           (telemetry.QpdPhotodiodeC + telemetry.QpdPhotodiodeD)) / sumI;

            // 2. 적분 오차 누적 (Anti-Windup 적용)
            _intErrX = Math.Clamp(_intErrX + (errX * dtSeconds), -0.05, 0.05);
            _intErrY = Math.Clamp(_intErrY + (errY * dtSeconds), -0.05, 0.05);

            // 3. 자이로 피드포워드 + 비례적분 서보 지령
            double fwdX = -telemetry.MastYawRateRadSec * FeedforwardGyroGain * 1e6 * dtSeconds;
            double fwdY = -telemetry.MastPitchRateRadSec * FeedforwardGyroGain * 1e6 * dtSeconds;

            double corrX = (errX * QpdSensitivity) + (_intErrX * 1000.0) + fwdX;
            double corrY = (errY * QpdSensitivity) + (_intErrY * 1000.0) + fwdY;

            _currentThX = Math.Clamp(_currentThX + corrX, -2500.0, 2500.0); // +/- 2.5 mrad 스트로크 한계
            _currentThY = Math.Clamp(_currentThY + corrY, -2500.0, 2500.0);

            bool locked = (Math.Abs(errX) < 0.03 && Math.Abs(errY) < 0.03);
            return new FsmSteeringCommand(_currentThX, _currentThY, sumI * 0.5, locked);
        }
    }
}

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

본 고의 초고속 광추적 빔 제어 기법은 다음 분야에 직접 적용됩니다:

  • 해군 MUM-T 무인 잠수정 및 공중 무인기 링크: 전파 침묵 상태에서 기가비트 영상 데이터 전송.
  • 방통대 및 군사 광공학 실무연수: QPD 기반 2축 미러 캘리브레이션 및 광난류 수치모델 해석.
  • 차세대 잠수함 전자전 마스트: 레이저 인터셉트 회피를 위한 협각 빔 동적 트래킹 알고리즘.

5. 결론

해상 파랑으로 인한 극심한 마스트 진동 환경에서도 QPD 빔 중심 오차와 마스트 자이로 각속도를 완벽히 융합하여 10,000Hz 온디바이스 0-Alloc C# 엔진으로 2축 압전 FSM을 1마이크로라디안 정밀도로 추적하는 잠수함 FSOC PAT 제어 시스템을 완성하였습니다.