화성 표면의 미세 모래 언덕과 연약 지반을 주행하는 행성 탐사 로버(Curiosity, Perseverance)가 직면하는 가장 치명적인 위험은 휠이 모래 속으로 끝없이 파고들어 영구 고립되는 침하(Sinkage) 현상입니다. 휠과 지반 간의 상호작용 역학을 규명한 베커-웡(Bekker-Wong) 압력-침하 방정식과 쿨롱-모어(Coulomb-Mohr) 전단 파괴 기준을 결합하여, 슬립률(Slip Ratio)을 실시간 추정하고 차동 토크를 1,000Hz 주기로 0-Alloc C# 재분배하는 로버 안티-트랩 트랙션 제어 엔진을 공개합니다.

1. 2022 개정 교육과정 교과 연계 분석

  • 물리학 (마찰력, 돌림힘 토크 및 강체 회전 운동역학): 정지/운동 마찰력, 휠 회전 속도 $r\omega$와 로버 차체 실제 전진 속도 $v$ 간의 슬립률 $s = \frac{r\omega - v}{r\omega}$, 구름 저항 토크와 견인 구동력의 모멘트 평형.
  • 지구과학/행성과학 (화성 토양 지질학 및 레골리스 역학): 현무암 풍화 미세 모래의 토양 특성(응집력 $c$, 내부 마찰각 $\phi$, 다짐 계수), 화성 중력($0.38g$) 환경에서의 연약 지반 침하 및 전단 유동화 거동.
  • 수학 (베커 압력-침하 적분 및 비선형 접촉호 각도 수치해석): 베커 방정식 $\sigma(\theta) = \left(\frac{k_c}{b} + k_\phi\right) z(\theta)^n$ 휠 접촉면 1차원 수치 적분 및 쟈넬라키스(Janosi-Hanamoto) 전단 응력 대수식 연산.
  • 정보 (초저지연 1,000Hz 0-Alloc 6륜 독립 구동 트랙션 컨트롤러 코어): 1ms 루프 내에서 가비지 컬렉터 부하 없이 스택 메모리(`ref struct`)로 모터 역기전력과 IMU 관성 센서를 융합하여 휠 헛돎을 조기 차단하는 C# 엔진.

2. 베커 테라메카닉스 및 토양 전단 수식 모델

폭 $b$, 반경 $r$의 로버 휠 접촉각 $\theta$에서의 침하 깊이 $z(\theta) = r(\cos\theta - \cos\theta_1)$에 따른 수직 수직응력 $\sigma(\theta)$는 베커(Bekker) 공식에 의해 다음과 같이 모델링됩니다:

$$\sigma(\theta) = \left( \frac{k_c}{b} + k_\phi \right) \left[ r (\cos\theta - \cos\theta_1) \right]^n$$

여기서 $k_c$는 응집력 침하 계수, $k_\phi$는 마찰 침하 계수, $n$은 토양 변형 지수, $\theta_1$은 전방 진입각입니다. 접선 방향 토양 전단 응력 $\tau(\theta)$는 쟈노시-하나모토(Janosi-Hanamoto) 공식에 의해 슬립률 $s$와 결합됩니다:

$$\tau(\theta) = \left[ c + \sigma(\theta) \tan\phi \right] \left[ 1 - \exp\left( -\frac{j(\theta)}{K_w} \right) \right]$$

여기서 $j(\theta) = r [ (\theta_1 - \theta) - (1 - s)(\sin\theta_1 - \sin\theta) ]$는 국소 토양 전단 변위이며, $K_w$는 전단 변형 계수입니다. 총 수직 지지력 $F_z$와 순 견인력(Drawbar Pull, DP) $F_x$는 다음과 같이 접촉각 적분으로 산출됩니다:

$$F_z = r b \int_{\theta_2}^{\theta_1} \left[ \sigma(\theta) \cos\theta + \tau(\theta) \sin\theta \right] d\theta$$ $$F_x = r b \int_{\theta_2}^{\theta_1} \left[ \tau(\theta) \cos\theta - \sigma(\theta) \sin\theta \right] d\theta$$

슬립률이 임계값($s > 0.6$)을 초과하면 토양이 소성 전단 파괴되면서 $F_x$가 음수로 전락하고, 휠이 자가 매립되는 현상이 발생하므로 즉각적인 토크 제한이 필요합니다.

3. 1,000Hz 0-Alloc C# 로버 트랙션 제어 엔진

다음은 1ms 샘플링 타임 내에서 가비지 컬렉터 없이 스택 메모리를 사용하여 휠 침하 깊이와 슬립률을 계산하고 최적 토크를 차동 분배하는 C# 엔진입니다.

