29.4.2.1. 스틱 중앙값을 호버링 추력 기저값으로 일치시키는 비선형 조각 함수(Piecewise function) 변환 수식

29.4.2.1. 스틱 중앙값을 호버링 추력 기저값으로 일치시키는 비선형 조각 함수(Piecewise function) 변환 수식

1. 멀티로터 수동 고도 제어의 인지적 문제점과 호버링 기저치 세팅

조종자가 매뉴얼 비행 모드(Stabilized, Acro 등)에서 기체를 운용할 때, 스로틀(Throttle) 스틱을 조작하여 고도를 제어하는 동작은 비행 제어에 있어 가장 큰 인지적 부하(Cognitive Load)를 수반한다. 만약 스로틀 입력값(예: 0% ~ 100%)이 단순히 모터 변속기의 추력 한계 레인지에 1:1 선형 비례로 매핑(Linear Mapping)되어 있다면, 기체가 이륙 중량(Takeoff Weight)과 지구 중력을 정확히 상쇄하여 완벽하게 위치 공중 정지(Hovering)를 실현하는 스틱의 위치는 기체의 페이로드(Payload)나 배터리 전압 상태에 따라 매번 예측 불가능하게 이탈하게 된다.

조종기 스로틀 스틱의 절반(50%) 위치에 물리적인 스프링 복원점 유지 구역(Spring Centered Joypad)이 존재한다고 가정할 때, 이 중앙 지점이 완벽한 하드웨어적인 호버링 지점과 일치하지 않는다면 조종자는 장시간 비행 시 엄지손가락 파지에 지속적인 압박감과 피로감을 느끼며 치명적인 고도 이탈 현상을 누적해서 겪게 된다.

PX4-Autopilot v1.14는 이러한 인적 오류 메커니즘을 시스템적으로 단절하기 위해, 조종기의 중앙 스틱 값을 시스템 내부 파라미터인 호버링 추력 기저값(MPC_THR_HOVER)으로 강제 일치시키는 비선형 조각 함수(Non-linear Piecewise function) 변환 수학 알고리즘을 수행한다.


2. 비선형 조각 함수 매핑 수학 모델 구축 및 분석

이 매핑 스케일링 체계의 핵심 목적은 조종자가 스틱을 직관적 체감의 중심점인 중앙(Input_{z} = 0.5 부근)에 놓았을 때 출력 추력을 무조건 기체의 정적 체공 값인 MPC_THR_HOVER 수치로 치환 배출하되, 수학 곡선의 양단(0% 와 100%)에서는 소프트웨어적인 제어 손실 혹은 절단 현상(Clipping) 없이 모터의 최대 기계적 출력 및 영점 최소 출력을 낼 수 있도록 기울기가 전혀 다른 두 개의 선형 구간 비례식을 함수로 분리, 봉합(Splicing)하여 결합시키는 것이다.

지상 관제 시스템 QGroundControl(이하 QGC) v4.3에서 운용자가 커스텀하게 도출, 설정할 수 있는 MPC_THR_HOVER 파라미터 값(예: 0.4 혹은 40% 부하율)을 상수 H로 정의하고, 조종기의 본래 [-1.0, 1.0] 범위를 코어 파이프라인에서 [0.0, 1.0] 구역으로 정규화(Normalized)시킨 입력 변수를 실수 z라고 할 때, 모터 믹서 포트로 배출되는 출력 추력 T_{out}을 산출하는 조각 함수의 표준 방정식은 다음과 같은 알고리즘 전개 흐름을 필연적으로 준수한다.

T_{out}(z) = \begin{cases} H \times \left( \frac{z}{0.5} \right), & \text{if } z < 0.5 \text{ (하향 스로틀 하강 구간)} \\ H + (1 - H) \times \left( \frac{z - 0.5}{0.5} \right), & \text{if } z \geq 0.5 \text{ (상향 스로틀 상승 구간)} \end{cases}

2.1 C++ 내부 구현 코드 및 아키텍처 (src/lib/mathlib)

이 삼단논리 구조의 수학 모델은 PX4 핵심 라이브러리인 코어 산술 유틸리티 구간에 직접 하드 코딩(Hard Coding) 되어 실시간으로 고속(통상 250Hz 이상의 Tick Rate) 평가(Evaluation) 받는다.

#include <mathlib/mathlib.h>

/**
 * @brief 비선형 스로틀 곡선 변환 처리 (Hover Thrust Mapping Method)
 * @param z_input 조종기 스로틀 입력 (0.0 ~ 1.0 형태 정규화된 1차원 데이터)
 * @param hover_thrust_param QGC에서 설정된 호버링 추력 파라미터 값 (MPC_THR_HOVER)
 */
