AIDT 온디바이스 국방 MUM-T 전자광학/적외선(EO/IR) 터렛 시선 안정화(LOS) 서보 엔진

기체 3축 진동 외란 분리, 보이스 코일 모터(VCM) 패스트 스티어링 미러 서브-마이크로라디안 안정화, 10,000Hz C# 엔진

1. 개요

유무인복합체계(MUM-T)의 헬리콥터, 무인 정찰기(UAV) 및 해상 초계기에 탑재되는 전자광학/적외선(EO/IR) 감시·조준 터렛은 수십 킬로미터 원거리의 표적을 고배율 줌 렌즈로 흔들림 없이 추적해야 합니다. 그러나 헬리콥터의 메인 로터 고주파 진동, 기동 비행 중의 공기역학적 돌풍(Gust), 거친 파도에 의한 선체 롤링 등 극심한 기저 외란이 터렛 짐벌에 직접 전달됩니다. 시선(Line-of-Sight, LOS) 흔들림이 수 마이크로라디안(\(\mu\text{rad}\))만 발생해도 원거리 영상은 흐릿해지고 레이저 표적 지시기(LTD) 빔이 빗나가 정밀 유도 무기의 명중률이 급격히 저하됩니다. 이를 극복하기 위해 대형 외측 짐벌(Coarse Gimbal)이 큰 각도 회전을 담당하고, 내측의 초고속 음성 코일 모터(VCM) 기반 고속 조향 거울(Fast Steering Mirror, FSM)이 마이크로 단위의 잔여 진동을 10,000Hz로 역위상 상쇄하는 2단 복합 제어 구조가 요구됩니다. 본 고에서는 광섬유 자이로(FOG) 신호로부터 관성 시선 각속도를 0-Alloc C# 엔진으로 연산하여 서브-마이크로라디안 안정도를 구현합니다.

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

기체 고정 좌표계 \(\{B\}\)의 각속도 \(\boldsymbol{\omega}_{base}\)가 짐벌 기구학적 결합 토크 및 마찰력을 통해 내부 미러 관성 플랫폼 \(\{M\}\)에 미치는 시선(LOS) 각가속도 방정식은 다음과 같습니다:

\[ \mathbf{J}_{los} \dot{\boldsymbol{\omega}}_{los} + \boldsymbol{\omega}_{los} \times (\mathbf{J}_{los} \boldsymbol{\omega}_{los}) = \mathbf{T}_{act} - \mathbf{T}_{friction}(\dot{\boldsymbol{\theta}}_{rel}) - \mathbf{K}_{cable} \boldsymbol{\theta}_{rel} + \mathbf{T}_{ext} \]

비선형 Lugre 베어링 마찰력 모델 \(\mathbf{T}_{friction}\)과 강모(Bristle) 평균 굴곡 \(z_{fric}\)의 미분방정식은 다음과 같습니다:

\[ \dot{z}_{fric} = \dot{\theta}_{rel} - \frac{\sigma_0 |\dot{\theta}_{rel}|}{g(\dot{\theta}_{rel})} z_{fric}, \quad T_{fric} = \sigma_0 z_{fric} + \sigma_1 \dot{z}_{fric} + \sigma_2 \dot{\theta}_{rel} \]

패스트 스티어링 미러(FSM) 음성 코일 모터(VCM)의 2차 기계-전기 상태방정식은 고유진동수 \(\omega_m\), 감쇠비 \(\zeta_m\), 토크 상수 \(K_t\)로 기술됩니다:

\[ \ddot{\theta}_{fsm} + 2\zeta_m \omega_m \dot{\theta}_{fsm} + \omega_m^2 \theta_{fsm} = \frac{K_t}{J_{fsm}} I_{vcm}(t) \]

총 시선 안정화 오차 \(\mathbf{e}_{los} = \boldsymbol{\omega}_{los}^{des} - \boldsymbol{\omega}_{gyro}\)에 대한 지름길 외란 관측기(Disturbance Observer, DOB) 기반 등가 외란 보상 제어 전압은 다음과 같습니다:

\[ I_{cmd}(s) = C(s) e_{los}(s) + Q(s) P_n^{-1}(s) \theta_{fsm}(s) - Q(s) I_{cmd}(s) \]

3. 실시간 C# 서보 제어기 구현