MarsRoverTractionEngine.cs (Zero-Allocation C# Terramechanics Core)
using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.Terramechanics;

public readonly ref struct RoverWheelState
{
    public readonly double WheelSlipRatio;
    public readonly double SinkageDepthMeters;
    public readonly double DrawbarPullNewtons;
    public readonly double CommandedTorqueNm;
    public readonly bool IsEntrapmentWarning;

    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public RoverWheelState(double slip, double sinkage, double drawbar, double torque, bool warning)
    {
        WheelSlipRatio = slip;
        SinkageDepthMeters = sinkage;
        DrawbarPullNewtons = drawbar;
        CommandedTorqueNm = torque;
        IsEntrapmentWarning = warning;
    }
}

public ref struct MarsRoverTractionSimulator
{
    private const double WheelRadiusM = 0.25; // 25 cm 휠
    private const double WheelWidthM = 0.15; // 15 cm 휠 폭
    private const double MarsGravity = 3.72; // 화성 중력가속도

    // 화성 레골리스 토양 파라미터
    private const double CohesionPa = 120.0;
    private const double FrictionAngleDeg = 34.0;
    private const double Kc = 1500.0;
    private const double Kphi = 850000.0;
    private const double ExponentN = 0.9;
    private const double Kw = 0.025; // 전단 변형 계수 2.5 cm

    private double _wheelAngVelRadS;

    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public MarsRoverTractionSimulator(double initialRpm = 10.0)
    {
        _wheelAngVelRadS = initialRpm * (2.0 * Math.PI / 60.0);
    }

    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public RoverWheelState Step(double linearVelocityMps, double normalLoadNewtons, double targetTorqueNm, double dtSeconds = 0.001)
    {
        // 1. 슬립률(Slip Ratio) 산출: s = (r*omega - v) / (r*omega)
        double wheelCircSpeed = _wheelAngVelRadS * WheelRadiusM;
        double slipRatio = (wheelCircSpeed > 1e-4) ? (wheelCircSpeed - linearVelocityMps) / wheelCircSpeed : 0.0;
        if (slipRatio < 0.0) slipRatio = 0.0;
        if (slipRatio > 1.0) slipRatio = 1.0;

        // 2. 베커 정적 침하 깊이 z0 산출
        // W = b * (Kc/b + Kphi) * (z^(n+1) / (n+1))
        double stiffness = (Kc / WheelWidthM + Kphi);
        double sinkageDepth = Math.Pow((normalLoadNewtons * (ExponentN + 1.0)) / (WheelWidthM * stiffness), 1.0 / (ExponentN + 1.0));

        // 슬립에 의한 동적 침하 증폭 (Slip-induced sinkage)
        sinkageDepth *= (1.0 + 1.5 * slipRatio * slipRatio);

        // 3. 순 견인력(Drawbar Pull, DP) 산출
        double tanPhi = Math.Tan(FrictionAngleDeg * (Math.PI / 180.0));
        double maxTraction = normalLoadNewtons * tanPhi + CohesionPa * (WheelWidthM * WheelRadiusM);
        double shearEngagement = 1.0 - Math.Exp(-(slipRatio * 0.1) / Kw);
        double grossTraction = maxTraction * shearEngagement;

        // 구름 저항력 R_c = (b * stiffness / (n+1)) * z^(n+1)
        double motionResistance = (WheelWidthM * stiffness / (ExponentN + 1.0)) * Math.Pow(sinkageDepth, ExponentN + 1.0);
        double drawbarPull = grossTraction - motionResistance;

        // 4. 슬립 기반 능동 토크 제한 제어기
        double commandedTorque = targetTorqueNm;
        if (slipRatio > 0.45)
        {
            // 과도 슬립 시 토크를 비례적으로 축소하여 자가 매립 방지
            double reductionFactor = Math.Max(0.1, 1.0 - (slipRatio - 0.45) * 2.0);
            commandedTorque *= reductionFactor;
        }

        // 각가속도 갱신
        double wheelInertia = 0.25; // kg*m^2
        double netTorque = commandedTorque - (grossTraction * WheelRadiusM);
        _wheelAngVelRadS += (netTorque / wheelInertia) * dtSeconds;
        if (_wheelAngVelRadS < 0.0) _wheelAngVelRadS = 0.0;

        bool entrapmentWarning = slipRatio > 0.65 || sinkageDepth > (WheelRadiusM * 0.4);

        return new RoverWheelState(slipRatio, sinkageDepth, drawbarPull, commandedTorque, entrapmentWarning);
    }
}

4. 우주 행성탐사 및 특수목적 모빌리티 응용 가이드

  • 한국항공우주연구원(KARI) 달/화성 로버 개발팀: 한국형 달 탐사선 로버의 월면토(Lunar Regolith) 주행 시 슬립 유발 침하 방지 및 6륜 독립 구동 제어기 교구.
  • 방통대 우호성 교수 랩실: 2022 개정 물리학Ⅰ 마찰력과 돌림힘 단원 및 지구과학Ⅰ 행성 표면 지질학을 융합한 현대 우주로봇 공학 교육 콘텐츠.
  • 국방 무인수색차량 및 농업/건설 무인 모빌리티: 야지 험로 및 갯벌 진흙 지형 통과 시 1,000Hz 0-Alloc 스택 C# 온디바이스 안티-트랩 트랙션 컨트롤러 적용.