float apply_hover_curve(float z_input, float hover_thrust_param) {
    float output_thrust = 0.0f;
    
    // 1단계 분기문: 조종기 중심점 임계 이전 구간 (절대 하강 기동 시)
    if (z_input < 0.5f) {
        output_thrust = hover_thrust_param * (z_input / 0.5f);
    } 
    // 2단계 분기문: 조종기 중심점 임계 이후 구간 (가속 상승 기동 시)
    else {
        output_thrust = hover_thrust_param + (1.0f - hover_thrust_param) * ((z_input - 0.5f) / 0.5f);
    }
    
    // 산출된 수학적 결과값의 1차원 절댓값 모니터링 및 한계 포화(Saturation) 방지
    return math::constrain(output_thrust, 0.0f, 1.0f);
}

이 때, 수학적 한계치를 돌파하여 스피드 컨트롤러(ESC)에 이물질 같은 노이즈 값이 송출되지 않도록 최종 추력 산출 결과물은 항상 C++ 수학 함수 구속인 math::constrain을 무조건 통과하도록 시스템이 체인화(Chained) 되어 있다. 기체 프레임에 매우 무거운 고해상도 짐벌 페이로드가 극도로 치중 적재되어 MPC_THR_HOVER가 0.8과 같이 1.0 한계 영역에 근접하게 편향 튜닝되었다 하더라도, z \ge 0.5 분기문에서의 상승 기울기(Slope)가 매우 평면적이고 완만해지는 형태로 수치 함수가 시스템적으로 자동 변형 조율되며 상한선 1.0을 결코 돌파하지 않게 고지능적으로 기획 설계된다.


3. 튜닝 아키텍처 및 시스템 프레임워크 다이어그램 구조

입력 조종 지시 스틱 신호가 제어 버스 로직을 메인 파이프라인으로 타고 들어가면서 두 개의 기울기가 전혀 각기 다른 선형 보간형 함수들을 타고 넘어다니는 구조를 기능적으로 도식화하면 다음과 같은 프로세스 단위 차트로 분리된다.

graph TD
    Z_IN["Raw Stick Input Z Axis <br> Normalized: [0.0 ~ 1.0]"] --> COND{"Is Switch Input Z < 0.5 ?"}
    
    P_HOVER[("Parameter Node: <br> MPC_THR_HOVER <br> (ex. Base Thrust 40%)")] -.-> L_LOWER
    P_HOVER -.-> L_UPPER
    
    COND -->|Yes (Negative Descent Rate)| L_LOWER["Lower Curve Interpolation <br> Target_Thrust = H * (Z / 0.5)"]
    COND -->|No (Positive Climb Rate)| L_UPPER["Upper Curve Interpolation <br> Target_Thrust = H + (1-H) * ((Z-0.5)/0.5)"]
    
    L_LOWER --> MERGE_NODE[Function Output Merge Point]
    L_UPPER --> MERGE_NODE
    
    MERGE_NODE --> CLAMP["Invoke math::constrain(0.0f, 1.0f) Clamping"]
    CLAMP --> OUTPUT["Final Thrust Throttle Setpoint <br> Published to uORB"]
    
    style COND fill:#ffebcd,stroke:#cc7a00,stroke-width:2px

과거의 구식 저사양 FC 모듈이나 ArduPilot 생태계의 단순 매핑을 표방하던 1세대 비행 기동들과 달리, 현 세대의 상용급 연산 코어를 전폭 지원 탑재한 PX4는 이러한 심미적인 수학적 변환 계선(Piecewise Splicing) 보완 처리를 통해 차가운 기계장치 시스템과 인간 조종자의 인지적 간극 오차율을 극복하는 ‘설계-인지-에르고노믹스(Cognitive-Ergonomics)’ 철학을 무인기 제어 로직 차원에서 완벽히 보완한다.

차후 첨단 기술 분야인 멀티 에이전트 자율 군집 제어를 위해 ROS2나 초저지연 uXRCE-DDS 프로토콜 기반의 미들웨어 파이프라인 구간에서 수동 제어 버스를 관통 통과하는 강제 우회 제어 명령을 전송할 시에도, 제어 코어 개발자는 해당 비선형 매핑 함수를 역(Inverse)으로 반드시 고려하여 제어식을 짜야만 정확한 3차원 추력 궤적 타겟팅이 기술적으로 가능해진다.