## 0.1 다중 센서 중복성(Redundancy) 및 결함 허용(Fault Tolerance) 설계 기초

## 0.1 다중 센서 중복성(Redundancy) 및 결함 허용(Fault Tolerance) 설계 기초

단일(Single) LiDAR 센서나 단일 옵티컬 플로우 모듈에 드론의 고도와 수평 저항 생명줄을 모두 맡기는 것은 항공 우주 분야의 안전 공학 설계 사상에 전면으로 위배된다. 센서 기판에 수분이 맺히거나 강한 직사광선이 내리쬐면 광학 신호나 초음파 모두 순식간에 시력을 상실할 수 있기 때문이다. 이를 방어하기 위해 PX4는 커스텀 sensors 모듈 내부에 다중 로컬 센서 중복성(Redundancy) 아키텍처를 하드 코딩해 두었다.

1. 이기종 로컬 센서 조합 (Sonar + LiDAR의 상호보완)

소재의 물리적 한계를 가장 합리적으로 돌파하는 방법은 이기종(Heterogeneous) 조합이다. 대표적으로 적외선 스펙트럼을 쓰는 소형 라이다(예: TFmini) 1기재와 음파 스펙트럼을 쓰는 초음파 센서(예: MaxSonar) 1기재를 동일하게 하방으로 장착하는 파이프라인 설계다.

  • 유리 바닥이나 물 위를 비행할 때 빛이 난반사되어 LiDAR 수치계에 영(0)점 에러가 뜨면, 음파 기반의 Sonar는 물리적 튕김 성향이 살아있어 유효한 값을 토픽 버스에 올린다.
  • 반대로 소리 흡수율이 높은 밀림/잔디밭에서는 Sonar가 난청이 되나 빛의 반사에 강한 LiDAR가 즉시 보정 데이터로 EKF 체계를 연명하게 만든다.

2. 센서 투표(Voting/Selection) 및 결함 허용(Fault Tolerance) 알고리즘

PX4 통신망 내 수렴지인 src/modules/sensors/sensors.cpp 모듈은 uORB 버스(distance_sensor 토픽 배열)로 날아드는 복수 개의 관측치 중, EKF2의 아가리에 어떤 값을 최종적으로 떠먹여 줄지 결정하는 **보터(Voter) 로직 혹은 셀렉터(Selector)**를 탑재하고 있다.

  • 품질(Signal Quality) 기반 타임아웃 쳐내기: 각 거리 센서는 물리적인 신호 강도를 나타내는 헤더 파일(signal_quality 0 \sim 100) 값을 필수로 보고해야 한다. 특정 센서의 품질이 한계 임계값 밑으로 급전직하하거나 데이터 통달 지연된(Timeout, 보통 200 \sim 500ms 공백) 현상이 포착되면 센서 모듈 보터는 즉각 해당 ID의 센서 큐를 무시(Ignore)하고 건강한 타 센서 데이터 복명으로 스트림을 절체 전환(Fail-over)시킨다.
  • 다중 보팅 평활화 (Averaging / Median Filter): 여러 대역폭이 살아있을 경우 노이즈 튀김값(Outlier)을 잘라내기 위해 중간값 필터(Median View)나 품질 가중치 평균(Weighted Average)을 적용하여, 결국 가장 안전하게 제련(Filtering)된 단일 vehicle_local_position 토픽이 통과되도록 브레이크를 걸고 통제하는 아키텍처다. 이것이 PX4의 본질적인 결함 허용(Fault Tolerance) 생존 설계 시스템이다.