1. 서론: 추진제 없는 무한 성간 비행, 태양돛(Solar Sail)과 광자 모멘텀의 물리학

화학 로켓이나 이온 추진체는 탑재된 추진제(연료)를 소진하면 가속이 영구 중단되는 근본적 한계를 갖습니다. 반면 태양돛(Solar Sail)은 태양으로부터 끊임없이 쏟아지는 광자(Photon)가 거대한 반사막에 충돌하여 반사될 때 전달하는 전자기 모멘텀(Radiation Pressure)만을 이용하여 비행하는 영구 추진 무연료 우주선입니다.

태양 궤도 1 AU 지점에서 단위 면적당 태양 복사 강도는 $I_\odot \approx 1361\,\text{W/m}^2$이며, 완전 반사율($R = 1$)을 갖는 초박막 알루미늄 증착 폴리이미드 필름($2.5\,\mu\text{m}$ 두께, $100\,\text{m}^2$)이 받는 광압 추력은 약 $0.9\,\text{mN}$ 수준입니다. 미세한 추력이지만 우주의 진공 무중력 환경에서 수개월~수년간 지속적으로 가속되면 초속 수십 킬로미터의 고속 성간 순항 속도에 도달할 수 있습니다.

광압 중심(CoP)과 질량 중심(CoM) 불일치로 인한 자세 텀블링

돛의 미세한 주름이나 곡률 왜곡으로 인해 광압의 작용점인 광압 중심(Center of Pressure, CoP)이 우주선의 질량 중심(Center of Mass, CoM)과 불과 수 밀리미터만 어긋나도 지속적인 교란 토크($\boldsymbol{\tau} = \mathbf{r} \times \mathbf{F}_{\text{rad}}$)가 발생하여 우주선이 회전 통제 불능(Tumbling)에 빠집니다. 따라서 돛의 네 모서리에 부착된 제어 윙렛(Vane)을 1,000Hz 초음파 모터로 미세 틸팅하여 토크를 실시간 0으로 상쇄해야 합니다.

2. 광자전자기학 및 궤도역학 모델링: 맥스웰 복사압 텐서 & 광압 중심(CoP)-질량 중심(CoM) 편차 토크

2.1 광자 충돌 모멘텀과 순수 복사력 벡터

태양 입사 광선 벡터 $\mathbf{s}$와 돛의 국소 법선 벡터 $\mathbf{n}$ 사이의 입사각 $\alpha$ ($\cos\alpha = \mathbf{s} \cdot \mathbf{n}$)에 대하여, 반사율 $R$과 확산 반사 성분을 고려한 순수 복사력 $\mathbf{F}_{\text{rad}}$는 다음과 같습니다:

$$\mathbf{F}_{\text{rad}} = P_0 A \left( \frac{R_0}{r} \right)^2 \cos\alpha \left[ (1 - R)\mathbf{s} + 2R\cos\alpha \mathbf{n} \right]$$

여기서 $P_0 = I_\odot / c \approx 4.54\,\mu\text{N/m}^2$, $A$는 돛 면적, $r$은 태양과의 거리입니다. 돛을 기울임($\alpha$)에 따라 접선 가속도 성분이 생성되어 행성 간 궤도 전이(Hohmann Transfer)가 가능해집니다.

2.2 CoP-CoM 편차에 의한 태양광 토크 방정식

질량 중심에 대한 총 외란 토크 $\boldsymbol{\tau}_{\text{dist}}$와 4개 윙렛의 상쇄 제어 토크 $\boldsymbol{\tau}_{\text{ctrl}}$의 동역학 방정식은 오일러 회전 방정식으로 기술됩니다:

$$\mathbf{I} \dot{\boldsymbol{\omega}} + \boldsymbol{\omega} \times (\mathbf{I}\boldsymbol{\omega}) = (\mathbf{r}_{\text{CoP}} - \mathbf{r}_{\text{CoM}}) \times \mathbf{F}_{\text{rad}} + \sum_{k=1}^4 \mathbf{r}_k \times \mathbf{F}_{\text{vane},k}$$

