28.1.1.2.2. RC 스틱의 Raw PWM 값을 [-1.0, 1.0] 범위로 매핑하는 캘리브레이션 연산

28.1.1.2.2. RC 스틱의 Raw PWM 값을 [-1.0, 1.0] 범위로 매핑하는 캘리브레이션 연산

조종사가 물리적 스틱을 움직일 때 수신기(Receiver) 단에서 비행 제어기(FC)로 인입되는 가장 밑바닥의 아날로그 원시 데이터(Raw Data)는, 대개 1000us에서 2000us 사이의 펄스폭 변조(PWM) 시간 길이 신호로 들어온다 (현대의 SBUS, CRSF 등 초고속 직렬 디지털 통신 프로토콜도 내부적으로 이 스케일링 체계에 준하여 맵핑 전송된다).
PX4 펌웨어가 이 파편화되고 기계적인 마이크로초(us) 시간 숫자를 지능적이고 통일된 [-1.0, 1.0] 차원의 정규화된 플로팅 포인트(Float) 의도(Intent) 변수로 환동(Mapping)해 내기 위해서는, 사전에 세팅해 둔 환경설정 캘리브레이션 트리 상수(Parameters)와의 정밀한 수학적 선형 보간(Linear Interpolation) 연산이 필수적인 전제 조건이 된다.

1. 캘리브레이션 매핑 파라미터(Calibration Mapping Parameters)의 구조

이 수학적 매핑 함수를 계산하기 위해 PX4는 비휘발성 저장소(FRAM/SD Card)에 저장된 채널별 캘리브레이션 파라미터 레지스트리 블록을 활용한다. 조종기 스틱의 4대 동역학 축(Roll, Pitch, Yaw, Throttle)을 포함한 MAVLink 최대 18개의 조종 채널은 각각 다음과 같은 5가지 필수 파라미터 트리 구조를 갖는다.

  • RCx_MIN: 조종기를 한쪽 끝(최솟값 하한 방향)으로 완전히 밀어붙였을 때 측정되는 최소 PWM 타이머 값 (예: 허용 오차가 포함된 1010us)
  • RCx_MAX: 조종기를 반대쪽 끝(최댓값 상한 방향)으로 완전히 뻗었을 때 측정되는 최대 PWM 타이머 값 (예: 1990us)
  • RCx_TRIM: 파일럿이 스틱에서 손을 완전히 떼고 기계적 텐션 스프링 복원력에 의해 물리적으로 정중앙에 멈췄을 때 측정되는 자연 영점 PWM 값 (예: 센터가 살짝 틀어진 1502us)
  • RCx_DZ: 중앙 영점 부근의 기계적 덜거덕거림(Gimbal slop)이나 노이즈 튐을 무시하기 위한 데드존(Deadzone) 마진 대역폭 (예: 노이즈 저감용 15us)
  • RCx_REV: 수신기 제조사(예: Futaba vs FrSky)에 따라 위/아래 축의 양수/음수 증가 방향(Polarity)이 정반대로 거꾸로 되어 있을 경우 이를 소프트웨어적으로 뒤집어주는 리버스(Reverse) 상수 팩터 (1.0 또는 -1.0)

2. Piecewise 정규화 선형 매핑(Normalizing Linear Mapping) 수식 분석

수신된 거친 원시 PWM 값(PWM_raw)을 정제된 정규화 벡터 공간 Normal\_Value \in [-1.0, 1.0] 로 변환하는 C++ 수학적 선형 보간 로직은 매우 정교하다. 이는 센터 RCx_TRIM 값을 기준으로 상단(Up-side Band)과 하단(Down-side Band)의 이동 비율(Ratio)을 각각 다른 분모로 철저히 나누어 계산하는 두 개의 분기문 블록, 즉 단편적 선형 함수(Piecewise Linear Function) 로 완벽히 구현되어 있다.

2.1 단계: 센터 데드존(Center Deadband) 노이즈 필터링 차단

현재 원시 값이 RCx_TRIM - RCx_DZ ~ RCx_TRIM + RCx_DZ 마진 대역 사이에 위치한다면, 조종사가 조향 스틱에서 손을 뗀 것으로 완벽하게 간주하고 일체의 비례 연산 없이 즉각 0.0 텐션을 반환한다.
이는 기체가 하늘 제자리에서 오토 호버링을 할 때 미세한 조종기 아날로그 스위치 소음(Noise) 때문에 기체 좌표가 일측으로 서서히 스르륵 흐르며 드리프트(Drift)하는 미끄러짐 현상을 원천 차단하는 가장 핵심적인 소프트웨어 관문이다.

2.2 단계: 양의 대역(Positive Extent Band) 비례 스케일링 연산

PWM_raw가 센터 텐션값(RCx_TRIM + 데드존)보다 크게 상승했을 때 작동하는 분기다.
\text{Scale} = \frac{PWM_{raw} - (RCx\_TRIM + RCx\_DZ)}{RCx\_MAX - (RCx\_TRIM + RCx\_DZ)}
\text{Normal\_Value} = \text{Scale} \times RCx\_REV
만약 짐벌 스틱을 한계치인 1990us 까지 힘껏 밀었다면, 수식은 \frac{1990 - 1502}{1990 - 1502} 단위로 환산되어 오차 없이 완벽한 정규화 1.0 타겟 수치가 산출된다.

2.3 단계: 음의 대역(Negative Extent Band) 비례 스케일링 연산

PWM_raw가 센터 텐션값(RCx_TRIM - 데드존)보다 작게 하강했을 때 작동하는 반전 분기다.
\text{Scale} = \frac{PWM_{raw} - (RCx\_TRIM - RCx\_DZ)}{(RCx\_TRIM - RCx\_DZ) - RCx\_MIN}
\text{Normal\_Value} = \text{Scale} \times RCx\_REV
이때 분모는 하단의 스펙트럼 길이를 추종하게 되며 척도(Scale) 값은 오직 0에서 -1.0 도메인 사이로만 억제되어 자라나게 된다.

3. 비대칭성 보상(Asymmetry Compensation) 구조의 수학적 의의

기계 언어 단에서 이 특별한 두 갈래의 피스와이즈(Piecewise) 선형 보간 분기문 코딩 다자인이 절대적으로 중요한 이유는 바로, 저가형/고가형을 막론하고 조종기의 물리적 짐벌 스프링 기구물이 완벽하게 **대칭적이지 않다(Non-Symmetric)**는 현실의 기계공학적 한계 때문이다.

즉, 스프링 텐션의 자연 복원 지점인 RCx_TRIM (예: 1530us)이 정확히 RCx_MIN (1000)과 RCx_MAX (2000)의 산술 평균치 중앙(1500)에 위치하지 못하고 한쪽으로 치우쳐 쏠려 있는 물리적 비대칭(Mechanical Asymmetric) 상태일지라도 문제 될 것이 없다. 하프라인 분기 로직이 분모의 스케일 팩터 길이를 상단 폭 구간과 하단 폭 구간에서 각각 다르게 잡아 줌으로써 산술적 착시를 영민하게 교정해 준다.

결론적으로 논리적 데이터 규격 토픽인 manual_control_setpoint 차원 상에서는 사용자가 느끼는 양수(우 턴)와 음수(좌 턴) 방향의 스틱 체감 감도(Sensitivity)가 기하학적으로 완벽하게 균등하고 대칭성(Symmetry) 있게 산출되도록 보상해 내는 뛰어난 통계적 안전판 효과를 발휘하게 된다.