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) 있게 산출되도록 보상해 내는 뛰어난 통계적 안전판 효과를 발휘하게 된다.