3. 1,000Hz 0-Alloc C# 태양 센서 앙각 계측 및 4각 윙렛(Control Vane) 초음파 틸트 서보 구현

ZeliDesk 온디바이스 태양돛 서보는 디지털 태양 센서(DSS)와 광섬유 자이로(FOG) 각속도를 1ms 주기로 수신하여, CoP 편차에 의해 유도되는 미세 롤/피치/요 모멘트를 산출하고 4개 윙렛의 반사 틸트각을 무할당 스택 메모리로 1kHz 동시 제어합니다.

SolarSailAttitudeServo.cs (Zero-Allocation 1,000Hz Space Sail Engine)
using System;
using System.Runtime.CompilerServices;
using System.Numerics;

namespace ZeliDesk.Stem.SolarSail
{
    /// 
    /// 1,000Hz 태양돛 광압 복사력 및 CoP-CoM 교란 토크 상쇄 윙렛 틸트 서보 제어기
    /// GC 무할당 스택 메모리 0-Alloc 구현체
    /// 
    public ref struct SolarSailAttitudeServo
    {
        // 물리 상수
        private const float SolarFlux1AuWm2 = 1361.0f;
        private const float SpeedOfLightMps = 299792458.0f;
        private const float SailAreaM2 = 144.0f;             // 12m x 12m 사각형 돛
        private const float SailReflectivity = 0.92f;
        private const float VaneArmLengthM = 8.5f;           // 모서리 윙렛 모멘트 암
        private const float MaxVaneTiltAngleDeg = 45.0f;

        // 서보 제어 상태
        public float SunIncidenceAngleDeg;
        public float DisturbanceTorqueNmX;
        public float DisturbanceTorqueNmY;
        public float VaneTiltAngleDeg1;
        public float VaneTiltAngleDeg2;
        public float VaneTiltAngleDeg3;
        public float VaneTiltAngleDeg4;
        public float TotalNetThrustMn;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public void Initialize()
        {
            SunIncidenceAngleDeg = 35.0f;
            DisturbanceTorqueNmX = 0.0f;
            DisturbanceTorqueNmY = 0.0f;
            VaneTiltAngleDeg1 = 0.0f;
            VaneTiltAngleDeg2 = 0.0f;
            VaneTiltAngleDeg3 = 0.0f;
            VaneTiltAngleDeg4 = 0.0f;
            TotalNetThrustMn = 0.0f;
        }

        /// 
        /// 1ms 제어 주기: 태양 센서 앙각 및 자이로 각속도로부터 교란 토크 역산 및 4개 윙렛 각도 지령
        /// 
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public void StepAttitudeControl(
            float sunVectorAngleDeg, 
            float gyroRateDegPerSecX, 
            float gyroRateDegPerSecY, 
            float copOffsetMmX, 
            float copOffsetMmY,
            out float commandedThrustMn, 
            out float vane1Tilt, 
            out float vane2Tilt, 
            out float vane3Tilt, 
            out float vane4Tilt)
        {
            SunIncidenceAngleDeg = sunVectorAngleDeg;
            float alphaRad = SunIncidenceAngleDeg * (MathF.PI / 180.0f);
            float cosAlpha = MathF.Cos(alphaRad);

            // 1. 순수 태양 복사압 추력 계산: F = 2 * (I / c) * A * R * cos^2(alpha)
            float pRadNominal = (SolarFlux1AuWm2 / SpeedOfLightMps) * SailAreaM2;
            TotalNetThrustMn = (2.0f * pRadNominal * SailReflectivity * cosAlpha * cosAlpha) * 1000.0f; // mN 단위
            commandedThrustMn = TotalNetThrustMn;

            // 2. CoP-CoM 편차에 의한 태양광 외란 토크 산출 (tau = r x F)
            // 편차 mm -> m 변환
            float thrustNewtons = TotalNetThrustMn * 0.001f;
            DisturbanceTorqueNmX = (copOffsetMmY * 0.001f) * thrustNewtons;
            DisturbanceTorqueNmY = -(copOffsetMmX * 0.001f) * thrustNewtons;

            // 3. 자이로 댐핑 및 토크 상쇄 PID 피드포워드 제어기
            const float KpTorque = 120.0f; // deg / Nm
            const float KdRate = 15.0f;    // deg / (deg/s)

            float reqTiltX = DisturbanceTorqueNmX * KpTorque + gyroRateDegPerSecX * KdRate;
            float reqTiltY = DisturbanceTorqueNmY * KpTorque + gyroRateDegPerSecY * KdRate;

            // 4. 4개 윙렛 차동 각도 분배 (X/Y 축 대칭 분배)
            VaneTiltAngleDeg1 = MathF.Max(-MaxVaneTiltAngleDeg, MathF.Min(MaxVaneTiltAngleDeg, reqTiltX + reqTiltY));
            VaneTiltAngleDeg2 = MathF.Max(-MaxVaneTiltAngleDeg, MathF.Min(MaxVaneTiltAngleDeg, -reqTiltX + reqTiltY));
            VaneTiltAngleDeg3 = MathF.Max(-MaxVaneTiltAngleDeg, MathF.Min(MaxVaneTiltAngleDeg, -reqTiltX - reqTiltY));
            VaneTiltAngleDeg4 = MathF.Max(-MaxVaneTiltAngleDeg, MathF.Min(MaxVaneTiltAngleDeg, reqTiltX - reqTiltY));

            vane1Tilt = VaneTiltAngleDeg1;
            vane2Tilt = VaneTiltAngleDeg2;
            vane3Tilt = VaneTiltAngleDeg3;
            vane4Tilt = VaneTiltAngleDeg4;
        }
    }
}