다음은 FOG 자이로 각속도 신호를 10,000Hz로 판독하여 짐벌 조향 및 FSM 미러 전압을 무할당으로 산출하는 C# 서보 엔진입니다:

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Core.ElectroOptics
{
    public ref struct EoirTurretLosServo
    {
        private readonly double _dt;
        private readonly double _fsmBandwidthRadS;
        private readonly double _vcmSensitivityRadPerV;
        
        // 관성 상태 변수
        private double _gyroRateRadS;
        private double _filteredLosRateRadS;
        private double _accumulatedLosJitterUrad;
        
        // 외란 관측기(DOB) 상태
        private double _dobEstimatedTorqueNm;
        private double _coarseGimbalCmdTorqueNm;
        private double _fsmMirrorCmdVoltageV;
        
        // 제어 이득
        private readonly double _kpCoarse;
        private readonly double _kiCoarse;
        private readonly double _kpFine;

        public EoirTurretLosServo(
            double dt,
            double fsmBandwidthRadS,
            double vcmSensitivityRadPerV,
            double kpCoarse,
            double kiCoarse,
            double kpFine)
        {
            _dt = dt;
            _fsmBandwidthRadS = fsmBandwidthRadS; // 약 1500 rad/s (240 Hz 대역)
            _vcmSensitivityRadPerV = vcmSensitivityRadPerV;
            _kpCoarse = kpCoarse;
            _kiCoarse = kiCoarse;
            _kpFine = kpFine;
            _gyroRateRadS = 0.0;
            _filteredLosRateRadS = 0.0;
            _accumulatedLosJitterUrad = 0.0;
            _dobEstimatedTorqueNm = 0.0;
            _coarseGimbalCmdTorqueNm = 0.0;
            _fsmMirrorCmdVoltageV = 0.0;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public void UpdateLosStabilization(
            double rawGyroRateRadS,
            double targetTrackingRateRadS,
            double baseVibrationAccelMs2,
            out double coarseGimbalTorqueNm,
            out double fsmVoltageV,
            out double residualJitterUrad)
        {
            _gyroRateRadS = rawGyroRateRadS;

            // 1. 관성 각속도 오차 계산 (시선 안정화 목표: 0 또는 표적 추적 각속도)
            double rateError = targetTrackingRateRadS - _gyroRateRadS;

            // 2. 외란 관측기(DOB)를 통한 기저 진동 토크 추정
            double torqueDisturbance = baseVibrationAccelMs2 * 0.045; // 관성 불평형 토크
            _dobEstimatedTorqueNm += 0.15 * (torqueDisturbance - _dobEstimatedTorqueNm);

            // 3. 대형 외측 짐벌(Coarse Gimbal) 저주파 대토크 제어
            _coarseGimbalCmdTorqueNm = _kpCoarse * rateError + _dobEstimatedTorqueNm;
            _coarseGimbalCmdTorqueNm = Math.Clamp(_coarseGimbalCmdTorqueNm, -15.0, 15.0); // 15 Nm 모터

            // 4. 고속 조향 거울(FSM) 내측 고주파 잔류 오차 피드포워드 상쇄 제어
            double residualRate = rateError - (_coarseGimbalCmdTorqueNm / 20.0);
            _fsmMirrorCmdVoltageV = Math.Clamp(_kpFine * residualRate / Math.Max(1e-6, _vcmSensitivityRadPerV), -10.0, 10.0); // ±10V VCM

            // 5. 시선 지터 실효값(RMS Jitter) 추정 (마이크로라디안)
            double instantaneousAngleErrUrad = (rateError * _dt) * 1e6;
            _accumulatedLosJitterUrad = 0.98 * _accumulatedLosJitterUrad + 0.02 * Math.Abs(instantaneousAngleErrUrad);

            coarseGimbalTorqueNm = _coarseGimbalCmdTorqueNm;
            fsmVoltageV = _fsmMirrorCmdVoltageV;
            residualJitterUrad = _accumulatedLosJitterUrad;
        }

        public readonly double CurrentLosJitterUrad => _accumulatedLosJitterUrad;
        public readonly double CoarseTorqueCommand => _coarseGimbalCmdTorqueNm;
    }
}

4. 교육 및 국방 현장 적용 방안

방통대 및 초중고 관성센서·광역학 제어 직무연수

자이로스코프의 각속도 적분과 광학 반사의 기구학적 스넬 법칙을 가상 짐벌 터렛 시뮬레이터로 학습. 기체 진동을 역위상 거울 구동으로 소거하여 맑고 선명한 망원 영상을 획득하는 광역학 제어 기술을 체험합니다.

육해공 무인기 및 공격헬기 EO/IR 타겟팅 포드

고속 회피 기동 중인 적 전차나 쾌속정을 15km 밖에서 0.5마이크로라디안 이하의 극미세 흔들림으로 조준하고, 레이저 빔을 표적 취약 부위에 100% 지속 조사하여 레이저 유도 로켓의 초정밀 타격을 달성합니다.