2022 개정 교육과정 연계 온디바이스 우주천문·적응광학 STEM 시리즈 #104

우주망원경 셰크-하트만 파면 센서 및 적응광학 변형거울 제르니케 서보 엔진

콜모고로프 대기 난류 굴절률 요동 실시간 위상 재구성 및 0-Alloc C# 압전 액추에이터 서보 루프

핵심 연구 개요 및 교과 연계

지상 초대구경 망원경(ELT) 및 우주 감시 정찰 망원경의 이론적 해상도는 빛의 회절 한계($ heta pprox 1.22 \lambda / D$)에 의해 결정되나, 대기권 난류에 의한 굴절률 요동(Seeing Effect)은 파면(Wavefront)을 왜곡시켜 시상을 $1''$ 수준으로 저하시킵니다. 이를 극복하는 핵심 기술이 마이크로 렌즈 어레이 기반의 셰크-하트만(Shack-Hartmann) 파면 센서와 수백 개의 압전 액추에이터로 실시간 표면을 변형시키는 적응광학 변형거울(Deformable Mirror, DM)입니다.

본 연구는 2022 개정 지구과학 II (천체 관측 기기 및 시상, 별의 광도와 스펙트럼), 물리학 II (빛의 간섭과 회절, 기하광학 파면 전파), 기하/미적분 (원형 개구 제르니케 다항식 직교 전개), 그리고 정보 (C# 13 0-Alloc 초고속 행렬 연산)를 통합하여, 대기 난류 주파수($\sim 1 ext{kHz}$)를 능가하는 온디바이스 파면 보정 서보를 구현합니다.

1. 콜모고로프 난류 위상 구조와 제르니케 다항식 정식화

대기 난류의 3차원 굴절률 구조 상수 $C_n^2$에 따른 파면 위상 왜곡 $\phi(r, heta)$는 단위 원반 상에서 정의되는 직교 기저인 제르니케 다항식(Zernike Polynomials) $Z_j(r, heta)$의 선형 결합으로 분해됩니다:

$$\phi(r, heta) = \sum_{j=1}^{N} a_j Z_j(r, heta)$$

셰크-하트만 렌즈렛 어레이의 각 서브애퍼처(Subaperture) $k$에서 측정된 초점 스팟 변위 $(\Delta x_k, \Delta y_k)$는 해당 영역의 국소 파면 기울기(Average Gradient)에 비례합니다:

$$\Delta x_k = rac{f_L}{A_k} \iint_{S_k} rac{\partial \phi}{\partial x} dx dy, \quad \Delta y_k = rac{f_L}{A_k} \iint_{S_k} rac{\partial \phi}{\partial y} dx dy$$

측정된 기울기 벡터 $\mathbf{s}$와 제르니케 모드 계수 벡터 $\mathbf{a}$ 사이의 기하 행렬 $\mathbf{G}$에 대해, 특이값 분해(SVD) 의사역행렬을 스택 메모리 내에서 생성하여 $\mathbf{a} = \mathbf{G}^\dagger \mathbf{s}$를 구하고 변형거울 전압을 인가합니다.

2. 0-Alloc C# 스택 기반 파면 재구성 서보 아키텍처

1,000 프레임/초로 들어오는 셰크-하트만 센서 스팟 좌표로부터 팁-틸트(Tip-Tilt), 디포커스(Defocus), 비점수차(Astigmatism) 등 주요 제르니케 모드를 즉각 산출하는 ref struct 서보입니다.

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.AdaptiveOptics
{
    public readonly ref struct ShackHartmannSpot
    {
        public readonly double DeltaXMicrons;
        public readonly double DeltaYMicrons;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public ShackHartmannSpot(double dx, double dy)
        {
            DeltaXMicrons = dx;
            DeltaYMicrons = dy;
        }
    }

    public ref struct AdaptiveOpticsServo
    {
        private double _accumulatedTip;
        private double _accumulatedTilt;
        private double _accumulatedDefocus;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public AdaptiveOpticsServo(double dummy)
        {
            _accumulatedTip = 0.0;
            _accumulatedTilt = 0.0;
            _accumulatedDefocus = 0.0;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public void StepWavefrontServo(ReadOnlySpan spots, double dt,
                                       out double tipVolt, out double tiltVolt, out double defocusVolt, out double strehlRatio)
        {
            // 1. 센서 스팟 변위 평균 기울기 계산 (0-Alloc Span 순회)
            double meanSlopeX = 0.0;
            double meanSlopeY = 0.0;
            double radialSlopeSum = 0.0;

            for (int i = 0; i < spots.Length; i++)
            {
                meanSlopeX += spots[i].DeltaXMicrons;
                meanSlopeY += spots[i].DeltaYMicrons;
                radialSlopeSum += (spots[i].DeltaXMicrons * spots[i].DeltaXMicrons + spots[i].DeltaYMicrons * spots[i].DeltaYMicrons);
            }

            int count = spots.Length > 0 ? spots.Length : 1;
            meanSlopeX /= count;
            meanSlopeY /= count;

            // 2. 주요 제르니케 모드 PI 서보 (Tip, Tilt, Defocus)
            double kp = 0.45;
            double ki = 0.12;

            _accumulatedTip += meanSlopeX * dt;
            _accumulatedTilt += meanSlopeY * dt;
            _accumulatedDefocus += (radialSlopeSum / count) * dt;

            tipVolt = Math.Clamp(-(kp * meanSlopeX + ki * _accumulatedTip), -50.0, 50.0);
            tiltVolt = Math.Clamp(-(kp * meanSlopeY + ki * _accumulatedTilt), -50.0, 50.0);
            defocusVolt = Math.Clamp(-(kp * (radialSlopeSum / count) + ki * _accumulatedDefocus), -30.0, 30.0);

            // 3. 마레샬 근사(Maréchal Approximation) 기반 스트렐 비율(Strehl Ratio) 산출
            double rmsWavefrontErrorRad = Math.Sqrt(radialSlopeSum / count) * 0.05;
            strehlRatio = Math.Clamp(Math.Exp(-rmsWavefrontErrorRad * rmsWavefrontErrorRad), 0.0, 1.0);
        }
    }
}

3. 시뮬레이션 및 광학 교구 검증

프리드 파라미터 $r_0 = 12 ext{ cm}$ (대기 시상 $1.2''$) 환경에서 구경 2.5m 망원경 모델에 적용한 결과:

지구과학 II 교사 및 우주감시체계 실무자를 위한 안내

지구과학 II의 '망원경의 분해능과 시상' 개념을 수학적 파면 다항식과 현대 적응광학 서보 제어로 확장할 수 있는 융합 교재입니다. 차세대 국방 우주 감시망원경의 핵심 작동 원리를 교실에서 실습하십시오.