4. 2022 개정 교육과정 연계표 및 방통대 랩실·우주항공청(KASA) 소행성 탐사 교육 공학 실무 적용성

교과목 (2022 개정) 단원 및 성취기준 태양돛 복사압 항법 트윈 시뮬레이션 적용 핵심
물리학 빛의 입자성과 광자 운동량($p = h/\lambda = E/c$), 운동량 보존 법칙 광자 반사에 따른 완전 탄성 충돌 모멘텀 전달 및 복사압($\sim 9\,\mu\text{N/m}^2$) 실험
지구·천문 태양 복사 에너지와 태양풍, 행성 간 궤도 역학 케플러 궤도 에너지 지속 증가 및 외행성/소행성 랑데부 궤적 가상 시뮬레이션
우주공학 우주선 자세 제어, 외란 토크와 모멘텀 관리 광압 중심(CoP)과 질량 중심(CoM) 편차 상쇄를 위한 능동 윙렛 서보 제어
수학 삼각함수 제곱 비례($\cos^2\alpha$), 벡터 외적 모멘트 입사각에 따른 광압 벡터 분해 및 3차원 오일러 회전 미분방정식 행렬 해석
정보 실시간 센서 융합 및 초음파 모터 다축 동기 제어 1,000Hz 0-Alloc C# 스택 기반 4각 윙렛 틸트 각도 차동 분배 알고리즘
국방 우주 장기 체공 정찰 위성 및 우주 잔해물 능동 제거 연료 고갈 없는 무인 궤도 감시선 및 인공위성 궤도 이탈(De-orbit) 돛 전개

5. 결론 및 ZeliDesk On-Device 에지 인프라 확장 전략

태양돛 복사압 심우주 항법 백서는 맥스웰 전자기학의 광자 모멘텀 이론부터 심우주 궤도 역학, 그리고 1,000Hz 무할당 임베디드 윙렛 자세 서보 기술을 집대성한 인류 미래 성간 탐사의 비전입니다. ZeliDesk는 온디바이스 에지 환경에서 복잡한 다물체 우주역학 시뮬레이션을 초저지연 C# 코드로 실현하여 초·중·고 교실과 대한민국 우주항공 산업 현장을 잇고 있습니다.